cci plus

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
Plaats reactie
tesjoeva
Berichten: 157
Lid geworden op: vr jul 07, 2017 3:10 pm

cci plus

Bericht door tesjoeva » di mar 12, 2019 6:46 pm

hallo Eric,

wil je het volgende voor mij proberen aub:

CCI HAMI1 als trigger opnemen in combinatie met de MA% filter.

Long HAMI 1 geeft koopsignaal + MA% zit long.
Exit long cci gaat flat op de exit.
en short vice versa.

Bij de ma% géén neutraalstand alleen trendindicator (heb je al eerder voor me gedaan)

Graag ook een instelbare profit target, dus dat wordt een exit obv wie het eerst komt, de PT of de flat exit in de hami 1.

Dank bij voorbaat, vriendelijke groet,

Eric
Berichten: 3040
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: cci plus

Bericht door Eric » wo mar 13, 2019 9:47 am

De omschrijving is wel weer wat cryptisch, maar kijk eens of dit er op lijkt:

Code: Selecteer alles

{- Filename: CCI HAMI met MA filter -}

var
  nMAFilter, MAPeriode, MDPeriode, nEntryLevel, nExitLevel, i, Position: integer;
  nMABand, TP, EntryPrice: real;
  sCCI, sEnterLong, sEnterShort, sMA, sMAHi, sMALo: TSeries;
  xLong, xShort: TLineCrossings;
begin
{ Indicator parameters }
  MAPeriode := CreateParameterInteger('MA periode', 1, 999, 14, true);
  MDPeriode := CreateParameterInteger('MD periode', 1, 999, 14, true);
  nEntryLevel := CreateParameterInteger('Entry level', 1, 999, 50, true);
  nExitLevel := CreateParameterInteger('Exit level', 1, 999, 150, true);
  nMAFilter := CreateParameterInteger('MA filter periode', 1, 999, 30, true);
  nMABand := CreateParameterReal('MA filter band %', 0, 99, 1, true);
  TP := CreateParameterReal('Take profit (pt)', 0, 9999, 10, true);

{ Indicator eigenschappen }
  with Indicator do 
  begin
{ Aantal benodigde koersen om eerste indicatorwaarde te berekenen }
    RequiredBars := MaxInt(MAPeriode, MDPeriode) + nMAFilter;
  end;

  sCCI := CCI(High, Low, Close, MAPeriode, MDPeriode);
  sEnterLong := FillSeries(CreateSeries(BarCount), nEntryLevel);
  sEnterShort := FillSeries(CreateSeries(BarCount), -nEntryLevel);
  xLong := Crossings(sCCI, sEnterLong);
  xShort := Crossings(sCCI, sEnterShort);
  sMA := MA(Close, maSimple, nMAFilter);
  sMAHi := MultiplySeriesBy(sMA, (100+nMABand)/100);
  sMALo := MultiplySeriesBy(sMA, (100-nMABand)/100);

  for i:=MaxInt(FirstValidIndex(sMA), FirstValidIndex(sCCI))+1 to BarCount-1 do
  begin
    if (Position > 0) and (sCCI[i] > nExitLevel) then
    begin
      ExitLong(i);
      Position := 0;
    end else
    if (Position > 0) and (High[i] >= EntryPrice + TP) then
    begin
      ExitLongLimit(i, EntryPrice + TP);
      Position := 0;
    end else
    if (Position < 0) and (sCCI[i] < -nExitLevel) then
    begin
      ExitShort(i);
      Position := 0;
    end else
    if (Position < 0) and (Low[i] <= EntryPrice - TP) then
    begin
      ExitShortLimit(i, EntryPrice - TP);
      Position := 0;
    end else
    if xLong[i] = lc1Over2 then
    begin
      if Close[i] > sMAHi[i] then
      begin
        EnterLong(i);
        EntryPrice := Close[i];
        Position := 1;
      end else
      begin
        ExitShort(i);
        Position := 0;
      end
    end else
    if xShort[i] = lc2Over1 then
    begin
      if Close[i] < sMALo[i] then
      begin
        EnterShort(i);
        EntryPrice := Close[i];
        Position := -1;
      end else
      begin
        ExitLong(i);
        Position := 0;
      end
    end;
  end;
  
  with CreateLine(sCCI) do
  begin
    Name := 'CCI';
    Color := clLime;
  end;
  with CreateLine(sEnterLong) do
  begin
    Name := 'Entry long';
    Color := clLime;
  end;
  with CreateLine(sEnterShort) do
  begin
    Name := 'Entry short';
    Color := clLime;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), nExitLevel)) do
  begin
    Name := 'Exit Long';
    Color := clRed;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), -nExitLevel)) do
  begin
    Name := 'Exit Short';
    Color := clRed;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), 0)) do
  begin
    Name := 'Zero';
    Color := clSilver;
  end;
end.
---
Eric

tesjoeva
Berichten: 157
Lid geworden op: vr jul 07, 2017 3:10 pm

Re: cci plus

Bericht door tesjoeva » wo mar 13, 2019 11:15 am

vriendelijk dank voor de snelle actie,

gr,

Plaats reactie