Вопрос новичка в разработке роботов про if(Volume[0]>1) return;

 

Всех приветствую!

Занялся разработкой роботов, благо техническое и финансовое образование позволяют понять что делать и зачем.

Но вот со средой разработки и кодом у меня пока проблемы - прошу помощи разобраться.

В типовом (встроенном) в MT4 советнике Moving average есть код, который я не могу понять:

//--- go trading only for first tiks of new bar

   if(Volume[0]>1) return;

Массив Volume согласно справке содержит тиковые объемы каждого бара. Но что значит это условие я никак понять не могу. Подскажете?

p.s даже среда разработки 1С мне кажется более удобной. Отладка в MT4 вообще для меня шаманство. Или это ломка "переключения" и пройдет?

 
sn888:

Всех приветствую!

Занялся разработкой роботов, благо техническое и финансовое образование позволяют понять что делать и зачем.

Но вот со средой разработки и кодом у меня пока проблемы - прошу помощи разобраться.

В типовом (встроенном) в MT4 советнике Moving average есть код, который я не могу понять:

//--- go trading only for first tiks of new bar

   if(Volume[0]>1) return;

Массив Volume согласно справке содержит тиковые объемы каждого бара. Но что значит это условие я никак понять не могу. Подскажете?

p.s даже среда разработки 1С мне кажется более удобной. Отладка в MT4 вообще для меня шаманство. Или это ломка "переключения" и пройдет?


Можно перевести //-- торговля только на первом тике нового бара. Короче, как приходит новый тик нового бара советник работает, потом ждет новый бар

 
sn888:

Всех приветствую!

Занялся разработкой роботов, благо техническое и финансовое образование позволяют понять что делать и зачем.

Но вот со средой разработки и кодом у меня пока проблемы - прошу помощи разобраться.

В типовом (встроенном) в MT4 советнике Moving average есть код, который я не могу понять:

//--- go trading only for first tiks of new bar

   if(Volume[0]>1) return;

Массив Volume согласно справке содержит тиковые объемы каждого бара. Но что значит это условие я никак понять не могу. Подскажете?

p.s даже среда разработки 1С мне кажется более удобной. Отладка в MT4 вообще для меня шаманство. Или это ломка "переключения" и пройдет?


это предполагается, что сотвеник будет работать только на новом баре, когда появляется новый бар на нем объем = 0, и выполнение кода в функции идет дальше,

когда объем начинает расти и больше нуля, как правило уже на следующих тиках, происходит досрочный выход из функции

 

 if(Volume[0]>1) return;

это самый простой, но не самый лучший способ узнать новый бар или нет,

например при использовании сторонних котировок, например тиковых, часто файлы для тестера создаются вообще без объема,

и при таком использовании будут проблемы при выполнении кода в тестере,

я рекомендую для определения нового бара использовать сравнение времени нулевого бара (или первого бара, кому как нравится) 

 
sn888:

Всех приветствую!

Занялся разработкой роботов, благо техническое и финансовое образование позволяют понять что делать и зачем.

Но вот со средой разработки и кодом у меня пока проблемы - прошу помощи разобраться.

В типовом (встроенном) в MT4 советнике Moving average есть код, который я не могу понять:

//--- go trading only for first tiks of new bar

   if(Volume[0]>1) return;

Массив Volume согласно справке содержит тиковые объемы каждого бара. Но что значит это условие я никак понять не могу. Подскажете?

p.s даже среда разработки 1С мне кажется более удобной. Отладка в MT4 вообще для меня шаманство. Или это ломка "переключения" и пройдет?

Согласно одной устаревшей теории только что сшитый мешок должен быть пустым. По этой же теории в начале каждого бара его объем равен нулю. Позже теорию опроверг Ли ...  Теперь ориентируются на время открытия нового бара...
 
STARIJтолько что сшитый мешок должен быть пустым
Условие if(Volume[0]>1) return; говорит не о пустом мешке.
Условие проверяет, есть ли в мешке уже кошка? И если кошек более 1 - это значит что мешок уже использовался как минимум дважды для помещения в него кошек (он не новый).

Т.е. тик на этом баре не первый
 

Большое спасибо за ответы! Идею с объемом понял.


Сейчас мучаюсь с тем, что значения средних скользящих в советнике и на графике отличаются. Параметры одинаковые. Что может быть?




Код для средней: 

   maLong = iMA(NULL,5,MovingLongPeriod,0,MODE_EMA,PRICE_OPEN,0);

 
sn888:

Сейчас мучаюсь с тем, что значения средних скользящих в советнике и на графике отличаются. Параметры одинаковые. Что может быть?

   maLong = iMA(NULL,5,MovingLongPeriod,0,MODE_EMA,PRICE_OPEN,0);

График М15, а в запросе 5
Поменяйте 5 на 0 - всегда будет по текущему ТФ
 
Andrei Fandeev:
График М15, а в запросе 5
Поменяйте 5 на 0 - всегда будет по текущему ТФ
Да, просмотрел. Буду внимательнее. Спасибо!

Очень приятно, что встретил сильное профессиональное сообщество!) 

Еще раз всем огромное спасибо)
Причина обращения: