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

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

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

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

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

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

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

   if(Volume[0]>1) return;

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

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

Evgeniy Zhdan
16871
Evgeniy Zhdan  
sn888:

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

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

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

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

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

   if(Volume[0]>1) return;

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

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


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

Ihar Dubadzelau
9490
Ihar Dubadzelau  
sn888:

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

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

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

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

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

   if(Volume[0]>1) return;

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

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


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

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

Ihar Dubadzelau
9490
Ihar Dubadzelau  

 if(Volume[0]>1) return;

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

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

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

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

Konstantin Erin
2161
Konstantin Erin  
sn888:

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

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

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

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

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

   if(Volume[0]>1) return;

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

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

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

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

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


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




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

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

Andrei Fandeev
36129
Andrei Fandeev  
sn888:

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

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

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

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

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