Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как растет твой рейтинг
MetaQuotes Software Corp.
Модератор
181059
MetaQuotes Software Corp. 2009.07.21 18:42 

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

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

Author: Nikolay Kositsin

MQL4 Comments
16319
MQL4 Comments 2009.08.08 19:57  
Здравствуйте спасибо за общественно-полезное дело.
Вопрос:
//---- Проверка значения переменной 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-й бар будет для советника по сути потерян, или я что-то упустил.
Спасибо.
Anatoliy Ivanov
6657
Anatoliy Ivanov 2009.08.08 20:07  

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

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

Nikolay Kositsin
299104
Nikolay Kositsin 2009.08.09 00:34  
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;
Anatoliy Ivanov
6657
Anatoliy Ivanov 2009.08.29 22:20  

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

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

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

Nikolay Kositsin
299104
Nikolay Kositsin 2009.08.30 00:40  
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"), эта функция в тестере не работает!

Anatoliy Ivanov
6657
Anatoliy Ivanov 2009.09.05 21:03  

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

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


,

Nikolay Kositsin
299104
Nikolay Kositsin 2009.09.06 01:12  
ias:

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

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


,


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

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.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий