Сканировать валютную пару на наличие открытых ордеров - страница 3

 
moskitman:
Спасибо, Роман, но мне кажется, что это чересчур сложно. К тому же торуемые символы у меня и так уже "забабаханы" плюсами, торгуемые в шорт и минусами, торгуемые в лонг.

В Вашем случае самое простое решение - цикл перебора открытых ордеров внутри цикла по массиву торгуемых инструментов.
 
PapaYozh:


Прям как у меня :)

Меня давно интересовала конструкция, где не имеет значения направление торговли, а важна исключительно общая волатильность рынка.
Проще говоря, я наконец-то нашел достойное применение Кольцу (ссылка на тему в моем профиле), но не в качестве самостоятельной ТС, а только лишь в качестве "равновесной конструкции", где можно один инструмент только продавать, а другой только покупать без ущерба для адекватности оценки ТС.

Вот, собсна, и возникла задача где-то переоткрыться, а где-то долить.

А у вас?

 
moskitman:

А у вас?


Если не возражаете, отпишу в личку.

Но не сейчас. Позже.

 
moskitman:

21


МозгУйте в направлении массивов ордеров, порядок их организации и пОльзования в сОве - см. здесь, заполнения характеристик ордеров, а именно, по какому символу открыт ордер, например, создаете и заполняете 9-ю строку массива ордеров - СИМВОЛ торгуемого инструмента, т.к. этот массив имеет тип double, то делаете аналогию с этой строкой типов ордеров ... [][6] тип орд. 0=B,1=S,2=BL,3=SL,4=BS,5=SS - проведите соответствие числа - торгуемому символу и все. Далее уже считываете значение этой 9-ой строки в числовом формате и принимаете дальнейшие решения, как-то так...

double
   Lots_New,            // Количество лотов для новых ордеров
   Mas_Ord_New[31][9],  // Массив ордеров текущий ..
   Mas_Ord_Old[31][9];  // .. и старый
                        // 1й индекс = порядковый номер ордера 
                        // [][0] не определяется
                        // [][1] курс откр. ордера (абс.знач.курса)
                        // [][2] StopLoss ордера   (абс.знач.курса)
                        // [][3] TakeProfit ордера (абс.знач.курса)
                        // [][4] номер ордера        
                        // [][5] колич. лотов орд. (абс.знач.курса)
                        // [][6] тип орд. 0=B,1=S,2=BL,3=SL,4=BS,5=SS
                        // [][7] магическое число ордера
                        // [][8] 0/1 факт наличия комментария

у Вас будет так

double
   Lots_New,            // Количество лотов для новых ордеров
   Mas_Ord_New[31][10],  // Массив ордеров текущий ..
   Mas_Ord_Old[31][10];  // .. и старый
                        // 1й индекс = порядковый номер ордера 
                        // [][0] не определяется
                        // [][1] курс откр. ордера (абс.знач.курса)
                        // [][2] StopLoss ордера   (абс.знач.курса)
                        // [][3] TakeProfit ордера (абс.знач.курса)
                        // [][4] номер ордера        
                        // [][5] колич. лотов орд. (абс.знач.курса)
                        // [][6] тип орд. 0=B,1=S,2=BL,3=SL,4=BS,5=SS
                        // [][7] магическое число ордера
                        // [][8] 0/1 факт наличия комментария
                        // [][20] название инструмента 0=EURUSD,1=EURJPY,2=GBPUSD,3=GBPJPY,4=USDCHF,5=USDJPY...20=...

При этом не забывать заполнять ее (эту строку) при открытии/установки отложенного ордера. Все. Далее уже при считывании характеристик ордеров, принимаете то или иное решение.

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

 
PapaYozh:


Если не возражаете, отпишу в личку.

Но не сейчас. Позже.


ок
 
Roman.:


...

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

Еще раз спасибо. Тем не менее думаю, что гораздо проще организовать вложенный цикл.
 
moskitman:
Внезапно возникла обратная задача. Т.е. нужно определить ОТСУТСТВИЕ какого бы то ни было ордера на валютной паре. Неужели прийдется организовывать цикл перебора ордеров внутри цикла перебора инструментов? Или есть более простое и менее ресурсоёмкое решение?


интересная постановка задачи.) Трудно искать чёрную кошку в тёмной комнате, особенно если её там нет.

Однако если она там была, то можно попробовать поискать следы её прошлого присутствия. Если вести реестр учета ордеров, то достаточно 2 цикла - по ордерам и по реестру.

 
valenok2003:


интересная постановка задачи.) Трудно искать чёрную кошку в тёмной комнате, особенно если её там нет.

Однако если она там была, то можно попробовать поискать следы её прошлого присутствия. Если вести реестр учета ордеров, то достаточно 2 цикла - по ордерам и по реестру.

Ордер - очень странный предмет: только что был и уже его нет.
Решено. 2 цикла.
 
Roman.:


МозгУйте в направлении массивов ордеров, порядок.

Роман, а к чему такие сложности, зачем в реестре держать все параметры ордера, если их можно получить по каждому ордеру непосредственно из терминала? Достаточно описать потенциально изменяемые параметры (если вы предполагаете их изменять в ходе работы) . А в общем случае достаточно одного тикета.

 
valenok2003:

Роман, а к чему такие сложности, зачем в реестре держать все параметры ордера, если их можно получить по каждому ордеру непосредственно из терминала? Достаточно описать потенциально изменяемые параметры (если вы предполагаете их изменять в ходе работы) . А в общем случае достаточно одного тикета.

ДЦ разве не переоткрывает ордера с уже новым тикетом...

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

Вообще, решение автором уже принято.