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

Эксперт, торгующий в ночное время: функция start() - продолжение

В прошлом выпуске я начал рассмотрение того, как реализована функция start() "ночного" эксперта. В этом выпуске я рассмотрю оставшиеся части кода эксперта.

После того, как мы выставили (если необходимо) отложенные ордера и проверили, не надо ли нам удалить отложенный ордер (как OCO), пришла пора проверить, не пришло ли время закрыть открытую позицию:

    if (((c_hour>CloseHour)||((c_hour==CloseHour)&&(c_minute>=CloseMinute)))&&
       (TimeDay(c_time)!=TimeDay(LastTradeTime)))
      {
       // закрываем позицию
       ...
      }

Если же мы видим, что уже пришло время закрывать позицию, то мы осуществляем перебор всех открытых позиций и отложенных ордеров. В процессе перебора пытаемся найти позицию (OrderType() равен OP_BUY или OP_SELL), открытую по нашему инструменту и с магическим числом MyMagicNumber. Если такая позиция найдена, то мы ее закрываем:

       for (i=0; i<OrdersTotal(); i++)
         {
           if (!OrderSelect(i, SELECT_BY_POS))
             {
              Print("Error ", GetLastError(), ": Start()->OrderSelect(", i, ") [OrderTotal()=", OrdersTotal(),"]");
              continue;
             }
           if (OrderSymbol()!=Symbol()) continue;
           if (OrderMagicNumber()!=MyMagicNumber) continue;
           if (OrderType() == OP_BUY)
             {
               if (!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage)) 
                   Print("Error ", GetLastError(), ": Start()->OrderClose() [cannot close",
                           " a buy position]");
               return(0);
             }           
           if (OrderType() == OP_SELL) 
             {
               if (!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage)) 
                   Print("Error ", GetLastError(), ": Start()->OrderClose() [cannot close",
                           " a short position]");
               return(0);
             }                    
         }

Если же закрывать позиции не надо, то мы проверяем, не сработал ли наш трейлинг-стоп. Но об этом я расскажу в следующем выпуске.



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

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

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



Размещение статьи "Эксперт, торгующий в ночное время: функция start() - продолжение" на Вашем сайте

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

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

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

Журнал FOREX MAGAZINE:



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

Счетчики:

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

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

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


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