Можно ли это считать робастым роботом? - страница 7

 
Roman S #:

Так я его еще не запускал на реале, а тестер - такое себе, вот сейчас после непонятно каких манипуляций или возможно обновлений платформы - тест 1 дня идет 13 минут! Это жесть. Опять же советник висит на 4 демо-счетах разных брокеров и дает поразительно разные результаты. На одном например он за неделю может не открыть ни одной сделки, хотя на другом за это же время их будет более тысячи. Почему? Непонятно. Ну другом баланс скачет от +5% в день, до такой же цифры в минус, пока тоже не ясно почему так и что с этим делать. Не, пока я не буду уверен что оно работает и в случае чего хотя бы не сольет в форбсе вы меня не увидите. :)) 

P.S. При том что я вынужден мониторить процесс формирования сигнала, и естественно он формируется одинаково. Но результат поразительно разный.


советник на NewBar?

 
lynxntech #:

советник на NewBar?

На мт5

 
Roman S #:

На мт5

используется функция новый бар? у меня с ней были проблемы 

3 терминала на одном сервере, периодически не срабатывали принты по условию, т.е. перед отправкой ордера принт стоял

причем использовал все варианты функции NewBar, и время и SERIES_LASTBAR_DATE все равно пропускался сигнал, данные иногда брались с -1 бар

причем это не цикл по символам был, а именно приход по индикатор шпион (наверное это вам ничего не говорит, раз не знаете про NewBar)

отказался от функции NewBar в пользу обработки каждого тика, беру данные с закрытого бара, тут 100% открытие (в течение минуты будет пытаться открыть позицию), и можно наставить фильтры по спреду и другое.

 
И чего ветка заглохла, тестер и реал оказались разными? Я без малейшего сарказма.
 
Alexey Volchanskiy #:
И чего ветка заглохла, тестер и реал оказались разными? Я без малейшего сарказма.

Нет конечно, медленно и печально сижу на демо, дорабатываю реакции робота на ситуации которых на тестере не бывает. Учитывая что уделяю время роботу в основном в выходные когда не работает биржа все растягивается во времени. Проверяю его на 

 
Roman S #:

Нет конечно, медленно и печально сижу на демо, дорабатываю реакции робота на ситуации которых на тестере не бывает. Учитывая что уделяю время роботу в основном в выходные когда не работает биржа все растягивается во времени. Проверяю его на 

хороший подход

 
Коллеги, а только мне так кажется, что использование в коде PositionsTotal()  приводит к резкому падению скорости работы советника? Он у меня тиковый, и появление этой функции снижается скорость теста раз так в 10. Все верно?
 
Roman S #:
Коллеги, а только мне так кажется, что использование в коде PositionsTotal()  приводит к резкому падению скорости работы советника? Он у меня тиковый, и появление этой функции снижается скорость теста раз так в 10. Все верно?

Добрый день!

Не замечал такой проблемы, но теперь обращу внимание. И сразу к Вам встречный вопрос: PositionsTotal() используете для перебора в цикле? Если "да", то объявляете переменную int total = PositionsTotal(); или сразу функцию крутите в цикле? Где-то в памяти отложилось, что лучше использовать в цикле переменную, а не функцию. Хотя могу и ошибаться, как в той поговорке - Слышал звон, да не знает, где он!

С уважением, Владимир.

 
MrBrooklin #:

Добрый день!

Не замечал такой проблемы, но теперь обращу внимание. И сразу к Вам встречный вопрос: PositionsTotal() используете для перебора в цикле? Если "да", то объявляете переменную int total = PositionsTotal(); или сразу функцию крутите в цикле? Где-то в памяти отложилось, что лучше использовать в цикле переменную, а не функцию. Хотя могу и ошибаться, как в той поговорке - Слышал звон, да не знает, где он!

С уважением, Владимир.

Да, так я делаю, но у меня советник тиковый, и есть три процедуры которые вызываются каждый тик. и я решил сделать "оптимизацию" и в случае если открытых позиций нет - просто сразу выходить. Но на тесте получается наоборот - сильно медленнее.

 
Здравствуйте, Роман.
Попробуйте вместо вызова PositionsTotal() на каждом тике завести глобальную переменную для хранения количества открытых позиций. При каждой операции открытия/закрытия присваивайте ей результат PositionsTotal(), а на каждом тике проверяйте, равна ли эта переменная нулю.
Если да, то выход без исполнения дальнейшего кода. 
Поскольку операций открытия/закрытия существенно меньше, чем тиков, то сильно уменьшится количество вызовов PositionsTotal().
Для отслеживания операций можно использовать обработчик OnTrade() или OnTradeTransaction()
Причина обращения: