Tradestation User Group Germany (http://www.tradernet.org/wbb/index.php)
|- Posts aus dem alten Userforum (http://www.tradernet.org/wbb/board.php?boardid=15)
|-- Elphick-Volume-Oscillator (http://www.tradernet.org/wbb/threadid.php?boardid=15&threadid=323)


Geschrieben von _Sebastian am 05.09.2001, 16:10:

  Elphick-Volume-Oscillator

Hallo,

bei der Programmierung des Elphick-Volume-Oscillator tritt folgendes Problem auf:

Nach einlegen des Indikators in den Chart kommt folgende Meldung:
"Floating point numerical overload"
Welchen Fehler könnte ich bei der Programmierung gemacht haben?

Hier die Function:Inputs: AdvVolume(Numericseries), DecVolume(Numericseries), AllVolume(Numericseries), LengthNumericsimple), LengthY(Numericsimple), LengthZ(Numericsimple);
Vars: NIS(0), NDS(0);

NIS = ((AdvVolume - DecVolume) / AllVolume) + EVO[1];
NDS = (XAverage(NIS, LengthX) - XAverage(NIS, LengthY)) * 100;
EVO = Average(NDS, LengthZ);


Und hier der Indicator:

Inputs: AdvVolume(Close of Data1), DecVolume(Close of Data2), AllVolume(Close of Data3), Length3), LengthY(10), LengthZ(24);

Plot1(EVO(AdvVolume, DecVolume, AllVolume, LengthX, LengthY, LengthZ), "ElphVolOsc");


Gruß Sebastian


Geschrieben von _floating point am 06.09.2001, 13:10:

  100 hoch anzahl der Schritte führt zu floating point numerical overloa

Kenne den korrekten Aufbau der Formel nicht, doch wird der von dir beschriebene Fehler durch einen Rechenoperationen ausgelöst, die zu einer zu großen Fließkommazahl führt.

Die Ursache liegt vermutlich in dem Multiplikationsfaktor 100 an der falschen Stelle.

Während NIS ein wert zwischen 0 und 1 ist, ist EVO[1] bereits ein Prozentwert (0...100) aus dem vorherigen Rechenschritt. Somit wird im zweiten Schritt NIS zwischen 0...100 liegen (also etwa EVO[1] sein). NDS wird mal 100 genommen und liegt bereits zwishcen 0...10000, was nun auch für EVO gilt. Im nöchsten Schritt folgt wieder eine Multiplikation mit 100 ....

Hier die etwas andere Lösung:
Function:
Inputs: AdvVolume(Numericseries), DecVolume(Numericseries), AllVolume(Numericseries), LengthNumericsimple), LengthY(Numericsimple), LengthZ(Numericsimple);
Vars: NIS(0), NDS(0);

NIS = ((AdvVolume - DecVolume) / AllVolume) + EVO[1];
NDS = (XAverage(NIS, LengthX) - XAverage(NIS, LengthY));
EVO = Average(NDS, LengthZ);


Und hier der Indicator:

Inputs: AdvVolume(Close of Data1), DecVolume(Close of Data2), AllVolume(Close of Data3), Length3), LengthY(10), LengthZ(24);

Plot1(100*EVO(AdvVolume, DecVolume, AllVolume, LengthX, LengthY, LengthZ), "ElphVolOsc");


Geschrieben von _Sebastian am 06.09.2001, 13:10:

  RE: 100 hoch anzahl der Schritte führt zu floating point numerical ove

Hallo,

so funktioniert es. Super. Danke Dir.

mfg

Sebastian


Geschrieben von _floating point am 06.09.2001, 14:10:

  RE: 100 hoch anzahl der Schritte führt zu floating point numerical ove

Sorry, Bereichsgrenzen liegen nicht zwischen 0 und 1 bzw. 0 und 100, sondern zwischen -100^i und +100^i für [i=0...Anzahl der Schritte] in deiner Programmierung.

Wenn die Funktion den Prozentwert liefern soll, so kann natürlich auch dies funktionieren:

Inputs: AdvVolume(Numericseries), DecVolume(Numericseries), AllVolume(Numericseries), LengthNumericsimple), LengthY(Numericsimple), LengthZ(Numericsimple);
Vars: NIS(0), NDS(0);

NIS = ((AdvVolume - DecVolume) / AllVolume) + EVO[1]/100;
NDS = (XAverage(NIS, LengthX) - XAverage(NIS, LengthY)) * 100;
EVO = Average(NDS, LengthZ);


Aus dem Indikator ist dann der Faktor 100 zu entfernen.


Geschrieben von _Dr. Watson am 09.09.2001, 10:10:

  Ich wette 1:10 floating point = Uwe!!! o.w.T.

*

Powered by: Burning Board 1.1.1 © 2001 by WoltLab