Handelssystem – Programmierung – Frage

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #124962 quote
    NoName
    Participant
    Average

    Guten Tag zusammen,

    ich habe ein einfaches Programm erstellt, um mich mit ProRealTime anzufreunden. Zu erst habe ich ein Indikator programmiert. „Analyser.py (Speaker)“

    Ausgabe des Indikators:

    • hasStocks [schwarze Balken] =Positionen gemäß Handelssystem. 0 = keine Position; 1 = 1 Position (läuft)
    • nTrades [schwarze Linie] = zählt die Anzahl an Trades.

    Bei den Folgenden Ausgaben gilt: 2 = inaktive; 1 = Aktive

    • ntp [grün Linie] = Kriterien für TP Ausstieg.
    • nsl [rot Linie] = Kriterien für SL Ausstieg.
    • nent [blau Linie] = Kriterien für Entry Einstieg.

    Daraus habe ich ein Handelssystem gemacht „MeinHandelssystem“. Kaufen bei „nent“ und verkaufen bei „ntp“ und „nsl“.

    Kommen wir nun zu meinem Problem:
    Das Handelssystem „MeinHandelssystem“ hat im Zeitraum Dezember und Januar Kaufsignale (siehe Bild: “Frage.jpg”) wo mein Indikator „Analyser.py (Speaker)“ keine Signale hat.

    • Wie kommt es dazu?
    • Warum?
    • Was kann ich dort gegen machen?
    Analyser.py-Speaker.itf MeinHandelssystem.itf Frage.jpg Frage.jpg
    #126199 quote
    NoName
    Participant
    Average

    Guten Morgen,

    jemand eventuell einen Ansatz für mich ?

    #126223 quote
    Nicolas
    Keymaster
    Master

    Sind Sie sicher, dass der in Ihrem Diagramm angezeigte Indikator genau dieselben Einstellungen hat wie der, den Sie in Ihrer Strategie verwenden? Wenn Sie sicher sein möchten, welche Variablen in einer Strategie enthalten sind, können Sie GRAPH und GRAPHONPRICE verwenden . Dies sind die einzigen Möglichkeiten, Variablenwerte in einer Strategie zu debuggen.

    #126257 quote
    NoName
    Participant
    Average

    Guten Tag Nicolas,

    Danke für Ihre Rückmeldung.

    Ihren Hinweis bezüglich GRAPH und GRAPHONPRICE habe ich mir angeschaut.
    Die Funktion GRAPH habe ich umgehen implementiert. Handelsstrategie habe ich angefügt als “MeinHandelssystem”.
    Groß debuggen kann ich leider nicht , da mein Code genau eine entschiedene Zeile hat.

    Mein Handelssystem “MeinHandelssystem” beruht zu 100% auf dem Indikator “Analyser.py (Speaker)”. Beide haben die selben Variablen.
    Es kommt aber nicht das selbe Raus.

    Erläuterung des Bildes: “Frage – 20200415”:

      • [rote dicke Linie] = Unklarheit Zeitraum: 12.12.2019 – 08.01.2020
      • Indikators”Analyser.py (Speaker)”:
        • ntp [grün Linie] = Kriterien für TP Ausstieg. – 2 = inaktive; 1 = Aktive
        • nsl [rot Linie] = Kriterien für SL Ausstieg. – 2 = inaktive; 1 = Aktive
        • nent [blau Linie] = Kriterien für Entry Einstieg. – 2 = inaktive; 1 = Aktive
        • hasStocks [schwarze Balken] =Positionen gemäß Handelssystem. 0 = keine Position; 1 = 1 Position (läuft)
        • nTrades [schwarze Linie] = zählt die Anzahl an Trades.
      • Handelssystem “MeinHandelssystem”
        • myntp [grün Linie] = Kriterien für TP Ausstieg. – 2 = inaktive; 1 = Aktive
        • mynsl [rot Linie] = Kriterien für SL Ausstieg. –  2 = inaktive; 1 = Aktive
        • mynent [blau Linie] = Kriterien für Entry Einstieg. – 2 = inaktive; 1 = Aktive
        • myhasStocks [schwarze Linie] =Positionen gemäß Handelssystem. 0 = keine Position; 1 = 1 Position (läuft)

     

    Code des Handelssystems “MeinHandelssystem”

    // Initialisieren des Indikators und definieren der Variablen 
    myntp, mynsl, mynent, myhasStocks, mynTrades = CALL "Analyser.py (Speaker)"[0, 2, 100, 2, 60, 40, 2, 1]
    
    // Bedingungen zum Einstieg in Long-Positionen
    IF NOT LongOnMarket AND mynent = 1 THEN
    BUY 1 CONTRACTS AT MARKET
    ENDIF
    
    // Bedingungen zum Ausstieg von Long-Positionen
    If LongOnMarket AND ((mynsl = 1) or (myntp = 1)) THEN
    SELL AT MARKET
    ENDIF
    
    // Visualisierung
    GRAPH myntp coloured(17,247,55) AS "myntp"
    GRAPH mynsl coloured(255,0,0) AS "mynsl"
    GRAPH mynent coloured(44,16,248) AS "mynent"
    GRAPH myhasStocks coloured(0,0,0) AS "myhasStocks"
    
    Frage-20200415.jpg Frage-20200415.jpg MeinHandelssystem-20200415.itf
    #126364 quote
    Nicolas
    Keymaster
    Master

    Vielen Dank, ich kann das gleiche Verhalten in genau derselben Reihenfolge wiederholen. Es scheint nur einmal zu passieren und für dieses Instrument habe ich kein anderes Problem mit anderen Instrumenten gefunden, oder? Ich denke, es wäre zuerst eine gute Idee, den Indikator in den Strategiecode zu integrieren, um zu sehen, ob er in irgendeiner Weise helfen kann. Könnten Sie das tun?

    #126383 quote
    NoName
    Participant
    Average

    Guten Tag Nicolas,

    Danke erneut für Ihre Rückmeldung.
    Meine Testversion ist gestern abgelaufen und ich habe nun keine Daten mehr um die Situation erneut zu Simulieren.

    Das Problem ist mit anderen Instrumenten durch mich nicht getestet worden. Auch ein Test in anderen Zeitintervallen (z.B. 3h oder 2h…) habe ich nicht vorgenommen.
    Ich komme gerne Ihrer erneuten Idee nach und habe den Indikator 1:1 in das Handelssystem integriert.

    Sofern die Möglichkeit besteht meine Testversion, um eine Woche zu verlängern würde ich gerne weiter diesem Problem auf den Grund gehen.

    An Wenn könnte ich mich mit dieser Bitte wenden?

     

    Code des Handelssystems: ” Analyser.py”

    //Indikator "Analyser.py (Speaker)"
    //Average definieren
    
    //typ = 0
    //ent1 = 2
    //ent2 = 100
    //sl1 = 2
    //sl2 = 60
    //tp1 = 100
    //tp2 = 2
    //longshort = 1
    
    //Gleitenden Durchschnitt zuordnen und einer Variablen zuordnen.
    ent1Average = Average[ent1,typ](close)
    ent2Average = Average[ent2,typ](close)
    
    //Stop Lost Average definieren
    sl1Average = Average[sl1,typ](close)
    sl2Average = Average[sl2,typ](close)
    
    //Take Profit Average definieren
    tp1Average = Average[tp1,typ](close)
    tp2Average = Average[tp2,typ](close)
    
    //Warten bis größer SMA oder EMA erreicht ist.
    if BarIndex = 0 Then
    
    //finden größten SMA oder EMA
    startId = MAX(MAX(MAX(ent1,ent2),MAX(sl1,sl2)),MAX(tp1,tp2))
    
    //initialieiseren
    //hasStocks = 0 --> kein Trade / 1 = Trade aktiv
    hasStocks = 0
    nTrades = 0
    sell1  = 0
    ntp = 2
    nsl = 2
    nent = 2
    
    elsif BarIndex >= startId Then
    
    
    //Prüfen ob ich im Markt bin
    if hasStocks = 0 Then
    
    //Prüfen Kaufen
    if ent1Average[0] < ent2Average[0] and ent1Average[1] > ent2Average[1] Then
    //# "Buy" because of Entry
    hasStocks = 1
    nent = 1
    
    //Kaufen durch ProRealTime
    if longshort = 1 Then
    // LONG
    BUY 1 CONTRACTS AT MARKET
    else
    // SHORT
    //SELLSHORT 1 CONTRACTS AT MARKET
    endif
    
    
    endif
    
    //Visualisation von TP und SL durch ntp und nsl
    if (tp1Average[1] < tp2Average[1] and tp1Average[2] > tp2Average[2]) Then
    ntp = 2
    endif
    
    if (sl1Average[1] < sl2Average[1] and sl1Average[2] > sl2Average[2]) Then
    nsl  = 2
    endif
    
    else
    
    //Visualisation von Entry durch nent
    if (ent1Average[1] < ent2Average[1] and ent1Average[2] > ent2Average[2]) Then
    nent = 2
    endif
    
    //Prüfen Verkaufen
    // "Sell" because of SL or TP
    if (tp1Average[0] < tp2Average[0] and tp1Average[1] > tp2Average[1]) Then
    sell1 = 1
    ntp = 1
    endif
    if (sl1Average[0] < sl2Average[0] and sl1Average[1] > sl2Average[1]) Then
    sell1 = 1
    nsl =  1
    endif
    
    //Sell
    if sell1 = 1 Then
    hasStocks = 0
    sell1 = 0
    nTrades = nTrades + 1
    
    //Verkaufen durch ProRealTime
    if longshort = 1 Then
    // LONG
    SELL AT MARKET
    else
    // SHORT
    //EXITSHORT AT MARKET
    endif
    
    endif
        
    endif
    
    
    endif
    
    // Visualisierung
    myntp = ntp
    mynsl = nsl
    mynent = nent
    myhasStocks = hasStocks[1]
    mynTrades = nTrades
    GRAPH myntp coloured(17,247,55) AS "myntp"
    GRAPH mynsl coloured(255,0,0) AS "mynsl"
    GRAPH mynent coloured(44,16,248) AS "mynent"
    GRAPH myhasStocks coloured(0,0,0) AS "myhasStocks"
    #126406 quote
    Nicolas
    Keymaster
    Master

    Das Problem ist in dieser Version weiterhin vorhanden. Aber ich habe festgestellt, dass es ein Problem mit den Daten gibt, es gibt keine Kerzenhalter zwischen dem 13. Dezember und dem 23. Dezember und ich denke, es könnte erklären, warum es zu diesem Zeitpunkt ein ProBacktest-Problem gibt.

    #126409 quote
    NoName
    Participant
    Average

    Guten Tag Nicolas,

    Danke erneut für Ihre Rückmeldung und Ihre Bemühungen.

    Interessant Ihre Erkenntnis.

    • Kann der Fehler behoben werden?
    • Wieso kann ProRealTime ohne Datengrundlage oder Signal kaufen / verkaufen?

    Kann ich irgendwie helfen ?

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

Handelssystem – Programmierung – Frage


ProOrder: Automatischer Handel & Backtesting

New Reply
Author
author-avatar
NoName @noname Participant
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by NoName
5 years, 11 months ago.

Topic Details
Forum: ProOrder: Automatischer Handel & Backtesting
Language: German
Started: 04/07/2020
Status: Active
Attachments: 5 files
Logo Logo
Loading...