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

 
    GlobalVariableSet ("#" + OrderTicket, флаг);
 
TarasBY:

Спасибо. Понял. Простите за глупый вопрос начинающего трейдера, а как найти все созданные таким образом переменные (функция) ?

Видимо,

GlobalVariableCheck(string name) ?
 
Andrey916:

Я уже согласился. Повторюсь, можете кинуть примерчик создания из советника глобальной переменной с именем-тикетом?


GlobalVariableSet("Closed_"+OrderTicket())

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

Потом

if(GlobalVariableCheck("Closed_"+OrderTicket())){снова закрыть}

Посмотрите в справке про глобальные переменные, в них нет ничего страшного.

Вот только при тестировании надо сначала удалять все глобальные переменные. Чтобы не помешать работе советника на счете надо бы как-то пометить их, например, добавлять в имя букву "t". (if(isTesting())).

Может и проще с файлами... Только достаточно простого создания файла в имени которого тикет. Если есть файл - значит ордер закрывался.

 
Andrey916:

Спасибо. Понял. Простите за глупый вопрос начинающего трейдера, а как найти все созданные таким образом переменные (функция) ?


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

 
Integer:


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

Да, все понял.

А это не слишком большая нагрузка на каждом тике перебирать все ордера? У меня их бывает по 40-50 штук открыто.

Да, и еще вопрос: а глобальные переменные сохраняются при перезапуске терминала?

 
Andrey916:

Да, все понял.

А это не слишком большая нагрузка на каждом тике перебирать все ордера? У меня их бывает по 40-50 штук открыто.



Достаточно большая нагрузка для тестера, для работы на счете нет. Можно сделать отключении функции при тестировании в тестере.
 
Integer:

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

Потом

Посмотрите в справке про глобальные переменные, в них нет ничего страшного.

Вот только при тестировании надо сначала удалять все глобальные переменные. Чтобы не помешать работе советника на счете надо бы как-то пометить их, например, добавлять в имя букву "t". (if(isTesting())).

Может и проще с файлами... Только достаточно простого создания файла в имени которого тикет. Если есть файл - значит ордер закрывался.

Функцию, создающую и находящую файлы подскажите?

 
Andrey916:

Функцию, создающую и находящую файлы подскажите?

Посмотрите в справке. Вот только функции для определения существует ли файли нет. Можно определить по ошибке при открытии файла только для чтения.
 
Integer:


Достаточно большая нагрузка для тестера, для работы на счете нет. Можно сделать отключении функции при тестировании в тестере.

А глобальные переменные сохраняются при перезапуске терминала?

 
Andrey916:

А глобальные переменные сохраняются при перезапуске терминала?

Сохраняются. Но есть один моментик... если аварийное завершение работы терминала, то они могут не сохраниться.
Причина обращения: