бывает ситуация на ВПС, когда запущено два сеанса, и 1 терминал делает сразу 2 действия одинаковых.
Вы не дали больше информации. я предположил.
при том непонятно,
// Попытка запретить повторное открытие (не сработало) OrderSended = true;
а если ордер не выставился? то вы просто запрещаете, при любой ошибке.
что пишет в журнале сервера?
бывает ситуация на ВПС, когда запущено два сеанса, и 1 терминал делает сразу 2 действия одинаковых.
Вы не дали больше информации. я предположил.
при том непонятно,
а если ордер не выставился? то вы просто запрещаете, при любой ошибке.
что пишет в журнале сервера?
Просто для меня ситуация для кажется вообще какой-то мистической, уже неделю потратил на разгадку, поэтому даже не знаю какая информация может оказаться полезной.
Можете подробнее описать про сеансы, где это можно посмотреть? Терминал как раз запущен на VPS под windows server 2016.
Переменную OrderSended я добавил в попытках избавиться от дублирования ордеров, в рабочей версии робота её наличие не планировалось, по хорошему конечно надо добавить проверку на то, что ордер выставился.
В журнале ничего интересного:
2018.01.25 10:05:01.997 Trades sell limit 6.00 SBRF-3.18 at 25121 placed for execution
2018.01.25 10:05:01.997 Trades accepted sell limit 6.00 SBRF-3.18 at 25121
2018.01.25 10:05:01.998 Trades order #83603804 sell limit 6.00 / 6.00 SBRF-3.18 at 25121 done in 13.365 ms
2018.01.25 10:05:02.012 Trades deal #45594006 sell 1.00 SBRF-3.18 at 25121 done (based on order #83603804)
2018.01.25 10:05:02.015 Trades deal #45594007 sell 1.00 SBRF-3.18 at 25121 done (based on order #83603804)
2018.01.25 10:05:02.021 Trades deal #45594008 sell 1.00 SBRF-3.18 at 25121 done (based on order #83603804)
2018.01.25 10:05:02.022 Trades deal #45594009 sell 3.00 SBRF-3.18 at 25121 done (based on order #83603804)
и так про все 4 ордера
Просто для меня ситуация для кажется вообще какой-то мистической, уже неделю потратил на разгадку, поэтому даже не знаю какая информация может оказаться полезной.
Можете подробнее описать про сеансы, где это можно посмотреть? Терминал как раз запущен на VPS под windows server 2016.
Переменную OrderSended я добавил в попытках избавиться от дублирования ордеров, в рабочей версии робота её наличие не планировалось, по хорошему конечно надо добавить проверку на то, что ордер выставился.
В журнале ничего интересного:
2018.01.25 10:05:01.997 Trades sell limit 6.00 SBRF-3.18 at 25121 placed for execution
2018.01.25 10:05:01.997 Trades accepted sell limit 6.00 SBRF-3.18 at 25121
2018.01.25 10:05:01.998 Trades order #83603804 sell limit 6.00 / 6.00 SBRF-3.18 at 25121 done in 13.365 ms
2018.01.25 10:05:02.012 Trades deal #45594006 sell 1.00 SBRF-3.18 at 25121 done (based on order #83603804)
2018.01.25 10:05:02.015 Trades deal #45594007 sell 1.00 SBRF-3.18 at 25121 done (based on order #83603804)
2018.01.25 10:05:02.021 Trades deal #45594008 sell 1.00 SBRF-3.18 at 25121 done (based on order #83603804)
2018.01.25 10:05:02.022 Trades deal #45594009 sell 3.00 SBRF-3.18 at 25121 done (based on order #83603804)
и так про все 4 ордера
если это VPS то проблема ясна, я выяснил ее лет 5 назад.
ссылку на свою статью кинул в ЛС. сюда нельзя. там ничего особенного, но есть объяснение про причины и как их решить.
хотя в статье нет никаких намеков, закинул сюда:
Проблема с VPS
Итак ребята, во-первых, при выборе ВПС хостинга, стоит учитывать свои потребности в количестве программ, установленных в будущем на такой сервер.
Добрый день, столкнулся с такой проблемой:
На инструменте работает торговый робот на двух разных графиках с разными входными параметрами, позиции ведутся виртуально и отслеживаются через мэджик. Сигнал на вход у роботов одинаковый, при его наступлении они должны выставить ордер с типом ORDER_TYPE_SELL_LIMIT на некоторый объем Vol. Но почему-то получается так, что выставляется по два ордера от каждого робота. Добавил вывод в лог TicketID, но на 4 открытых ордера в логи пишет 2 раза, откуда выставляются еще 2? Причем такой баг стабильно ловится в первом входе за день, в основном в первый час торговли, если перезапускаю роботов, то на втором входе уже нет такой ерунды. Ошибок никаких в логах нет.
Вот код который отвечает за открытие позиции:
функцию обнаружения нового бара покажите.
функцию обнаружения нового бара покажите.
Её уже протестировал, работает корректно:
Print("New bar") стабильно пишет через каждые 5 минут на 5 минутном таймфрейме
Сейчас отрабатываю версию с VPS
Код функции, если интересно:
bool IsNewBar() { static datetime last_time=0; datetime lastbar_time = (datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE); //first call if(last_time==0){ last_time=lastbar_time; return(false); } if(last_time!=lastbar_time){ last_time=lastbar_time; return(true); } return(false); }
Перезагрузка сервера помогла, спасибо, Владислав
;-)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день, столкнулся с такой проблемой:
На инструменте работает торговый робот на двух разных графиках с разными входными параметрами, позиции ведутся виртуально и отслеживаются через мэджик. Сигнал на вход у роботов одинаковый, при его наступлении они должны выставить ордер с типом ORDER_TYPE_SELL_LIMIT на некоторый объем Vol. Но почему-то получается так, что выставляется по два ордера от каждого робота. Добавил вывод в лог TicketID, но на 4 открытых ордера в логи пишет 2 раза, откуда выставляются еще 2? Причем такой баг стабильно ловится в первом входе за день, в основном в первый час торговли, если перезапускаю роботов, то на втором входе уже нет такой ерунды. Ошибок никаких в логах нет.
Вот код который отвечает за открытие позиции: