macd combo

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

tesjoeva macd systeem

Bericht door tesjoeva » di apr 24, 2018 5:55 pm

Hallo Eric.

Bij het Tesjoeva Macd systeem graag nog een aanpassing aub;

De PT exit zou hier dominant moeten zijn aan de triggerlines exit.

Dus wie het eerst komt.......

Obv 255 minuten gaat de AEX op 1-3 short op 529.
Op 2-3 is de slotkoers van de bar (255 minuten) 520.42
gesloten zou kunnen worden op de opening van de volgende bar 520.44.

Er zou dus bijna 9 punten (1800 euro) winst gemaakt kunnen worden.

De uiteindelijke exit obv de triggerlines is 534.87

Ipv een keurige snelle winst eindigen we met verlies van ruim 1000 euro, toch jammer.


Ik vind het prima om hier niet intrabar een signaal te krijgen.


vr.gr.

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

Re: macd combo

Bericht door tesjoeva » wo apr 25, 2018 10:27 am

Hallo Eric,

Ik wil de zaak voor jou en mij zien af te ronden, anders ben ik bang dat, met name ik, ga liggen trekken met mijn benen s nachts in bed.........

We hebben 2 systemen die prima werken;

Tesjoeva Macd systeem
Tesjoeva Macd Momentum systeem.

Al het andere gaat even aan de kant.

Ik zit in beide systemen met de profit target, welke de systemen zelfs UITMUNTEND maakt, maar ik krijg er de vinger niet achter hoe het NU werkt.

Ik wil graag het systeem gebruiken dat ik jarenlang in Fibonaccitrader heb gebruikt:

Vergeet de intrabar exit obv de PT.

Als in een bepaalde bar de PT is gehaald, dan volgt de exit op de opening van de volgende bar.

Soms is de winst dan veel groter, en soms is er niets meer van over, maar dat risico neem ik, want daar ben ik ook aan gewend.

In alle gevallen gaat de PT vóór de exit obv de triggerlines, zoals eerder gezegd, wie het eerst komt etc.

Hierna zal ik in volledige afzondering gaan..................lekker rustig!

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

Re: macd combo

Bericht door Eric » wo apr 25, 2018 7:37 pm

tesjoeva schreef:
di apr 24, 2018 2:32 pm
Hallo Eric,

Mijn nederige verzoek was om bij een PT ook intraday een exit te genereren.
Ondanks dat er soms tussen de opening en de high van die dag méér zit dan de PT gaat hij er niet uit cq geeft geen signaal.

Bijv.AEX op 6-4 met een PT van 4 punten.

Het verschil was 4.72 maar de exit kwam pas de volgende dag.
Een plaatje zou verhelderend zijn. Grafiek opslaan als afbeelding en bijvoegen als bijlage. Dan weet ik tenminste welk interval je gebruikt, welke parameters etc.
Het is wel zo dat binnen een bar slechts 1 signaal kan worden gegeven. Is er dus een entry op de opening dan kan in de openingsbar niet ook een sluitingssignaal worden gegeven in de grafiek.
tesjoeva schreef:
di apr 24, 2018 2:32 pm
Wat mij ook nog steeds bevreemd is dat er soms meerdere malen winst wordt genomen in een grote trend maar dan ook met re-entries die ik helemaal niet thuis kan brengen.

Doe ik een simulatie en zet de PT in de indicator op 100 (dus in feite géén target) dan komen de re-entries in de simulatie niet voor.
Dat kan natuurlijk heel goed, als op het moment van exit of de bar erna aan de entry condities wordt voldaan.

---
Eric

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

Re: tesjoeva macd systeem

Bericht door Eric » wo apr 25, 2018 7:46 pm

tesjoeva schreef:
di apr 24, 2018 5:55 pm
Hallo Eric.

Bij het Tesjoeva Macd systeem graag nog een aanpassing aub;

De PT exit zou hier dominant moeten zijn aan de triggerlines exit.

Dus wie het eerst komt.......

Obv 255 minuten gaat de AEX op 1-3 short op 529.
Op 2-3 is de slotkoers van de bar (255 minuten) 520.42
gesloten zou kunnen worden op de opening van de volgende bar 520.44.

Er zou dus bijna 9 punten (1800 euro) winst gemaakt kunnen worden.

De uiteindelijke exit obv de triggerlines is 534.87

Ipv een keurige snelle winst eindigen we met verlies van ruim 1000 euro, toch jammer.


Ik vind het prima om hier niet intrabar een signaal te krijgen.


vr.gr.
Hier zat inderdaad een foutje in de take profit verwerking. Probeer deze eens.

Code: Selecteer alles

{- Filename: Tesjoeva's MACD system -}

function HullMA(Prices: TSeries; Period: integer): TSeries;
begin
// Integer (Square Root (Period)) WMA [2 x Integer (Period/2) WMA (Price) - Period WMA (Price)]
//  waverage(2 * waverage(close, period/2) - waverage(close,period), SquareRoot(Period))
  Result := MA(SubtractSeries(MultiplySeriesBy(MA(Prices, maWeighted, Period div 2), 2),
                              MA(Prices, maWeighted, Period)),
               maWeighted, trunc(sqrt(Period)));
end;

var
  nHullMA1, nHullMA2, nMA1, nMA2, i, iFirst, Period, Displace, Trigger, Mom1, Mom2, Mom3, MP: integer;
  TPLevel, TP: real;
  sHullMACD, sMACD, sHullDiff, sDiff, sZero, sMom1, sMom2, sMom3: TSeries;
  sLR, sLRSlope, sForecast, sMAFc: TSeries;
begin
  nHullMA1 := CreateParameterInteger('Hull''s MA periode 1', 1, 999, 13, true);
  nHullMA2 := CreateParameterInteger('Hull''s MA periode 2', 1, 999, 26, true);
  nMA1 := CreateParameterInteger('MA periode 1', 1, 999, 13, true);
  nMA2 := CreateParameterInteger('MA periode 2', 1, 999, 26, true);
  Period   := CreateParameterInteger('T3 Period', 1, 999, 20, true);
  Displace := CreateParameterInteger('T3 Displace LRF', 0, 999, 0, false);
  Trigger  := CreateParameterInteger('T3 EMA over LRF', 1, 999, 5, true);
  TP  := CreateParameterReal('Take profit (pt)', 0, 9999, 10, true);
  Mom1 := CreateParameterInteger('Mom 1', 1, 999, 1, true);
  Mom2 := CreateParameterInteger('Mom 2', 1, 999, 5, true);
  Mom3 := CreateParameterInteger('Mom 3', 1, 999, 10, true);

  with Indicator do
  begin
    RequiredBars := MaxInt(MaxInt(5*(nMA1+nMA2), nHullMA1+nHullMA2), 5*Period)+Mom1+Mom2+MOm3;
  end;
  
  sHullMACD := SubtractSeries(HullMA(Close, nHullMA1), HullMA(Close, nHullMA2));
  sHullDiff := Momentum(sHullMACD, 1);

  sMACD := MACD(Close, nMA1, nMA2);
  sDiff := Momentum(sMACD, 1);
  sZero := FillSeries(CreateSeries(BarCount), 0);

  sLR       := MovingRegression(Close,Period);
  sLRSlope  := MovingRegressionSlope(Close,Period);
  sForecast := ShiftSeries(AddSeries(sLR,sLRSlope),Displace);
  sMAFc     := MA(sForecast,MaExponential,Trigger);

  sMom1 := Momentum(Close, Mom1);
  sMom2 := Momentum(Close, Mom2);
  sMom3 := Momentum(Close, Mom3);

  iFirst := MaxInt(MaxInt(MaxInt(MaxInt(MaxInt(FirstvalidIndex(sHullDiff), FirstValidIndex(sDiff)),
    FirstValidIndex(sMAFc)), FirstValidIndex(sMom1)), FirstValidIndex(sMom2)), FirstValidIndex(sMom3));
  for i:=iFirst+1 to BarCount-1 do
  begin
    if (MP > 0) and (Close[i] >= TPLevel) then
    begin
      ExitLong(i);
      MP := 0;
    end else
    if (MP < 0) and (Close[i] <= TPLevel) then
    begin
      ExitShort(i);
      MP := 0;
    end else
    if (sHullDiff[i] > 0) and (sDiff[i] > 0) and (sDiff[i] > sDiff[i-1]) and (sMAFc[i] < sForecast[i]) and
       (sMom1[i] > 0) and (sMom2[i] > 0) and (sMom3[i] > 0) then
    begin
      if EnterLong(i) then
      begin
        MP := 1;
        TPLevel := Close[i] + TP;
      end;
    end else
    if (sHullDiff[i] < 0) and (sDiff[i] < 0) and (sDiff[i] < sDiff[i-1]) and (sMAFc[i] >= sForecast[i]) and
       (sMom1[i] < 0) and (sMom2[i] < 0) and (sMom3[i] < 0) then
    begin
      if EnterShort(i) then
      begin
        MP := -1;
        TPLevel := Close[i] - TP;
      end;
    end else
    if (MP > 0) and (sMAFc[i] >= sForecast[i]) then
    begin
      ExitLong(i);
      MP := 0;
    end else
    if (MP < 0) and (sMAFc[i] < sForecast[i]) then
    begin
      ExitShort(i);
      MP := 0;
    end;
  end;
  
  with CreateLine(sDiff) do
  begin
    Color := clLime;
  end;
  with CreateLine(sHullDiff) do
  begin
    Color := clYellow;
  end;
  with CreateLine(sZero) do
  begin
    Color := clSilver;
    LineContent := lcConstant;
  end;
end.
---
Eric

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

Re: macd combo

Bericht door tesjoeva » wo apr 25, 2018 8:26 pm

Hallo Eric,

Wederom dank, maar ik ben bang dat er nog iets niet klopt:

In Tesjoeva Macd Momentum 1 gaat de tp prima.

In Tesjoeva Macd system nog niet; koersbewegingen groter dan de tp worden toch nog overgeslagen en pas daarna , soms ruim daarna, pas gesloten.

Wil je zo vriendelijk z ijn beide systemen hierop eens naast elkaar te leggen en de systematiek zoals in Momentum1 toe te passen op het Macd system.

Separaat heb ik nog een verzoek gedaan; zou je deze als extra willen beschouwen, omdat de insteek ietsje anders is.

Ik kan niet verwoorden hoezeer ik dit allemaal op prijs stel en het kost me moeite om de eigenwijs uit te hangen, maar het zoals ik het zie, juist of niet......

vriendelijke groet,

petdev
Berichten: 70
Lid geworden op: wo jun 12, 2013 4:25 pm

Re: macd combo

Bericht door petdev » wo apr 25, 2018 11:50 pm

Tesjoeva,

"We hebben 2 systemen die prima werken;

Tesjoeva Macd systeem
Tesjoeva Macd Momentum systeem."


Uit je woorden (9 pnt. = €1800) maak ik op dat je hiermee FTI's handelt.
Kun je aangeven op wat voor profit (AEX punten) je uitkomt over zeg een 5-jaars periode?
Ik kom met beide systemen ( einde-dagkoers geoptimaliseerd) uit op ongeveer 270-280 punten met een hitrate van ~56%. klopt dit ruwweg? Of wijkt dit significant af van je eigen bevindingen?

Groet,
Peter

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

Re: macd combo

Bericht door Eric » do apr 26, 2018 1:17 am

tesjoeva schreef:
wo apr 25, 2018 8:26 pm
Hallo Eric,

Wederom dank, maar ik ben bang dat er nog iets niet klopt:

In Tesjoeva Macd Momentum 1 gaat de tp prima.

In Tesjoeva Macd system nog niet; koersbewegingen groter dan de tp worden toch nog overgeslagen en pas daarna , soms ruim daarna, pas gesloten.

Wil je zo vriendelijk z ijn beide systemen hierop eens naast elkaar te leggen en de systematiek zoals in Momentum1 toe te passen op het Macd system.

Separaat heb ik nog een verzoek gedaan; zou je deze als extra willen beschouwen, omdat de insteek ietsje anders is.

Ik kan niet verwoorden hoezeer ik dit allemaal op prijs stel en het kost me moeite om de eigenwijs uit te hangen, maar het zoals ik het zie, juist of niet......

vriendelijke groet,
De take profits van de twee systemen verschillen inderdaad. Het MACD systeem werkt met een take profit op slotkoers, en niet intra-bar. Ook in de entries verschillen de systemen, het MACD systeem doet dat op slotkoers en niet op openingskoers volgende bar (zoals je later hebt aangegeven voor het Momentum systeem).

Moet dit anders dan?

---
Eric

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

Re: macd combo

Bericht door tesjoeva » do apr 26, 2018 8:27 am

Hallo Peter en Eric'.

Ik probeer zo duidelijk mogelijk te zijn:

Ik handel uitsluitend de AEX/FTI.

Timeframe is 255 minuten, grofweg een halve dag AEX, dus FTI in de avond niet.

In mijn beleving kan het niet anders dan zo:

Tesjoeva Momentum 1 moet aan alle voorwaarden voldoen:
Triggerlines + of -
Macd afgeleide is boven of onder 0
Hull Macd afgeleide geeft signaal
Coen's momentum is volledig groen of rood.

Op dat moment is er een trigger/breakout bar.

ER kan in mijn beleving NOOIT worden gehandeld close of bar, maar altijd op de opening van de volgende.

Dat is ook de basis voor de profit target.

In een eerder bericht had ik al gevraagd om een relatief simpele aanpassing welke ik jarenlang heb gebruit in Fibonaccitrader, en dat is:

Als er in enige bar na de entry de target wordt gehaald, dan EXIT op de OPENING van de volgende.
In een mooie move heb je mazzel en ga je vér over je target heen, en soms ben je de schlemiel als de markt zich tegen je keert en er niets van de winst overblijft; eindigen met een verlies is dan ook mogelijk.

Hier kan ik heel goe mee leven, zoals gezegd ben ik dat gewend.

Peter, ik ben niet van het beruchte O-word......
Ik handel nu 40 jaar en dan wordt je heel bescheiden nadat je alle grote moves hebt nagejaagd.
IK ga uit van mooie winsten met een hoge hitratio van 3 tot 4 punten.

Ik zie nu voor het eerst dat Eric iets heeft, en dat ook bevestigd, dat er in een grote move meerdere re-entrie mogelijk zijn; dat is natuurlijk helemaal het einde!!

De grote move van jan/feb in de AEX zou normaliter 3-4 punten opleveren maar door de re-entries, welke ik zelf niet snap, is dat een veelvoud geworden.

Vanaf januari tot heden draai ik een hitratio 80-100% bij een opbrengst van 40-60 punten.
Verschil zit in Macd Momentum en Momentum1.

Ik nodig jullie graag uit om op-en aanmerkingen, dan wel aanvullingen te plaatsen.

vriendelijke groet,

petdev
Berichten: 70
Lid geworden op: wo jun 12, 2013 4:25 pm

Re: macd combo

Bericht door petdev » do apr 26, 2018 12:25 pm

Dag Tesjoeva,

Kan je vinden in het bezwaar tegen O-word. Werkt even en daarna niet meer; vandaar dat ik dit ook altijd op 5-jaars periode test en rond de 100 trades wil zien..... en dan nog.........
Als ik je timeframe 255 aanhoud en vanaf 1-1-2018 zonder optimalisatie simuleer, kom ik qua AEX-punten in de buurt van wat je aangeeft, maar qua hitratio nauwelijks boven de 50%.
Als ik datzelfde simuleer vanaf 1-1-2013 wordt het redelijk marginaal/niet interessant.
Vandaar mijn poging tot optimalisatie.
Als ik het goed heb is 255 een halve handelsdag. Is opening volgende bar 's-morgens dan FTI opening om 8 uur of FTI om 9 uur bij opening AEX?
Kun je tonen hoe je trading-simulatie er precies uiziet?

Vriendelijke groet,

Peter

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

Re: macd combo

Bericht door tesjoeva » do apr 26, 2018 1:11 pm

Hallo Peter,

9 uur opening AEX.

Let wel; er is een groot verschil of je de target in de indicator zet of in de simulatie.
Ik zet hem in de indicator en bij de simulatie dáár op 0.

vr.gr.

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

Re: macd combo

Bericht door Eric » za apr 28, 2018 3:30 pm

Ik hoop dat ik het goed begrepen heb maar hier dan het MACD systeem waarbij alle trades op opening next bar worden gedaan, entry en exit.

Code: Selecteer alles

{- Filename: Tesjoeva's MACD system 2 -}

function HullMA(Prices: TSeries; Period: integer): TSeries;
begin
// Integer (Square Root (Period)) WMA [2 x Integer (Period/2) WMA (Price) - Period WMA (Price)]
//  waverage(2 * waverage(close, period/2) - waverage(close,period), SquareRoot(Period))
  Result := MA(SubtractSeries(MultiplySeriesBy(MA(Prices, maWeighted, Period div 2), 2),
                              MA(Prices, maWeighted, Period)),
               maWeighted, trunc(sqrt(Period)));
end;

type
  TSigTrigger = (trNone, trLong, trShort, trExitLong, trExitShort);

var
  SigTrigger: TSigTrigger;
  nHullMA1, nHullMA2, nMA1, nMA2, i, iFirst, Period, Displace, Trigger, Mom1, Mom2, Mom3, MP: integer;
  TPLevel, TP: real;
  sHullMACD, sMACD, sHullDiff, sDiff, sZero, sMom1, sMom2, sMom3: TSeries;
  sLR, sLRSlope, sForecast, sMAFc: TSeries;
begin
  nHullMA1 := CreateParameterInteger('Hull''s MA periode 1', 1, 999, 13, true);
  nHullMA2 := CreateParameterInteger('Hull''s MA periode 2', 1, 999, 26, true);
  nMA1 := CreateParameterInteger('MA periode 1', 1, 999, 13, true);
  nMA2 := CreateParameterInteger('MA periode 2', 1, 999, 26, true);
  Period   := CreateParameterInteger('T3 Period', 1, 999, 20, true);
  Displace := CreateParameterInteger('T3 Displace LRF', 0, 999, 0, false);
  Trigger  := CreateParameterInteger('T3 EMA over LRF', 1, 999, 5, true);
  TP  := CreateParameterReal('Take profit (pt)', 0, 9999, 10, true);
  Mom1 := CreateParameterInteger('Mom 1', 1, 999, 1, true);
  Mom2 := CreateParameterInteger('Mom 2', 1, 999, 5, true);
  Mom3 := CreateParameterInteger('Mom 3', 1, 999, 10, true);

  with Indicator do
  begin
    RequiredBars := MaxInt(MaxInt(5*(nMA1+nMA2), nHullMA1+nHullMA2), 5*Period)+Mom1+Mom2+MOm3;
    AdvancedTrades := true;
  end;
  
  sHullMACD := SubtractSeries(HullMA(Close, nHullMA1), HullMA(Close, nHullMA2));
  sHullDiff := Momentum(sHullMACD, 1);

  sMACD := MACD(Close, nMA1, nMA2);
  sDiff := Momentum(sMACD, 1);
  sZero := FillSeries(CreateSeries(BarCount), 0);

  sLR       := MovingRegression(Close,Period);
  sLRSlope  := MovingRegressionSlope(Close,Period);
  sForecast := ShiftSeries(AddSeries(sLR,sLRSlope),Displace);
  sMAFc     := MA(sForecast,MaExponential,Trigger);

  sMom1 := Momentum(Close, Mom1);
  sMom2 := Momentum(Close, Mom2);
  sMom3 := Momentum(Close, Mom3);

  iFirst := MaxInt(MaxInt(MaxInt(MaxInt(MaxInt(FirstvalidIndex(sHullDiff), FirstValidIndex(sDiff)),
    FirstValidIndex(sMAFc)), FirstValidIndex(sMom1)), FirstValidIndex(sMom2)), FirstValidIndex(sMom3));
  for i:=iFirst+1 to BarCount-1 do
  begin
    if SigTrigger = trLong then
    begin
      if EnterLongAtOpen(i) then
      begin
        MP := 1;
        if i < Barcount-1 then TPLevel := Open[i] + TP;
      end;
      SigTrigger := trNone;
    end else
    if SigTrigger = trShort then
    begin
      if EnterShortAtOpen(i) then
      begin
        MP := -1;
        if i < Barcount-1 then TPLevel := Open[i] - TP;
      end;
      SigTrigger := trNone;
    end else
    if SigTrigger = trExitLong then
    begin
      ExitLongAtOpen(i);
      SigTrigger := trNone;
      MP := 0;
    end else
    if SigTrigger = trExitShort then
    begin
      ExitShortAtOpen(i);
      SigTrigger := trNone;
      MP := 0;
    end else
    if (MP > 0) and (High[i] >= TPLevel) then
    begin
      ExitLongLimit(i, TPLevel);
      MP := 0;
    end else
    if (MP < 0) and (Low[i] <= TPLevel) then
    begin
      ExitShortLimit(i, TPLevel);
      MP := 0;
    end else
    if (MP < 1) and (sHullDiff[i] > 0) and (sDiff[i] > 0) and (sDiff[i] > sDiff[i-1]) and (sMAFc[i] < sForecast[i]) and
       (sMom1[i] > 0) and (sMom2[i] > 0) and (sMom3[i] > 0) then
    begin
      SigTrigger := trLong;
    end else
    if (MP > -1) and (sHullDiff[i] < 0) and (sDiff[i] < 0) and (sDiff[i] < sDiff[i-1]) and (sMAFc[i] >= sForecast[i]) and
       (sMom1[i] < 0) and (sMom2[i] < 0) and (sMom3[i] < 0) then
    begin
      SigTrigger := trShort;
    end else
    if (MP > 0) and (sMAFc[i] >= sForecast[i]) then
    begin
      SigTrigger := trExitLong;
    end else
    if (MP < 0) and (sMAFc[i] < sForecast[i]) then
    begin
      SigTrigger := trExitShort;
    end;
  end;
  
  with CreateLine(sDiff) do
  begin
    Color := clLime;
  end;
  with CreateLine(sHullDiff) do
  begin
    Color := clYellow;
  end;
  with CreateLine(sZero) do
  begin
    Color := clSilver;
    LineContent := lcConstant;
  end;
end.
---
Eric

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

Re: macd combo

Bericht door Eric » za apr 28, 2018 3:33 pm

En ik kwam nog een bugje tegen in de Macd Momentum, de exit short werd soms niet gegeven terwijl de laagste wel onder de TP was geweest.

Code: Selecteer alles

{- Filename: Tesjoeva's MACD Momentum system -}

function HullMA(Prices: TSeries; Period: integer): TSeries;
begin
// Integer (Square Root (Period)) WMA [2 x Integer (Period/2) WMA (Price) - Period WMA (Price)]
//  waverage(2 * waverage(close, period/2) - waverage(close,period), SquareRoot(Period))
  Result := MA(SubtractSeries(MultiplySeriesBy(MA(Prices, maWeighted, Period div 2), 2),
                              MA(Prices, maWeighted, Period)),
               maWeighted, trunc(sqrt(Period)));
end;

type
  TSigTrigger = (trNone, trLong, trShort, trExitLong, trExitShort);
var
  SigTrigger: TSigTrigger;
  nHullMA1, nHullMA2, nMA1, nMA2, i, iFirst, Period, Displace, Trigger, Mom1, Mom2, Mom3, MP: integer;
  TPLevel, TP: real;
  sHullMACD, sMACD, sHullDiff, sDiff, sZero, sMom1, sMom2, sMom3: TSeries;
  sLR, sLRSlope, sForecast, sMAFc: TSeries;
begin
  nHullMA1 := CreateParameterInteger('Hull''s MA periode 1', 1, 999, 13, true);
  nHullMA2 := CreateParameterInteger('Hull''s MA periode 2', 1, 999, 26, true);
  nMA1 := CreateParameterInteger('MA periode 1', 1, 999, 13, true);
  nMA2 := CreateParameterInteger('MA periode 2', 1, 999, 26, true);
  Period   := CreateParameterInteger('T3 Period', 1, 999, 20, true);
  Displace := CreateParameterInteger('T3 Displace LRF', 0, 999, 0, false);
  Trigger  := CreateParameterInteger('T3 EMA over LRF', 1, 999, 5, true);
  TP  := CreateParameterReal('Take profit (pt)', 0, 9999, 10, true);
  Mom1 := CreateParameterInteger('Mom 1', 1, 999, 1, true);
  Mom2 := CreateParameterInteger('Mom 2', 1, 999, 5, true);
  Mom3 := CreateParameterInteger('Mom 3', 1, 999, 10, true);

  with Indicator do
  begin
    RequiredBars := MaxInt(MaxInt(5*(nMA1+nMA2), nHullMA1+nHullMA2), 5*Period)+Mom1+Mom2+MOm3;
    AdvancedTrades := true;
  end;

  sHullMACD := SubtractSeries(HullMA(Close, nHullMA1), HullMA(Close, nHullMA2));
  sHullDiff := Momentum(sHullMACD, 1);

  sMACD := MACD(Close, nMA1, nMA2);
  sDiff := Momentum(sMACD, 1);
  sZero := FillSeries(CreateSeries(BarCount), 0);

  sLR       := MovingRegression(Close,Period);
  sLRSlope  := MovingRegressionSlope(Close,Period);
  sForecast := ShiftSeries(AddSeries(sLR,sLRSlope),Displace);
  sMAFc     := MA(sForecast,MaExponential,Trigger);

  sMom1 := Momentum(Close, Mom1);
  sMom2 := Momentum(Close, Mom2);
  sMom3 := Momentum(Close, Mom3);

  iFirst := MaxInt(MaxInt(MaxInt(MaxInt(MaxInt(FirstvalidIndex(sHullDiff), FirstValidIndex(sDiff)),
    FirstValidIndex(sMAFc)), FirstValidIndex(sMom1)), FirstValidIndex(sMom2)), FirstValidIndex(sMom3));
  for i:=iFirst+1 to BarCount-1 do
  begin
    if SigTrigger = trLong then
    begin
      if EnterLongAtOpen(i) then
      begin
        MP := 1;
        if i < Barcount-1 then TPLevel := Open[i] + TP;
      end;
      SigTrigger := trNone;
    end else
    if SigTrigger = trShort then
    begin
      if EnterShortAtOpen(i) then
      begin
        MP := -1;
        if i < Barcount-1 then TPLevel := Open[i] - TP;
      end;
      SigTrigger := trNone;
    end else
    if SigTrigger = trExitLong then
    begin
      ExitLongAtOpen(i);
      SigTrigger := trNone;
      MP := 0;
    end else
    if SigTrigger = trExitShort then
    begin
      ExitShortAtOpen(i);
      SigTrigger := trNone;
      MP := 0;
    end else
    if (MP > 0) and (High[i] >= TPLevel) then
    begin
      ExitLongLimit(i, TPLevel);
      MP := 0;
    end else
    if (MP < 0) and (Low[i] <= TPLevel) then
    begin
      ExitShortLimit(i, TPLevel);
      MP := 0;
    end else
    if (MP <1) and (sHullDiff[i] > 0) and (sDiff[i] > 0) and (sDiff[i] > sDiff[i-1]) and (sMAFc[i] < sForecast[i]) and
       (sMom1[i] > 0) and (sMom2[i] > 0) and (sMom3[i] > 0) then
    begin
      SigTrigger := trLong;
    end else
    if (MP > -1) and (sHullDiff[i] < 0) and (sDiff[i] < 0) and (sDiff[i] < sDiff[i-1]) and (sMAFc[i] >= sForecast[i]) and
       (sMom1[i] < 0) and (sMom2[i] < 0) and (sMom3[i] < 0) then
    begin
      SigTrigger := trShort;
    end else
    if (MP > 0) and (sMAFc[i] >= sForecast[i]) then
    begin
      SigTrigger := trExitLong;
    end else
    if (MP < 0) and (sMAFc[i] < sForecast[i]) then
    begin
      SigTrigger := trExitShort;
    end;
  end;

  with CreateLine(sDiff) do
  begin
    Color := clLime;
  end;
  with CreateLine(sHullDiff) do
  begin
    Color := clYellow;
  end;
  with CreateLine(sZero) do
  begin
    Color := clSilver;
    LineContent := lcConstant;
  end;
end.
---
Eric

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

Re: macd combo

Bericht door tesjoeva » za apr 28, 2018 5:24 pm

Hallo Eric,

Ziet er fantastisch uit, enorm bedankt.

Het was even zoeken, maar ik geloof dat dit wel is wat ik bedoel.

vriendelijke groet,

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

Re: macd combo

Bericht door tesjoeva » do mei 10, 2018 8:31 pm

Hallo Eric,

het is rustig in je winkel.....maar gelukkig heb ik weer een (mogelijk simpel) verzoek:

Tesjoeva Macd Momentum system 1:

Hiermee wil ik op meerdere timeframes realtime limietbewaking doen.

Instelbaar, maar als voorbeeld;

Ik wil op 15 minuten basis een signaal (indien getriggerd) als dan ook de 60 en 120 minuten long of short zitten naar gelang het signaal op 15 minuten.

Lukt tot nu toe niet best, ligt waarschijnlijk aan de volgorde; ik krijg wel een signaal maar die voldoet dan niet aan de andere 2 criteria.

Wil je zo vriendelijk zijn...?

Dank bijvoorbaat en btw ik heb heel veel plezier van de indicatoren welke je gemaakt hebt.

groet,

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

Re: macd combo

Bericht door Eric » zo mei 13, 2018 10:09 pm

Multi timeframe systemen zijn helaas nooit simpel, en al helemaal niet als de basisindicator ook al enige complexiteit vertoont. Hier gaat dermate veel tijd in zitten om dit allereerst functioneel uit te zoeken hoe je dit precies bedoelt en vervolgens te implementeren, dat dit helaas buiten het bestek van dit forum valt.

---
Eric

Plaats reactie