Fehlermeldung beim Code für Oil Strategie
Forums › ProRealTime Deutsch forum › ProOrder Support › Fehlermeldung beim Code für Oil Strategie
- This topic has 3 replies, 2 voices, and was last updated 2 days ago by
denordstate.
-
-
03/13/2025 at 4:27 PM #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)
03/14/2025 at 11:40 AM #244924Hola. Hier ist ein Code:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546defparam FLATAFTER=214000SMA200 = average[200](close)BBup = BollingerUp[20](close)BBdn = BollingerDown[20](close)bandWidth = BBup - BBdnstartTime=095000endTime=180000if opentime>=startTime and opentime[1]<startTime and close>sma200 and close<BBUp thentradeLong=1tradeShort=0entryPrice = BBupstopLoss = BBdntakeProfit = entryPrice + 2 * bandWidthelsif opentime>=startTime and opentime[1]<startTime and close<sma200 and close>BBdn thentradeLong=0tradeShort=1entryPrice = BBdnstopLoss = BBuptakeProfit = entryPrice - 2 * bandWidthendifcount=(longtriggered or shorttriggered)+countif not onmarket and opentime>=startTime and opentime<endTime and tradeLong and count=0 thenbuy 1 contract at entryPrice stop //limitelsif not onmarket and opentime>=startTime and opentime<endTime and tradeShort and count=0 thensellshort 1 contract at entryPrice stop //limitelsif opentime>=endTime thencount=0tradeLong=0tradeShort=0endifset stop price stopLossset target price takeProfitgraphonprice sma200 as "SMA" coloured("blue")graphonprice BBup as "Bollinger Up" coloured("fuchsia")graphonprice BBDn as "Bollinger Dn" coloured("fuchsia")graphonprice takeProfit as "TP" coloured("green")graphonprice stopLoss as "SL" coloured("red")graphonprice entryPrice as "buyP" coloured("darkblue")1 user thanked author for this post.
03/24/2025 at 1:54 PM #245208Hola 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.
06/13/2025 at 11:08 AM #248255Hallo 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
- Indikatoren
- SMA 20 (Simple Moving Average 20)
- SMA 50 (Simple Moving Average 50)
- Bollinger Bänder
- Periode: 12
- Standardabweichung: 2
- 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)
- 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.
- 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)
- 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
- 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. -
AuthorPosts
Find exclusive trading pro-tools on