Коллеги, привет!
Скрипт работает уже давно, используется заявка тейк-профит и стоп-лимит, но в пятницу размер стопа не спас ситуацию, нефть слишком упала, и заявку протащило. Поэтому возник вопрос: как сделать заявку тейк-профит и стоп-маркет, чтобы таких ситуаций избегать?
Испробована версия с выставлением нулевых параметров, но система логично такую историю отвергает, в итоге и стоп- не стоит, и позиция взята, слишком рисково.
Как получилось на реальном примере: выставлена заявка на закрытие фьюча по нефти, тейк 83, стоп 81,7, цена стопа 81,55. Что вышло на практике? нефть упала в 80 в начале торговой сессии, стоп выставил заявку на продажу по 81,55, и пришлось закрыть сделку руками. Как сделать так, чтобы при прохождении 81,7 у меня выставлялась заявка на продажу по маркету?
Думала сама над двумя связанными заявками, но может, у кого есть попроще решение?
Коды все рабочие, представлены ниже. Заранее большое спасибо за ответ!
Как выглядит заявка (тут все тоже рабочее):
функция стопа (она рабочая)
Скрипт работает уже давно, используется заявка тейк-профит и стоп-лимит, но в пятницу размер стопа не спас ситуацию, нефть слишком упала, и заявку протащило. Поэтому возник вопрос: как сделать заявку тейк-профит и стоп-маркет, чтобы таких ситуаций избегать?
Испробована версия с выставлением нулевых параметров, но система логично такую историю отвергает, в итоге и стоп- не стоит, и позиция взята, слишком рисково.
Как получилось на реальном примере: выставлена заявка на закрытие фьюча по нефти, тейк 83, стоп 81,7, цена стопа 81,55. Что вышло на практике? нефть упала в 80 в начале торговой сессии, стоп выставил заявку на продажу по 81,55, и пришлось закрыть сделку руками. Как сделать так, чтобы при прохождении 81,7 у меня выставлялась заявка на продажу по маркету?
Думала сама над двумя связанными заявками, но может, у кого есть попроще решение?
Коды все рабочие, представлены ниже. Заранее большое спасибо за ответ!
Как выглядит заявка (тут все тоже рабочее):
| Код |
|---|
function stop2_calc()
if (PRICEMAX-ZZ12)>500 then
stop=PRICEMAX-500
else stop = ZZ12
end
end
function BUY(FLOTS)
ORDER(FLOTS,"B",dD(PRICEMAX+0,0))
stop2_calc()
message("stop "..stop)
TAKESTOPORDER(FLOTS,"S",dD(ZZ31+0,0), dD(stop,0),dD(stop-0,15,0),100,100)
end
|
| Код |
|---|
function TAKESTOPORDER(FLOTS,FDIRECTION,FSTOP,FSTOP2,FPRICE,FOTSTUP,FSPREAD)
q = {
["ACTION"]= "NEW_STOP_ORDER",
["CLASSCODE"]=CLASSCODE,
["SECCODE"]=INSTRUMENT,
["ACCOUNT"]= ACCOUNT,
["STOP_ORDER_KIND"] = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER",
["TYPE"]="L",
["OPERATION"]=FDIRECTION,
["QUANTITY"]=tostring(FLOTS),
["STOPPRICE"]=tostring(FSTOP),
["STOPPRICE2"]=tostring(FSTOP2),
["PRICE"]=tostring(FPRICE),
["OFFSET"] = tostring(FOTSTUP),
["OFFSET_UNITS"] = "PRICE_UNITS",
["SPREAD"] = tostring(FSPREAD),
["SPREAD_UNITS"] = "PRICE_UNITS",
["EXPIRY_DATE"] = "GTC",
["TRANS_ID"]=tostring(id_take),
["CLIENT_CODE"]=Robot
}
res=sendTransaction(q)
message(res,1)
end
|