Как отловить закрытый ордер, котрый брокер открыл снова? - страница 2

 
Andrey916:

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


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

просите что бы меняли.

Для начала неплохо бы было, чтобы хотя бы информировали. Обещают это наладить.

 
Andrey916:

А как это поможет? RefreshRates() - обновляет системные переменные?

Да. Обновляет текущие рыночные цены и запрос выполняется по акутальным ценам. Если не выполнять обновление, а ордеров несколько, то цена может измениться (пока один ордер закрывается), а запрос на закрытие следующего выполняется по той цене, которая была на момент начала выполнения функции старт. Но странно как-то, по идее должен быть реквот, но не так, чтобы закрылся ордер и открылся. Но если RefreshRates() не поможет, то надо брать руки в ноги и...

 
Integer:

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

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

Массив то проще и лезть в него только, когда советник понял, что появились лишние ордера - это он умеет. На каждом тике просматривать не обязательно.

 
Andrey916:

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

Массив то проще и лезть в него только, когда советник понял, что появились лишние ордера - это он умеет. На каждом тике просматривать не обязательно.


Потому что данные из массивов исчезнут в случае перезагрузки терминала, а глобальные переменные две недели живы после последенего к ним обращения. Да и закодировать проще с глобальными переменными.
 
Integer:

Да. Обновляет текущие рыночные цены и запрос выполняется по акутальным ценам. Если не выполнять обновление, а ордеров несколько, то цена может измениться (пока один ордер закрывается), а запрос на закрытие следующего выполняется по той цене, которая была на момент начала выполнения функции старт. Но странно как-то, по идее должен быть реквот, но не так, чтобы закрылся ордер и открылся. Но если RefreshRates() не поможет, то надо брать руки в ноги и...

Спасибо! Но вы говорите не совсем о том. Брокер открывает закрытый ордер через 12-18 часов после его закрытия. :( Бред конечно, но это происходит.

 
Andrey916:

Массив то проще и лезть в него только, когда советник понял, что появились лишние ордера - это он умеет. На каждом тике просматривать не обязательно.


Чтобы советник узнал, что появился лишний ордер, надо еще какие-то действия выполнять, совсем сложно получается. С глобальной переменной самый простой способ и самый надежный.
 
Integer:

Потому что данные из массивов исчезнут в случае перезагрузки терминала, а глобальные переменные две недели живы после последенего к ним обращения. Да и закодировать проще с глобальными переменными.

Согласен. Надо попробовать.

Но все-таки хотелось бы как то помечать именно сами закрытые ордера. Может это все-таки как-нибудь возможно?

 
Andrey916:

Спасибо! Но вы говорите не совсем о том. Брокер открывает закрытый ордер через 12-18 часов после его закрытия. :( Бред конечно, но это происходит.


Понимаете ли в чем дело, дело в том, что я понимаю о чем говорю. Попробуйте посмотреть на мои сообщения с такой позиции.
 
Andrey916:

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

Массив то проще и лезть в него только, когда советник понял, что появились лишние ордера - это он умеет. На каждом тике просматривать не обязательно.

Создать файл в "песочнице" в который все советники пишут сначала тикеты открытых ордеров, а затем время их закрытия (если сами их закрывают). Если есть время закрытия, значит, этот ордер "левый".

Кстати, при восстановлении восстанавливается дубликат закрытого ордера, т.е. и тикет тот же и Магик?

Причина обращения: