Обучение MQL II. Урок 10
|

Обучение 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 то шорт.

У авторов письма возникли проблемы с трелинг стопом. Возможно в прошлых выпусках его алгоритм мною был дан не ясно. В эксперт был вставлен алгоритм трейлинг стопа из эксперта <Trailing Stop>, который поставляется вместе в МТ. Комментарии к алгоритму трейлинг стопа мне очень понравились. Как только прибыль по открытой позиции стала больше величины трейлинг стопа, эксперт проверяет можно ли поджать стоп-лосc, если это возможно стоп-лосс поджимается. Расстояние между текущей ценой и стоп-лоссом и есть величина трейлинг стопа. Поджатие происходит непрерывно, т.е. если цена увеличится хотя бы 1 пункт, то на этот пункт и подожмется стоп-лосс. Выставляя же значение стоп-лосса в самом начале (перед началом теста), это значение стоп-лосса будет только до первого поджатия, потом (после первого поджатия) стоп-лосс будет равен выставленному трейлинг стопу.

 

Т.к. в алгоритме было указанно что выхода по тейк профиту быть не должно, тейк профит в настройках выставляем 1000 пунктов, т.е. заведомо недостижимый.

 

Эксперт по первым тестам оказался убыточным, но может быть можно подобрать рабочие настройки.

 

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


Онлайн обучение: финансы и форекс

Интернет открывает новые возможности для получения новых знаний и компетенций по любой тематике: будь то финансовые рынки и форекс-трейдинг, или любая другая область знаний и умений.

SEDU.ME – дает возможность оперативного обмена знаниями на взаимовыгодных условиях: продавай свое компетенции и (или) получи новые не выходя из дома. Все, что нужно – компьютер с выходом в интернет. Все остальное (видео-связь и связь голосом, удобное общее учебное поле, вспомогательные инструменты и удобную систему приема и отправки платежей в режиме онлайн) предоставит образовательный сервис SEDU.ME.


 

Компания «Fxtest»
Халхальян Артур
техническая поддержка трейдеров
artur@fxtest.ru