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

Страницы: 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, какой нейросетью пользовались?
Всё пройдет. Но это не точно.
 
Переделал

Код
   local classCode = "TQBR"
l[B][/B]ocal secCode = "GAZP"
local param = "last"
local is_run = true


function candlesProcessing () 
    while true do
        local paramEx = getParamEx(classCode, secCode, param)
        dr1 = paramEx.param_value
        message (dr1)
        uvb =20
        ovb =( dr1*uvb/100/1000)
        ovbm=dr1+ovb
        sleep (900)
    
        local paramEx = getParamEx(classCode, secCode, param)
        dr2 = paramEx.param_value
        massage (dr2)
        u =20
        ovbml =( dr2*u/100/1000)
        if dr2>ovbm+dr1 then
            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 then
                massage (dr2)
                ClosePositionorders()
                delete()
                
            if dr3 > ovbmln then
                message (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"]  = classCode,
      ["SECCODE"]    = secCode ,
      ["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"]  = classCode,
      ["SECCODE"]    = secCode ,
      ["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"]         =classCode,             
   ["SECCODE"]            = secCode ,                       
   ["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     
Страницы: 1
Читают тему
Наверх