Как снять все активные тейк-профит

Страницы: 1
RSS
Как снять все активные тейк-профит
 
Здравствуйте, подскажите плз как снять все активные тейк-профит? Приведенная функция не работает, хотя тейк-профит в стоп заявках вроде.


---------
 ' =========== УДАЛЯЕМ СТОП-ЗАЯВКИ
 FUNC KILLALLSTOPORDERS(KEY)
   MESSAGE ("СНИМАЕМ "&KEY,1)
   N=GET_NUMBER_OF("STOP_ORDERS")
   IF N>0
    FOR I FROM 0 TO N
    IF (GET_VALUE (GET_ITEM ("STOP_ORDERS", I), "STATUS")="ACTIVE") AND (GET_VALUE (GET_ITEM ("STOP_ORDERS", I), "SECCODE")=INSTRUMENT)
               NEW_GLOBAL("TRANS_PARAMS", "")
               NEW_GLOBAL("TRANS_RESULT", "")
               TRANS_PARAMS = ""
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TRANS_ID", "7"&TIME)
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLASSCODE", "SPBFUT")
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "SECCODE", KEY)
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ORDER_KEY", GET_VALUE (GET_ITEM ("STOP_ORDERS", I), "NUMBER")&"")
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACTION", "KILL_ORDER")
               TRANS_RESULT = SEND_TRANSACTION (30, TRANS_PARAMS)
    END IF
    END FOR
    END IF
 END FUNC
 
Добрый день.

Транзакции, выполняющие групповое снятие заявок, не поддерживаются:
  • «KILL_ALL_ORDERS» – снять все заявки из торговой системы,
  • «KILL_ALL_STOP_ORDERS» – снять все стоп-заявки,
  • «KILL_ALL_NEG_DEALS» – снять все заявки на внебиржевые сделки и заявки на  сделки РЕПО.
 
Я вам открою секрет: приведенный код снимает все стоп заявки. Просто речь идет о тейк профит заявках. Если вам лень подсказать или вы просто не знаете не нужно писать что итак есть в руководстве. Кстати, данный код удаляет все активные заявки на покупку и продажу, разве он не противоречит "«Транзакции, выполняющие групповое снятие заявок, не поддерживаются: KILL_ALL_STOP_ORDERS» – снять все стоп-заявки, "?

--------------------------------------------------------------------------------

' =========== УДАЛЯЕМ ЗАЯВКИ
 FUNC KILLALLORDERS(KEY)
   MESSAGE ("СНИМАЕМ "&KEY,1)
   N=GET_NUMBER_OF("ORDERS")
   IF N>0
    FOR I FROM 0 TO N
    IF (GET_VALUE (GET_ITEM ("ORDERS", I), "STATUS")="ACTIVE") AND (GET_VALUE (GET_ITEM ("ORDERS", I), "SECCODE")=INSTRUMENT)
               NEW_GLOBAL("TRANS_PARAMS", "")
               NEW_GLOBAL("TRANS_RESULT", "")
               TRANS_PARAMS = ""
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TRANS_ID", "7"&TIME)
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLASSCODE", "SPBFUT")
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "SECCODE", KEY)
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ORDER_KEY", GET_VALUE (GET_ITEM ("ORDERS", I), "NUMBER")&"")
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACTION", "KILL_ORDER")
               TRANS_RESULT = SEND_TRANSACTION (30, TRANS_PARAMS)
    END IF
    END FOR
    END IF
 END FUNC
 
Неужели у QUIK clients support ответ "Такое невозможно"? Разве нет кода?
 
Александр,

Для снятия стоп заявок в параметре ACTION надо использовать KILL_STOP_ORDER
 
Цитата
Sergey Gorokhov написал:
Александр  ,

Для снятия стоп заявок в параметре ACTION надо использовать KILL_STOP_ORDER

Спасибо большое, но почему-то не работает. Что не так?

 ' =========== УДАЛЯЕМ СТОП-ЗАЯВКИ
 FUNC KILLALLSTOPORDERS(KEY)
   MESSAGE ("СНИМАЕМ "&KEY,1)
   N=GET_NUMBER_OF("STOP_ORDERS")
   IF N>0
    FOR I FROM 0 TO N
    IF (GET_VALUE (GET_ITEM ("STOP_ORDERS", I), "STATUS")="ACTIVE") AND (GET_VALUE (GET_ITEM ("STOP_ORDERS", I), "SECCODE")=INSTRUMENT)
               NEW_GLOBAL("TRANS_PARAMS", "")
               NEW_GLOBAL("TRANS_RESULT", "")
               TRANS_PARAMS = ""
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TRANS_ID", "7"&TIME)
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLASSCODE", "SPBFUT")
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "SECCODE", KEY)
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ORDER_KEY", GET_VALUE (GET_ITEM ("STOP_ORDERS", I), "NUMBER")&"")
               TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACTION", "KILL_STOP_ORDER")
               TRANS_RESULT = SEND_TRANSACTION (30, TRANS_PARAMS)
    END IF
    END FOR
    END IF
 END FUNC
 
Цитата
Александр написал:
но почему-то не работает

Что именно не работает?
Если возникает ошибка, то какая?
 
Цитата
Sergey Gorokhov написал:
Цитата
Александр   написал:
но почему-то не работает
Что именно не работает?
Если возникает ошибка, то какая?
Не снимаются тейк-профит заявки, поэтому и не работает. Ошибки нет, quick ошибку не показывает.
 
Цитата
Александр написал:
ошибку не показывает.
Добавьте вывод сообщения
MESSAGE (TRANS_RESULT,1)
 
Цитата
Александр написал:
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ORDER_KEY", GET_VALUE (GET_ITEM ("STOP_ORDERS", I), "NUMBER")&"")

кажется причина понятна, вместо ORDER_KEY нужно указывать STOP_ORDER_KEY
 
Цитата
Sergey Gorokhov написал:
Цитата
Александр   написал:
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ORDER_KEY", GET_VALUE (GET_ITEM ("STOP_ORDERS", I), "NUMBER")&"")
кажется причина понятна, вместо ORDER_KEY нужно указывать STOP_ORDER_KEY
Отлично работает! Спасибо!
Страницы: 1
Читают тему
Наверх