помогите с тестером

 

Помогите понять работу тестера.

Ситуация следующая:

написал EA, который для генерации сигнала входа использует 2 функции, теоретически может произойти ситуация что обе выгенерируют сигнал входа на рынок на одном баре, чтобы избежать повторения входа пользуюсь функцией описанной https://forum.mql4.com/ru/5525, за которую KimIV огромное спасибо, при оказии, никогда меня не подвела до этого случая. Исходя из результатов, полученных по тестированию видно что иногда тестер открывает по 2 ордера в то же самое время.

Вопрос следующий : может ли происходить так что тестер выставляет 2 ордера, поскольку оба сигнала поступают одновременно и он открывает ордера параллельно ?

Спасибо огромное за каждую подсказку.

 

Не, нужен весь код, без него непонятно.

 
Roger >>:

Не, нужен весь код, без него непонятно.

Не думаю что код поможет .

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

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

 
pitpiter писал(а) >>

Не думаю что код поможет .

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

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

клас тогда ответте, не видя кода, почему у меня 12 глобальных переменных, а прога не делает то что должна. В качестве примера. Не покупает в минимуме и не продает в максимуме )). Можете помочь ?

 

Да измените Вы условия входа на банальные, если боитесь засветить стратегию и опубликуйте в таком виде.

С телепатами тут плоховато.

 

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

Так выглядит код с дополнительной глобальной переменной

Файлы:
 
pitpiter >>:

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

Так выглядит код с дополнительной глобальной переменной


а здесь без дополнительной переменной

Файлы:
 
pitpiter >>:

написал EA, который для генерации сигнала входа использует 2 функции, теоретически может произойти ситуация что обе выгенерируют сигнал входа на рынок на одном баре, чтобы избежать повторения входа пользуюсь функцией описанной https://forum.mql4.com/ru/5525, за которую KimIV огромное спасибо, при оказии, никогда меня не подвела до этого случая. Исходя из результатов, полученных по тестированию видно что иногда тестер открывает по 2 ордера в то же самое время.

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

Т.е можно ли до них достучаться перебором с помощью MODE_HISTORY?

Если нет, тогда в принципе все понятно.

 
Ну, вот видишь, все проясняется. Когда начинается новый бар, ты задаешь
      if(p6enable==true){  Pattern6(ema16,ema26,maxlev6,minlev6,stoploss6);
                            Pattern61(ema16,ema26,0.004,-0.001,stoploss6);
                            Pattern62(ema16,ema26,0.005,-0.0055,stoploss6);
                         }
и в каждой функции есть возможность открыть по ордеру. Поставь внутри каждой функции по Print("f1") f2 и f3 и проверь от какой функции открывается ордер.
 
TheXpert >>:

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

Т.е можно ли до них достучаться перебором с помощью MODE_HISTORY?

Если нет, тогда в принципе все понятно.

Если прогоняю на тестере от начала года, то первые результаты - ордеры близнецы,один выгенерован ф-ей Pattern6, второй ф-ей Pattern61, отсюда и вопрос каким образом генерируется этот второй, если на момент запроса уже имеется один ордер, открытый на этом баре и ф-ция NumberOfBarOpenLastPos() теоретически должна выдать 0

 
У тебя там есть условие
if(NumberOfBarOpenLastPos()>0||OrdersHistoryTotal()==0)
Сначала история еще пустая, т.е. OrdersHistoryTotal()==0 пока не закроется хотя бы один ордер.
Причина обращения: