Petya (Автор тем)

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

Страницы: 1
Не запускается Lua на Quik, Не работает скрипт (сделки на график Квика)
 
Здравствуйте
Помогите разобраться, почему не работает скрипт
(это для нанесения сделок на график Квика)
При запуске горит красный квадратик и дальше некуда
Картинки buy.bmp, sell.bmp и файл trades.csv находятся в папке со скриптом  
---
  Скрипт стащил отсюда
----------------------

function main()

   local iif = function( cond, ifTrue, ifFalse )

       if( cond ) then return ifTrue; end
       return ifFalse;
   end

   local trades = {};
   local charts = {};
   
   local path = getScriptPath() .. "\\";
   
   local IMAGE_BUY = path .. "buy.bmp";
   local IMAGE_SELL = path .. "sell.bmp";


   -- заполняем таблицу сделок
   for line in io.lines( path .. "trades.csv" ) do
       
       local isNewTrade = true;
       local row = {};

       for column in string.gmatch( line, "([^;]+)" ) do

           table.insert( row, column );
       end

       local trade =
       {
           timestamp = row[ 1 ],
           ticker = row[ 2 ],
           lots = tonumber( row[ 3 ] ),
           price = tonumber( row[ 4 ] ),
           date = string.gsub( string.match( row[ 1 ], "(%d+-%d+-%d+)" ), "-", "" ),
           time = string.gsub( string.match( row[ 1 ], "(%d+:%d+:%d+)" ), ":", "" )
       };
       
       -- суммируем лоты сделок одного инструмента в один момент времени (минута) по одинаковой цене, чтобы не заграмождать график
       for _, t in pairs( trades ) do
           if t.ticker == trade.ticker and t.timestamp == trade.timestamp and t.price == trade.price then
               t.lots = t.lots + trade.lots;
               isNewTrade = false;
           end
       end
       
       
       if ( isNewTrade ) then
           -- запоминаем тикеры графиков, для последующий очистки
           charts[ trade.ticker ] = true;
           table.insert( trades, trade );
       end
         
   end
   

   if( table.maxn( trades ) < 1 ) then

       return;
   end
   
   -- удаляем все предыдущие метки с используемых графиков
   for chart, _ in pairs( charts ) do
     
       DelAllLabels( chart );
   end
   
   -- добавляем метки по таблице сделок
   for _, t in pairs( trades ) do

       local label =
       {
           -- параметры текста метки - отрисовываются со смещением от точки сделки :-(
           --TEXT = iif( t.lots > 0, "5", "6" ),    -- в шрифте "Webdings" это значки треугольников
           FONT_FACE_NAME = "Webdings",
           FONT_HEIGHT = 25,
           R = iif( t.lots > 0, 0, 255 ),
           G = iif( t.lots > 0, 255, 0 ),
           B = 0,
           
           -- параметры картинки
           IMAGE_PATH = iif( t.lots > 0, IMAGE_BUY, IMAGE_SELL ),
           ALIGNMENT = iif( t.lots > 0, "BOTTOM", "TOP" ),
           TRANSPARENCY = 0,
           TRANSPARENT_BACKGROUND = 1,
           
           -- парамтеры координат
           YVALUE = t.price,
           DATE = t.date,
           TIME = t.time,
           
           -- всплывающая подсказка
           HINT = tostring( t.lots ) .. " @ " .. tostring( t.price )
       };

       local labelId = AddLabel( t.ticker, label );

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