Евгений (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Снять активную заявку, Выставляется заявка и через 5 сек снимается
 
Roman Azarov,благодарю за подробный ответ. Кажется теперь я понял чем отличается обычная функция от функции обратного вызова. Обычную функцию можно самому вызвать, а функция обратного вызова срабатывает сама, независимо от пользователя, если произошло определенное событие в квике.
Снять активную заявку, Выставляется заявка и через 5 сек снимается
 
Код улучшил, но все равно заявка через 5 сек не снимается.
Код
stopped = false
function OnStop()
stopped = true
return 5000
end

function main()
Pokup()
orderNum=OnTransReply(order_num)
message('Nomer zayavki'..orderNum)
sleep(5000)
SnZ()
end
function Pokup()
--Покупка лимитка

A = {ACTION='NEW_ORDER',
      ACCOUNT='SPBFUT009BD',
      OPERATION='B',
      CLASSCODE='SPBFUT',
      SECCODE='BRX0',
      PRICE=tostring(42.1),
      QUANTITY=tostring(1),
      TRANS_ID=tostring(1002),
      TYPE='L'
         }
         
 local Err_A = sendTransaction(A)
end


function SnZ()
orderNum=OnTransReply(order_num)
Sn = {ACTION='KILL_ORDER',
      ACCOUNT='SPBFUT009BD',
      CLASSCODE='SPBFUT',
      SECCODE='BRX0',
      TRANS_ID=tostring(1003),
      ORDER_KEY=orderNum
         }
         
Err_Sn = sendTransaction(Sn)
end

Снять активную заявку, Выставляется заявка и через 5 сек снимается
 
Пытаюсь научить робота снимать заявку. В качестве урока поставил себе задачу. Робот должен выставить рыночную заявку на покупку и через 5 сек снять ее. Пробовал в ORDER_KEY ставить TRANS_ID , не помогло. Зачем тогда вообще нужен TRANS_ID не понятно. Пробовал вручную вбить номер заявки из квика в код, тогда снимается. Значит робот должен получить этот номер, у меня не получается, подскажите как правильно?
Код
function main()

--Покупка лимитка
--[
A = {ACTION='NEW_ORDER',
      ACCOUNT='SPBFUT009BD',
      OPERATION='B',
      CLASSCODE='SPBFUT',
      SECCODE='BRX0',
      PRICE=tostring(42.1),
      QUANTITY=tostring(1),
      TRANS_ID=tostring(1002),
      TYPE='L'
         }
         
 Err_A = sendTransaction(A)

--]

--Снять заявку Покупка лимитка
function OnTransReply(trans_reply)
   orderNum = trans_reply.order_num
   message('Nomer zayavki'..tostring(trans_reply.order_num));-- NUMBER 
 
--[


end

[sleep(5000)


A = {ACTION='KILL_ORDER',
      ACCOUNT='SPBFUT009BD',
      CLASSCODE='SPBFUT',
      SECCODE='BRX0',
      TRANS_ID=tostring(1003),
      ORDER_KEY=tostring(trans_reply.order_num)
         }
         
Err_A = sendTransaction(A)

end
Помогите с кодом OnTransReply, Посмотрите код. Не могу самостоятельно разобраться.
 
Спасибо, буду пробовать
Помогите с кодом OnTransReply, Посмотрите код. Не могу самостоятельно разобраться.
 
При покупке по рыночной цене функция OnTransReply() возвращает цену 0?
Помогите с кодом OnTransReply, Посмотрите код. Не могу самостоятельно разобраться.
 
Спасибо, сделал так. В файл записалось 0 (не знаю это ошибка или так и должно быть при покупке по рынку?). Раньше ничего не было. Мне нужна реальная цена за которую произошла покупка. Может тогда мне эта функция не подойдет?
Код
is_run = true
flag1=true
 function OnStop(s)
  is_run = false
end
function main()
resBR=sendTransaction(tbr)
message(resBR,1)
  sleep(2000)
  flag1=false
  while is_run do
    sleep(2000)
  end
end
Помогите с кодом OnTransReply, Посмотрите код. Не могу самостоятельно разобраться.
 
Скрипт должен купить 1 лот по рыночной цене, затем цену покупки нужно сохранить в файл. Файл создается при покупке, значит функция OnTransReply запускается, а вот в файл ничего не записывается.
Код
is_run = true
flag1=true
 function OnStop(s)
  is_run = false
end
function main()
  while is_run do
    sleep(2000)
  end
end
 
 
 if flag1==true then
     tbr = {
     
     ["CLASSCODE"]="CETS",

            ["SECCODE"]="USD000UTSTOM",

            ["ACTION"]="NEW_ORDER",

            ["ACCOUNT"]="MB1002600002",

            ["CLIENT_CODE"]="000000400237",

            ["TYPE"]="M",

            ["OPERATION"]="B",

            ["QUANTITY"]="1",

            ["PRICE"]="0",

            ["TRANS_ID"]="1"

      }

resBR=sendTransaction(tbr)
message(resBR,1)
  sleep(2000)
  flag1=false
 end
function OnTransReply(trans_reply)
--Пытается открыть файл в режиме "чтения/записи"
   f = io.open(getScriptPath().."\\der.txt","r+");
   -- Если файл не существует
   if f == nil then 
      -- Создает файл в режиме "записи"
      f = io.open(getScriptPath().."\\der.txt","w"); 
      -- Закрывает файл
      f:close();
      -- Открывает уже существующий файл в режиме "чтения/записи"
      f = io.open(getScriptPath().."\\der","r+");
   end;
   -- Записывает в файл 2 строки
   f:write(trans_reply["price"]); -- "\n" признак конца строки
   -- Сохраняет изменения в файле
   f:flush();


end
Страницы: 1
Наверх