Hele simpele indicator Maar ik krijg het niet voor elkaar.

Vragen en suggesties over handelssystemen en indicatoren

Moderator: Perry

Hele simpele indicator Maar ik krijg het niet voor elkaar.

Berichtdoor mvs » wo 13 jun 2007, 21:25

Hallo

Ik wil eens wat meer kijken naar een tijdspatroon in de grafieken. Kijken of ik wat kan ontdekken.

Daarvoor wil ik een indicatortje maken om de aantal bars te tellen.

Dus gewoon heel simpel.

De eerste bar is bar 1, de tweede nr 2 enz.

Gewoon in een histogram. Als je dan het getal bij een dip (of top) neemt, min het getal van een eerdere dip (of top) weet je precies hoeveel bars er tussen hebben gezeten.


Ik heb al wat zitten proberen met :

Value Function Tijd

Begin

Value xtijd, Plottijd, xplottijd;


If Close >= Close[1] then xTijd=1;
If Close < Close [1] then xTijd=1;

PlotTijd= xtijd[1] + xtijd;
plottijd= plottijd+xtijd;
Plot1(plotTijd,"Tijd");

end;

Maar dan komt er een constante waarde van 3 uit.

Het moet dus gewoon per bar 1 optellen.

Kan iemand mij helpen.

alvast bedankt.

Martin
mvs
 
Berichten: 64
Geregistreerd op: zo 08 jun 2003, 14:05
Woonplaats: Bergambacht z-h

Berichtdoor Pierre » do 14 jun 2007, 8:41

Hallo Martin,

Ik zal eerst even uitleggen waarom je altijd de waarde 3 krijgt...

Code: Selecteer alles
If Close >= Close[1] then xTijd=1;
If Close < Close [1] then xTijd=1;
PlotTijd= xtijd[1] + xtijd;
plottijd= plottijd+xtijd;
Plot1(plotTijd,"Tijd");


De eerste 2 regels kun je gewoon vervangen door 1 simpele regel:
Code: Selecteer alles
xTijd=1;
want eerst test je of de Close groter of gelijk is aan de Close van de vorige bar, en vervolgens test je of de Close kleiner is dan de vorige bar, en in beide gevallen maak je xTijd gelijk aan de waarde 1. Aangezien de Close nu eenmaal groter, gelijk of kleiner is (meer smaken zijn er niet) wordt xTijd dus altijd op 1 gezet. Dan is het eenvoudiger om gewoon te zeggen xTijd=1;

Omdat xTijd altijd op 1 staat, kun je de volgende twee regels ook eenvoudiger schrijven:
Code: Selecteer alles
PlotTijd= 1 + 1;
plottijd= plottijd+1;

en nu zie je dat plottijd altijd gelijk aan 3 wordt, want je telt in totaal 3x xTijd bij elkaar op.

Het raadsel van de waarde 3 is daarmee denk ik verklaard.

Nu nog even een alternatieve code die wel werkt...
Code: Selecteer alles
value xRichting=0,xOmslag=0;
if Close>Close[1] and xRichting<>1 then begin
  xRichting = 1;
  xOmslag = CurrentBar;
  end
else if Close<Close[1] and xRichting<>-1 then begin
  xRichting = -1;
  xOmslag = CurrentBar;
  end;
Plot1(CurrentBar-xOmslag+1,"Tijd");


Wat ik in deze opzet doe is het volgende...
In de variabele xRichting hou ik bij of we dalende of stijgende bars zijn aan het tellen. xRichting heeft de waarde +1 bij stijgende bars en -1 bij dalende bars.
In plaats van de bars te tellen, onthoud ik gewoon het barnummer waar de omslag plaats gevonden heeft. Dat barnummer kun je opvragen via de functie CurrentBar, en deze telt vanaf 1 voor de eerste bar in de grafiek.
Als er een bar met een hogere Close komt en de richting was niet omhoog, dan verander ik de richting naar Omhoog (+1) en onthoud ik het huidige barnummer in xOmslag. Hetzelfde doe ik als er een bar met een lagere close komt in een opgaande reeks.
Om nu de histogrammetjes te tekenen hoef ik alleen maar te weten hoeveel bars geleden de omslag heeft plaatsgevonden. Ik plot dus de waarde CurrentBar-xOmslag+1. Stel dat ik bezig ben met de 72ste bar in de grafiek, en er was een omslag in bar 69, dan krijg ik dus een staafje van de lengte 4 (72-69+1).

Ik hoop dat je hier wat aan hebt.

vr. groeten,
Pierre Dolmans
Vestics Helpdesk
Pierre
 
Berichten: 412
Geregistreerd op: di 02 okt 2001, 9:46
Woonplaats: Leerdam


Keer terug naar Handelssystemen + Indicatoren

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 4 gasten