Переход позиций через 0:00 при работе банком. Как идентифицировать? Нужна помощь зала. - страница 7

 
Oldman_Evgeny:
Сохраняется только направление и размер лота. Больше  ничего.
PositionGetInteger(POSITION_IDENTIFIER)

что возвращает?

 

Попробовал вставить в OnTick конструкцию

 if(m_position.Magic() == 0)    m_trade.SetExpertMagicNumber( EA_Magic   );

Конструкция не работает.

Похоже на открытой позиции Magic не изменить никак....

Так что, то что я сделал и описал выше, похоже единственный вариант.

 
Oldman_Evgeny:

Попробовал вставить в OnTick конструкцию

 if(m_position.Magic() == 0)    m_trade.SetExpertMagicNumber( EA_Magic   );

Конструкция не работает.

Похоже на открытой позиции Magic не изменить никак....

Так что, то что я сделал и описал выше, похоже единственный вариант.

Что вы все с магиком носитесь? Оберните каждую позицию в класс и на тике не ищите ее, а просто отслеживайте. Если она вдруг закрылась, то анализируем причину закрытия. Если причина ролловер, то ищем новую и меняем поля класса на актуалные. Для организации повторного старта после сбоев пишем всю необходимую информацию в отдельный файл (ну не люблю я глобальные переменные терминала).
 
Vladimir Simakov:
Для организации повторного старта после сбоев пишем всю необходимую информацию в отдельный файл (ну не люблю я глобальные переменные терминала).

А если эксперт работает на разных машинах, то файл с собой таскать? 

 
Ihor Herasko:

А если эксперт работает на разных машинах, то файл с собой таскать? 

Ftp, cloud - как вариант.
Если просто данными должны роботы обмениваться, то pipe и ws.
 
Vladimir Simakov:
Ftp, cloud - как вариант.
Если просто данными должны роботы обмениваться, то pipe и ws.

Зачем все эти заморочки, если есть Magic? В большинстве случаев его хватает за глаза. По крайней мере, мне удавалось упаковывать в него:

  1. Время возникновения сигнала, по которому открыт ордер/позиция
  2. Индекс сетки (если стратегия - сетка), которой принадлежит ордер
  3. Индекс ордера в сетке
  4. Непосредственно идентификатор эксперта
Все это, конечно, с некоторыми ограничениями. Но ограничения вполне разумные. Выход за их рамки - редкое явление.

 
Ihor Herasko:

Зачем все эти заморочки, если есть Magic? В большинстве случаев его хватает за глаза. По крайней мере, мне удавалось упаковывать в него:

  1. Время возникновения сигнала, по которому открыт ордер/позиция
  2. Индекс сетки (если стратегия - сетка), которой принадлежит ордер
  3. Индекс ордера в сетке
  4. Непосредственно идентификатор эксперта
Все это, конечно, с некоторыми ограничениями. Но ограничения вполне разумные. Выход за их рамки - редкое явление.

Вот Вы сами и ответили - с ограничениями, которые как раз в этой ветке и обсуждаются. Плюсы обертки:

  1. Время возникновения сигнала - так член класса есть.
  2. Индекс сетки - то же самое.
  3. Индекс ордера в сетке - и опять в явном виде.
  4. Идентификатор эксперта- ну Вы поняли..

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

По поводу работы роботов с общими ордерами на разных рабочих местах - а смысл? Кроме головняков с синхронизацией ничего больше на ум не приходит. Прикинь - на одном рабочем месте робот отдает команду на закрытие позиции, а на другом робот принимает торговое решение, исходя из того, что конкретно эта позиция открыта, как это засинхронизировать?

 
Vladimir Simakov:
Что вы все с магиком носитесь? Оберните каждую позицию в класс и на тике не ищите ее, а просто отслеживайте. Если она вдруг закрылась, то анализируем причину закрытия. Если причина ролловер, то ищем новую и меняем поля класса на актуалные. Для организации повторного старта после сбоев пишем всю необходимую информацию в отдельный файл (ну не люблю я глобальные переменные терминала).

А можно привести пример с кодом?

Для конкретной "причины" - rollover.

Если и не пример, то куда глянуть и где почитать, чтоб понять, как это сделать.

 
Oldman_Evgeny:

А можно привести пример с кодом?

Для конкретной "причины" - rollover.

Если и не пример, то куда глянуть и где почитать, чтоб понять, как это сделать.

Самому писать. Я Вам направление показал, а дальше сами уже. Для ролловера всегда думал, что идентификатор позиции сохраняется, надо потестить будет.

 
Сейчас на работе, тут из последего под мт5 ничего нет, а под мт4 примерно так выглядит. Из одной из работ.
Файлы:
COrder.mqh  19 kb