Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 59

 
Vitalie Postolache:
Дело в котировках, некачественные они.

Стандартный эксперт с ними то проходит нормально. Да и на демо-счёте торговля не идёт. Сделки не открываются. Хотя должны.

 
Michail_David:

Стандартный эксперт с ними то проходит нормально 

Стандартный и свой сравните, найдите отличия и сделайте выводы. Но формулировка ошибки говорит именно о некачественных котировках, когда значения с одного ТФ не совпадают с сначениями с другого ТФ.

Ещё от такой беды можно уйти, если код будет написан для торговли в режиме "только по ценам открытия".

Добавлено. У вас именно попытка сделать код  по ценам открытия, непонятно, зачем его тестировать по всем тикам...
 
Vitalie Postolache:
Стандартный и свой сравните, найдите отличия и сделайте выводы. От такой беды можно уйти, если код будет написан для торговли в режиме "только по ценам открытия".
В стандартном также используются цены закрытия, как и у меня
 
Michail_David:
В стандартном также используются цены закрытия, как и у меня

Какой советник вы называете стандартным? Я в поставке терминала не видел советников "по ценам закрытия".

А по ценам открытия, надо или чтобы весь торговый код работал в таком режиме, или вообще не делать такого. У вас только часть кода испольняется по новому бару, остальное будет работать на кажном тике.

 
Vitalie Postolache:

Какой советник вы называете стандартным? Я в поставке терминала не видел советников "по ценам закрытия".

А по ценам открытия, надо или чтобы весь торговый код работал в таком режиме, или вообще не делать такого. У вас только часть кода испольняется по новому бару, остальное будет работать на кажном тике.

Стандартным называю MACD Sample. Поиск нового бара лучше в начало перенести?
 
Michail_David:
Стандартным называю MACD Sample. Поиск нового бара лучше в начало перенести?

Где в MACD Sample режим "только цены открытия", что-то не вижу такого? Поиск нового бара лучше перенести в начало OnTick(). 

И это

static datetime New_Time=TimeCurrent();// Время текущего бара

лучше объявить вне функции, на глобальном уровне. 

А ещё лучше немного времени потратить и поискать тут на форуме более удачные варианты поиска нового бара.
 
Vitalie Postolache:

Где в MACD Sample режим "только цены открытия", что-то не вижу такого? Поиск нового бара лучше перенести в начало OnTick(). 

И 

static datetime New_Time=TimeCurrent();// Время текущего бара

лучше объявить вне функции, на глобальном уровне. 

Видно я не правильно понял режим "только цены открытия" по стандартному эксперту. Прошу прощения. Только начинаю разбираться. Спасибо за советы. Можете посмотреть код целиком? Может ещё замечания будут. Свежий взгляд очень нужен. Буду очень благодарен.
 
Michail_David:
Люди! Подскажите. Тестер выдаёт ошибку: 2017.02.08 18:24:43.751 TestGenerator: unmatched data error (low value 1.09860 at 2016.07.27 19:30 is not reached from the least timeframe, low price 1.09880 mismatches)
Что это значит и как её исправить? Что я не так сделал?
double Margin_Percent=AccountFreeMargin()*Percent/100; //Используемые средства для открытия ордеров
double Lots=Margin_Percent/MarketInfo(Symbol(),MODE_MARGINREQUIRED);//Определение общего количества лотов
double Lots_Volume=(MathFloor(Lots)+MarketInfo(Symbol(),MODE_LOTSTEP));
double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,1); //Параметры MACD основной линии текущего бара
double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,2);//Параметры MACD основной линии предыдущего бара
double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_CLOSE,MODE_MAIN,3);//Параметры MACD основной линии со смещением на 2 бара
double StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,0);//Параметры Трейлинг стоп по параметрам ParabolicSAR текущего бара
double Previous_StopLoss=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара
double CurrentPSAR=iSAR(NULL,0,Step_PSAR,Maximum_PSAR,1);//Параметры СтопЛосс по параметрам ParabolicSAR предыдущего бара

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
//------
  }
//-------------------------------------------------------------------------------------------------------
первый раз вижу что бы расчеты переменых делались на глобальном уровне за пределами функций генерирующих события, и компилятор даже не ругается? Блин точно компилятор не ругаеться
 
Sergey Gritsay:
первый раз вижу что бы расчеты переменых делались на глобальном уровне за пределами функций генерирующих события, и компилятор даже не ругается?
Нет. Принимает всё как есть
 
Michail_David:
Нет. Принимает всё как есть
поместите все что я выделил в функцию OnTick()
Причина обращения: