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