1

Тема: Частичное закрытие позиции

Добрый день!
Хотелось бы узнать, каким образом делать частичное закрытие позиции, т. е., например, у меня есть позиция на 5 контрактов. По каким-то причинам я хочу закрыть позицию только по двум, а остальные 3 контракта оставить в рынке. Если возможно, приведите, пожалуйста, пример кода.
Спасибо.

2

Re: Частичное закрытие позиции

Т.е. надо продать 2 контракта "по рынку" (судя по термину "контракт" - речь о срочном рынке?)

Предполагаю, что речь именно о срочном рынке, тогда на QPILE код будет такой:

SecCode = "GAZR"
ClassCode = "SPBFUT"
ClientAcc = ""SPBFUT00000"

price = 0 + GET_PARAM(ClassCode, SecCode, "bid") - 5*CEIL(0.001*GET_PARAM(ClassCode, SecCode, "bid"))

new_global("trans_params", "")
new_global("trans_result", "")
trans_params = CREATE_MAP ()
trans_params = set_value (trans_params, "TRANS_ID", "1")
trans_params = set_value (trans_params, "ACTION","NEW_ORDER")
trans_params = set_value (trans_params, "CLASSCODE", classcode)
trans_params = set_value (trans_params, "SECCODE", seccode)
trans_params = set_value (trans_params, "ACCOUNT",ClientAcc )
trans_params = set_value (trans_params, "OPERATION", "S")
trans_params = set_value (trans_params, "PRICE",substr(price&"",0,6))
trans_params = set_value (trans_params, "QUANTITY", "2")
trans_params = set_value (trans_params, "CLIENT_CODE", ClientAcc)
trans_params = set_value (trans_params, "TYPE", "M")
message("SEND_TRANSACTION start",1)
trans_result =SEND_TRANSACTION (30, trans_params)
message("SEND_TRANSACTION end",1)
order_num = get_value (trans_result, "ORDER_NUMBER")

Значения переменных SecCode, ClassCode и ClientAcc в начале скрипта нужно исправить на нужные вам.

В переменной order_num после выполнения будет номер выставленной заявки, либо 0, если заявка была отклонена.

Если будете отправлять несколько последовательных заявок - то значение TRANS_ID каждый раз должно быть уникальным (новым).