Блог им. Nemo_2000

Сообщение Quik "Вы не можете снять данную заявку"

Пишу простенького робота на qlua. Сейчас возникла проблема со снятием активной стопзаявки. Выставляю ордер со стопом и пытаюсь снять стоп для модификации вот этим скриптом

p_account = «SPBFUT00521»
p_clientcode = «101326»
p_classcode = «SPBFUT»
p_seccode = «SiM6»

TRANS_ID = 0

is_run = true
count=1
function main()
while is_run do
message(«Hello, World! №»..tostring(count),1)
count=count+1
for Index = 0,getNumberOf(«stop_orders») — 1 do
any = getItem(«stop_orders»,Index)
if bit.band(any.flags, 1) > 0 then
Stop_Order = any.order_num
--message(tostring(Stop_Order),1)
KILL_STOP_ORDER(p_classcode, p_seccode, p_account, Stop_Order)
end
end
sleep(5000)
end
end


function OnStop(stop_flag)
is_run=false
end

function KILL_STOP_ORDER(_MARKET, _TICKER, _ACCOUNT, _NUMBER)
TRANS_ID = TRANS_ID + 1
t =
{
[«TRANS_ID»]= tostring(TRANS_ID),
[«ACCOUNT»] = tostring(_ACCOUNT),
[«CLASSCODE»] = tostring(_MARKET),
[«SECCODE»] = tostring(_TICKER),
[«ACTION»] = «KILL_ORDER»,
[«ORDER_KEY»] = tostring(_NUMBER)
}
message(t.TRANS_ID.." "..t.ACCOUNT.." "..t.CLASSCODE.." "..t.SECCODE.." "..t.ACTION.." "..t.ORDER_KEY,1)
res=sendTransaction(t)
end

Ну и получаю сообщение от квика «Вы не можете снять данную заявку» Все параметры в транзакцию передаются правильно. Похоже это проблемы квика, а не клуа

Сообщение Quik "Вы не можете снять данную заявку"

Может кто подскажет, что с этим делать, 
Спасибо.
★3

Проверьте наличие заявки на данном сервере, может выставляли на другом. По заявочке правой кнопкой мыши и сделать заявку своей, если есть такая строка.
avatar

Sofiy

Sofiy, строка такая есть, но она не активна. Ну и я ставлю и пытаюсь снять сразу, без разрыва соединения… Перерыл тут весь поиск со справками и форумами. Ничего по этой теме нет. Всё это происходит при использовании демо версии 7.1.0 на седьмой винде.. 
avatar

Nemo_2000

Не мучайтесь, позвоните брокеру.
avatar

Sofiy

Sofiy, это демо. На форуме qlua где поддержка на этот вопрос не ответили. Подозреваю мне как-то опять невероятно повезло открыть какую-то редкость…
avatar

Nemo_2000

Nemo_2000, тогда попробуйте так еще если версия 7, то система, перезаказать данные, если не получится опять, закройте квик, перезагрузите компьютер, предварительно сохранив данные.
avatar

Sofiy

забей на это сообщение, есть таблица заявок а в ней статус, заявка либо активна либо снята
Osen, ясен пень, что она активна, если я не могу её снять )))
avatar

Nemo_2000

Nemo_2000, я ты проверь в таблице ) просто это квик косячит заявку снимает и сообщение кидает)
Osen, проверяю )))
avatar

Nemo_2000

никогда не снимал заявки.
но есть KILL_ORDER — снятие заявки
и есть KILL_STOP_ORDER — снятие стоп-заявки.

avatar

ПBМ

ПBМ, попробовал KILL_STOP_ORDER. Транзакция не проходит. Ну и в форумах для снятия стопзаявок используют KILL_ORDER
avatar

Nemo_2000

а вручную заявка снимается?
avatar

Eldar Shaymardanov

Eldar Shaymardanov, снимается без проблем…
avatar

Nemo_2000

кстати на демке может просто не быть лимиток
Osen, шо ето тогда за демка? 
avatar

Nemo_2000

Osen, кроме того, стоп выставляется, а проблемы с его отменой.
avatar

Nemo_2000

Nemo_2000, если вручную снимается, то ковыряй в сторону сохранения транзакции в файл. там в файле будет тебе корректный текст, только идентификаторы транзакции и заявки поменять.
вообще я думал стоп и лимитная заявка должны по разному убиваться.
потому что стоп может породить лимитку. если лимитка уже есть, стоп убивать безсмысленно, надо убивать лимитку.
как узнать номер лимитки по номеру стоп-заявки, я без понятия.
а если лимитки ещё нет, то надо убивать стоп.

стоп убивается так
CLASSCODE=SPBFUT; SECCODE=RIM1; TRANS_ID=50624875; ACTION=KILL_STOP_ORDER; STOP_ORDER_KEY=186080;

а ты явно лимитку пытаешься прибить.
avatar

ПBМ

ПBМ, лимитки я пока не пробовал. Но этот код для отмены стопзаявок  собран из примеров с форума клуа, в которрых подобные задачи решались…
avatar

Nemo_2000

Nemo_2000, это демо там вообще по идее нет стоп заявок)

на демо счёте пытаюсь автоматически выставить заявку, пишет - Вам запрещена работа по данному торговому счету

а вручную всё выставляется, из-за демо счёта такая фигня?

может и у вас что то похожее?

avatar

Igr

Igr, нет. мне работа по торговому счёту не запрещена ))) Там надо в коде счёт проверить…
avatar

Nemo_2000

Nemo_2000, счёт норм, проверил 
avatar

Igr

единственное что приходит в голову — несоответствие номера заявки и номера транзакции. (посмотрите по передаваемым типам и просто правильность передаваемых данных)
avatar

Eldar Shaymardanov

При формировании транзакции нужно указывать не «ORDER_KEY» (это для лимиток), а «STOP_ORDER_KEY=».
avatar

Karim


Karim, не, не пашет..





требует в ORDER_KEY что то отличное от nil…
avatar

Nemo_2000

Nemo_2000, Откуда поле «ORDER_KEY», вместо
[«ORDER_KEY»] = tostring(_NUMBER)  должно быть
[«STOP_ORDER_KEY»] = tostring(_NUMBER)
avatar

Karim

Karim, И покажите, что выводит месага  message(t.TRANS_ID.." "..t.ACCOUNT.." "..t.CLASSCODE.." "..t.SECCODE.." "..t.ACTION.." "..t.ORDER_KEY,1)
avatar

Karim

Karim, в общем, на мой взгляд правильно всё выводит
avatar

Nemo_2000

Nemo_2000, Должно быть не «KILL_ORDER», а «KILL_STOP_ORDER»
avatar

Karim

Karim, ну проверил уже, не работает. Вот этот скрипт не снимает заявку и транзакцию не отправляет

p_account = «SPBFUT00521»
p_clientcode = «101326»
p_classcode = «SPBFUT»
p_seccode = «SiM6»

t =
{
[«TRANS_ID»]= tostring(math.random(2000000000)),
[«ACCOUNT»] = tostring(p_account),
[«CLASSCODE»] = tostring(p_classcode),
[«SECCODE»] = tostring(p_seccode),
[«ACTION»] = «KILL_STOP_ORDER»,
[«ORDER_KEY»] = tostring(7360931)
}
message(t.TRANS_ID.." "..t.ACCOUNT.." "..t.CLASSCODE.." "..t.SECCODE.." "..t.ACTION.." "..t.ORDER_KEY,1)
res=sendTransaction(t)

avatar

Nemo_2000

Nemo_2000, ЕЩЕ РАЗ!!!
Вместо [«ORDER_KEY»] = tostring(_NUMBER)  должно быть
[«STOP_ORDER_KEY»] = tostring(_NUMBER)
avatar

Karim

Karim, вот что получилось





avatar

Nemo_2000

Nemo_2000, А почему кавычки другие? Он на них и ругается.
avatar

Karim

Karim, поправил кавычки, но транзакция не отправляется.  Параметры выводятся и всё

p_account = «SPBFUT00521»
p_clientcode = «101326»
p_classcode = «SPBFUT»
p_seccode = «SiM6»

TRANS_ID =0
TRANS_ID = TRANS_ID + 1
t =
{
[«TRANS_ID»]= tostring(math.random(2000000000)),
[«ACCOUNT»] = tostring(p_account),
[«CLASSCODE»] = tostring(p_classcode),
[«SECCODE»] = tostring(p_seccode),
[«ACTION»] = «KILL_ORDER»,
[«STOP_ORDER_KEY»] = tostring(7360931)
}
message(t.TRANS_ID.." "..t.ACCOUNT.." "..t.CLASSCODE.." "..t.SECCODE.." "..t.ACTION.." "..t.STOP_ORDER_KEY,1)
res=sendTransaction(t)

отослал письмо в поддержку, отпишусь здесь если поможет ))

avatar

Nemo_2000

Nemo_2000, ЕЩЕ РАЗ!!!
Вместо [«ACTION»] = «KILL_ORDER», нужно 
«KILL_STOP_ORDER»
БУДЬТЕ ВНИМАТЕЛЬНЕЕ!!!
avatar

Karim

Karim, ну и заявка вот она..

avatar

Nemo_2000

1. При дублировании команды на снятие (отправил команду на снятие, не получил отклика от квика о снятии, отправил повторную) такое постоянно высвечивается
2. Если пытаюсь поставить заявку вручную, но в момент набора цифр в форме робот что-то поставил — тоже такое высвечивается.
avatar

А. Г.

А. Г., У меня интервал обращения к 
function KILL_STOP_ORDER
5 секунд. и Сообщение о невозможности выдаётся сразу после
Hello, World! №»

так что нет там одновременности обращения…
avatar

Nemo_2000

Разжевали же проблему, не ужели не дошло?
avatar

Чужой

Чужой, не дошло…
avatar

Nemo_2000

Ты пишешь действие к таблице заявок в последнем примере ACTION = «KILL_ORDER, а не к таблице стоп заявок. И почему ты рандом поставил в транс ид?
avatar

Чужой

Чужой, Ты гений! Ано заработало!!!!!
Спасибо!!!
avatar

Nemo_2000

Nemo_2000,  не забудь всем объявить, что я гений ))
avatar

Чужой

Чужой, каждому, кто спросит )))
avatar

Nemo_2000

Чужой, я ведь даже строку со всеми параметрами написал. но гением не признали. обидно.
avatar

ПBМ

ПBМ, жизнь жестока )))
avatar

Чужой


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UPDONW