ФОРЕКС 21 Пятница, 03.05.2024, 02:27
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта

Главная » 2009 » Декабрь » 27 » Учимся писать эксперты для MetaTrader. Урок №14
Учимся писать эксперты для MetaTrader. Урок №14
22:07
Учимся писать эксперты для MetaTrader. Урок №14 Обучение MQL II. Урок №14 Здравствуйте дорогие читатели. Я получил несколько алгоритмов экспертов, в следующих выпусках я обязательно реализую некоторые из них. В этом же выпуске а бы хотел поговорить о частях исходного кода, которые одинаковы в любых экспертах. Кто-то скажет, что каждый эксперт индивидуален, кто-то, что во всех очень много общего, но точно, что некоторые моменты абсолютно одинаковые. Это проверка свободной маржи, ограничение торговли эксперта по времени (торговые сессии или ограничение по дням недели), трейлингстоп и т.д. Об этих фрагментах кода экспертов и пойдет речь. 14.1 Ограничение ДЦ На работу экспертов у ДЦ ограничений 2, точнее это ограничение не на эксперты конкретно, а вообще на работу через ДЦ. 1) Ограничение на свободную маржу: If FreeMargin<1000 then Exit; 2) 10 секундный таймаут, после открытия позиции: If((CurTime-LastTradeTime)<10 14.2 Возможные проверки В начале эксперта можно делать проверку на 1) Правильное выставление стопов If StopLoss<10*point or StopLoss>100*point then exit; 2) Проверка количества баров истории (для теста на истории) If Bars<200 then Exit; 3) Для игры одной позицией можно использовать конструкцию вида If TotalTrades<1 then { или If TotalTrades=1 then exit; 4) Для запуска трейлинга If TrailingStop>0 then { 14.3 Проверки и ограничения по времени Иногда возникает потребность протестировать эксперт на каком-то определенном промежутке истории, условия могут выглядеть следующим образом If Year <> 2003 Then Exit; С помощью этого ограничения, тестирование эксперта произойдет только за 2003 год If Year >= 2004 And Month > 2 Then Exit; Тестирование эксперта до определенной даты, в данном случае до конца февраля 2004 года. Условия на проверки времени внутри дня. If Hour < 10 Or Hour > 19 Then Exit; Торговля будет производиться в интервале с 10 до 19 по времени МТ. If Minute = 10 Then { Действие будет происходить в 10 минут каждого часа по времени МТ. If Seconds = 10 Then { То же, для секунд. Так же в МТ можно делать проверки по времени на время суток, для этого существует функция Day of week. Она может принимать значения от 1 до 7, соответственно дням недели, только нумерация начинается с воскресения. Т.е. 1-воскресенье, 2- понедельник и т.д. If DayOfWeek = 3 Then Exit; Эксперт не будет работать по вторникам. 14.4 Трейлингстопы Конечно же нет смысла писать новый трейлингстоп для каждого эксперта, его можно вставлять в код эксперта при желании. If TrailingStop>0 then { for cnt=1 to TotalTrades begin /* если это длинная позиция? */ If Ord(cnt,VAL_TYPE)=OP_BUY then /* длинная позиция */ { /* есть ли профит у этой сделки больше чем уровень трейлинг стопа? */ If (Bid-Ord(cnt,VAL_OPENPRICE))>(TrailingStop*Point) then { /* позиция имеет прибыль больше чем значение трейлинг стопа тогда проверяем, можно ли поджать стоп? */ If Ord(cnt,VAL_STOPLOSS)<(Bid-TrailingStop*Point) then { /* поджимаем стоплосс до Bid-Trailing Stop */ ModifyOrder(Ord(cnt, VAL_TICKET), Ord(cnt, VAL_OPENPRICE), Bid-TrailingStop*Point, Ord(cnt, VAL_TAKEPROFIT), Red); Exit; }; }; }; /* это короткая позиция? */ If Ord(cnt,VAL_TYPE)=OP_SELL then { /* есть ли профит у этой сделки больше чем уровень трейлинг стопа? */ If (Ord(cnt,VAL_OPENPRICE)-Ask)>(TrailingStop*Point) then { /* позиция имеет прибыль больше чем значение трейлинг стопа тогда проверяем, можно ли поджать стоп?*/ If Ord(cnt,VAL_STOPLOSS)>(Ask+TrailingStop*Point) or Ord(cnt,VAL_STOPLOSS)=0 then { /* поджимаем стоплосс*/ ModifyOrder(Ord(cnt, VAL_TICKET), Ord(cnt, VAL_OPENPRICE), Ask+TrailingStop*Point, Ord(cnt, VAL_TAKEPROFIT), Red); Exit; }; }; }; end; }; Я уверен, что благодаря этим не сложным заготовкам, процесс написания экспертов только улучшиться и немного упроститься. В следующем выпуске мы напишем эксперт или индикатор, алгоритм которого покажется мне более интересным.
Просмотров: 370 | Добавил: forex21 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Календарь новостей
«  Декабрь 2009  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Поиск

Друзья сайта


Статистика

Copyright MyCorp © 2024 Бесплатный конструктор сайтов - uCoz