« Предыдущий пост | На главную страницу | Следующий пост »

Пример использования функции OrderClose()

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

Мы же в качестве примера применения функции OrderClose() рассмотрим эксперт, который закрывает все открытые позиции и удаляет все отложенные ордера в пятницу после 22:00 (по времени торговой платформы).

   //+------------------------------------------------------------------+
   //|                      Close everything on Friday.mq4 |
   //|                 Copyright © 2006, Andrey Vedikhin |
   //|                                http://www.vedikhin.ru |
   //+------------------------------------------------------------------+
   #property copyright "Copyright © 2006, Andrey Vedikhin"
   #property link      "http://www.vedikhin.blog-forex.org"
//---- input parameters extern int MyHour=22; extern int MyMinute=00;
// 5 - Friday #define MyDay 5
datetime LastTradeTime;
//+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- // установим время последней торговой операции вчерашним днем LastTradeTime = CurTime()-24*60*60; //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- // проверим, не закрывали ли мы все уже сегодня // если да - выходим if (TimeDayOfYear(CurTime())==TimeDayOfYear(LastTradeTime)) return(0);
// если не пятница - выходим if (DayOfWeek()!=MyDay) return(0);
// проверим, не наступило ли время закрывать позиции if (((TimeHour(CurTime())==MyHour)&&(TimeMinute(CurTime())>=MyMinute)) ||(TimeHour(CurTime())>MyHour)) { // закроем все позиции и удалим ордера while (OrdersTotal()>0) { // выделим первую позицию или ордер в списке if (!OrderSelect(0, SELECT_BY_POS)) break; // в случае неудачи выйти из цикла
// если отложенный ордер, то удалить if (OrderType()>OP_SELL) { if (!OrderDelete(OrderTicket())) { Print("Ошибка ", GetLastError()," при удалении отложенного ордера ", OrderTicket()); break; } } // если открытая позиция, то закрыть else { double price; if (OrderType()==OP_SELL) price = MarketInfo(OrderSymbol(), MODE_ASK); else price = MarketInfo(OrderSymbol(), MODE_BID);

if (!OrderClose(OrderTicket(), OrderLots(), price, 3)) { Print("Ошибка ", GetLastError()," при закрытии позиции ", OrderTicket()); break; } }
// пауза 10 секунд Sleep(10000); } if (OrdersTotal()==0) LastTradeTime = CurTime(); }
//---- return(0); } //+------------------------------------------------------------------+

В следующем выпуске я объясню принцип работы этого эксперта.



Все статьи по теме "Пишем советников для MetaTrader 4".

« Предыдущий пост | На главную страницу | Следующий пост »

Подписаться на мою рассылку



Размещение статьи "Пример использования функции OrderClose()" на Вашем сайте

Размещение статьи "Пример использования функции OrderClose()" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "Пример использования функции OrderClose()" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 5.04