Код: Выделить всё
library Camarilla;
uses
graphics,
IndicatorInterfaceUnit;
var
// внешние параметры
piv,hh5,hh4,hh3,hh2,hh1,ll1,ll2,ll3,ll4,ll5:double;
// индексные буфера
Pivot: TIndexBuffer;
H5: TIndexBuffer;
H4: TIndexBuffer;
H3: TIndexBuffer;
H2: TIndexBuffer;
H1: TIndexBuffer;
L1: TIndexBuffer;
L2: TIndexBuffer;
L3: TIndexBuffer;
L4: TIndexBuffer;
L5: TIndexBuffer;
//---------------------------------------------------------------------------
// Процедура инициализации
//---------------------------------------------------------------------------
procedure Init; stdcall;
begin
IndicatorShortName('Camarilla');
SetOutputWindow(ow_ChartWindow);
// зарегистрировать опции
AddSeparator('Common');
// create buffers
IndicatorBuffers(11);
AddSeparator('Pivot');
Pivot := CreateIndexBuffer;
SetIndexBuffer(0, Pivot);
SetIndexStyle(0, ds_Line, psDashDotDot, 2, clYellow);
AddSeparator('H5 Color');
H5 := CreateIndexBuffer;
SetIndexBuffer(1, H5);
SetIndexStyle(1, ds_Line, psSolid, 1, clGreen);
AddSeparator('H4 Color');
H4 := CreateIndexBuffer;
SetIndexBuffer(2, H4);
SetIndexStyle(2, ds_Line, psSolid, 1, clGreen);
AddSeparator('H3 Color');
H3 := CreateIndexBuffer;
SetIndexBuffer(3, H3);
SetIndexStyle(3, ds_Line, psSolid, 1, clGreen);
AddSeparator('H2 Color');
H2 := CreateIndexBuffer;
SetIndexBuffer(4, H2);
SetIndexStyle(4, ds_Line, psSolid, 1, clGreen);
AddSeparator('H1 Color');
H1 := CreateIndexBuffer;
SetIndexBuffer(5, H1);
SetIndexStyle(5, ds_Line, psSolid, 1, clGreen);
AddSeparator('L1 Color');
L1 := CreateIndexBuffer;
SetIndexBuffer(6, L1);
SetIndexStyle(6, ds_Line, psSolid, 1, clRed);
AddSeparator('L2 Color');
L2 := CreateIndexBuffer;
SetIndexBuffer(7, L2);
SetIndexStyle(7, ds_Line, psSolid, 1, clRed);
AddSeparator('L3 Color');
L3 := CreateIndexBuffer;
SetIndexBuffer(8, L3);
SetIndexStyle(8, ds_Line, psSolid, 1, clRed);
AddSeparator('L4 Color');
L4 := CreateIndexBuffer;
SetIndexBuffer(9, L4);
SetIndexStyle(9, ds_Line, psSolid, 1, clRed);
AddSeparator('L5 Color');
L5 := CreateIndexBuffer;
SetIndexBuffer(10, L5);
SetIndexStyle(10, ds_Line, psSolid, 1, clRed);
end;
//---------------------------------------------------------------------------
// Процедура деинициализации
//---------------------------------------------------------------------------
procedure Done; stdcall;
begin
// см. Процедуру деинициализации
end;
//---------------------------------------------------------------------------
// Процедура рассчета заданного бара
//---------------------------------------------------------------------------
procedure Calculate(index: integer); stdcall;
var
MyH,MyL,MyC,RR,D1,D2,D3,D4: double;
begin
D1:=0.091667;
D2:=0.183333;
D3:=0.2750;
D4:=0.55;
MyH:=iHigh(Symbol, PERIOD_D1, 1);
MyL:=iLow(Symbol, PERIOD_D1, 1);
MyC:=iClose(Symbol, PERIOD_D1, 1);
RR:=MyH-MyL;
piv:=(MyH+MyL+MyC)/3;
hh5:=MyH/MyL*MyC;
hh4:=RR*D4+MyC;
hh3:=RR*D3+MyC;
hh2:=RR*D2+MyC;
hh1:=RR*D1+MyC;
ll1:=MyC-RR*D1;
ll2:=MyC-RR*D2;
ll3:=MyC-RR*D3;
ll4:=MyC-RR*D4;
ll5:=MyC-(hh5-MyC);
H5[index]:=hh5;
H4[index]:=hh4;
H3[index]:=hh3;
H2[index]:=hh2;
H1[index]:=hh1;
Pivot[index]:=piv;
L1[index]:=ll1;
L2[index]:=ll2;
L3[index]:=ll3;
L4[index]:=ll4;
L5[index]:=ll5;
end;
exports
// эти процедуры должны быть декларированы как внешние
Init, Done, Calculate;
end.