Pagina 1 van 1

CMO werkt niet meer?

BerichtGeplaatst: di 01 feb 2005, 10:09
door Jo
Hoi,

Vandaag stel ik vast dat de funktie CMO niet meer werkt! Waarom???


----------------Funktie CMO--------------

value function CMO(value xSeries[]=Close, value xNumberOfBars=10, ?value xInclZeros=true) begin
{--- Declare the local variables ---}
?value xSumUp,xSumDown;
{--- Initialize the variables ---}
?xSumUp:=0;
?xSumDown:=0;
{--- Calculate the value based on this parameter InclZeros ---}
?if xInclZeros=true then ?begin
? ?xSumUp := Summation((xSeries-xSeries[1])>>0, xNumberOfBars);
? ?xSumDown := -(Summation((xSeries-xSeries[1])<<0, xNumberOfBars)); ? ?
?end
?else begin
{--- Declare the variables, only needed for current scope ---}
? ?value xCounterUp,xCounterDown,xI;
{--- Initialize the variables ---}
? ?xI := 0;
? ?xCounterUp := 0;
? ?xCounterDown := 0;
{--- Loop to calculate the quantities - BarsUp and BarsDown ---}
? ?while (xCounterUp+xCounterDown < xNumberOfBars) do
? ?begin
? ? ?if (xSeries[xI] > xSeries[xI+1]) then
? ? ?begin
? ? ? ?xSumUp:=xSumUp + (xSeries[xI] - xSeries[xI+1]);
? ? ? ?xCounterUp := xCounterUp + 1;
? ? ?end
? ? ?else if (xSeries[xI] < xSeries[xI+1]) then
? ? ?begin
{--- Momentum is subtracted since it is negative and we want a positive sum ---}
? ? ? ?xSumDown := xSumDown - (xSeries[xI] - xSeries[xI+1]);
? ? ? ?xCounterDown := xCounterDown + 1;
? ? ?end;
? ? ?xI := xI + 1;
? ?end;

{--- Now both sums are calculated. ?Assign CMO to return ---}
?CMO := 100 *((xSumUp - xSumDown) / (xSumUp + xSumDown));

-----------Indicator----------

value function zCMO(value xSeries[]=Close, value xNumberOfBars=10,value xInclZeros=true)
begin
plot1(CMO( xSeries,xNumberOfBars,xInclZeros),'CMO');
end;

Kan iemand helpen??,

Jo

CMO werkt niet meer?

BerichtGeplaatst: di 01 feb 2005, 21:46
door Paul M
Hallo Jo,

Ik heb de functie aangepast.

Functie:

value function zzCMO(value xSeries[]=Close, value xNumberOfBars=10, ?value xInclZeros=true) begin
{--- Declare the local variables ---}
value xSumUp,xSumDown;
{--- Initialize the variables ---}
xSumUp:=0;
xSumDown:=0;
{--- Calculate the value based on this parameter InclZeros ---}
if xInclZeros=true then ?begin
? xSumUp := Summation((xSeries-xSeries[1])>>0, xNumberOfBars);
? xSumDown := -(Summation((xSeries-xSeries[1])<<0, xNumberOfBars)); ? ?
end
else begin
{--- Declare the variables, only needed for current scope ---}
? value xCounterUp,xCounterDown,xI;
{--- Initialize the variables ---}
? xI := 0;
? xCounterUp := 0;
? xCounterDown := 0;
{--- Loop to calculate the quantities - BarsUp and BarsDown ---}
? while (xCounterUp+xCounterDown < xNumberOfBars) do
? begin
? ? if (xSeries[xI] > xSeries[xI+1]) then
? ? begin
? ? ? xSumUp:=xSumUp + (xSeries[xI] - xSeries[xI+1]);
? ? ? xCounterUp := xCounterUp + 1;
? ? end
? ? else if (xSeries[xI] < xSeries[xI+1]) then
? ? begin
{--- Momentum is subtracted since it is negative and we want a positive sum ---}
? ? ? xSumDown := xSumDown - (xSeries[xI] - xSeries[xI+1]);
? ? ? xCounterDown := xCounterDown + 1;
? ? end;
? ? xI := xI + 1;
? end;
? ?end;
{--- Now both sums are calculated. ?Assign CMO to return ---}
zzCMO := 100 *((xSumUp - xSumDown) / (xSumUp + xSumDown));
end;

Paul

CMO werkt niet meer?

BerichtGeplaatst: wo 02 feb 2005, 16:47
door Jo
Paul,

Bedankt voor de reaktie, maar helaas werkt deze zCMO nog steeds niet. Nog steeds de nul-waarde.

Ik stel me ook de vraag wat doet die teller " xCounterUp := xCounterUp + 1; ?& ?xCounterDown := xCounterDown + 1; ?"
in deze code ,daar er toch nergens gebruik wordt van gemaakt?

Jo

CMO werkt niet meer?

BerichtGeplaatst: wo 02 feb 2005, 23:13
door Paul M
Hallo Jo,

Ik weet niet wat er bij jou fout gaat maar bij mij functioneert de zzCMO functie,
De counterup en counterdown zijn tellers, ze tellen het aantal keren dat "xSeries[xI] > xSeries[xI+1]) ", bv close groter ?dan ?close[1] dan wordt de variabele countup vermeerdert met de waarde 1. Deze waarden worden gebruikt in de ?WHILE instructie:
"while (xCounterUp+xCounterDown < xNumberOfBars) do begin".

Paul

ps. Heb je de indicator tekst aangepast,plot1(CMO( xSeries,xNumberOfBars,xInclZeros),'CMO'); ?moet worden plot1(zzCMO( xSeries,xNumberOfBars,xInclZeros),'CMO');

(Edited by Paul M at 8:34 am op 3,feb. 2005)

CMO werkt niet meer?

BerichtGeplaatst: do 03 feb 2005, 10:16
door Jo
Paul,

Jammer genoeg bij mij werkt deze code niet,nog steeds de waarde Nul als resultaat! ? ?Reden ??

Als ik volgende code verwijder :

" ? value xInclZeros=true "

"" {--- Calculate the value based on this parameter InclZeros ---}
if xInclZeros=true then ?begin
?xSumUp := Summation((xSeries-xSeries[1])>>0, xNumberOfBars);
?xSumDown := -(Summation((xSeries-xSeries[1])<<0, xNumberOfBars)); ? ?
end
else begin ?"""


Krijg ik nu wel waarden analoog met volgende berekening
CMO =100*((Close-Close[xBars]) /(Summation(AbsValue(Close-Close[1]),xBars)));

Nu is mijn bedenking, geef deze code nogwel dezelfde waarden als voor voorgaande code (zonder deze verwijderingen)?



value function zfCMO (value xSeries[]=Close,value xNumberOfBars=10)begin
value xCounterUp,xCounterDown,xI,xSumUp,xSumDown;
xSumUp:=0; xSumDown:=0; xCounterUp := 0; xCounterDown := 0;
xI :=0;
while (xCounterUp + xCounterDown < xNumberOfBars do
begin
? if (xSeries[xI] > xSeries[xI+1]) then begin
? ?xSumUp:=xSumUp + (xSeries[xI] - xSeries[xI+1]);
? ?xCounterUp := xCounterUp + 1;
? end
? else if (xSeries[xI] < xSeries[xI+1]) thenbegin
? ?xSumDown := xSumDown - (xSeries[xI] - xSeries[xI+1]);
? ?xCounterDown := xCounterDown + 1;
? end;
? xI := xI + 1;
end;
CMO := 100 *((xSumUp - xSumDown) / (xSumUp + xSumDown));
end;

Dank voor de uitleg van de teller.

Jo

CMO werkt niet meer?

BerichtGeplaatst: do 03 feb 2005, 12:11
door Paul M
Jo,

Hetzelfde probleem had ik toen ik de originele code,zoals door jou gepost, gebruikte. Door de aanpassing was dit verholpen. Heb je de indicator aangepast? Plot1(CMO veranderen in Plot1(zzCMO, doe je dit niet dan roept hij nog steeds de functie CMO aan en blijft het probleem bestaan.

Paul

CMO werkt niet meer?

BerichtGeplaatst: do 03 feb 2005, 12:15
door Jo
Paul,

Jawel, ik heb alles verandert.

Jo

CMO werkt niet meer?

BerichtGeplaatst: do 03 feb 2005, 12:59
door Paul M
Jo,

Heel vreemd, zoals ik al eerder schreef bij mij functioneert het. Om jouw vraag te beantwoorden, de code is tweeledig. Je kunt ervoor kiezen, middels xInclzeros, om ook in het gemiddelde de 0 waarden mee te tellen. Als de close <close[1] dan wordt bij de variabele xSumup voor die bar de waarde 0 opgetelt. Het mag dus duidelijk zijn dat dit een andere uitkomst geeft dan wanneer ?alleen waarden optelt worden waarbij de close alleen maar groter is dan ?de close[1].

Paul

(Edited by Paul M at 1:00 pm op 3,feb. 2005)

CMO werkt niet meer?

BerichtGeplaatst: do 03 feb 2005, 13:01
door Paul M
Jo,

Heel vreemd, zoals ik al eerder schreef bij mij functioneert het. Om jouw vraag te beantwoorden, de code is tweeledig. Je kunt ervoor kiezen, middels xInclzeros, om ook in het gemiddelde de 0 waarden mee te tellen. Als de close <close[1] dan wordt bij de variabele xSumup voor die bar de waarde 0 opgetelt. Het mag dus duidelijk zijn dat dit een andere uitkomst geeft dan wanneer ?alleen waarden optelt worden waarbij de close alleen maar groter is dan ?de close[1].

Paul

(Edited by Paul M at 1:00 pm op 3,feb. 2005)

CMO werkt niet meer?

BerichtGeplaatst: do 03 feb 2005, 13:03
door Paul M
Jo, De tekst wordt bij mij niet volledig weergegeven,
via edit kun je het volledige antwoord lezen.
Paul

CMO werkt niet meer?

BerichtGeplaatst: zo 13 feb 2005, 19:28
door Jo
Hoi Paul,

Na lang zoeken krijg ik plots resultaat, als ik de code aanpas met het volgende:

if (xInclZeros) ?then ?begin ?
.....

in plaats van

if xInclZeros=true then ?begin
....

Reden hiervoor ..... ??

Jo
?

CMO werkt niet meer?

BerichtGeplaatst: ma 14 feb 2005, 11:47
door Paul M
Hoi Jo,

Geen idee???????
Het is beide hetzelfde, of ik nu schrijf "if xInclZeros ?then ?begin " of "if xInclZeros=true then ?begin". In beide gevallen zeg je "als xInclZeros=waar dan doe het volgende".

Paul ?