Написанный советник на реальном счете работает не так как в тестере - не пропускает нужное количество баров
Здравствуйте, уважаемые программисты, знакомые с mql4 и его знающие.
Столкнулся с ситуацией, что созданный мной советник на реальном счете открывает ордера не по правилам стратегии, при этом в тестере, в режиме визуализации, процесс его работы полностью идет по нужному алгоритму.
Очень надеюсь на помощь и буду признателен за любую консультацию по данному вопросу, т.к моих малых познаний явно не хватает) и вариантов для пробы как-то просто даже уже нет..
Опишу немного подробнее:
Советник на реальном счете установил на каждый из 10 открытых графиков разных валютных пар, период у всех одинаковый - 1 минута, Magic_Number - у каждого свой.
При выполнении первого условия определенной переменной присваивается значение 2
По прошествии заранее заданного количества баров должна начаться проверка второго условия.
Так вот, в этом моменте и происходит сбой: на реальном счете советники не дожидаются, когда пройдет нужное количество баров и открывают ордер даже на этих барах, которые должны быть пропущены, и смотрят только, собственно, на выполнение второго условия после выполнения первого. В тестере нужное количество баров после выполнения первого условия пропускается и второе условие проверяется уже только на следующих барах, т.е все работает как нужно.
Принцип проверки и подсчета сделал следующий (просьба строго не судить )):
10 - количество баров, которые нужно пропустить;
t - максимальное количество баров для проверки 2-го условия
Строку
if( IsTesting() || IsOptimization() )
Строку
if( IsTesting() || IsOptimization() )
Благодарю Вас за помощь. При сборке советника как раз не узнавал про данную строку - она единственная, получается, осталась от начального шаблона и как раз оказалась без внимания )
Сейчас одну сделку советник открыл уже как это требуется
Строку
if( IsTesting() || IsOptimization() )
Если условие_1 выполняется, проверяем условие 2
<--- 1 ---> <--- 2 --->
Если одно из условий не выполняется, увеличиваем N
<----- 1 -----> <----- 2 ----->
После отладки строим мультивалютник. Попробуй использовать кириллицу - УДОБНО!!!
string Инструменты[10]={"EURUSD","USDCAD","EURCAD", .......};
for(int НомерИнструмента=0;НомерИнструмента<10;НомерИнструмента++)
{
string Инструмент=Инструменты[НомерИнструмента];
... Все остальное ...
}
Следующий вариант - инструменты считываются из файла
EURUSD
USDCAD
EURCAD
......
Так проходил этот путь...
...
... Попробуй использовать кириллицу - УДОБНО!!!
...
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, уважаемые программисты, знакомые с mql4 и его знающие.
Столкнулся с ситуацией, что созданный мной советник на реальном счете открывает ордера не по правилам стратегии, при этом в тестере, в режиме визуализации, процесс его работы полностью идет по нужному алгоритму.
Очень надеюсь на помощь и буду признателен за любую консультацию по данному вопросу, т.к моих малых познаний явно не хватает) и вариантов для пробы как-то просто даже уже нет..
Опишу немного подробнее:
Советник на реальном счете установил на каждый из 10 открытых графиков разных валютных пар, период у всех одинаковый - 1 минута, Magic_Number - у каждого свой.
При выполнении первого условия определенной переменной присваивается значение 2
По прошествии заранее заданного количества баров должна начаться проверка второго условия.
Так вот, в этом моменте и происходит сбой: на реальном счете советники не дожидаются, когда пройдет нужное количество баров и открывают ордер даже на этих барах, которые должны быть пропущены, и смотрят только, собственно, на выполнение второго условия после выполнения первого. В тестере нужное количество баров после выполнения первого условия пропускается и второе условие проверяется уже только на следующих барах, т.е все работает как нужно.
Принцип проверки и подсчета сделал следующий (просьба строго не судить )):
10 - количество баров, которые нужно пропустить;
t - максимальное количество баров для проверки 2-го условия