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 каждый раз должно быть уникальным (новым).

3 (2019-04-17 19:15:31 отредактировано vlad2562)

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

Добрый день!
По предыдущей теме, как значение TRANS_ID каждый раз выставлять уникальным (новым) - полагаю его надо брать из trans_params - это число, буду благодарен за ответ или как это можно автоматизировать

4

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

TRANS_ID не удастся взять из trans_params.
Надо просто создать глобальную переменную и прибавлять к ней 1 после каждой отправленной транзакции.

5

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

swerg пишет:

TRANS_ID не удастся взять из trans_params.
Надо просто создать глобальную переменную и прибавлять к ней 1 после каждой отправленной транзакции.

Не совсем помню купайл, но там вроде нет локальных переменных