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)
|-- Nochmals: Beispiel 2 (sorry): (http://www.tradernet.org/wbb/threadid.php?boardid=15&threadid=513)


Geschrieben von _Donald$ am 31.05.2001, 21:10:

  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


Geschrieben von _Jim Douglas am 31.05.2001, 22:10:

  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;


Geschrieben von _Donald$ am 01.06.2001, 12:10:

  Beispiel 2 (sorry): --> @ JIM : Dank für Deine...

Mühe.
Werde versuchen, das zu sortieren + zu ver-
gleichen.
Bin selbst gespannt.

Dona$d

PS.: Suche für 1 Minute intraday noch einen
Indikator für EUREX-Futures.
Hast Du (oder ein anderer Mitleser) evtl. etwas wirklich Brauchbares auf Lager - wenn die Frage erlaubt ist????


Geschrieben von _Jim Douglas am 01.06.2001, 21:10:

  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


Geschrieben von _bigapple am 02.06.2001, 08:10:

  RE: Nochmals: Beispiel 2 (sorry):

bekomme bei dem kamacode leider einige fehlermeldungen bei verify


Geschrieben von _Jim Douglas am 02.06.2001, 09:10:

  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;


Geschrieben von _bigapple am 03.06.2001, 13:10:

  RE: Nochmals: Beispiel 2 (sorry):

irgendwie seltsam. habe mehere meldungen: not recognized
1. numericsimple
2. period
2. kama


Geschrieben von _Uwe am 03.06.2001, 14:10:

  Function und Indikator sind auf unterschiedlichen Formularen zu erstel

Vermutlich liegt hier der Fehler begründet, denn bei mir klappte eben die Übernahme ohne Beanstandung.

Hast Du die Hinweise von Jim Douglas beachtet, wo es darum geht, das KAMA eine Function ist und diese auch als solche beim Anlegen auszuwählen ist ("Blatt" Function im auswahlfenster anwählen!)?

Als Formular für den Indikator wählst Du das "Blatt" Indikator.

Gruß
Uwe


Geschrieben von _bigapple am 03.06.2001, 18:10:

  RE: Function und Indikator sind auf unterschiedlichen Formularen zu er

Hallo nochmal,
sorry wenn ich mich so dumm dranstelle: also habe jetzt function gewählt. beim verify kommt:
1. zeile 20 Indikator:word not recognized Error #61
2. zeile 21 INputs: period(10)..... already been defined Error # 151

danke für die hilfe


Geschrieben von _Uwe am 03.06.2001, 19:10:

  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


  • Geschrieben von _bigapple am 04.06.2001, 07:10:

      RE: Functions- und Indicator-Formular

    Hallo Uwe,
    habs geschafft. danke für deine hilfe

    Powered by: Burning Board 1.1.1 © 2001 by WoltLab