Autor |
|
_Sebastian
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 21
|
|
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
|
|
05.09.2001, 16:10 |
|
_floating point
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 2
|
|
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");
|
|
06.09.2001, 13:10 |
|
_Sebastian
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 21
|
|
|
06.09.2001, 13:10 |
|
_floating point
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 2
|
|
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.
|
|
06.09.2001, 14:10 |
|
_Dr. Watson
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 2
|
|
|
09.09.2001, 10:10 |
|
|