Иидентификация позиции

 
Иидентификация позиции
Здравствуйте.

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

Не кажется ли разработчикам, что введение уникального идентификатора позиции при открытии её функцией SetOrder (и его использование дальше в DeleteOrder, ModifyOrder etc) решило бы все эти проблемы?

Андрей
 
идентификация позиций
Да, возможность идентификации позиции было бы хорошей возможностью.
К сожалению, изначально такой возможности не заложили. Но выход есть - в следующих версиях заложим возможность при установке ордера через SetOrder указывать поле комментария (32 символа), через которое можно идентифицировать позиции.
 
id
а не проще ли, чтоб фунцкия открытия позиции при успешном срабатывании
возвращала его #
 
проще, но...
Функция SetOrder не может вернуть номера ордера, так как с помощью этой команды всего лишь выставляется приказ на совершение сделки, а не совершается сделка.
Типичная сделка занимает несколько секунд (вплоть до десятков секунд у реальных счетов), а эксперт не имеет права так долго занимать время.
Исполнением сделки занимается торговый терминал в отдельном потоке, не влияющем на работу остальной части программы.
 
нужен обработчик запросов
чтобы SetOrder посылал запрос не серверу, а обработчику а функция возвращала его некий внутренний id, а потом по этому id можно б было
узнать, что с этим ордером. И в дальнейшем использовать этот id (хендл) для идентификации позиции внутри данного запущенного МТ.

Что-то типа этого, возможно я немного запутанно изложил.
 
такой способ не получится
Такой способ не получится.
Чтобы "потом" извлечь результат сделки, придется еще полминуты помнить о том, что была сделка и опрашивать терминал?
Этот способ не подходит, так как после перезапуска терминала все данные можно потерять (если не использовать глобальные переменные). В случае с сохранением данных в комментарии можно указать: "MYEXP-5", означающий, что эта позиция открыта экспертом MYEXP на 5 минутном периоде.
 
запросы
послали ордер, получили хендл, запомнили

типа ф-я GetOrderStatus(id) возвращает либо # позиции, либо 0 если ордер в очереди, -1 если нехватило денег, -99 если ошибка соединения и т.п.

в начале эксперта проверка
if GetOrderState (id)!=0
{
....
....
}


так появляется возможность как-то отследить (И ОТРАБОТАТЬ!) судьбу ордера, меньше вероятность открытия нескольких ордеров,
т.к. между отправкой ордеров и появлении их в трейдтерминале проходит какое-то время.
Причина обращения: