Quellcode für Fibo-Ausdehnung (Extension)

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #57301 quote
    sergoj
    Participant
    New

    Hallo zusammen,

    ich habe in den Forum und bei Indikatoren Quellcode für Fibo-Ausdehnnung gesucht und nicht gefunden.

    ich möchte versuchen auf Basis von Fibo-Ausdehnung Quellcode einen Indikator zu schreiben.

    Hat jemand den Quellcode von Fibo-Ausdenung oder kann mir jemand helfen?

    Ich bedanke mich im Voraus.

    Gruß.

    Serge

    #57307 quote
    AVT
    Participant
    Senior

    Hier ist alles ganz gut erklärt, damit solltest Du es hinbekommen:

    http://vtadwiki.vtad.de/index.php/Fibonacci

    #57310 quote
    sergoj
    Participant
    New

    Hallo AVT!

    danke für schnelle Antwort. Fibo-Extensioncode habe ich gebraucht damit ich mal Beispiel habe wie es man schreibt.

    Ich habe Problem siehe den Bild http://joxi.net/LmGW30SePxqvml.
    Wie kann ich Punkt 1 zu Punkt 2 und dann Punkt 2 zu Punkt 3 verbinden = coden?
    Etwas verstehe ich von programmieren wenn es Beispiele gibt. Deswegen brauche ich Hilfe von Quellcode oder direkt von Beispielcode.

    Danke im Voraus.

    Gruß

    #57346 quote
    Leo
    Participant
    Veteran

    Hi, wie kann man die Punkte 1, 2, 3… identifiziert?

    #57419 quote
    AVT
    Participant
    Senior

    Als Basis für die Berechnungen nimmt man einen ZigZag Indikator

    https://www.prorealcode.com/prorealtime-indicators/fractals-zigzag/

    https://www.prorealcode.com/prorealtime-indicators/multi-fractals-zigzag-highlow/

    Die Hoch-/Tiefpunkte sind die Werte, die Du nehmen mußt. Dann ist A->B=100% und ausgehend davon kannst Du die anderen Prozente berechnen.

    Ich hoffe, das hilft Dir weiter.

    #57434 quote
    sergoj
    Participant
    New

    Hallo zusammen,

    Danke für ihre Hilfe.
    Ich habe jetzt meine Idee und Frage dazu neu Formuliert. Meine Frage sieht so aus http://joxi.net/Q2KZxBS4PNgWmj
    Ich hoffe dass ich es verständlich erklärt habe. Wenn ihr mir hilft zu coden was ich auf den Screen beschrieben habe, währe ich überglücklich.

    @ AVT Danke ich schau mir Beispiele an.
    Danke im Voraus

    Gruß

    Serge.

    #57498 quote
    AVT
    Participant
    Senior

    Ich habe mal ein Beispiel gemacht wie es im Quellcode aussehen könnte (nur mit a, b, c) basierend auf dem ZigZag mit einstellbarer Länge. Kommentare sind englisch, ich hoffe das ist ok (dann verstehen andere das auch).

    // https://www.prorealcode.com/prorealtime-indicators/fractals-zigzag/
    // credits: Nicolas @ prorealcode.com
    //---external parameters
    cp = 10  // candle period
    // === added begin
    Cmultiplier = 2      // multiplier for user adjustment
    // === added end
    
    once lastpoint = 0
    // === added begin
    once Atop = 0          // define starting values for calc
    once Bbottom = 0       // we need at least A and B
    once Ctop = 0          // for further calc we need more
    once NeedNewA = 0      // starting values for value markers
    once NeedNewB = 0      // 0=0 1=1
    once NeedNewC = 0
    x = cp*3               // the x, assuming a simple calc
    // === added end
    
    if high[cp] >= highest[2*cp+1](high) then
    LH = 1
    else
    LH = 0
    endif
    
    if low[cp] <= lowest[2*cp+1](low)  then
    LL = -1
    else
    LL = 0
    endif
    
    if LH = 1 then
    TOPy = high[cp]      // value of High
    TOPx = barindex[cp]  // barindex of High
    endif
    
    if LL = -1 then
    BOTy = low[cp]      // value of Low
    BOTx = barindex[cp] // barindex of Low
    endif
    
    if LH>0 and (lastpoint=-1 or lastpoint=0) then                 // last one was a Low
    DRAWSEGMENT(lastX,lastY,TOPx,TOPy) COLOURED(200,0,0,255)      // red line
    // DRAWTEXT("■",TOPx,TOPy,Dialog,Bold,20) coloured(200,0,0,255)  // red square
    lastpoint = 1   // set marker that last one was a High
    lastX = TOPx    // postion on time axis
    lastY = TOPy    // value on price axis
    
    // === added begin
    IF Atop=0 OR NeedNewA=0 THEN
    Atop=TOPy       // == save calc value for the A top
    AtopIndex=TOPx  // == for exact drawing position
    DRAWTEXT("Atop",AtopIndex,Atop,Dialog,Bold,10) coloured(200,0,0,255)
    NeedNewB=0      // == marker that we need a new B bottom value next
    NeedNewC=0      // == marker that we need a new C top value after that
    NeedNewA=1      // == marker that the next top will not be A (but C)
    ELSIF Ctop=0 OR NeedNewC=0 THEN
    Ctop=TOPy       // == save calc value for the C top
    CtopIndex=TOPx
    DRAWTEXT("Ctop",CtopIndex,Ctop,Dialog,Bold,10) coloured(200,0,0,255)
    NeedNewB=0      // == marker that we need a new B bottom value next
    NeedNewA=0      // == marker that the next top will be A (and not C)
    NeedNewC=1      // == marker that we are done with C
    
    // === now we might have all A,B,C values 
    IF Atop<>0 AND Bbottom<>0 AND Ctop<>0 THEN  // we have all 3 values we need for calc
    Aval=ABS(Atop-Bbottom)  // the range a
    Bval=ABS(Bbottom-Ctop)  // the range b
      
    // === calculating some c stuff value
    Cval=Ctop+(Aval+Bval*Cmultiplier)
    DRAWSEGMENT(CtopIndex-6,Cval,CtopIndex,Cval) COLOURED(0,0,255)
    // // calculationg somd d stuff value
    Dval=Cval-x*Cmultiplier
    DRAWSEGMENT(CtopIndex-3,Dval,CtopIndex,Dval) COLOURED(255,0,255)
    ENDIF
    
    ENDIF
    // === added end
    
    endif
    
    if LL<0 and (lastpoint=1 or lastpoint=0) then                  // last one was a High
    DRAWSEGMENT(lastX,lastY,BOTx,BOTy) COLOURED(0,200,0,255)      // green line
    // DRAWTEXT("■",BOTx,BOTy,Dialog,Bold,20) coloured(0,200,0,255)  // green square
    lastpoint = -1  // set marker that last one was a Low
    lastX = BOTx    // postion on time axis
    lastY = BOTy    // value on price axis
    
      // === added begin
      IF Bbottom=0 OR NeedNewB=0 THEN
      Bbottom=BOTy
      BbottomIndex=BOTx
      DRAWTEXT("Bbottom",BbottomIndex,Bbottom,Dialog,Bold,10) coloured(0,200,0,255)
      NeedNewB=0   // == marker that the next bottom will also be a B value
      ENDIF
      // === added end
    
    endif
    
    RETURN

    Hilft das nun?

    #57591 quote
    sergoj
    Participant
    New

    Hallo AVT!
    Danke für dein Quellcode ich werde es später „studieren“, zurzeit habe ich neue Indikator nur erstellt und so sieht es http://joxi.ru/J2bz5asX786O26 aus.
    Punkte setzen oder was markieren auf den Chart geht nicht. Indikator sieht so aus http://joxi.net/D2PnB0upPM5er3.

    meine Fragestellung überarbeitet. http://joxi.net/krDQ90CEjMMOmp

    Danke noch mal.

    Gruß

    #57606 quote
    AVT
    Participant
    Senior
    1. Exel und ProRealtime sind zwei völlig voneinander unabhängige Programme. Was Du in dem einen machst, hat mit dem anderen nichts zu tun.
    2. Entweder Du malst etwas von Hand in den Chart ein oder Du läßt einen Indikator auf Basis der Daten malen, die er hat/bekommt.
    3. Es geht also nicht, daß Du zwei Punkte in den Chart setzt und dann erwartest, daß der Indikator Dir eine Verbindungslinie malt. Wenn Du einen Indikator einschaltest, dann tut er das, was im Code steht – und da steht eben nicht warte bis ich mit der Maus einen Punkt auf den Chart gesetzt habe …. so was geht nur auf höherer Programm-Ebene, die komplett alles überwachen muß (wie groß ist der Chart, wann erfolgt ein Mausklick im Chart und wo genau, bleibt die Maustaste gedrückt und fährt eine Strecke ab, bis wohin …)

    In dem Beispiel bekommt der Indikator seine Daten (die Hoch- und Tiefpunkte) aus der Zigzag Berechnung. Die einzige Möglichkeit, die wir haben wäre, die genauen Kurse von Hand in das Indikatormenü einzutragen (sozusagen die Werte für Punkt1, Punkt2 und Punkt3 für die Basislinien) und dann die restlichen Linien nach Deinen Exelformeln berechnen zu lassen. (Aber da ist es schneller, Du siehst in Deiner Exeltabelle den Wert für die Resultatlinie und malst ne Horizontale mit dem Wert.)

    #57806 quote
    sergoj
    Participant
    New

    HAllo AVT
    Danke für deine Hilfe. Ich denke mit Zigzag wird es schwierig meine Idee zu umsetzen, da:
    1. Zigzag setzt automatisch auf die Hoch und Tiefpunkte. Da kommt deine Idee “Die einzige Möglichkeit, die wir haben wäre, die genauen Kurse von Hand in das Indikatormenü einzutragen (sozusagen die Werte für Punkt1, Punkt2 und Punkt3 für die Basislinien) und dann die restlichen Linien nach Deinen Exelformeln berechnen zu lassen.” sehr gut zum umsetzen.
    2. Punkte 1;2;und 3 SOLLEN entweder per Hand oder per Menü wählbar seien. Zigzag setzt zwischen Hoch/Tief aus wie hier http://joxi.net/DrlWO9SvgvnpAP.

    Ich hatte mal im ProBuilder versucht mit den Befehl DrawSegment oder mit Point zu zeichnen leider ohne erfolg.

    Danke im Voraus.

    Gruß

    #58593 quote
    AVT
    Participant
    Senior

    Ich habe eine einfache Version gemacht. In ProRealTime importieren, zum Chart hinzufügen und unter Indikator verändern kannst Du dann sehen, wie ich es gemacht habe.

    Entweder Du nimmst den mit der RETURN e AS “e” … Zeile oder Du nimmst die Kommentare aus dem vorherigen Block raus und dafür kommentierst Du die letzte Zeile.

    #59368 quote
    sergoj
    Participant
    New

    Hallo AVT!
    so ungefär habe ich es mir vorgestellt! Super! ich denke ein bisschen Feintuning und “dann läuft des Teil”.

    Sorry dass so lange gedauert hat, ich war unterwegs.

    Ich habe dein Code unverändert gerade importiert und so ein Resultat http://joxi.net/EA4YpZuwEnMLrb bekommen,
    noch paar klammer eingesetzt und schon alles wie seien http://joxi.net/8Anl09sjJwgYmO sollte.
    Meine Fragen dazu:
    a) wie kann ich den Indikator direkt an den Chart (nicht als extra Fenster) anwenden, wie gerade mit Fibo-Ausdehnung http://joxi.net/krDQ90CEjw6Nmp gemacht habe (100 level nicht betrachten).
    b) da ich noch paar Level hinzufüge, es ist wahrscheinlich logischer, weiter mit “drawsegmet” zu arbeiten?
    C) kann man Levels Darstellung einzeln in Menü http://joxi.net/EA4YpZuwEn6prb “ein-ausschalten” hinzufügen?
    ich denke es ist genug mit Fragen, werde dann weiter testen und erweitern.

    Danke im Voraus

    Gruß

    #59396 quote
    AVT
    Participant
    Senior

    Mache ich am Wochenende, wenn das für Dich ok ist.

    #59424 quote
    AVT
    Participant
    Senior
    // extern, all type real
    //WertP1=86.66
    //WertP2=75.05
    //WertP3=82.48
    //Multiplikator1=1
    //Multiplikator2=0.01
    // type boolean
    //Level1=true
    //Level2=true
    //Level3=true
    //Level4=true
    
    DEFPARAM DrawOnLastBarOnly=true
    
    a=ABS(WertP1-WertP2)
    b=ABS(WertP2-WertP3)
    c=(a+b)*Multiplikator1
    
    // x Werte
    x=382
    x1=500
    x2=618
    x3=740
    
    d=(x-c)*Multiplikator2
    d1=(x1-c)*Multiplikator2
    d2=(x2-c)*Multiplikator2
    d3=(x3-c)*Multiplikator2
    
    f=WertP3-d
    f1=WertP3-d1
    f2=WertP3-d2
    f3=WertP3-d3
    
    e=WertP3+d
    e1=WertP3+d1
    e2=WertP3+d2
    e3=WertP3+d3
    
    IF BarIndex>2 THEN
    
      IF Level1 THEN
        DRAWSEGMENT(barindex-2,f,barindex,f) COLOURED(255,0,0)
        DRAWSEGMENT(barindex-2,e,barindex,e) COLOURED(0,255,0)
      ENDIF
      IF Level2 THEN
        DRAWSEGMENT(barindex-2,f1,barindex,f1) COLOURED(255,0,0)
        DRAWSEGMENT(barindex-2,e1,barindex,e1) COLOURED(0,255,0)
      ENDIF
      IF Level3 THEN
        DRAWSEGMENT(barindex-2,f2,barindex,f2) COLOURED(255,0,0)
        DRAWSEGMENT(barindex-2,e2,barindex,e2) COLOURED(0,255,0)
      ENDIF
      IF Level4 THEN
        DRAWSEGMENT(barindex-2,f3,barindex,f3) COLOURED(255,0,0)
        DRAWSEGMENT(barindex-2,e3,barindex,e3) COLOURED(0,255,0)
      ENDIF
    
    ENDIF
    
    RETURN
    
    //RETURN e AS "e", e1 AS "e 1", e2 AS "e 2", e3 AS "e 3", f AS "f", f1 AS "f 1", f2 AS "f 2", f3 AS "f 3"
    

    a) Im Kursfenster neben “Kurs” auf den Schraubenschlüssel klicken, dann “Indikator hinzufügen” (Bild 1)

    b) Ich bevorzuge “DrawSegment”, weil man damit die Länge der Linien selber bestimmen kann und nicht den ganzen Chart zumüllt. Wenn man diese dann aus- und einschalten will, wäre es taktisch besser, die “DrawSegment” Zeilen in Level zu gruppieren (anstatt wie anfangs in die positiven und negativen Linien).

    c) Externe, das heißt vom Benutzer veränderbare Variablen fügst Du im Programmierfenster so hinzu (Bild 2): ganz oben bei “Variable” auf den Schraubenschlüssel daneben klicken und Namen der Variable eingeben. Vorsicht: Wenn Du einen neuen Indikator planst, überlege vorher gut die spätere Reihenfolge im Menü. Wenn Du einen Fehler machst und die Variable löscht um sie neu einzutragen, dann wird sie am Ende angefügt. Beispiel: Wenn ich “Levl2” geschrieben hätte und beim Testen im Menü feststelle, daß da ein “e” fehlt, und ich diese Variable lösche und neu hinzufüge als “Level2”, dann steht nachher im Menü plötzlich Level1, Level3, Level4, Level2 (nicht gerade so wie man es als Benutzer logisch erwarten würde).

    Hier noch die Links zu Dokumentationen:

    https://www.prorealtime.com/de/pdf/probuilder_c1486047630c.pdf

    https://www.prorealcode.com/prorealtime-documentation/

    https://www.prorealtime.com/de/pdf/proscreener_c1416313647c.pdf

    https://www.prorealtime.com/de/pdf/probacktest_c1504281788c.pdf

    Ich hoffe, damit kannst Du loslegen. Gruß AVT

    #59428 quote
    sergoj
    Participant
    New

    Hi,

    Super danke teste ich gleich.

    Gruß

Viewing 15 posts - 1 through 15 (of 15 total)
  • You must be logged in to reply to this topic.

Quellcode für Fibo-Ausdehnung (Extension)


ProBuilder Support

New Reply
Author
author-avatar
sergoj @sergoj Participant
Summary

This topic contains 14 replies,
has 3 voices, and was last updated by sergoj
8 years ago.

Topic Details
Forum: ProBuilder Support
Language: German
Started: 01/04/2018
Status: Active
Attachments: 5 files
Logo Logo
Loading...