MA intraday

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
jacko
Berichten: 115
Lid geworden op: vr mar 08, 2013 5:10 pm

Re: MA intraday

Bericht door jacko »

of dit iets is??, ik kan geen grafiek toevoegen want weet niet hoe dat moet, kijk dus zelf maar even, oranje door blauw dan weet je het

Code: Selecteer alles

{- Filename: MA system Jack -}

var
  nEMA, nMA, nEMAOffset, nMAOffset: integer;
  sMA, sEMA: TSeries;
begin
{ Indicator parameters }
  nEMA := CreateParameterInteger('EMA periode', 1, 9999, 5, true);
  nEMAOffset := CreateParameterInteger('EMA verschuiving', -99, 99, -2, true);
  nMA := CreateParameterInteger('MA periode', 1, 9999, 14, true);
  nMAOffset := CreateParameterInteger('MA verschuiving', -99, 99, -3, true);

{ Indicator eigenschappen }
  with Indicator do
  begin
    RequiredBars := 5*nEMA + nMA - nEMAOffset - nMAOffset;
    NewBand := false;
    ScaleRange := srCommon;
  end;

{ Indicatorberekening }
  sEMA := MA(Close, maExponential, nEMA);
  sEMA := ShiftSeries(sEMA, nEMAOffset);
  sMA := MA(Close, maSimple, nMA);
  sMA := ShiftSeries(sMA, nMAOffset);

  Signals := CrossingsToEntrySignals(Crossings(sEMA, sMA));

{ lijnen tekenen }
  with CreateLine(sEMA) do
  begin
    Name := 'EMA';
    Color := clRed;
  end;
  with CreateLine(sMA) do
  begin
    Name := 'MA';
    Color := clSilver;
  end;
end.
Bakstenen
Berichten: 907
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: MA intraday

Bericht door Bakstenen »

Ik kan wel een grafiek toevoegen, ging om de foutmelding
jacko
Berichten: 115
Lid geworden op: vr mar 08, 2013 5:10 pm

Re: MA intraday

Bericht door jacko »

ik had afgelopen ook probleem, ik had script in grafiek, en door stomme fout had ik het script uit het lijstje van scripts verwijdert, waardoor ik dag erop ook fout meldingen kreeg, dus moest back up erin zetten weer.
dom dom dom
Bakstenen
Berichten: 907
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: MA intraday

Bericht door Bakstenen »

Ik maak nooit een backup , ik kopieer elke week de hele map ws naar een externe schijf, ook andere programma's, je weet nooit of een back-up werkt
Bakstenen
Berichten: 907
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: MA intraday

Bericht door Bakstenen »

Eric, het is gelukt, heb de indicator in de map under contructie verwijderd, nu de vraag wat is dat voor een map.
Eric
Berichten: 3604
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: MA intraday

Bericht door Eric »

Bakstenen schreef: za mei 25, 2024 7:41 am Eric,
Ik opende een nieuwe grafiek en kreeg bijgaande melding, wat nu?
De melding geeft aan dat je een grafiekindeling hebt gebruikt waarin de indicator "Bakstenen MA systeem" staat, maar deze indicator is niet meer beschikbaar.

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

Re: MA intraday

Bericht door Eric »

Bakstenen schreef: zo mei 26, 2024 5:53 pm Eric, het is gelukt, heb de indicator in de map under contructie verwijderd, nu de vraag wat is dat voor een map.
In die map worden TA-script indicatoren bewaard die nog niet zijn geïnstalleerd maar wel zijn opgeslagen.

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

Re: MA intraday

Bericht door Bakstenen »

Oke, dit is mij nog nooit overkomen, maar het werkt goed nu
Bakstenen
Berichten: 907
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: MA intraday

Bericht door Bakstenen »

Eric kan je aan de indicator de ADX toevoegen, en pas een long of short trade als de ADX boven de 25 staat
Bakstenen
Berichten: 907
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: MA intraday

Bericht door Bakstenen »

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

Re: MA intraday

Bericht door Eric »

Ok, wat ik heb veranderd t.o.v. de vorige keer:

- ADX toegevoegd, moet boven het ingestelde level zijn voor een entrysignaal
- het entrysignaal moet op de eerste bar komen die een timestamp >= de ingestelde tijd heeft, latere bars worden niet beoordeeld

Code: Selecteer alles

{- Filename: Bakstenen MA system -}

type
  TState = (stNone, stLong, stShort);

var
  State: TState;
  nMA, nADX, nMinADX, nMAType, i, LastDay, TradeCount: integer;
  tOpen, tClose, BarTime: TDateTime;
  nSL, nTP, SL, TP: real;
  sMA, sADX: TSeries;
  xMA: TLineCrossings;
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);
  nADX := CreateParameterInteger('ADX periode', 1, 999, 14, true);
  nMinADX := CreateParameterInteger('ADX entry level', 0, 100, 25, true);
  nSL := CreateParameterReal('Stoploss (pt)', 0, 999, 20, true);
  nTP := CreateParameterReal('Take profit (pt)', 0, 999, 30, true);
  tOpen := CreateParameterTime('Entry vanaf', 9/24);
  tClose := CreateParameterTime('Exit na', 17.5/24);

{ Indicator eigenschappen }
  with Indicator do
  begin
    RequiredBars := 5*(nMA+nADX);
    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;
  sADX := ADX(High, Low, Close, nADX);

{ Signalen }
  xMA := Crossings(Close, sMA);

  for i:=MaxInt(FirstValidIndex(sMA), FirstValidIndex(sADX)) to BarCount-1 do
  begin
    BarTime := frac(DateTime[i]);
    if (trunc(DateTime[i]) <> LastDay) or (BarTime < tOpen) then
    begin
      TradeCount := 0;
      LastDay := trunc(DateTime[i]);
      if BarTime < tOpen then BarTime := 2; // forceer exit indien open positie
    end;
    begin
      case State of
        stLong:
        begin
          if (nSL > 0) and (Low[i] < SL) then
          begin
            ExitLongStop(i, SL);
            State := stNone;
          end else
          if (nTP > 0) and (High[i] > TP) then
          begin
            ExitLongLimit(i, TP);
            State := stNone;
          end else
          if BarTime >= tClose then
          begin
            ExitLong(i);
            State := stNone;
          end;
        end;
        stShort:
        begin
          if (nSL > 0) and (High[i] > SL) then
          begin
            ExitShortStop(i, SL);
            State := stNone;
          end else
          if (nTP > 0) and (Low[i] < TP) then
          begin
            ExitShortLimit(i, TP);
            State := stNone;
          end else
          if BarTime >= tClose then
          begin
            ExitShort(i);
            State := stNone;
          end;
        end;
      end;
      if (TradeCount=0) and (BarTime >= tOpen) and (BarTime <= tClose) then
      begin
        TradeCount := TradeCount+1;

        if (sADX[i] > nMinADX) and (Close[i] > sMA[i]) then
        begin
          if EnterLong(i) then
          begin
            State := stLong;
            SL := Close[i] - nSL;
            TP := Close[i] + nTP;
          end;
        end else
        if (sADX[i] > nMinADX) and (Close[i] < sMA[i]) then
        begin
          if EnterShort(i) then
          begin
            State := stShort;
            SL := Close[i] + nSL;
            TP := Close[i] - nTP;
          end;
        end;
      end;
    end;
  end;

{ Weergave }
  with CreateLine(sMA) do
  begin
    Name := 'MA';
    Color := clYellow;
  end;
end.
---
Eric
Bakstenen
Berichten: 907
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: MA intraday

Bericht door Bakstenen »

Dat is snel, bedankt weer.
klopt het dat ik de ADX niet ziet?, of moet ik die zelf toevoegen.
Ik heb de verandering met een andere naam opgeslagen, blijft dan de vorige versie onveranderd staan in WS?
Eric
Berichten: 3604
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: MA intraday

Bericht door Eric »

Je kan de ADX zelf toevoegen, in de indicator kan het alleen in dezelfde sectie en dat wordt onduidelijk omdat de ADX dan dezelfde schaal moet hanteren als de MA en de koers. Het kan wel op een andere manier - in deze versie is de gele lijn het verschil tussen koers en MA en de groene lijn de ADX.

Als je een indicator onder een andere naam bewaart dan verandert de vorige niet idd.

Code: Selecteer alles

{- Filename: Bakstenen MA system -}

type
  TState = (stNone, stLong, stShort);

var
  State: TState;
  nMA, nADX, nMinADX, nMAType, i, LastDay, TradeCount: integer;
  tOpen, tClose, BarTime: TDateTime;
  nSL, nTP, SL, TP: real;
  sMA, sMADiff, sADX: TSeries;
  xMA: TLineCrossings;
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);
  nADX := CreateParameterInteger('ADX periode', 1, 999, 14, true);
  nMinADX := CreateParameterInteger('ADX entry level', 0, 100, 25, true);
  nSL := CreateParameterReal('Stoploss (pt)', 0, 999, 20, true);
  nTP := CreateParameterReal('Take profit (pt)', 0, 999, 30, true);
  tOpen := CreateParameterTime('Entry vanaf', 9/24);
  tClose := CreateParameterTime('Exit na', 17.5/24);

{ Indicator eigenschappen }
  with Indicator do
  begin
    RequiredBars := 5*(nMA+nADX);
    NewBand := true;
    ScaleRange := srCommon;
    SignalView := svShow;
    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;
  sADX := ADX(High, Low, Close, nADX);
  sMADiff := SubtractSeries(Close, sMA);
  
{ Signalen }
  xMA := Crossings(Close, sMA);

  for i:=MaxInt(FirstValidIndex(sMA), FirstValidIndex(sADX)) to BarCount-1 do
  begin
    BarTime := frac(DateTime[i]);
    if (trunc(DateTime[i]) <> LastDay) or (BarTime < tOpen) then
    begin
      TradeCount := 0;
      LastDay := trunc(DateTime[i]);
      if BarTime < tOpen then BarTime := 2; // forceer exit indien open positie
    end;
    begin
      case State of
        stLong:
        begin
          if (nSL > 0) and (Low[i] < SL) then
          begin
            ExitLongStop(i, SL);
            State := stNone;
          end else
          if (nTP > 0) and (High[i] > TP) then
          begin
            ExitLongLimit(i, TP);
            State := stNone;
          end else
          if BarTime >= tClose then
          begin
            ExitLong(i);
            State := stNone;
          end;
        end;
        stShort:
        begin
          if (nSL > 0) and (High[i] > SL) then
          begin
            ExitShortStop(i, SL);
            State := stNone;
          end else
          if (nTP > 0) and (Low[i] < TP) then
          begin
            ExitShortLimit(i, TP);
            State := stNone;
          end else
          if BarTime >= tClose then
          begin
            ExitShort(i);
            State := stNone;
          end;
        end;
      end;
      if (TradeCount=0) and (BarTime >= tOpen) and (BarTime <= tClose) then
      begin
        TradeCount := TradeCount+1;

        if (sADX[i] > nMinADX) and (Close[i] > sMA[i]) then
        begin
          if EnterLong(i) then
          begin
            State := stLong;
            SL := Close[i] - nSL;
            TP := Close[i] + nTP;
          end;
        end else
        if (sADX[i] > nMinADX) and (Close[i] < sMA[i]) then
        begin
          if EnterShort(i) then
          begin
            State := stShort;
            SL := Close[i] + nSL;
            TP := Close[i] - nTP;
          end;
        end;
      end;
    end;
  end;

{ Weergave }
  with CreateLine(sMADiff) do
  begin
    Name := 'MA';
    Color := clYellow;
  end;
  with CreateLine(sADX) do
  begin
    Name := 'ADX';
    Color := clLime;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), 0)) do
  begin
    Name := '0';
    Color := clSilver;
  end;
end.
---
Eric
Bakstenen
Berichten: 907
Lid geworden op: zo jul 19, 2015 7:51 pm

Re: MA intraday

Bericht door Bakstenen »

Super, bedankt
Plaats reactie