require "qvcl"
function OnStop()
mainForm:Release()
is_run=false
end
is_run=true
PRICE_ID = "PRICE";
INDICATOR_ID = "ICHMK";
qtycandle=0
function main()
while is_run do sleep(50) end
end
mainForm = vcl.Form({borderStyle = "bsSingle", Height = 400, Width = 1000, Caption = "test", OnClose = OnStop})
gridTableIndicator = vcl.StringGrid(mainForm,{Top = 18, Left = 5, Width=950, Height = 200, ColCount = 10, RowCount = 10, FixedCols = 1, FixedRows = 1})
x={{160,100,100,100,100,100,100,100},{"taleftJustify","taRightJustify","taRightJustify","taRightJustify","taRightJustify","taRightJustify","taRightJustify","taRightJustify"},{"Индикатор","Значение (0)","Значение (-1)","Значение (-2)","Значение (-3)","Значение (-4)","№ линии","№ индикатора"}}
for i=1, #x[1] do gridTableIndicator:AddCol({Width=x[1][i], Alignment=x[2][i], Title={Caption=x[3][i], Alignment="taCenter"}}) end x=nil
mainForm:Show()
function EditGrid()
-- PRICE
local class_code, sec_code = CLASS_CODE, SEC_CODE
local PRICE_tag = PRICE_ID
local PRICE_line = getLinesCount(PRICE_tag)
local PRICE_count = getNumCandles (PRICE_tag)
local PRICE_T0, PRICE_N0, PRICE_L0 = getCandlesByIndex (PRICE_tag, 0, PRICE_count - 5, 5)
if PRICE_line >= 0 then
gridTableIndicator:SetCell(1, 1, PRICE_L0)
gridTableIndicator:SetCell(2, 1, PRICE_T0[4].close)
gridTableIndicator:SetCell(3, 1, PRICE_T0[3].close)
gridTableIndicator:SetCell(4, 1, PRICE_T0[2].close)
gridTableIndicator:SetCell(5, 1, PRICE_T0[1].close)
gridTableIndicator:SetCell(6, 1, PRICE_T0[0].close)
gridTableIndicator:SetCell(7, 1, PRICE_line - PRICE_line + 1)
gridTableIndicator:SetCell(8, 1, 0)
end
-- INDICATOR
local class_code, sec_code = CLASS_CODE, SEC_CODE
local INDICATOR_tag = INDICATOR_ID
local INDICATOR_line = getLinesCount(INDICATOR_tag)
local INDICATOR_count = getNumCandles (INDICATOR_tag)
local INDICATOR_T0, INDICATOR_N0, INDICATOR_L0 = getCandlesByIndex (INDICATOR_tag, 0, INDICATOR_count - 5, 5)
local INDICATOR_T1, INDICATOR_N1, INDICATOR_L1 = getCandlesByIndex (INDICATOR_tag, 1, INDICATOR_count - 5, 5)
local INDICATOR_T2, INDICATOR_N2, INDICATOR_L2 = getCandlesByIndex (INDICATOR_tag, 2, INDICATOR_count - 5, 5)
local INDICATOR_T3, INDICATOR_N3, INDICATOR_L3 = getCandlesByIndex (INDICATOR_tag, 3, INDICATOR_count - 5, 5)
local INDICATOR_T4, INDICATOR_N4, INDICATOR_L4 = getCandlesByIndex (INDICATOR_tag, 4, INDICATOR_count - 5, 5)
if INDICATOR_line - 1 >= 0 then
gridTableIndicator:SetCell(1, PRICE_line + 1, INDICATOR_L0)
gridTableIndicator:SetCell(2, PRICE_line + 1, INDICATOR_T0[4].close)
gridTableIndicator:SetCell(3, PRICE_line + 1, INDICATOR_T0[3].close)
gridTableIndicator:SetCell(4, PRICE_line + 1, INDICATOR_T0[2].close)
gridTableIndicator:SetCell(5, PRICE_line + 1, INDICATOR_T0[1].close)
gridTableIndicator:SetCell(6, PRICE_line + 1, INDICATOR_T0[0].close)
gridTableIndicator:SetCell(7, PRICE_line + 1, INDICATOR_line - INDICATOR_line + 1)
gridTableIndicator:SetCell(8, PRICE_line + 1, 1)
end
if INDICATOR_line - 2 >= 0 then
gridTableIndicator:SetCell(1, PRICE_line + 2, INDICATOR_L1)
gridTableIndicator:SetCell(2, PRICE_line + 2, INDICATOR_T1[4].close)
gridTableIndicator:SetCell(3, PRICE_line + 2, INDICATOR_T1[3].close)
gridTableIndicator:SetCell(4, PRICE_line + 2, INDICATOR_T1[2].close)
gridTableIndicator:SetCell(5, PRICE_line + 2, INDICATOR_T1[1].close)
gridTableIndicator:SetCell(6, PRICE_line + 2, INDICATOR_T1[0].close)
gridTableIndicator:SetCell(7, PRICE_line + 2, INDICATOR_line - INDICATOR_line + 2)
gridTableIndicator:SetCell(8, PRICE_line + 2, 1)
end
if INDICATOR_line - 3 >= 0 then
gridTableIndicator:SetCell(1, PRICE_line + 3, INDICATOR_L2)
gridTableIndicator:SetCell(2, PRICE_line + 3, INDICATOR_T2[4].close)
gridTableIndicator:SetCell(3, PRICE_line + 3, INDICATOR_T2[3].close)
gridTableIndicator:SetCell(4, PRICE_line + 3, INDICATOR_T2[2].close)
gridTableIndicator:SetCell(5, PRICE_line + 3, INDICATOR_T2[1].close)
gridTableIndicator:SetCell(6, PRICE_line + 3, INDICATOR_T2[0].close)
gridTableIndicator:SetCell(7, PRICE_line + 3, INDICATOR_line - INDICATOR_line + 3)
gridTableIndicator:SetCell(8, PRICE_line + 3, 1)
end
if INDICATOR_line - 4 >= 0 then
gridTableIndicator:SetCell(1, PRICE_line + 4, INDICATOR_L3)
gridTableIndicator:SetCell(2, PRICE_line + 4, INDICATOR_T3[4].close)
gridTableIndicator:SetCell(3, PRICE_line + 4, INDICATOR_T3[3].close)
gridTableIndicator:SetCell(4, PRICE_line + 4, INDICATOR_T3[2].close)
gridTableIndicator:SetCell(5, PRICE_line + 4, INDICATOR_T3[1].close)
gridTableIndicator:SetCell(6, PRICE_line + 4, INDICATOR_T3[0].close)
gridTableIndicator:SetCell(7, PRICE_line + 4, INDICATOR_line - INDICATOR_line + 4)
gridTableIndicator:SetCell(8, PRICE_line + 4, 1)
end
if INDICATOR_line - 5 >= 0 then
gridTableIndicator:SetCell(1, PRICE_line + 5, INDICATOR_L4)
gridTableIndicator:SetCell(2, PRICE_line + 5, INDICATOR_T4[4].close)
gridTableIndicator:SetCell(3, PRICE_line + 5, INDICATOR_T4[3].close)
gridTableIndicator:SetCell(4, PRICE_line + 5, INDICATOR_T4[2].close)
gridTableIndicator:SetCell(5, PRICE_line + 5, INDICATOR_T4[1].close)
gridTableIndicator:SetCell(6, PRICE_line + 5, INDICATOR_T4[0].close)
gridTableIndicator:SetCell(7, PRICE_line + 5, INDICATOR_line - INDICATOR_line + 5)
gridTableIndicator:SetCell(8, PRICE_line + 5, 1)
end
end
function OnParam(c,s)
local PRICE_count = getNumCandles (PRICE_tag)
if qtycandle~=PRICE_count then qtycandle=PRICE_count; EditGrid(); end
local INDICATOR_count = getNumCandles (INDICATOR_tag)
if qtycandle~=INDICATOR_count then qtycandle=INDICATOR_count; EditGrid(); end
end
OnParam()
Заранее благодарен! извините, я только учусь программированию...