В процессе разбирательства с АПИ написал несколько полезных для меня утилит. Скорее всего они примитивные, но возможно кому-то понадобятся. Или пригодятся как примеры.
Я не знаю как прицепить к сообщению аттач, поэтому воткну тут самый примитивный из индикаторов Остальное уже большевато для вставки в текст, а как прицепить файл я не нашел. Если кому понадобится что-нить - свистите.
-- ********************************************************************
-- Can displays every candle field as separate graph (see "Settings" for details)
-- ********************************************************************
-- Stupid QUIK: dofile() doesnt work in Indicators :-/
-- ********************************************************************
LOG_FILE = "..\\quick_lua.log";
function log(fmt, ... )
-- Decomment next line to allow global logging
-- _log( fmt, ... )
end
function _log( fmt, ... )
local f = io.open( LOG_FILE, "a+" );
if not f then
f = io.open( LOG_FILE, "w" );
end
if not f then
out( "Error write log file: %s", LOG_FILE );
abort();
end
f:write( strtime(os.date("*t")) .. " " .. string.format( fmt, ... ) .. "\n" );
f:close();
end
function out( fmt, ... ) message( string.format( fmt, ... ), 3) end
function abort(fmt, ... ) out( fmt, ... ); PROGRAMM_ABORT(); end
function iif( cond, y, n ) if cond then return y; else return n; end end
function strtime( tm ) return string.format("%4d-%02d-%02d %02d:%02d:%02d", tm.year, tm.month, tm.day, tm.hour, tm.min, tm.sec) end
-- ********************************************************************
-- ********************************************************************
Settings={
Name = "!__Values",
line = {
{ Name = "High", Color = RGB( 112,112,112 ), Width = 1, Type = TYPE_LINE },
{ Name = "Low", Color = RGB( 112,112,112 ), Width = 1, Type = TYPE_LINE },
{ Name = "Open", Color = RGB( 112,255,255 ), Width = 1, Type = TYPE_LINE },
{ Name = "Close", Color = RGB( 112,255,255 ), Width = 1, Type = TYPE_LINE },
{ Name = "Vol", Color = RGB( 128,128,255 ), Width = 6, Type = TYPE_HISTOGRAM },
{ Name = "Median", Color = RGB( 100,215,0 ), Width = 1, Type = TYPE_LINE },
{ Name = "Triple", Color = RGB( 200,67,22 ), Width = 1, Type = TYPE_LINE },
{ Name = "Wide", Color = RGB( 190,30,170 ), Width = 1, Type = TYPE_LINE },
nil
},
Open = "n", -- If set to 'y' will display candle.open graph
Close = "n", -- If set to 'y' will display candle.close graph
High = "y", -- If set to 'y' will display candle.high graph
Low = "y", -- If set to 'y' will display candle.low graph
Vol = "n", -- If set to 'y' will display candle.volume graph
Median = "y", -- If set to 'y' will display calculated "median" graph
Triple = "n", -- If set to 'y' will display calculated "triple" graph
Wide = "n", -- If set to 'y' will display calculated "wide" graph
Margin = 0.01, -- Additional bounds added to High, Low, Open and Close fields on display
-- Used just for better graph view
nil
}
function Init()
return 8
end
function OnCalculate(idx)
local h = H(idx)
local l = L(idx)
if not h or h < 10 then
return nil
end
if h < l then h,l = l,h; end
local o = O(idx)
local c = C(idx)
if o < c then o,c = c,o; end
local v = V(idx)
local m = (h+l)/2
local t = (h+l+C(idx))/3
local w = (h+l+C(idx)*2)/4
if Settings.Open ~= "y" then o = nil; else o = o + Settings.Margin; end
if Settings.Close ~= "y" then c = nil; else c = c - Settings.Margin; end
if Settings.High ~= "y" then h = nil; else h = h + Settings.Margin; end
if Settings.Low ~= "y" then l = nil; else l = l - Settings.Margin; end
if Settings.Vol ~= "y" then v = nil; end
if Settings.Median ~= "y" then m = nil; end
if Settings.Triple ~= "y" then t = nil; end
if Settings.Wide ~= "y" then w = nil; end
return h,l, o,c, v,m,t,w;
end
Вот еще один, которым постоянно пользуюсь Предназначен за рисованием коридора для средне-взвешенного значения инструмента по всем сделкам. Т.е. после установки сделки начинает рисовать коридор профит\лос (там на графике треугольники сделки и горизонтальные линии границы). [URL=http://radikal.ru/fp/eb4e1ac6826140a5a48423cc46bb1377][IMG]http://s018.radikal.ru/i520/1502/39/3bb965470ed2t.jpg[/IMG][/URL]
Из утилит сделал экспорт данных свечей с графиков в CSV т.к. не смог найти средство как это сделать штатно. И еще утилитка рассчета суммарной прибыльности по сделкам: [URL=http://radikal.ru/fp/6f660bd4842941e7842e2ddd37026b6f][IMG]http://s010.radikal.ru/i313/1502/a2/a9d90aa9df2at.jpg[/IMG][/URL]