— flags:
— 30 — снята продажная
— 28 — исполнена продажная
— 24 — исполнена купленная
— 29 — активная продажная
— 25 — активная на куплю
— скрипт после клиринга завершается
function profit(pric_s)
t = {
[«CLASSCODE»]=«SPBFUT»,
[«SECCODE»]=«SiH8»,
[«ACTION»]=«NEW_STOP_ORDER»,
[«STOP_ORDER_KIND»]=«WITH_LINKED_LIMIT_ORDER», — со связанной заявкой
[«ACCOUNT»]=«41xxxJB»,
[«CLIENT_CODE»]=«65xxx»,
[«OPERATION»]=«S»,
[«QUANTITY»]=«1»,
[«PRICE»]=tostring(pric_s-380),
[«LINKED_ORDER_PRICE»]=tostring(pric_s),
[«STOPPRICE»]=tostring(pric_s-700),
[«KILL_IF_LINKED_ORDER_PARTLY_FILLED»]=«NO», — при частичном исполнении снимать стоп?
[«TRANS_ID»]=«112»,
}
res=sendTransaction(t)
end
function profit_s(pri_s)
t = {
[«CLASSCODE»]=«SPBFUT»,
[«SECCODE»]=«SiH8»,
[«ACTION»]=«NEW_STOP_ORDER»,
[«STOP_ORDER_KIND»]=«WITH_LINKED_LIMIT_ORDER», — со связанной заявкой
[«ACCOUNT»]=«41xxxJB»,
[«CLIENT_CODE»]=«65xxx»,
[«OPERATION»]=«B»,
[«QUANTITY»]=«1»,
[«PRICE»]=tostring(pri_s+380),
[«LINKED_ORDER_PRICE»]=tostring(pri_s),
[«STOPPRICE»]=tostring(pri_s+500),
[«KILL_IF_LINKED_ORDER_PARTLY_FILLED»]=«NO», — при частичном исполнении снимать стоп?
[«TRANS_ID»]=«112»,
}
res=sendTransaction(t)
end
i1=0
i2=0
is_run=true
clearing=0
clearing_end=0
trigger=0
function main()
while is_run do
sleep(500)
if clearing==1 then
if clearing_end==0 and trigger==0 then — за 1 секунду до вечернего клиринга
trigger=1
n = getNumberOf(«orders»)
order={}
message(«total »… tostring(n)… " of all orders")
array_buy={} — новый пустой массив для сбора заявок на покупку
array_sell={} — на продажу
for i=0,n-1 do
order = getItem(«orders», i)
if order.flags==25 then — активная на куплю
i1=i1+1
array_buy[i1]=order.value
end
if order.flags==29 then — активная на продажу
i2=i2+1
array_sell[i2]=order.value
end
end
elseif clearing_end==1 then — клиринг кончился, восстанавливаем заявки
for i=1,i1 do
pri_s=array_buy[i]
profit_s(pri_s)
sleep(600)
message(«купля по цене=»… tostring(array_buy[i]))
end
for i=1,i2 do
pric_s=array_sell[i]
profit(pric_s)
sleep(600)
message(«продажа по цене=»… tostring(array_sell[i]))
end
is_run=false
sleep(600)
end
end
end
end
function OnStop(stop_flag)
is_run=false
end
function OnAllTrade(alltrade) — табличные данные
if alltrade.datetime.min==44 and alltrade.datetime.sec==58 and alltrade.datetime.hour==18 then
clearing=1
end
if alltrade.sec_code==«SiH8» and alltrade.datetime.hour==19 then
clearing_end=1 — клиринг закончился
end
end