Навигация по сайту
Реклама
Популярные статьи

Новости
{links1}
В Москве убили известного шансонье

Уголовное дело об убийстве возбуждено после обнаружения тела мужчины с ножевыми ранениями на северо-востоке Москвы, сообщила РИА Новости старший помощник руководителя главка СК России по Москве Юлия ...

Вексельберг и Блаватник покупают 6% «Русала» у Онэксима

Компания Zonoville Investments Limited — консорциум, возглавляемый группой «Ренова» Виктора Вексельберга и Access Industries Леонарда Блаватника,— договорилась о покупке 6% акций «Русала» у ОНЭКСИМа ...

США собрались ввести пошлины на сталь и алюминий из России и Китая

В отношении поставщиков алюминия предлагается применить три возможных сценария: ввести пошлину в 7,7% на весь импорт из всех стран; или пошлину в 23,6% для конкретных стран, включая Китай, Россию и ...


{links2}
Счетчик

» » Пример использования функции OrderSend() - продолжение Гид по интернет трейдингу форекс
Рекламный блок

Пример использования функции OrderSend() - продолжение Гид по интернет трейдингу форекс Форекс
В прошлом выпуске я написал по просьбе одного из читателей моего блога эксперт, в котором воплощена следующая логика:
 

Советник должен в определенное время (параметры MyHour и MyMinute) на заранее заданном расстоянии от текущей цены (параметр MyPendingLevel) выставлять два ордера - Sell Stop и Buy Stop. При этом должны выставляться ордера Stop Loss на расстоянии MySL пипсов от цены ордера и Take Profit на расстоянии MyTP пипсов.

 
В этом выпуске я хотел бы разобрать подробно логику работы этого эксперта.
Прежде всего этот эксперт имеет несколько параметров:
 
   extern int       MyPendingLevel=15;
   extern int       MySL=30;
   extern int       MyTP=15;
   extern int       MyHour=19;
   extern int       MyMinute=40;
   extern int       MyLots=1.0;

Эти параметры имеют следующих смысл:

  • MyPendingLevel - расстояние в пипсах от текущей цены, на котором выставляется отложенный ордер;
  • MySL и MyTP - Stop Loss и Tale Profit в пипсах от цены отложенного ордера;
  • MyHour и MyMinute - час и минута, когда выставляет отложенный ордер;
  • MyLots - размер лота отложенного ордера.

Напомню, что о том, как описать в коде параметры эксперта, я рассказывал в выпуске "Внешние переменные".

В реальности может возникнуть ситуация, когда на баре MyHour:MyMinute может быть несколько тиков, поэтому чтобы избежать выставления отложенных ордеров на каждом тике, мы завели глобальную переменную LastTradeTime:

 datetime LastTradeTime; // время последней торговой операции
Этой переменной мы присваиваем в качестве начального значения вчерашнюю дату при инициализации эксперта - в функции init():
 
  //+------------------------------------------------------------------+
  //| expert initialization function                          |
  //+------------------------------------------------------------------+
  int init()
    {
  //----
     // установим время последней торговой операции вчерашним днем
     LastTradeTime = CurTime()-24*60*60;  
 //----
     return(0);
  }
 
На каждом тике вызывается функция start(), в которой мы сначала проверяем, не выставляли ли мы уже сегодня отложенные ордера:
 
   // проверим, не выставляли ли мы ордер уже сегодня
   // если выставляли - выходим
   if (TimeDayOfYear(CurTime())==TimeDayOfYear(LastTradeTime))
         return(0);

Здесь используется неизвестная нам пока функция TimeDayOfYear():

   int TimeDayOfYear( datetime date )

Эта функция возвращает порядковый номер дня (с начала года): 1 - 1 января, ... , 365 или 366 - 31 декабря.

Если же порядковый номер дня последней торговой операции - TimeDayOfYear(LastTradeTime) - равен порядковому дню текущего времени - TimeDayOfYear(CurTime()), - значит мы уже сегодня ордера выставляли, поэтому выходим из эксперта: return(0).
 

Теперь проверим, не наступило ли время выставить отложенный ордер:

   // проверим, не наступило ли время выставить ордер
   if ((TimeHour(CurTime())==MyHour)&&(TimeMinute(CurTime())==MyMinute))
     {
       ...
     }

Расскажу о двух незнакомых функциях в этом участке кода:
  • int TimeHour(datetime time) - возвращает час для времени time: 0..23;
  • int TimeMinute(datetime time) - возвращает минуту для времени time: 0..59.

Если уже пора выставить отложенный ордер, то сначала с помощью функции OrderSend() размещаем ордер Buy Stop.

 

Потом выжидаем паузу в 10 секунд с помощью функции Sleep():

   void Sleep(int milliseconds)
 
Эта функция делает паузу в работе эксперта на milliseconds милисекунд (1 секунда = 1000 милисекунд).

За эти 10 секунд текущий бид и аск могли измениться, поэтому мы обновляем их с помощью функции RefreshRates().

Далее мы выставляем отложенный ордер Sell Stop.

Вот мы и дошли до конца нашего эксперта. Хочу заметить, что этот эксперт может пропустить момент, когда надо было выставить отложенный ордер, если в этом баре не было котировок и функция start() не вызывалась. Думаю, что у моего читателя уже достаточно собственных знаний, чтобы самостоятельно подправить этот недостаток эксперта.
 
 

Ключевые теги: ордера, ордер, отложенный, время, расстоянии, extern, int      , эксперта, функция, функции, выставить, пипсов, параметры, выставляли, эксперт, LastTradeTime, последней, выпуске, помощью, торговой
 
Другие новости по теме:

  • Пример использования функции OrderSend() Гид по интернет трейдингу форекс
  • Пример использования функции OrderClose() - продолжение Гид по интернет т ...
  • Пример использования функции OrderClose() Гид по интернет трейдингу форек ...
  • OrderCloseBy() - закрытие одной позиции другой Гид по интернет трейдингу ...
  • Эксперт, торгующий в ночное время: функция init() Гид по интернет трейдин ...
  • OrderOpenTime() - время открытия ордера или позиции, выделенного функцией O ...
  • Параметры функции OrderSend() - продолжение Гид по интернет трейдингу фор ...
  • OrderExpiration() - дата истечения отложенного ордера Гид по интернет тре ...
  • Эксперт, торгующий в ночное время: функция start() Гид по интернет трейди ...
  • Торговля в ночное время Гид по интернет трейдингу форекс


  • Добавление комментария
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Вставка ссылкиВставка защищенной ссылки Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера





    форекс начинающим | форекс обучение | видео форекс | книги форекс | уроки форекс | советники форекс | {links} Copyright © 2010 центовый форекс All Rights Reserved.