Autor |
|
_Sebastian
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 21
|
|
Hallo,
bin auf der suche nach folgenden ELA Codes: Ich weis es sind eine Unmenge an Codes, aber vielleicht habt Ihr ja den einen oder anderen Code, Ihr würde mir sehr damit helfen.
Point of Balance Indikator Smoothed Rate of Chang True Strength Index Relative Stärke nach Levy TD- Range Expansion Index (Rei- Oszillator) Open- Close Indikator Volumen- Price- Trnd Demand Index Williams Variable Accumulation Distribution Vertical Horizontal Filter Advance/ Decline Noncumulative Bolton- Tremblay Indikator Breadth Trust Cumulative Volumen Index Elphick- Volume- Oszillator Haurlan Index STIX 25-Day Plurality Index Upside-Downside Ratio
Wer kann helfen?
Vielen Dank im voraus.
Sebastian
|
|
03.04.2001, 16:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
Hallo, Sebastian!
Das ist ja eine tolle List, in der es Indikatoren gibt, von denen ich bisher noch nie etwas gehört und gesehen habe, was überhaupt nicht zu sagen hat ;-).
Hast Du dieses "gesammelte Liste" aus einem ebenso "gesammelten Werk", so daß man sich einmal die Herleitung anschauen und eine Vorstellung des Aussehens entwickeln kann?
Gruß Uwe
|
|
04.04.2001, 19:10 |
|
_Sebastian
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 21
|
|
Hallo Uwe,
die Mehrzahl der Indikatoren ist aus "Das große Buch der Technischen Indikatoren" erschienen im Thomas Müller Börsenverlag.
mfg Sebastian
|
|
05.04.2001, 17:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
Nun, Sebastian, dann sind ja alle Formeln vorhanden und die Stärke von EL können sehr schön angesetzt werden. Als kleine Einführungsübung:
{Point of Balance Indikator} inputs: LenOBV(0); vars: PointOfBalnce(0); PointOfBalnce=PointOfBalnce[1]+sign(Close-Close[1])*Volume; plot1(PointOfBalnce,"OBV"); if LenOBV>0 then plot2(Average(PointOfBalnce,LenOBV),"avOBC");
{Smoothed Rate of Chang} inputs: LenEMA(7), LenROC(13); plot1(RateOfChange(XAverage(Close,LenEMA),LenROC),"S-ROC"); plot2(0,"");
Gruß Uwe
P.S. Bei weiteren Fragen, können die möglich Beantwortungen vielleicht auch für andere die vermeintlichen Geheimnisse in Anwendung und im Einsatz von EL, entzaubern helfen und so verstehe ich den Teil dieses Boards, der sich mit EL beschäftigt.
|
|
05.04.2001, 19:10 |
|
_Sebastian
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 21
|
|
Hallo Uwe,
vielen Dank erst einmal für Deine Hilfe. Ich habe mal den TRSI programmiert. Ist er so korrekt? Werde noch einige weitere versuchen zu programmieren. {********************************************Description: True Strength Index Provided By: L&H Consulting GbR (c) Copyright 2001 ********************************************} inputs: LenEMAK(3), LenEMAL(14), LenMom(1);
plot1((XAverage(XAverage(Momentum(Close, LenMom),LenEMAL), LenEMAL) / (XAverage(XAverage(AbsValue(Momentum(Close, LenMom)),LenEMAL), LenEMAL)))*100,"S-ROC"); plot2(0,"");
|
|
06.04.2001, 09:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
Hallo, Sebastian!
Eine kleine, vielleicht nicht notwendige Ergänzung und eine Korrektur eines Übertragungsfehlers:
- K für L bei der Periodenlönge zur Ermittlung des "äusseren" EMAs
- Nenner eingeführt und auszuschließen, daß eine Division durch Null abverlangt werden kann
inputs: LenEMAK(3), LenEMAL(14), LenMom(1);
vars: Nenner(0)
Nenner=(XAverage(XAverage(AbsValue(Momentum(Close, LenMom)),LenEMAL), LenEMAK)))
if Nenner<>0 then plot1((XAverage(XAverage(Momentum(Close, LenMom),LenEMAL), LenEMAcolor="blue">K) / Nenner)*100,"TRSI");
plot2(0,"");
Weiterhin viele Erfolg Uwe
|
|
06.04.2001, 09:10 |
|
_Sebastian
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 21
|
|
Danke Dir für die Fehlerbeseitigung.
Aber was meinst Du mit dem Ausdruck
LenEMALcolor="blue">K), er wird als "Word not recognized... " bezeichnet.
Gruß Sebastian
|
|
06.04.2001, 13:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
Da hab ich mich mit den HTML-Formatierungsbegrenzern selber ausgetrickst.
Es sollte lediglich das K farblich angelegt werden, um die Stelle zu markieren, wo K mit L vertauscht wurde.
Hier also nocheinmal:
inputs: LenEMAK(3), LenEMAL(14), LenMom(1); vars: Nenner(0)
Nenner=(XAverage(XAverage(AbsValue(Momentum(Close, LenMom)),LenEMAL), LenEMAK)))
if Nenner<>0 then plot1((XAverage(XAverage(Momentum(Close, LenMom),LenEMAL), LenEMAK) / Nenner)*100,"TRSI");
plot2(0,"");
Ich hoffe, daß Du zwischenzeiltlich selber auf diese Lösung gekommen bist.
Gruß Uwe
|
|
06.04.2001, 14:10 |
|
_Sebastian
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 21
|
|
Hier nun das entgültige verifizierte Ergebnis:
inputs: LenEMAK(3), LenEMAL(14), LenMom(1); vars: Nenner(0);
Nenner=(XAverage(XAverage(AbsValue(Momentum(Close, LenMom)),LenEMAL), LenEMAK));
if Nenner<>0 then plot1((XAverage(XAverage(Momentum(Close, LenMom),LenEMAL), LenEMAK) / Nenner)*100,"TRSI");
plot2(0,"");
Nochmal eine Frage zum POB:
lt der zugrundeliegenden Beschreibung des POB müßte der Indikator sich um die 0 Linie bewegen. Die Berechnung erfolgt aus dem Verhältnis zwischen höchstem und tiefstem Höchstkurs einer Periode. Bzw aus höchstem und tiefstem Tiefstkurseiner Periode. Damit soll die Angst der Bullen bzw. die Angst der Bären quantifiziert werden, laut Walter T. Downs.
und hier mal der erste Versuch vom Williams Variable Accumulation Distribution:
VARS: IV(0);
I = (((C[1]-O[1]) / (H[1]-L[1]))*V[1]); if I<>0 then plot1((((C-O) / (H-L))*V) + I,"WVAD"); plot2(0,"");
Die zugrunde liegende Formel lt: WVAD=(((C-O) /(H-L))*V) + I
wobei I= WVAD- WERT Vortag
vermutlich hab ich noch einen Fehler drin.
thx
Sebastian
|
|
06.04.2001, 15:10 |
|
_Sebastian
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 21
|
|
Hier mal die vorläufige Fkt zum POB{******************************************************************* Description: FearPobcOsc Provided By: L&H Consulting GbR (c) Copyright 1999 ********************************************************************}
Inputs: Price(Numericseries), Len(NumericSimple), Level(NumericSimple); Vars: AvgAvgs(0), HiPrice(0), LoPrice(0), AvgVal(0); Array: MPAvg[10](0);
AvgAvgs=0; MPAvg[1] = MidPoint(Price, Len); MPAvg[2] = MidPoint(MPAvg[1], Len); MPAvg[3] = MidPoint(MPAvg[2], Len); MPAvg[4] = MidPoint(MPAvg[3], Len); MPAvg[5] = MidPoint(MPAvg[4], Len); MPAvg[6] = MidPoint(MPAvg[5], Len); MPAvg[7] = MidPoint(MPAvg[6], Len); MPAvg[8] = MidPoint(MPAvg[7], Len); MPAvg[9] = MidPoint(MPAvg[8], Len); MPAvg[10] = MidPoint(MPAvg[9], Len);
HiPrice = Highest(Price, Level); LoPrice = Lowest(Price, Level);
For value1 = 1 to Level begin AvgAvgs = AvgAvgs + MPavg[value1]; END;
AvgVal = AvgAvgs / Level;
IF HiPrice - LoPrice <> 0 Then FearPobcOsc = 100 * ((Price - AvgVal) / (HiPrice - LoPrice));
Und der POB selbst:
{******************************************************************* Description: Ponit of Balance Oszillator Provided By: L&H Consulting GbR (c) Copyright 1999 ********************************************************************}
Inputs: Price(Close), Len(12), Level(10); Vars: PosNeg(0);
IF CurrentBar > Len * Level then Begin PosNeg = FearPobcOsc(Price,Len,Level); IF PosNeg = 0 Then Plot1(PosNeg,"FearOsc") Else Plot2(PosNeg,"FearOsc"); End; Plot3(0,"");
mfg Sebastian
|
|
06.04.2001, 16:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
VARS: IV(0);
IV = (( (C[1]-O[1]) / (H[1]-L[1]) ) *V[1] );
if IV<>0 then
plot1( ( ( (C-O) / (H-L) )*V ) + IV,"WVAD"); plot2(0,"");
Im wesentlichen sollten diese Programmzeilen funktionieren einzig die erweiterung auf IV ist notwendig, da mit I als einzelbuchtabe ein reservierter Bezeichner verwendet wird, der den Wert des Open-Interest ausdrückt; die Kurzschreibweise ist eben das I (Klein-/Großschreibung egal). Wenn Du also tatsächlich nur I als Variablennamen verwendet hast, so wird, wenn das OI nicht vorliegt, also Null ist, das Ergebnis nicht entsprechend Deinen Erwartungen ausfallen (eigentlich sollte der Editor bei der Zuweisung I = ... schon "meckern).
Eine wesentliche Vereinfachung ergibt sich, wenn man berücksichtigt, daß mit jedem Bar einmal das gesamte Programmstück (und alle Unterfuntionen, soweit sie nicht logisch ausgegrenzt werden, abgearbeitet werden. Die letzten Ergebnisse dieses Rechnengangs, die in Variablen geschrieben wurden, stehen als Zeitreihe zur Verfügung. Also kann ich bei der aktuellen Berechnung auf die Variriablenwerte aus den vorherigen Rechengängen zurückgreifen. Dabei ist die Ansprache wie bei den geläufigen Zeitreihenwerte des Symbols:
Mit IV[xBarsAgo] wird also der Wert aufgerucfen, der vor xBarsAgo dieser Variablen zugewiesen wurde.
Diese Kenntnis nutzend, lassen sich folgende Programmzeilen, ausgehend von Deinen Ansätzen, schreiben:
VARS: IV(0); if (H - L) >0 then IV = V * (C-O) / (H-L); plot1(IV+IV[1],"WVAD"); plot2(0,"");
Wieder wird H=L überprüft, da in diesem Fall die Differenz Null ist und eben dann nicht dividiert werden soll.
Eine andere Nöglichkeit wäre, den heutigen IV-Wert als Summenkurve aufzubauen, indem der Anteil jedes Bars zu dem vorherigen addiert wird (Reihenbildung):
VARS: IV(0); if (H - L) >0 then IV = V * (C-O) / (H-L) + IV[1]; if IV[1]<>0 then plot1( IV,"WVAD"); plot2(0,"");
Deinen Erwartungen dürfte jedoch eher die erste Form entsprechen.
Gruß Uwe
|
|
06.04.2001, 16:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
|
06.04.2001, 16:10 |
|
|