Autor |
|
_Donald$
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 94
|
|
Nochmals: Beispiel 2 (sorry): | |
Dieser Indikator soll 2 CROSSOVERS des Basis- Indikators sichtbar zeigen, tut er aber nicht. Es scheint mir nur gelungen zu sein, eine Art von Glättung zu erreichen.
{"AMA} inputs: period(10), AvgLength1(10), AvgLength2(20); Vars: efratio(0), smooth(0),fastend(0.666),slowend(0.645),AMA(0),diff(0),signal(0),noise(0);
efratio=1; diff=@absvalue(close-close[1]); if currentbar > period then begin signal = @absvalue(close-close[period]); noise =@summation(diff,period); if noise <> 0 then efratio = signal/noise; end; if currentbar <= period then AMA = close; smooth = @power(efratio*(fastend-slowend)+slowend,2);
AMA = AMA[1] + smooth * (close-AMA[1]);
Plot1(AMA,"AMA"); Plot2(Average(AMA, AvgLength1), "Plot2"); Plot3(Average(AMA, AvgLength2), "Plot3");
Vielleicht nimmt sich dieser Frage auch je- mand freundlicherweise an.
Danke im voraus
|
|
31.05.2001, 21:10 |
|
_Jim Douglas
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 59
|
|
RE: Nochmals: Beispiel 2 (sorry): | |
hallo Donald,
Dein Indikator sieht sehr nach KAMA (Kaufman´s Adjustible Moving Average) aus, und scheint richtig kodiert zu sein. Das gesagt, mein KAMA sieht besser aus, und tut was der Indikator sollte, wahrend Dein AMA sieht fast wie ein 1 Bar MA aus. Code am Ende. KAMA sollte sich verlangsamen, wenn der Trend, gemessen an Signal/Noise, nachlässt. Oft es scheint den Markt nicht mehr zu folgen, und geht seitwärts. Daher ein normalles MA wenn der Markt läuft, und mann sollte gar nichts machen, oder irgendwas anderes machen, wenn der Indikator sich verlangsamt. Ist ein Crossover das Richtige für so etwas? Deine Plot2 und Plot3 sind geglättete AMAs, und produzieren Crossovers. Nicht sehr interesante, aber....... Was hattest Du sonst vor? Du könntest ein Crossover (Trendänderung) in einem System etwa so :
Inputs:length(2); value1 = AMA; if value1 < lowest(value1,length)[1] then begin.....
oder andersrum für ein Tief.
im INdikator: value2 = lowest(value1,length)[1]; value3 = highest(value1,length)[1];
nicht optimal, aber vielleicht kannst Du es benützen.
Übrigens, hast Du Vidya ausprobiert? Ahnliches Konzept, aber meine Meinung nach es funktioniert besser.
grüße,
Jim
Code:
der Funktion: {Kaufmanns Adaptive Moving AVerage} Inputs:period(numericsimple); Vars:efratio(0),smooth(1),fastend(0.666),slowend(0.0645),AMA(0),diff(0),signal(0),noise(0);
{ calculate efficiency ratio } efratio = 1; diff = absvalue(close - close[1]); if currentbar > period then begin signal = absvalue(close - close[period]); noise = summation(diff,period); if noise <> 0 then efratio = signal / noise; end;
if currentbar <= period then AMA = close; smooth = power(efratio*(fastend - slowend) + slowend,2); AMA = AMA[1] + smooth*(close - AMA[1]); KAMA = AMA;
Indikator: INputs:period(10);
if currentbar > period then begin plot1(KAMA(period),"KAMA"); end;
|
|
31.05.2001, 22:10 |
|
_Donald$
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 94
|
|
|
01.06.2001, 12:10 |
|
_Jim Douglas
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 59
|
|
RE: Beispiel 2 (sorry): --> @ JIM : Dank für Deine... | |
hallo Donald,
zum Indikator - ich bin der Meinung daß es nicht so sehr um der Indikator geht, sondern was mann damit tut. Was willst Du tun? Trendfollowing, RangeTrading, Patterns? Jede Strategie hat andere Methoden. Im Florek´s Buch gibt es eine handvoll interesante Indikatoren. Es kommt aber auf die Anwendung an. Ich habe noch nie ein Indikator gesehen, das in alle Marktlagen immer gute Signale gibt. Ein brauchbares Handelskonzept bezieht meistens Information aus mehrere Indikatoren oder Kalkulationen. Range trading, z.B., funktioniert nicht so gut in einem starken Trend, und trendfollowing Systeme meistens auch nicht bei rangetrading. Daher sollte vielleicht ein rangeTrading System irgendwas haben, um ein Trend zu erkennen. kurz, es ist nicht so einfach......
Ich bin nicht überzeugt daß KAMA ein geiegnete Crossover Kandidat ist. Trotzdem, Deine Methode hat ein weiteres Problem für mich. In deinem Beispiel mit KAMA hast Du mit Average geglättet. Warum mit Average? Besser wäre XAverage. Noch besser wäre mit T3, und am besten geht so etwas mit Jurik Moving Average (JMA). Ich möchte nicht alle die Argumente wiederrollen, aber sie sind auf der Jurik Website www.jurikres.com unter Products und JMA zu finden. In diesem Zusammenhang weise ich auf der Jurik Angebot hin. Sehe Omega User Group Website www.tradernet.de, oder Jo Haas bei Tradersworld 07138 / 9411033. Wenn Du kein JMA haben willst, denn glätte zumindestens mit XAverage, nicht mit Average.
viel Glück, und gebe nicht auf.
grüße,
Jim
|
|
01.06.2001, 21:10 |
|
_bigapple
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 15
|
|
|
02.06.2001, 08:10 |
|
_Jim Douglas
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 59
|
|
RE: Nochmals: Beispiel 2 (sorry): | |
welche Fehlermeldungen? Der Code verifiziert und funktioniert bei mir.
Code nochmal am Ende.
Der Code ist auch zu finden in: "Trading Systems and Methods" Third Edition, von Perry Kaufman.Wiley Trading Advantage Verlag. Seite 436-438 Das Buch ist zu empfehlen.
grüße,
Jim
Funktion:
{Kaufmanns Adaptive Moving AVerage} Inputs:period(numericsimple); Vars:efratio(0),smooth(1),fastend(0.666),slowend(0.0645),AMA(0),diff(0),signal(0),noise(0);
{ calculate efficiency ratio } efratio = 1; diff = absvalue(close - close[1]); if currentbar > period then begin signal = absvalue(close - close[period]); noise = summation(diff,period); if noise <> 0 then efratio = signal / noise; end;
if currentbar <= period then AMA = close; smooth = power(efratio*(fastend - slowend) + slowend,2); AMA = AMA[1] + smooth*(close - AMA[1]); KAMA = AMA;
Indikator: INputs:period(10);
if currentbar > period then begin Plot1(KAMA(period),"KAMA"); end;
|
|
02.06.2001, 09:10 |
|
_bigapple
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 15
|
|
|
03.06.2001, 13:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
|
03.06.2001, 14:10 |
|
_bigapple
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 15
|
|
|
03.06.2001, 18:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
Functions- und Indicator-Formular | |
Die von Dir angegebenen Zeilennummer kann ich nicht direkt nachvollziehen, da ich nicht überschauen kann, welche Eingabezeilen in Deinem Programm stehen, doch ich vermute, daß Du die Unterteilung des Programms nicht beachtet hast.
Hier handelt es sich nämlich um
die Funktione KAMA und den Indikator (z.B. Kaufman_AMA,
was die Erstellung
eines neuen Programms im "Function-Formular" und eines neuen Programms im "Indicator-Formular"
erforderlich macht, die zwischen den Trennstrichen angeordnet sind.
{"Function-Formular" für die Funktion mit dem Namen KAMA}
{Kaufmanns Adaptive Moving AVerage} Inputs:period(numericsimple); Vars:efratio(0),smooth(1),fastend(0.666),slowend(0.0645),AMA(0),diff(0),signal(0),noise(0);
{ calculate efficiency ratio } efratio = 1; diff = absvalue(close - close[1]); if currentbar > period then begin signal = absvalue(close - close[period]); noise = summation(diff,period); if noise <> 0 then efratio = signal / noise; end;
if currentbar <= period then AMA = close; smooth = power(efratio*(fastend - slowend) + slowend,2); AMA = AMA[1] + smooth*(close - AMA[1]); KAMA = AMA;
{"Indicator"-Formular für Indikator mit einem beliebigen, von dir zu wählenden Namen, z.B. Kaufman_AMA:}
INputs:period(10);
if currentbar > period then begin Plot1(KAMA(period),"KAMA"); end;
Der erste Abschnitt ist die Funktion, die Du, wenn sie ersteinmal mit Verify ohne Beanstandung akzeptiert wurde, in all Deinen zukünftigen Progammen mit dem Befehl:
KAMA(period)
aufrufen und verwenden kannst, wobei Du period zu definieren hast. Dieses Vorgehensweise findet im Beispiel des Indikator eine Umsetzung.
Aber auch in jeder Eingabe eines beliebigen Indikators, wo als INPUT-Variable eine Preisreihe abverlangt wird, kannst Du diese Zeile
KAMA(9)
schreiben, wobei allerdings dann keine Variable als Übergabeparameter gesetzt werden kann, sondern ein Ausdruck, der ein numerischen Wert darstellt bzw. liefert.
Gutes Vorankommen wünscht Uwe
|
|
03.06.2001, 19:10 |
|
_bigapple
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 15
|
|
|
04.06.2001, 07:10 |
|
|