In het onderstaande script wil ik graag een aanpassing.
Welke?
Ik zou graag willen zien dat er een signaal wordt afgegeven, wanneer de koers de bovenste en of de onderste lijn raakt, waardoor bij het scannen bij TA Reporter alleen de aandelen worden weergegeven die een van de twee lijnen raakt.
Groet OT
Code: Selecteer alles
{- Filename: ATR Channels -}
{- Filename: Keltner Channel -}
function KeltnerChannel (Price:TSeries; Length:Integer; Factor:Real):TSeries;
begin
Result:= AddSeries(MA(Price,MASimple, Length) ,MultiplySeriesBy( MA(TrueRange(High, Low, Close), maSimple, Length) ,Factor));
end;
Var
Avg, Price :TSeries;
UpperK1, LowerK1, UpperK2,
LowerK2, UpperK3, LowerK3 :TSeries;
Length,Displace,PriceType :Integer;
_Const1, _Const2, _Const3 :Real;
Begin
Length := CreateParameterInteger('Length' , 1, 999, 22 , true);
_Const1 := CreateParameterReal ('Const' , 1 , 99, 1, true);
_Const2 := CreateParameterReal ('Const' , 1 , 99, 2, true);
_Const3 := CreateParameterReal ('Const' , 1 , 99, 3, true);
Displace := CreateParameterInteger('Displace', -1, 999, 0 , true);
PriceType := CreateParameterSelect ('PriceType', 'Open'#9'High'#9'Low'#9'Close', 3, true);
with Indicator do
begin
ShortName :='Keltner Channel';
RequiredBars := Length;
Indicator.NewBand := false;
Indicator.ScaleRange := srCommon;
end;
if PriceType=0 then Price := Open;
if PriceType=1 then Price := High;
if PriceType=2 then Price := Low;
if PriceType=3 then Price := Close;
Avg := ShiftSeries(MA(Price,MASimple, Length),Displace);
UpperK1 := ShiftSeries(KeltnerChannel(Price, Length, _Const1),Displace);
LowerK1 := ShiftSeries(KeltnerChannel(Price, Length, -_Const1),Displace);
UpperK2 := ShiftSeries(KeltnerChannel(Price, Length, _Const2),Displace);
LowerK2 := ShiftSeries(KeltnerChannel(Price, Length, -_Const2),Displace);
UpperK3 := ShiftSeries(KeltnerChannel(Price, Length, _Const3),Displace);
LowerK3 := ShiftSeries(KeltnerChannel(Price, Length, -_Const3),Displace);
with CreateLine(Avg) do
begin
Name :='Average';
Color := clRed;
end;
with CreateLine(UpperK1) do
begin
Name :='UpperK-1';
Color := clBlue;
end;
with CreateLine(LowerK1) do
begin
Name :='LowerK-1';
Color := clBlue;
end;
with CreateLine(UpperK2) do
begin
Name :='UpperK-2';
Color := clPurple;
end;
with CreateLine(LowerK2) do
begin
Name :='LowerK-2';
Color := clPurple;
end;
with CreateLine(UpperK3) do
begin
Name :='UpperK-3';
Color := clRed;
end;
with CreateLine(LowerK3) do
begin
Name :='LowerK-3';
Color := clRed;
end;
END.