Larry Williams

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
Bakstenen
Berichten: 708
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Larry Williams

Bericht door Bakstenen »

Eric,
wil jij even kijken wat ik niet goed doe, heb bij trading simulatie de datum op 1 maart j.l gezet, grafiek is 240 minuten, waarom gaat de indicator niet short op 3 maart, bij de rode cirkel?
Knipsel1.JPG
Knipsel.JPG
Eric
Berichten: 3305
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Larry Williams

Bericht door Eric »

Omdat je op 3 maart al short bent (signaal eind feb).

Het is nooit zo dat je bij trading simulatie een signaal op de begindatum krijgt omdat er eerder al een koop/verkoopsignaal was.

---
Eric
Bakstenen
Berichten: 708
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Larry Williams

Bericht door Bakstenen »

Eric,
dat begrijp ik, maar als ik de simulatie op 22 februari zet, dan kan ik het volgen, en doet die ook wat die moet doen, alleen waarom gaat de indicator niet op 1 maart long, en 3 maart short,zie ronder cirkels en pijl in de bijlage
Knipsel.JPG
Eric
Berichten: 3305
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Larry Williams

Bericht door Eric »

Dat is inderdaad een bug in de code. Probeer deze eens:

Code: Selecteer alles

{- Filename: Bakstenen EMA system -}

type
  TState = (stNone, stLong, stShort);

var
  State: TState;
  nMA, nMAType, i, LastDay: integer;
  tOpen, tClose, BarTime: TDateTime;
  Trigger, nStop1, nStop2, Stop: real;
  sMA, sStop: TSeries;
  xMA: TLineCrossings;
  nUseTimes, nStop: boolean;
  bSetupLong, bSetupShort: boolean;
begin
{ Parameters }
  nMA := CreateParameterInteger('MA periode', 1, 999, 14, true);
  nMAType := CreateParameterSelect('MA type', 'Gewone MA'#9'Exponentiële MA'#9'Gewogen MA', 0, true);
  nStop := CreateParameterBoolean('Trailing Stoploss gebruiken', true, true);
  nStop1 := CreateParameterReal('Initial stop (pt)', 0, 999, 20, true);
  nStop2 := CreateParameterReal('Trailing stop (pt)', 0, 999, 30, true);
  nUseTimes := CreateParameterBoolean('Beperkte tradetijden gebruiken', true, true);
  tOpen := CreateParameterTime('Entry vanaf', 9/24);
  tClose := CreateParameterTime('Exit na', 17.5/24);

{ Indicator eigenschappen }
  with Indicator do
  begin
    RequiredBars := 5*nMA;
    NewBand := false;
    ScaleRange := srCommon;
    SignalView := svShowInMain;
    AdvancedTrades := true;
  end;

{ Berekening }
  case nMAType of
    1: sMA := MA(Close, maExponential, nMA);
    2: sMA := MA(Close, maWeighted, nMA);
    else sMA := MA(Close, maSimple, nMA);
  end;

{ Signalen }
  xMA := Crossings(Close, sMA);
  bSetupLong := false;
  bSetupShort := false;
  sStop := CreateSeries(BarCount);

  for i:=0 to BarCount-1 do
  begin
    BarTime := frac(DateTime[i]);
    if nUseTimes and ((trunc(DateTime[i]) <> LastDay) or (BarTime < tOpen)) then
    begin
      LastDay := trunc(DateTime[i]);
      State := stNone;
      bSetupLong := false;
      bSetupShort := false;
    end else
    begin
      if bSetupLong and (State <> stLong) and
        (((BarTime >= tOpen) and (BarTime < tClose)) or not nUseTimes) and
        (High[i] > Trigger) then
      begin
        if EnterLongStop(i, Trigger) then
        begin
          State := stLong;
          Stop := Close[i] - nStop1;
          if nStop then sStop[i] := Stop;
        end;
      end else
      if bSetupShort and (State <> stShort) and
        (((BarTime >= tOpen) and (BarTime < tClose)) or not nUseTimes) and
        (Low[i] < Trigger) then
      begin
        if EnterShortStop(i, Trigger) then
        begin
          State := stShort;
          Stop := Close[i] + nStop1;
          if nStop then sStop[i] := Stop;
        end;
      end else
      case State of
        stLong:
        begin
          if nStop and (Low[i] < Stop) then
          begin
            ExitLongStop(i, Stop);
            State := stNone;
          end else
          if nUseTimes and (BarTime >= tClose) then
          begin
            ExitLong(i);
            State := stNone;
          end else
          begin
            Stop := Max(Stop, Close[i] - nStop2);
            if nStop then sStop[i] := Stop;
          end;
        end;
        stShort:
        begin
          if nStop and (High[i] > Stop) then
          begin
            ExitShortStop(i, Stop);
            State := stNone;
          end else
          if nUseTimes and (BarTime >= tClose) then
          begin
            ExitShort(i);
            State := stNone;
          end else
          begin
            Stop := Min(Stop, Close[i] + nStop2);
            if nStop then sStop[i] := Stop;
          end;
        end;
      end;
    end;

    if xMA[i] = lc1Over2 then
    begin
      bSetupLong := true;
      bSetupShort := false;
      Trigger := High[i];
    end else
    if xMA[i] = lc2Over1 then
    begin
      bSetupShort := true;
      bSetupLong := false;
      Trigger := Low[i];
    end;
  end;

{ Weergave }
  with CreateLine(sMA) do
  begin
    Name := 'MA';
    Color := clLime;
  end;
  with CreateLine(sStop) do
  begin
    Name := 'Stop';
    Color := clWhite;
    LineType := ltDot;
  end;
end.
---
Eric
Bakstenen
Berichten: 708
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Larry Williams

Bericht door Bakstenen »

Bedankt, op het eerste gezicht lijkt die prima, ik ga er mee verder
Bakstenen
Berichten: 708
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Larry Williams

Bericht door Bakstenen »

Hallo Eric, ben ik weer, ik wilde dit systeem testten op de Nasdaq future , dat werkt super, maar ik heb maar 3 maanden data hiervan, toen dacht ik , dan doe ik dit op de Nasdaq index, alleen dan krijg ik geen signalen, heb de tijd ingesteld op15.29, eindtijd op 22.00 uur, wat doe ik verkeerd?
Knipsel.JPG
Eric
Berichten: 3305
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Larry Williams

Bericht door Eric »

Bakstenen schreef: zo okt 25, 2020 4:31 pm Eric,
was toch niet wat ik ervan verwachtte, is het mogelijk dat zo wordt,
zodra koers boven de ma lijn komt, de high van die bar is het ijkpunt, zodra de koers hierna de high voorbij gaat, ga je long, en short omgekeerd, omdat ik het altijd zo lekker kan uitleggen, er maar een plaatje bij gedaan.
Knipsel.JPG
Dit was jouw entry voorwaarde. Alleen probeer je die nu los te laten op een systeem met 2 bars per dag met een tijdbeperking, die ervoor zorgt dat je op de 2e bar de positie sluit (en dus ook opnieuw begint met wachten op een kruising van de koers met de MA lijn). Maar je hebt minimaal 2 bars nodig om een entry patroon te vormen (bar 1 is koers kruist boven MA, bar 2 is koers boven de high van bar 1).

Ik denk dat je dingen hebt proberen te combineren die elkaar tegenwerken met jouw keuze voor dit timeframe.

---
Eric
Bakstenen
Berichten: 708
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Larry Williams

Bericht door Bakstenen »

Oke, dan moet ik kijken waar ik data kan halen van de mininasdaq.
Bedankt voor de reactie
Bakstenen
Berichten: 708
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Larry Williams

Bericht door Bakstenen »

Eric,
ik kan de volgende data downloaden, nu is de vraag, kan dit in WS? en dan in 1 minuut?.
Dan moet ik ook zeker een index aanmaken, omdat de data doorlopen?
NQ_futures_sample.zip
(1.27 MiB) 8 keer gedownload
Eric
Berichten: 3305
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Larry Williams

Bericht door Eric »

Het lijkt mij makkelijker om de data van TaiPan te gebruiken. Als je een nieuw fonds aanmaakt (b.v. een Index NQ FUTURE) en dan als TaiPan code 12583924 opgeeft dan krijg je de koersen ook (mits ze in jouw abonnement zitten natuurlijk).

---
Eric
Bakstenen
Berichten: 708
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: Larry Williams

Bericht door Bakstenen »

Eric,
Ga ik proberen, bedankt
Plaats reactie