Как заработать деньги. Проект сам себе финансист.
май 2011
пн вт ср чт пт сб вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Главная » » »

OrderSymbol() - инструмент выделенного ордера

Очень часто перед трейдером стоит задача перебрать все открытые позиции или отложенные ордера и что-то сделать с позициями или ордерами, которые выставлены по инструменту, к которому прикреплен советник. Предположим, что нас интересуют только отложенные ордера.

Используя функцию OrderSymbol(), мы можем получить информация о выделенном с помощью функции OrderSelect() ордере или позиции.

 string OrderSymbol() 

Напишем кусочек кода, который просматривает все наши неудаленные отложенные ордера и производит какие-то действия с ордерами, которые выставлены по инструменту, к которому прикреплен советник.

 int pos; for (pos=0; pos=OP_BUYLIMIT) { // ордер оказался отложенным; проверим инструмент if (OrderSymbol()==Symbol()) { // делаем что-то с ордером // ... } } } else Print("Ошибка ", GetLastError(), " при выборе ордера номер ", pos); 

В этом коде Вам могут быть непонятны два момента.

Во-первых, я как-то странно на первый взгляд провожу определение типа ордера: if (OrderType()>=OP_BUYLIMIT). в действительности условие OrderType()>=OP_BUYLIMIT будет истинно в тех случаях, когда выбран ордер, и ложно в тех случаях, когда выбрана позиция. Дело в том, что константы, определяющие тип ордера, имеют следующие числовые значения:

КонстантаЗначениеОписание
OP_BUY0Позиция на покупку
OP_SELL1Продажа
OP_BUYLIMIT2Отложенный ордер BUY LIMIT
OP_SELLLIMIT3Отложенный ордер SELL LIMIT
OP_BUYSTOP4Отложенный ордер BUY STOP
OP_SELLSTOP5Отложенный ордер SELL STOP

Как мы видим, во всех случаях, когда выделен отложенный ордер, значение функции OrderType() будет больше или равно OP_BUYLIMIT (т. е. больше или равно 2).

Второй непонятный момент в коде - функция Symbol(). Эта функция возвращает текстовую строку с именем финансового инструмента, к которому прикреплен советник:

 string Symbol() 

Все остальное Вы уже на данный момент знаете:

В следующей статье мы продолжим рассмотрение торговых функций.



Автор статьи: Андрей Ведихин

Хомячковый рай. Уйти и потеряться:

OrderTakeProfit() - уровень Take Profit ордера

В прошлых выпусках мы уже достаточно сильно продвинулись в вопросе, как определить, была ли позиция закрыта по Take Profit ордеру или по Stop Loss. Параллельно мы изучили следующие торговые функции советника:

В данной статье мы изучим функцию OrderTakeProfit() и доработаем наш пример. Мы почему-то с первых строчек кода безусловно верим в тот факт, что позиция была закрыта именно по Stop Loss или Take Profit ордера. А если нет? Это легко проверить.

  • Если для позиции на покупку цена закрытия находится не ниже уровня Take Profit, то позиция закрыта по Take Profit.
  • Если для позиции на продажу цена закрытия находится не выше уровня Take Profit, то позиция закрыта по Take Profit.

Мы знаем, что уровень Stop Loss ордера выделенной позиции или ордера можно определить с помощью функции OrderStopLoss(). По аналогии уровень Take Profit определяется с помощью функции OrderTakeProfit():

 double OrderTakeProfit() 

Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Изменим наш пример, чтобы убедиться, что позиция закрыта по ордеру, а не с рынка:

 //---- выбираем ордер/позицию с тикером 77777 if ( OrderSelect (77777, SELECT_BY_TICKET) == true) { // это позиция, а не отложеный ордер? if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL)) { // это закрытая позиция, а не открытая? if ( OrderCloseTime() != 0 ) { if ( ((OrderClosePrice() <= orderstoploss()) && (ordertype() == op_buy)) || ((ordercloseprice() >= OrderStopLoss()) && (OrderType() == OP_SELL)) ) { // позиция закрылась по Stop Loss // ... } else { if ( ((OrderClosePrice() >= OrderTakeProfit()) && (OrderType() == OP_BUY)) || ((OrderClosePrice() <= ordertakeprofit()) && (ordertype() == op_sell)) ) { // позиция закрылась по take profit // ... } else print("ошибка: позиция закрыта не по ордеру"); } } else print("ошибка: это не закрытая позиция, а открытая"); } else print("ошибка: это не закрытая позиция, а отложенный ордер"); } else print("orderselect() вернул ошибку - ",getlasterror()); 

В следующей статье мы продолжим изучение торговых функций языка MetaQuotes Language 4 и расскажем о функции OrderSymbol().



Автор статьи: Андрей Ведихин

Хомячковый рай. Уйти и потеряться:


Есть что сказать? Не стесняйтесь!






Последние статьи:

Выгодные «исламские счета» для трейдеров Форекс Выгодные «исламские счета» для трейдеров Форекс Таким образом, вне зависимости от стиля работы стоит использовать «исламские счета» и сотрудничать с компаниями, которые не берут с трейдеров swap-комиссии. ..
2014-09-29
Стоит ли покупать чужие торговые сигналы и прогнозы? Стоит ли покупать чужие торговые сигналы и прогнозы? И все же основным нашим советом станет отказ от покупки торговых сигналов и прогнозов. Куда лучше научиться анализировать валютный рынок и думать всегда только своей головой. ..
2015-02-12

Видео по теме:




В мире больших денег

  • Самые богатые люди
    планеты. Ежегодные рейтинги FORBS. Истории успеха признаных финансовых гуру
  • Самые дорогие вещи:
    Часы, автомобили, ноутбуки стоимотью в десятки и сотни тысяч долларов. Рубрика "Чтоб я так жил"
  • Денежные прогнозы
    Что покупать и что продавать? Периодические прогнозы цен на иностранные валюты, акции крупнейших компаний и драгоценные металлы

ВКонтакте с деньгами

УГОЛОК АДМИНИСТРАТОРА