Здравствуйте!
Довольно часто сталкиваюсь со следующей ситуацией.
Выставляю заявку:
При этом tp_price рассчитывается от средней цены покупки buy_price (wa_position_price из таблицы depo_limits) следующим образом:
Проблема в том, что довольно часто в итоге при ожидании "лучшей" цены выставляется продажа по цене меньше, чем buy_price.
Может быть кто-то знает, как изменить тело transaction или обработчик какой-то написать, чтобы оперативно снимать (а ещё лучше предотвращать постановку) заявку на продажу.
P.S. Во время написания последних строк пришла мысль снимать и переставлять тейк-профит на стадии "расчета", если цена опустилась ниже buy_price. Но как правильно обработать такую ситуацию и поможет ли это?
Довольно часто сталкиваюсь со следующей ситуацией.
Выставляю заявку:
Код |
---|
Spread = 6 Offset = 3 -- В целых ценах не будет дробной части. function str_price(str) local n = tonumber(str) local m = math.floor(n) if n == m then return tostring(m) else return tostring(n) end end function Limit(ticker, quantity, tp_price) local step = tonumber(getParamEx("TQBR", ticker, "sec_price_step").param_value) local spread = Spread * step local offset = Offset * step local transaction = { ACCOUNT = Account, CLIENT_CODE = ClientCode, ACTION = "NEW_STOP_ORDER", TRANS_ID = tostring(os.time()), OPERATION = "S", -- Продажа. STOP_ORDER_KIND = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER", CLASSCODE = "TQBR", SECCODE = ticker, QUANTITY = tostring(quantity), STOPPRICE = str_price(tostring(tp_price)), -- Take Profit. EXPIRY_DATE = "GTC", -- До отмены. OFFSET = str_price(tostring(spread)), OFFSET_UNITS = "PRICE_UNITS", SPREAD = str_price(tostring(offset)), SPREAD_UNITS = "PRICE_UNITS", MARKET_TAKE_PROFIT = "YES", STOPPRICE2 = "0", --стоп цена MARKET_STOP_LIMIT = "YES" } error = sendTransaction(transaction) if error ~= "" then msg = "Error on Limit %d %s %.5f (%s)." message(msg:format(quantity, ticker, tp_price, error)) end end |
Код |
---|
BrokerSpread = 0.0006 tp_price = (buy_price * 1.005) * (1.0 + Percent) tp_price = tp_price + (buy_price + tp_price) * BrokerSpread |
Может быть кто-то знает, как изменить тело transaction или обработчик какой-то написать, чтобы оперативно снимать (а ещё лучше предотвращать постановку) заявку на продажу.
P.S. Во время написания последних строк пришла мысль снимать и переставлять тейк-профит на стадии "расчета", если цена опустилась ниже buy_price. Но как правильно обработать такую ситуацию и поможет ли это?