Так что, то что я сделал и описал выше, похоже единственный вариант.
Что вы все с магиком носитесь? Оберните каждую позицию в класс и на тике не ищите ее, а просто отслеживайте. Если она вдруг закрылась, то анализируем причину закрытия. Если причина ролловер, то ищем новую и меняем поля класса на актуалные. Для организации повторного старта после сбоев пишем всю необходимую информацию в отдельный файл (ну не люблю я глобальные переменные терминала).
Vladimir Simakov: Для организации повторного старта после сбоев пишем всю необходимую информацию в отдельный файл (ну не люблю я глобальные переменные терминала).
А если эксперт работает на разных машинах, то файл с собой таскать?
Зачем все эти заморочки, если есть Magic? В большинстве случаев его хватает за глаза. По крайней мере, мне удавалось упаковывать в него:
Время возникновения сигнала, по которому открыт ордер/позиция
Индекс сетки (если стратегия - сетка), которой принадлежит ордер
Индекс ордера в сетке
Непосредственно идентификатор эксперта
Все это, конечно, с некоторыми ограничениями. Но ограничения вполне разумные. Выход за их рамки - редкое явление.
Вот Вы сами и ответили - с ограничениями, которые как раз в этой ветке и обсуждаются. Плюсы обертки:
Время возникновения сигнала - так член класса есть.
Индекс сетки - то же самое.
Индекс ордера в сетке - и опять в явном виде.
Идентификатор эксперта- ну Вы поняли..
Вся радость в том, что при проверке, проверяется рыночное состояние позиции и корректируются поля класса, при этом мы не перебираем позиции, обработчик торговых функций - метод класса. А как восстанавливаться после сбоев - так никто не запрещает и магик использовать, просто, при такой реализации можно и в бинарник спокойно всю историю запаковывать, формат только разработать.
По поводу работы роботов с общими ордерами на разных рабочих местах - а смысл? Кроме головняков с синхронизацией ничего больше на ум не приходит. Прикинь - на одном рабочем месте робот отдает команду на закрытие позиции, а на другом робот принимает торговое решение, исходя из того, что конкретно эта позиция открыта, как это засинхронизировать?
Vladimir Simakov: Что вы все с магиком носитесь? Оберните каждую позицию в класс и на тике не ищите ее, а просто отслеживайте. Если она вдруг закрылась, то анализируем причину закрытия. Если причина ролловер, то ищем новую и меняем поля класса на актуалные. Для организации повторного старта после сбоев пишем всю необходимую информацию в отдельный файл (ну не люблю я глобальные переменные терминала).
А можно привести пример с кодом?
Для конкретной "причины" - rollover.
Если и не пример, то куда глянуть и где почитать, чтоб понять, как это сделать.
Сохраняется только направление и размер лота. Больше ничего.
что возвращает?
Попробовал вставить в OnTick конструкцию
if(m_position.Magic() == 0) m_trade.SetExpertMagicNumber( EA_Magic );
Конструкция не работает.
Похоже на открытой позиции Magic не изменить никак....
Так что, то что я сделал и описал выше, похоже единственный вариант.
Попробовал вставить в OnTick конструкцию
if(m_position.Magic() == 0) m_trade.SetExpertMagicNumber( EA_Magic );
Конструкция не работает.
Похоже на открытой позиции Magic не изменить никак....
Так что, то что я сделал и описал выше, похоже единственный вариант.
Для организации повторного старта после сбоев пишем всю необходимую информацию в отдельный файл (ну не люблю я глобальные переменные терминала).
А если эксперт работает на разных машинах, то файл с собой таскать?
А если эксперт работает на разных машинах, то файл с собой таскать?
Ftp, cloud - как вариант.
Зачем все эти заморочки, если есть Magic? В большинстве случаев его хватает за глаза. По крайней мере, мне удавалось упаковывать в него:
Зачем все эти заморочки, если есть Magic? В большинстве случаев его хватает за глаза. По крайней мере, мне удавалось упаковывать в него:
Вот Вы сами и ответили - с ограничениями, которые как раз в этой ветке и обсуждаются. Плюсы обертки:
Вся радость в том, что при проверке, проверяется рыночное состояние позиции и корректируются поля класса, при этом мы не перебираем позиции, обработчик торговых функций - метод класса. А как восстанавливаться после сбоев - так никто не запрещает и магик использовать, просто, при такой реализации можно и в бинарник спокойно всю историю запаковывать, формат только разработать.
По поводу работы роботов с общими ордерами на разных рабочих местах - а смысл? Кроме головняков с синхронизацией ничего больше на ум не приходит. Прикинь - на одном рабочем месте робот отдает команду на закрытие позиции, а на другом робот принимает торговое решение, исходя из того, что конкретно эта позиция открыта, как это засинхронизировать?
Что вы все с магиком носитесь? Оберните каждую позицию в класс и на тике не ищите ее, а просто отслеживайте. Если она вдруг закрылась, то анализируем причину закрытия. Если причина ролловер, то ищем новую и меняем поля класса на актуалные. Для организации повторного старта после сбоев пишем всю необходимую информацию в отдельный файл (ну не люблю я глобальные переменные терминала).
А можно привести пример с кодом?
Для конкретной "причины" - rollover.
Если и не пример, то куда глянуть и где почитать, чтоб понять, как это сделать.
А можно привести пример с кодом?
Для конкретной "причины" - rollover.
Если и не пример, то куда глянуть и где почитать, чтоб понять, как это сделать.
Самому писать. Я Вам направление показал, а дальше сами уже. Для ролловера всегда думал, что идентификатор позиции сохраняется, надо потестить будет.