Добрый день!
Помогите, пожалуйста, разобраться. Скрипт отправляет две заявки: обычную и стоп-заявку типа "тэйк-профит и стоп-лимит". Обычная заявка проходит. Стоп-заявку терминал вообще не замечает, никаких ошибок не выдает. Заявки нет.
Причем, когда отправляет обычную стоп заявку типа стоп-лимит - все работает. Видимо, у меня где-то что-то неправильно указано для заявки типа "тэйк-профит и стоп-лимит"....
Вот функция, которая вызывает заявку:
function doBuy(curPrice)
local price = curPrice + BUFFER -- цена заявки на покупку
local q = getQuantity("B", price)
PrintDbgStr("ПОКУПАЕМ! "..tostring(q))
-- посчитаем относительный размер стопа
local relStopSize = getStopSize()
PrintDbgStr("размер стопа: " .. relStopSize)
local stop_price = curPrice - relStopSize -- уровень стопа
PrintDbgStr("Стоп-цена: " .. stop_price)
local take_profit_price = curPrice + PROFIT_SIZE -- уроверь тейк-профита
PrintDbgStr("Тейк-профит: " .. take_profit_price)
-- заявка
local order = {
["TRANS_ID"] = "1",
["ACTION"] = "NEW_ORDER",
["CLASSCODE"] = "SPBFUT",
["CLIENT_CODE"] = CLIENT_CODE,
["SECCODE"] = INSTRUMENT,
["ACCOUNT"] = ACCOUNT,
["OPERATION"] = "B",
["QUANTITY"] = string.format('%.0f', q),
["PRICE"] = string.format('%.0f', price)
--["TYPE"] = L -- так было в прошлом роботе, не знаю что это значит
}
-- стоп-заявка
local stop = {
["TRANS_ID"] = "2",
["ACTION"] = "NEW_STOP_ORDER",
["CLASSCODE"] = "SPBFUT",
["CLIENT_CODE"] = CLIENT_CODE,
["SECCODE"] = INSTRUMENT,
["ACCOUNT"] = ACCOUNT,
["OPERATION"] = "S",
["QUANTITY"] = string.format('%.0f', q),
["STOPPRICE"] = string.format('%.0f', take_profit_price),
["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER",
["STOPPRICE2"] = string.format('%.0f', stop_price),
["PRICE"] = string.format('%.0f', stop_price - BUFFER),
["OFFSET"] = OTSTUP,
["OFFSET_UNITS"] = "PRICE_UNITS",
["SPREAD"] = SPRED,
["SPREAD_UNITS"] = "PRICE_UNITS",
["EXPIRY_DATE"] = "TODAY"
}
sendTransaction(order)
sendTransaction(stop)
end
Помогите, пожалуйста, разобраться. Скрипт отправляет две заявки: обычную и стоп-заявку типа "тэйк-профит и стоп-лимит". Обычная заявка проходит. Стоп-заявку терминал вообще не замечает, никаких ошибок не выдает. Заявки нет.
Причем, когда отправляет обычную стоп заявку типа стоп-лимит - все работает. Видимо, у меня где-то что-то неправильно указано для заявки типа "тэйк-профит и стоп-лимит"....
Вот функция, которая вызывает заявку:
function doBuy(curPrice)
local price = curPrice + BUFFER -- цена заявки на покупку
local q = getQuantity("B", price)
PrintDbgStr("ПОКУПАЕМ! "..tostring(q))
-- посчитаем относительный размер стопа
local relStopSize = getStopSize()
PrintDbgStr("размер стопа: " .. relStopSize)
local stop_price = curPrice - relStopSize -- уровень стопа
PrintDbgStr("Стоп-цена: " .. stop_price)
local take_profit_price = curPrice + PROFIT_SIZE -- уроверь тейк-профита
PrintDbgStr("Тейк-профит: " .. take_profit_price)
-- заявка
local order = {
["TRANS_ID"] = "1",
["ACTION"] = "NEW_ORDER",
["CLASSCODE"] = "SPBFUT",
["CLIENT_CODE"] = CLIENT_CODE,
["SECCODE"] = INSTRUMENT,
["ACCOUNT"] = ACCOUNT,
["OPERATION"] = "B",
["QUANTITY"] = string.format('%.0f', q),
["PRICE"] = string.format('%.0f', price)
--["TYPE"] = L -- так было в прошлом роботе, не знаю что это значит
}
-- стоп-заявка
local stop = {
["TRANS_ID"] = "2",
["ACTION"] = "NEW_STOP_ORDER",
["CLASSCODE"] = "SPBFUT",
["CLIENT_CODE"] = CLIENT_CODE,
["SECCODE"] = INSTRUMENT,
["ACCOUNT"] = ACCOUNT,
["OPERATION"] = "S",
["QUANTITY"] = string.format('%.0f', q),
["STOPPRICE"] = string.format('%.0f', take_profit_price),
["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER",
["STOPPRICE2"] = string.format('%.0f', stop_price),
["PRICE"] = string.format('%.0f', stop_price - BUFFER),
["OFFSET"] = OTSTUP,
["OFFSET_UNITS"] = "PRICE_UNITS",
["SPREAD"] = SPRED,
["SPREAD_UNITS"] = "PRICE_UNITS",
["EXPIRY_DATE"] = "TODAY"
}
sendTransaction(order)
sendTransaction(stop)
end