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)
|-- VIDYA (http://www.tradernet.org/wbb/threadid.php?boardid=15&threadid=216)


Geschrieben von _GRUNDI am 02.11.2001, 13:10:

  VIDYA

Hallo,

ich bin in Sachen Tradestation noch ein ziemlicher Newcomer.

Ich habe heute einen zusätzlichen Indicator in meine Tradestation einprogrammiert, den Variable Index Dynamic Average(VIDYA).
Syntax entnommen aus dem Buch von E.Florek"Neue Tradingdimensionen".
Ich möchte nur ein (zugegeben recht simples)Signal schreiben, bei dem ein Kaufsignal ausgelöst wird, wenn der Schlusskurs über dem VIDYA liegt.
Mit einem einfachen Moving Average sieht das ja wie folgt aus.

Inputs: MA(9);
Condition1= c> Average(c,MA);

If Condition 1 then buy this bar on close;


Nun meine Frage:

wie könnte die Syntax für den VIDYA aussehen?

Finde dazu leider nichts im EasyLanguageHandbuch.
Wäre nett wenn mir jemand hier einen Tip geben könnte.

Vielen Dank

Grundi


Geschrieben von _Uwe am 02.11.2001, 18:10:

  RE: VIDYA

Hallo Grundi!

Mag das Signal auch simpel sein, so muß Du dennoch gleich tief in die Programmierstruktur von EL einsteigen, wenn Du eigene/neue Indikatoren allgemein verwenden willst.

Prinzipiell ist es zum Verständnis wichtig, zu erkenne, daß es

  • Indikatoren (Indicator, ShowMe, Paint-Bars) gibt, deren Darstellung im Chart über die plot-Anweisung sichtbar werden,
  • Signale, die in Systemen zusammen gebunden werden und deren Auswirkungen als Handelsaktionen umgesetzt werden und
  • Functionen, bei denen nur intern ein Wert bestimmt wird, der bei den hier vorher beschriebenen Tpen von Element und auch wieder bei anderen Function verwendet werden kann.

    Wenn Du Dich also auf "Entdeckungsreisen" begibst, wirst Du u.a. Programmteile finden, die unter der Rubrik Functionen abgelegte sind. Dort wirst Du dann auch viele bekannte Namen finden, wie z.B. Average, Xaverage und viele mehr.

    Wenn Du Funktionsprogrammteil öffnest, wirst Du weiter entdecken, daß die üblichen plot-Anweisungen und auch Handelsanweisungen (buy/sell/EXIT...) nicht auftauchen. Sie haben dort nichts zu suchen.

    Aber auch die INPUT-Zeile weist eine Eigenart auf, die nur für Function-Programme zutreffen: Vorgabewerte für Inputvariablen gibt es nicht, sondern es sind, soweit Input-Variablen vorgesehen sind, Vorgabedatentypen anzugeben.

    Ferner ist in der Regel im Programmteil eine Anweisungszeile vorhanden, in der der Function-Name eine Zuweisung erhält, also z.B.

    FUNC_TEST = AUSGABE;

    Diese Zeile bewirkt in der "Function" mit dem Namen FUNC_TEST, der hier beispielhaft gewählt wurde, das der Rückgabewert den ermittelten Wert, der in AUSGABE gespeichert ist, erhält. Dieser Rückgabewert steht dem die Funkition FUNC_TEST aufrufenden Programm damit zur Verfügung.

    Beispiel:


    {Indikator/Signal-Programm
    INPUT: Len(5), ....;
    VARS: Testwert(0), .....;
    ....
    Testwert = 5 + FUNC_TEST(Len);
    .....
    {
    aber auch die direkte Nutzung ist möglich:
    IF FUNC_TEST(Len) then....
    oder
    Plot1(FUNC_TEST(Len),-...);
    }

    .....
    IF Testwert > 5 then buy
    ELSE if Testwert < 5 then sell....
    ......
    {***ENDE des Indikator-/Signal-Programmes****}




    Der nachfolgende Programmteil ist als Function zu schreiben!!!

    {Function FUNC_TEST}
    INPUT: FuncLen(Numeric), ....;
    VARS: Temp(0), counter(0), .....;
    ....
    Temp = average(close, FuncLen)/close-1;
    .....
    FUNC_TEST = temp;
    ......
    {***ENDE des Function-Programms****}




    Nun könnte vielleicht alles zum eigenen Versuch klar sein, den Du ja auf der Grundlage eines mit einem EL-Code bekannten Indikators durchführen möchtest.

  • Deine Funktion erhält den z.B. den Namen funcVIDYA
  • Die Zahlenangaben in einer Inputanweisungen werden durch Datentypen ersetzt
  • plot-/Trade-Anweisungen werden eliminiert
  • es ist die "Rückgabezeile" funcVIDYA = .... einzubauen

    In Deinem Signalprogramm verwendest Du dann erstmals die neue Funktion funcVIDYA wie folgt:


    INPUT: ...Len1(13), Smooth(13),..., refBar(3);
    VARS: VIDYA(0);

    VIDYA = funcVIDYA(len1, Smooth);

    If VIDYA crossed over Close then buy;
    If VIDYA < VIDYA[refBar] and marketposition >0 then EXITLONG;



    Alle Angaben ungeprüft und ohne Gewähr auf Richtigkeit


    Viel Erfolg
    Uwe


  • Geschrieben von _GRUNDI am 05.11.2001, 08:10:

      RE: VIDYA

    hallo uwe,

    erst mal vielen dank für die hilfe. werde mich mal durch Ihr sehr umfangreiches Info-Material durcharbeiten.


    Vielen Dank.

    Powered by: Burning Board 1.1.1 © 2001 by WoltLab