Обучение MQL II. Урок 10 - 27 Декабря 2009 - FOREX 21
ФОРЕКС 21 Воскресенье, 11.12.2016, 01:19
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта

Главная » 2009 » Декабрь » 27 » Обучение MQL II. Урок 10
Обучение MQL II. Урок 10
20:44
Обучение MQL II. Урок 10 Здравствуйте, дороги читатели. Сегодня мы напишем эксперт по алгоритму, который прислал Сергей Матюха. Также, мы разберем вопросы, присланные в письме, думаю, они будут интересны всем. 10.1. Вопросы из письма Письмо прислал Сергей Матюха и его друзья Евгений, Павел, Андрей и Дмитрий из Москвы. Хочу еще раз поблагодарить этих людей за интерес к журналу и конкретно к рубрике. "…1. В рамках обучения написания экспертов, индикаторов и экспертов работающих на основе индикаторов можно ли создать такой индикатор который бы показывал бы результаты работы эксперта. К примеру можно было бы прямо в окне графика цен показать линии (отрезки линий) от момента открытия до момента закрытия ордера со смешением например на величину bid или ask раскрасив их для наглядности в разные цвета, можно было бы добавить и отрезки StopLoss-ов относящие к конкретному ордеру (сразу очень хорошо был бы виден поджимающийся StopLoss). 2. А в отдельном окне (не в окне графика цен) можно было бы показывать состояние счета или процент прибыли например с помощью гистограмм, тогда легко можно было бы определить (при малом масштабе тайм-фрейма) в каких периодах тренда эксперт работает наиболее эффективно. Но я не знаю возможно ли это в принципе…." К сожалению этого сделать нельзя. Пользовательские индикаторы строятся сразу, т.е. все элементы массива индикатора определены. А тестер, встроенный в МТ моделирует прохождение цены по историческим данным, для оценки потенциала МТС. Поэтому индикатор не может быть использован как средства отладки, хотя конечно было бы очень удобно. Остается довольствоваться кривой доходности. Надеюсь, в новой версии МТ отчет о тестировании увеличится и будут введены новые способы отладки. /*[[ Name := expert10 Author := forextimes Link := fxtest.ru Lots := 1.00 Stop Loss := 20 Take Profit := 1000 Trailing Stop := 20 ]]*/ var:cnt(0),f1(0),f(0); if TotalTrades=0 then { if f1=0 then {f1=1; f=2; SetOrder (op_buy, lots, ask, 3, bid-stoploss*point, bid+TakeProfit*point, blue); exit;}; if f=1 then { f=2; SetOrder (op_buy, lots, ask, 3, bid-stoploss*point, bid+TakeProfit*point, blue); exit;}; if f=2 then { f=1; SetOrder(op_sell, lots, bid, 3, ask+stoploss*point, ask-TakeProfit*point, red); exit;}; }; for cnt=1 to TotalTrades begin /* это длинная позиция? */ If Ord(cnt,VAL_TYPE)=OP_BUY then /* длинная позиция */ { /* сначала проверим - есть ли профит у этой сделки больше чем уровень трейлинг стопа? проверяем Bid, так как позиция BUY */ If (Bid-Ord(cnt,VAL_OPENPRICE))>(TrailingStop*Point) then { /* да, позиция имеет прибыль больше чем значение трейлинг стопа(например 30 пунктов). теперь надо проверить, можно ли поставить стоп лучше чем он был ранее? */ 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 { /* сначала проверим - есть ли профит у этой сделки больше чем уровень трейлинг стопа? проверяем Ask, так как позиция SELL */If (Ord(cnt,VAL_OPENPRICE)-Ask)>(TrailingStop*Point) then { /* да, позиция имеет прибыль больше чем значение трейлинг стопа (например 30 пунктов). теперь надо проверить, можно ли поставить стоп лучше чем он был ранее? */ If Ord(cnt,VAL_STOPLOSS)>(Ask+TrailingStop*Point) or Ord(cnt,VAL_STOPLOSS)=0 then /* обязательное условие!!! */ { /* меняем стоплосс на уровень Ask+Trailing Stop */ ModifyOrder(Ord(cnt, VAL_TICKET), Ord(cnt, VAL_OPENPRICE), Ask+TrailingStop*Point, Ord(cnt, VAL_TAKEPROFIT), Red); Exit; }; }; }; end; /* конец */ 10.2. Алгоритм эксперта Алгоритм эксперта также был прислан Сергеем Матюхой. Вот он: "1. Каждый последующий ордер имеет противоположное направление (если закрылся buy то откроется sell и наоборот). 2. Ордера не имеют TakeProfit-ы. 3. Закрытие осуществляется только с помощью StopLoss. 4. StopLoss должен быть обязательно поджимаемым. Здесь нужны, я думаю, всего две переменные, это величина StopLoss и некая переменная которая бы определяла бы шаг через который бы подтягивался StopLoss (я так пишу про "некую" потому, что мне и моим друзьям тоже работающим на FOREX немного не понятен пример с TrailingStop и принцип его действия в 6 выпуске, а может он и не подходит для данных целей)." Первый вход осуществляется случайным образом. В нашем случае это покупка. if f1=0 then {f1=1; f=2; SetOrder(op_buy, lots, ask, 3, bid-stoploss*point, bid+TakeProfit*point, blue); exit;}; Переменная f1 это флаг, т.к. она становится равной 1 переход по данному условию больше не происходит и случайная покупка осуществляется только 1 раз. Мы должны каждый раз открывать противоположную позицию от прошлой, поэтому у нас есть еще один флаг f. Если f=1 то прошлая позиция лонг, если f=2 то шорт. У авторов письма возникли проблемы с трелинг стопом. Возможно в прошлых выпусках его алгоритм мною был дан не ясно. В эксперт был вставлен алгоритм трейлинг стопа из эксперта , который поставляется вместе в МТ. Комментарии к алгоритму трейлинг стопа мне очень понравились. Как только прибыль по открытой позиции стала больше величины трейлинг стопа, эксперт проверяет можно ли поджать стоп-лосc, если это возможно стоп-лосс поджимается. Расстояние между текущей ценой и стоп-лоссом и есть величина трейлинг стопа. Поджатие происходит непрерывно, т.е. если цена увеличится хотя бы 1 пункт, то на этот пункт и подожмется стоп-лосс. Выставляя же значение стоп-лосса в самом начале (перед началом теста), это значение стоп-лосса будет только до первого поджатия, потом (после первого поджатия) стоп-лосс будет равен выставленному трейлинг стопу. Т.к. в алгоритме было указанно что выхода по тейк профиту быть не должно, тейк профит в настройках выставляем 1000 пунктов, т.е. заведомо недостижимый. Эксперт по первым тестам оказался убыточным, но может быть можно подобрать рабочие настройки. В следующем выпуске мы напишем новый эксперт или индикатор. Если, Вас, дорогие читатели, что-нибудь интересует, обязательно пишите.
Просмотров: 297 | Добавил: forex21 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

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

Поиск

Друзья сайта


Статистика

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