Fehlermeldung beim Code für Oil Strategie

Forums ProRealTime Deutsch forum ProOrder Support Fehlermeldung beim Code für Oil Strategie

Viewing 4 posts - 1 through 4 (of 4 total)
  • #244911

    Hallo zusammen.

    Könnt Ihr mir helfen? Ich möchte eine Strategie Backtesten und benötige den richtigen Code dafür. Mithilfe von Copilot habe ich die Strategie-Parameter in einen Code schreiben lassen. Jedoch funktioniert er nicht. Könnte jemand bitte mal rüber schauen?

    Strategie:

    Handelsstrategie für Brent Oil (5-Minuten-Chart) in ProRealTime

    1. Basiswerte & Indikatoren
    Instrument: Brent Oil
    Zeiteinheit: 5-Minuten-Chart
    Indikatoren:
    Bollinger Bänder (Standard-Einstellungen)
    SMA200 (Gleitender Durchschnitt mit Periode 200)
    2. Einstiegskriterien (Order-Platzierung um 9:55 Uhr)
    Long Order:

    Bedingung: Schlusskurs des 9:50-Uhr-Kerzenbalkens liegt über dem SMA200.
    Einstieg: Oberes Bollinger Band von 9:50 Uhr.
    Ordertyp:
    Limit Buy Order, falls der aktuelle Kurs um 9:55 Uhr unter dem oberen Bollinger Band liegt.
    Stop Buy Order, falls der aktuelle Kurs um 9:55 Uhr über dem oberen Bollinger Band liegt.
    Short Order:

    Bedingung: Schlusskurs des 9:50-Uhr-Kerzenbalkens liegt unter dem SMA200.
    Einstieg: Unteres Bollinger Band von 9:50 Uhr.
    Ordertyp:
    Limit Sell Order, falls der aktuelle Kurs um 9:55 Uhr über dem unteren Bollinger Band liegt.
    Stop Sell Order, falls der aktuelle Kurs um 9:55 Uhr unter dem unteren Bollinger Band liegt.
    3. Stop-Loss & Take-Profit (CRV 2:1)
    Stop-Loss:

    Long Order: Stop-Loss auf dem unteren Bollinger Band von 9:50 Uhr.
    Short Order: Stop-Loss auf dem oberen Bollinger Band von 9:50 Uhr.
    Take-Profit:

    Berechnung der Bandbreite:
    Bandbreite
    =
    Oberes Bollinger Band

    Unteres Bollinger Band
    Bandbreite=Oberes Bollinger Band−Unteres Bollinger Band
    Long Order: Take-Profit = Einstiegspreis + (2 × Bandbreite).
    Short Order: Take-Profit = Einstiegspreis – (2 × Bandbreite).
    4. Ausstiegsregeln (Falls Trade oder Order noch offen ist)
    Falls der Trade um 21:40 Uhr noch offen ist:
    Market-Exit (Trade wird unabhängig vom Gewinn/Verlust geschlossen).
    Falls die Order bis 18:00 Uhr nicht ausgeführt wurde:
    Order wird storniert, inklusive Stop-Loss und Take-Profit.
    Zusätzliche Punkte:
    ✔ Jeden Tag nur eine Order: Entweder Long oder Short, basierend auf der SMA200-Bedingung.
    ✔ Trading nach festen Uhrzeiten: Alle Berechnungen basieren auf den Daten von 9:50 Uhr, Orderplatzierung um 9:55 Uhr.
    ✔ Striktes Risikomanagement: Stop-Loss immer festgelegt, Take-Profit mit festem CRV von 2:1.

    Der Code wurde erstellt aber leider mit Fehlermeldung:

    // Indikatoren

    indicator(“Handelsstrategie für Brent Oil”, shorttitle=”Brent Strategy”, overlay=true)

    SMA200 = sma[close](200)

    BollingerUp = bbands[close](20, 2)[1]

    BollingerLow = bbands[close](20, 2)[2]

     

    // Variablen für Zeit und Preis

    var float entryPrice = na

    var float stopLoss = na

    var float takeProfit = na

    var float bandWidth = na

     

    // Bedingung für Long Order

    if (hour(timenow) == 9 and minute(timenow) == 50)

    if (close > SMA200)

    entryPrice = BollingerUp

    stopLoss = BollingerLow

    bandWidth = BollingerUp – BollingerLow

    takeProfit = entryPrice + 2 * bandWidth

    if (close < BollingerUp)

    buy 1 contract at limit entryPrice

    else

    buy 1 contract at stop entryPrice

     

    // Bedingung für Short Order

    if (hour(timenow) == 9 and minute(timenow) == 50)

    if (close < SMA200)

    entryPrice = BollingerLow

    stopLoss = BollingerUp

    bandWidth = BollingerUp – BollingerLow

    takeProfit = entryPrice – 2 * bandWidth

    if (close > BollingerLow)

    sell 1 contract at limit entryPrice

    else

    sell 1 contract at stop entryPrice

     

    // Exit Regeln

    if (marketposition != 0)

    if (time > timenow(21, 40, 0))

    exitshort “Market Exit” from entry(“”), close

    if (time > timenow(18, 0, 0))

    exitshort “Cancel Order” from entry(“”), close

    if (marketposition == 1)

    exitlong from entry(“”), stoploss(“Stop Loss”, stopLoss)

    exitlong from entry(“”), takeprofit(“Take Profit”, takeProfit)

    else if (marketposition == -1)

    exitshort from entry(“”), stoploss(“Stop Loss”, stopLoss)

    exitshort from entry(“”), takeprofit(“Take Profit”, takeProfit)

     

    #244924

    Hola. Hier ist ein Code:

    1 user thanked author for this post.
    #245208

    Hola Iván,

    quiero agradecerte de todo corazón por tu rápida y valiosa ayuda. Lamentablemente estuve fuera de combate los últimos días debido a un fuerte virus estomacal, así que todavía no había tenido la oportunidad de revisar tu respuesta con calma.

    Hoy es mi primer día de regreso en la oficina, y durante el transcurso del día o, a más tardar, mañana, me pondré a probar el código que me enviaste.

    Desde ya, ¡muchísimas gracias por tu esfuerzo y tu rápida respuesta! Es realmente admirable ver lo servicial y comprometida que es la ayuda aquí en el foro. Lo valoro muchísimo y me parece genial no estar solo con este tipo de dudas.

    Sin falta, te escribiré nuevamente en cuanto haya probado el código.
    ¡Mil gracias de nuevo!

    Un saludo muy cordial,

    Mario

    1 user thanked author for this post.
    #248255

    Hallo Iván,

    ich hoffe, es geht dir gut!

    Ich hatte noch einmal Kontakt mit Frau Sommer und möchte mich erneut mit einer Bitte an dich wenden. Ich arbeite weiterhin intensiv an meiner Öl-Strategie, doch leider funktioniert die Umsetzung im ProRealTime-System noch nicht so, wie ich es mir wünsche.

    Es werden nicht alle Trades so ausgeführt, wie ich sie im MetaTrader manuell – basierend auf ganz klaren Regeln – erfolgreich handele. Ich habe die Strategie nun noch einmal überarbeitet und alle Bedingungen präzise formuliert.

    Da ich bislang mit deiner Hilfe sehr gute Erfahrungen gemacht habe, wollte ich dich fragen, ob du mich erneut unterstützen könntest, einen funktionierenden ProRealTime-Code zu erstellen. Leider komme ich mit ChatGPT bei der Programmierung nicht weiter – es schleichen sich immer wieder Fehler ein, sodass das Ergebnis nicht meiner tatsächlichen Handelsweise entspricht.

    Im Anhang bzw. unten findest du die vollständige Beschreibung meiner Strategie – übersichtlich, regelbasiert und gut strukturiert.

    Ich würde mich wirklich sehr freuen, wenn du noch einmal ein wenig Zeit findest, um mir zu helfen. Ganz herzlichen Dank schon im Voraus für deine Mühe und deine großartige Unterstützung!

    Viele Grüße

    Hier die Strategieanpassung:

    Trading-Strategie: Brent Oil (UK Oil) im M5-Chart – ProRealTime Code-Basis

    1. Indikatoren
    • SMA 20 (Simple Moving Average 20)
    • SMA 50 (Simple Moving Average 50)
    • Bollinger Bänder
      • Periode: 12
      • Standardabweichung: 2
    1. Setup-Kriterien (Trendfilter)

    Täglich wird um 8:50 Uhr der Marktstatus überprüft, nach Abschluss der 8:50-Bar.
    Um 8:55:00 Uhr wird auf Basis dieser Bar eine Einstiegsorder gesetzt:

    Long-Setup:

    • Bedingung: SMA 20 > SMA 50 (Werte aus 8:50-Bar)
    • Einstiegsorder: wenn Long Bedingung erfüllt dann auf den Wert des oberen Bollinger Bands (Wert aus 8:50-Bar)

    Short-Setup:

    • Bedingung: SMA 20 < SMA 50 (Werte aus 8:50-Bar)
    • Einstiegsorder: wenn Short Bedingung auf den Wert des unteren Bollinger Bands (Wert aus 8:50-Bar)
    1. Entry, Stop-Loss und Take-Profit

    Orderzeitpunkt:

    Einstiegsorder wird um 8:55 Uhr automatisch gesetzt, basierend auf den Werten der abgeschlossenen 8:50-Bar.

    (Die Einstiegs-Order wird immer um 8:55 Uhr gesetzt, nachdem die Daten des 8:50-Bars vorliegen. Die Einstiegs-Order erfolgt über eine Market Order, wobei das System automatisch erkennen muss, ob eine Stop- oder Limit-Order erforderlich ist – je nachdem, ob der aktuelle Kurs bereits über oder unter dem Einstiegspunkt liegt.)

    Orderart:

    • Die Order erfolgt als Market Order mit automatischer Entscheidung, ob eine Stop- oder Limit-Order erforderlich ist:
      • Liegt der aktuelle Marktpreis unterhalb des Entry-Levels → Stop-Order
      • Liegt der aktuelle Marktpreis oberhalb des Entry-Levels → Limit-Order

    Gültigkeit:

    • Ordergültigkeit: bis 20:00 Uhr
    • Falls bis dahin nicht ausgelöst, wird die Order automatisch gelöscht

    Stop-Loss-Regel:

    • Long-Setup: SL = Werte des unteren Bollinger Band (aus 8:50-Bar)
    • Short-Setup: SL = Werte des oberen Bollinger Band (aus 8:50-Bar) + Spread
    • SL-Order wird zeitgleich mit Entry-Order um 8:55:00 Uhr gesetzt und gelöscht, wenn Entry nicht erfolgt (20:00 Uhr) oder TP erreicht wird

    Take-Profit-Regel (CRV 2:1):

    • TP = Entry ± 2 × Abstand Entry zu SL
    • Spread wird bei der Berechnung berücksichtigt
    • TP-Order wird ebenfalls zeitgleich mit Entry-Order gesetzt
    • Gültig bis:
      • 20:00 Uhr bei nicht ausgelöster Entry-Order (dann wird sie gelöscht)
      • oder bei Auslösung der SL-Order

    Take Profit Order wird zeitgleich mit der Einstiegsorder gesetzt und bei nicht Ausführung der Einstiegsorder auch um 20:00 Uhr oder bei Ausführung der Stop Loss Order gelöscht.

     

    Der Spread wird bei den Kaufordern immer mitberücksichtigt bzw. hinzugerechnet.

     

    1. Beispiel vom 04.04. – Short-Setup
    • SMA 20: 69,159
    • SMA 50: 69,216 → Short-Signal
    • Oberes BB: 69,430
    • Unteres BB: 68,852
    • Close der 8:50-Bar: 68,933
    • Spread: 0,034

    Berechnung:

    • Entry: 68,852
    • SL: 69,430 + 0,034 = 69,464
    • TP: 68,852 – (2 × 0,612) = 67,628
      → Order wurde gesetzt und blieb aktiv bis zur Ausführung durch TP, SL oder Zeitgrenze (20:00 Uhr bzw. Exit um 21:40 Uhr)
    1. Zeitmanagement & Exit
    • Einstiegsorder: bleibt bis 20:00 Uhr aktiv

    Wird die Einstiegs Order ausgelöst, aber bis dahin nicht geschlossen durch SL oder TP, erfolgt ein automatischer Exit per Market Order um 21:40 Uhr

    1. Risikomanagement
    • Max. 1 Einstiegs-Order pro Tag also max ein Trade am Tag
    • Risikofixierung: exakt 100 € Risiko pro Trade
    • Lotgröße wird automatisch berechnet anhand der Entry–SL-Distanz
    • CRV: fix bei 2:1, d. h. 200 € Zielgewinn

    Hinweis für Programmierer:
    Alle Werte (SMA, Bollinger, Spread, Entry, SL, TP) basieren ausschließlich auf den Werten der 8:50-Bar. Es wird keine Anpassung durch spätere Kerzen vorgenommen. Spread ist dynamisch und muss bei Kauf-/Verkaufskursen berücksichtigt werden.

     

Viewing 4 posts - 1 through 4 (of 4 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login