Скрипт правильно ли написан

Страницы: 1
RSS
Скрипт правильно ли написан
 
Есть ли програмисты,хотел бы проверить
правильно ли написан.
local classCode = "TQBR"
local secCode = "GAZP"
local param = "last"
local is_run = true


function candlesProcessing ()
   while true do
       local paramEx = getParamEx(classCode, secCode, param)
       dr1 = paramEx.param_value
       print (dr1)
       uvb =20
       ovb =( dr1*uvb/100/1000)
       ovbm=dr1+ovb
       sleep (900)
   
       local paramEx = getParamEx(classCode, secCode, param)
       dr2 = paramEx.param_value
       print (dr2)
       u =20
       ovbml =( dr2*u/100/1000)
       if dr2>ovbm+dr1 :
           OpenPosition()
           sleep (900)
           local paramEx = getParamEx(classCode, secCode, param)
           dr3 = paramEx.param_value
           u =20
           ovbml =( dr2*u/100/1000)
           ovbm2= ovbml+dr2
           ovbmln= dr2-ovbml
           if dr3 > ovbm2:
               print (dr2)
               ClosePositionorders()
               delete()
               
           if dr3 > ovbmln:
               print (dr2)
               OpenPosition()
           end    
       end
   end
end


-- Функция ОТКРЫВАЕТ позицию
function OpenPosition()
  -- Устанавливает флаг текущего процесса в ОТКРЫТИЕ позиции
  STATE = "OPEN";
  -- Сбрасывает флаг обработки открытия позиций
  OpenPosProcessed = false;

  trans_id_OPT = math.random(1,9999);
  -- Заполняет структуру для отправки транзакции на покупку 2-х ОПЦИОНОВ
  local Transaction={
     ["TRANS_ID"]   = tostring(trans_id_OPT),
     ["ACTION"]     = "NEW_ORDER",
     ["CLASSCODE"]  = CLASS_CODE_OPT,
     ["SECCODE"]    = SEC_CODE_OPT_FOR_OPEN,
     ["OPERATION"]  = "B", -- покупка (BUY)
     ["TYPE"]       = "M", -- по рынку (MARKET)
     ["QUANTITY"]   = "2", -- количество
     ["ACCOUNT"]    = TRADE_ACC,
     ["PRICE"]      = tostring(getParamEx(CLASS_CODE_OPT, SEC_CODE_OPT_FOR_OPEN, "offer").param_value + 10*getParamEx(CLASS_CODE_OPT, SEC_CODE_OPT_FOR_OPEN, "SEC_PRICE_STEP").param_value), -- по цене, завышенной на 10 мин. шагов цены
     ["COMMENT"]    = "Покупка опционов скриптом"
     ["ORDER_KEY"] = tostring(number_order)
  }
  -- Флаг, что ОПЦИОНЫ еще не куплены
  NotBuy_OPT = true;
  local Result = sendTransaction(Transaction);
 
  -- ЕСЛИ функция вернула строку диагностики ошибки, ТО значит транзакция не прошла
  if Result ~= "" then
     -- Выводит сообщение с ошибкой
     message("Покупка ОПЦИОНОВ не удалась!\nОШИБКА: "..Result);
     -- Завершает выполнение функции
     return(0);
  end;
end

-- Функция ЗАКРЫВАЕТ позицию
function ClosePosition()
  -- Устанавливает флаг текущего процесса  в ЗАКРЫТИЕ позиции
  STATE = "CLOSE";
  -- Сбрасывает флаг обработки закрытия позиций
  ClosePosProcessed = false;

  trans_id_OPT = math.random(1,9999);
  -- Заполняет структуру для отправки транзакции на продажу 2-х ОПЦИОНОВ
  local Transaction={
     ["TRANS_ID"]   = tostring(trans_id_OPT),
     ["ACTION"]     = "NEW_ORDER",
     ["CLASSCODE"]  = CLASS_CODE_OPT,
     ["SECCODE"]    = SEC_CODE_OPT_IN_POS,
     ["OPERATION"]  = "S", -- продажа (SELL)
     ["TYPE"]       = "M", -- по рынку (MARKET)
     ["QUANTITY"]   = "2", -- количество
     ["ACCOUNT"]    = TRADE_ACC,
     ["PRICE"]      = tostring(getParamEx(CLASS_CODE_OPT, SEC_CODE_OPT_FOR_OPEN, "bid").param_value - 10*getParamEx(CLASS_CODE_OPT, SEC_CODE_OPT_FOR_OPEN, "SEC_PRICE_STEP").param_value), -- по цене, заниженной на 10 мин. шагов цены
     ["COMMENT"]    = "Продажа опционов скриптом"
     ["ORDER_KEY"] = tostring(number_order)
  }
  -- Флаг, что ОПЦИОНЫ еще не проданы
  NotSell_OPT = true;
  local Result = sendTransaction(Transaction);
  -- ЕСЛИ функция вернула строку диагностики ошибки, ТО значит транзакция не прошла
  if Result ~= "" then
     -- Выводит сообщение с ошибкой
     message("Продажа ОПЦИОНОВ не удалась!\nОШИБКА: "..Result);
     -- Завершает выполнение функции
     return(0);
  end;
end

function trasactiondelete(number_order)

id_transact = id_transact + 1

deleteorder  =
{
["TRANS_ID"] = tostring(id_transact),
["ACTION"] = "KILL_ORDER",
["CLASSCODE"] = class ,
["SECCODE"] = tiker,
["ACCOUNT"] = account,
["ORDER_KEY"] = tostring(number_order)
}

end

function delete()

num_orders = getNumberOf("orders")

for i = num_orders - 1, 0, -1 do

myorder = getItem("orders", i)

if myorder["client_code"]==client_code and myorder["sec_code"]==tiker then

if bit.band(tonumber(myorder["flags"]),1) > 0 then

message(progname.." ����� ������: "..myorder.order_num)

trasactiondelete(myorder.order_num)
error_transaction = sendTransaction(deleteorder)
sleep(300)

if error_transaction ~= "" then
message(progname.." : ������ ="..error_transaction, 3)
else
message(progname.." : ������ ������ "..myorder["order_num"].." ����:"..myorder["price"].." �����: "..myorder["balance"].." �����������:"..myorder["brokerref"], 2)
end

--break -- ������� �� ����� ����� ���� ��� ����� 1 �������� ������

end

end

end

end



function ClosePositionorders()

num_orders = getNumberOf("orders")

for i = num_orders - 1, 0, -1 do

myorder = getItem("orders", i)

if myorder["client_code"]==client_code and myorder["sec_code"]==tiker then

if bit.band(tonumber(myorder["flags"]),1) > 0 then

message(progname.." ����� ������: "..myorder.order_num)

         ClosePosition(myorder.order_num)
error_transaction = sendTransaction(deleteorder)
sleep(300)

if error_transaction ~= "" then
message(progname.." : ������ ="..error_transaction, 3)
else
message(progname.." : ������ ������ "..myorder["order_num"].." ����:"..myorder["price"].." �����: "..myorder["balance"].." �����������:"..myorder["brokerref"], 2)
end

--break -- ������� �� ����� ����� ���� ��� ����� 1 �������� ������

end

end

end

end


function main ()
  while is_run do
      candlesProcessing ()          
     
  end
end
 
Прикольно,
А компьютера у Вас нет?
 
Много что не так. На всидку: кодировка должна быть 1251; в qlua нет функции print; if предполагает then, тут Вам не пайтон; и т.д.
И ещё, скрипт желательно выкладывать в виде кода, иначе он трудно читается.
Всё пройдет. Но это не точно.
 
Qwertserg, какой нейросетью пользовались?
Всё пройдет. Но это не точно.
Страницы: 1
Читают тему
Наверх