Торговые системы: Файл Lite_EXPERT2.mqh - практические примеры реализации экспертов

 

New article Файл Lite_EXPERT2.mqh - практические примеры реализации экспертов has been published:

В этой статье автор продолжает знакомство с функциями файла Lite_EXPERT2.mqh на конкретных примерах построения экспертов. Рассматривается идея использования динамически изменяющихся от сделки к сделке и плавающих отложенных ордеров, определяемых на основе значений индикатора Average True Range (ATR).

Author: Nikolay Kositsin

 
Здравствуйте спасибо за общественно-полезное дело.
Вопрос:
//---- Проверка значения переменной Timeframe_Up на корректность
   TimeframeCheck("Timeframe_Up", Timeframe_Up);
Здесь происходит проверка => Timeframe_Up!=0
Period_Up = Timeframe_Up * 60; // период графика для лонгов в секундах 
//---- Получение предела времени на запрет следующей торговой операции
           TradeTimeLevel_Dn = iTime(NULL, Timeframe_Dn, 0) + Period_Dn;
           if (TradeTimeLevel_Dn == 0)
                                 return(-1);
Но т.к. Period_Up в любом случае не равен 0, то зачем проверка на TradeTimeLevel_Dn == 0?
И даже если предположить что как-то это дело станет равным нулю, то на следующем тике в принципе 
IsNewBar(0, Symbol(), Timeframe_Up) 
вернет false как я понимаю? т.к. произойдет досрочный выход из start() и 1-й бар будет для советника по сути потерян, или я что-то упустил.
Спасибо.
 

1.Спасибо за полезную информацию.

2. Опечатка?в Exp_17.mq4 ://| КОД ДЛЯ КОРОТКИХ ПОЗИЦИЙ |
//+---------------------------+
if (Test_Up)... Правильно -Test_Dn?

 
starik777:
Здравствуйте спасибо за общественно-полезное дело.
Вопрос:
//---- Проверка значения переменной Timeframe_Up на корректность
   TimeframeCheck("Timeframe_Up", Timeframe_Up);
Здесь происходит проверка => Timeframe_Up!=0
Period_Up = Timeframe_Up * 60; // период графика для лонгов в секундах 
//---- Получение предела времени на запрет следующей торговой операции
           TradeTimeLevel_Dn = iTime(NULL, Timeframe_Dn, 0) + Period_Dn;
           if (TradeTimeLevel_Dn == 0)
                                 return(-1);
Но т.к. Period_Up в любом случае не равен 0, то зачем проверка на TradeTimeLevel_Dn == 0?
И даже если предположить что как-то это дело станет равным нулю, то на следующем тике в принципе 
IsNewBar(0, Symbol(), Timeframe_Up) 
вернет false как я понимаю? т.к. произойдет досрочный выход из start() и 1-й бар будет для советника по сути потерян, или я что-то упустил.
Спасибо.


Да! Получился маленький прокол! Первоначально должно быть вот так:

           //---- Получение предела времени на запрет 
                                         // следующей торговой операции
           TradeTimeLevel_Dn = iTime(NULL, Timeframe_Dn, 0);
           if (TradeTimeLevel_Dn == 0)
            return(-1);
           TradeTimeLevel_Dn += Period_Dn;
 

1.Большое спасибо автору за статьи, которые помогают съэкономить много личного времени при программировании.

2. Правильно ли я понимаю? В Lite_EXPERT2.mqh .dOpenSellLimitOrder1_(),в LEVEL = (dLEVEL - Bid) / digits;вместо digits должно быть point?

3.В чем отличие Lite_EXPERT2_.mqh от Lite_EXPERT2.mqh, в применении ?

 
ias:

1.Большое спасибо автору за статьи, которые помогают съэкономить много личного времени при программировании.

2. Правильно ли я понимаю? В Lite_EXPERT2.mqh .dOpenSellLimitOrder1_(),в LEVEL = (dLEVEL - Bid) / digits;вместо digits должно быть point?

3.В чем отличие Lite_EXPERT2_.mqh от Lite_EXPERT2.mqh, в применении ?


2. Да! Всё верно! Вы правильно поняли. Несовсем понятно, как мне удалось сделать такой ляп, но факт в том, что он получился!

3. При установке ордеров файл Lite_EXPERT2_.mqh подаёт звуковой сигнал PlaySound("ok.wav"), эта функция в тестере не работает!

 

1.Спасибо за ответ.

2.Почему Переменная Number в Exp_17.mq4 для //| КОД ДЛЯ ДЛИННЫХ ПОЗИЦИЙ |/if (IsNewBar(0, Symbol(), Timeframe_Up)),= 0, а в
//| КОД ДЛЯ КОРОТКИХ ПОЗИЦИЙ |if (IsNewBar(1, Symbol(), Timeframe_Dn)),=1?


,

 
ias:

1.Спасибо за ответ.

2.Почему Переменная Number в Exp_17.mq4 для //| КОД ДЛЯ ДЛИННЫХ ПОЗИЦИЙ |/if (IsNewBar(0, Symbol(), Timeframe_Up)),= 0, а в
//| КОД ДЛЯ КОРОТКИХ ПОЗИЦИЙ |if (IsNewBar(1, Symbol(), Timeframe_Dn)),=1?


,


Потому что код для коротких и код для длинных позиций - это два абсолютно разных эксперта, у каждого из которых свой вариант функции IsNewBar(), а переменная Number определяет номер варианта.
 
Здравствуйте Николай, огромное спасибо за эксперта, только вот есть одна проблемка. При компиляции Exp_17.mq4 выдает: ошибок 0, предупреждений 43 следующего типа: Function "OpenBuyOrder1_" is not referenced and will be removed from exp-file. Это выдается практически на все внутренние функции файла: Lite_EXPERT2.mqh. Спасибо.
---
 

Hello....Is there any chance to view this article (and attachments) translated in english?

I've read all the previous articles from Nikolay .... he always made great jobs.

Thanks.