Помогите с кодом OnTransReply

Страницы: 1
RSS
Помогите с кодом 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) У вас перед OnTransReply() стоит какой-то end: непонятно, к чему он относится.
2) Часть кода, которая отвечает за покупку почему-то вообще стоит вне функции main(). Поместите ее внутрь основного блока main(), но до цикла while.
 
Спасибо, сделал так. В файл записалось 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() возвращает цену 0?
 
Попробуйте получить данные через callback-функцию OnTrade (возвращает только ваши сделки). Фактическая цена купли/продажи указана в поле price. Но имейте в виду, что объем запрошенный вами на приобретение по рыночной цене, может быть реализован посредством нескольких сделок с разными фактическими ценами и объемами, хотя их суммарный объем будет совпадать с указанным в заявке.
 
Спасибо, буду пробовать
Страницы: 1
Читают тему
Наверх