Hallo,
ich habe mir aus verschiedenen Codes ein Breakout-system gebastelt. Backtest funktioniert bestens, aber wenn ich es live schalte, stoppt die Plattform sofort das System mit der Meldung “es ist ein Fehler im Programm”.
Ich habe ihn aber noch nicht gefunden.
Kann mir bitte jemand helfen und sagen woran es liegt?
// Es werden keine Daten vor Start des Handelssystems geladen.
// Im Fall eines ersten Starts dieses Handelssystems an einem Nachmittag, wird auf diese
// Weise der nächste Tag abgewartet, um mögliche Kauf- und Verkauf-Order festzulegen.
DEFPARAM PreLoadBars = 0
// Die Position wird um 21 Uhr 45 (lokale Zeitzone) glattgestellt.
DEFPARAM FlatAfter = 214500
// Keine neue Position nach dem Candlestick, der um 17 Uhr 15 schließt.
LimitEntryTime = 150000
// Marktanalyse beginnt mit dem 15 Minuten-Candlestick, der um 9 Uhr 15 schließt.
StartTime = 091500
// Feiertage wie 24. und 31. Dezember werden ausgeschlossen.
IF (Month = 5 AND Day = 1) OR (Month = 12 AND (Day = 24 OR Day = 25 OR Day = 26 OR Day = 30 OR Day = 31)) THEN
TradingDay = 0
ELSE
TradingDay = 1
ENDIF
// Die Variablen können je nach Wunsch individuell angepasst werden
PositionSize = 1
AmplitudeMax = 73 //80 82
AmplitudeMin = 31 //33
OrderDistance = 2 //2
MinPercent = 1.7 //1
// Diese Variable wird ein einziges Mal vor dem Start des Handelssystems initialisiert.
ONCE StartTradingDay = -1
// Die während des Tages sich verändernden Variablen werden
// beim ersten Balken jeden neuen Börsentages initialisiert.
IF (Time <= StartTime AND StartTradingDay <> 0) OR IntradayBarIndex = 0 THEN
BuyLevel = 0
SellLevel = 0
BuyPosition = 0
SellPosition = 0
StartTradingDay = 0
ELSIF Time >= StartTime AND StartTradingDay = 0 AND TradingDay = 1 THEN
// Der Index des ersten Balkens des Börsentages wird gespeichert.
IndexStartDay = IntradayBarIndex
StartTradingDay = 1
ELSIF StartTradingDay = 1 AND Time <= LimitEntryTime THEN
// Für jeden Börsentag legen wir alle 15 Minuten fest:
// höchster und niedrigster Kurs des Instrumentes seit StartTime
// solange die Kauf- und Verkauf-Levels nicht festgelegt sind.
IF BuyLevel = 0 OR SellLevel = 0 THEN
UpperLevel = Highest[IntradayBarIndex - IndexStartDay + 1](High)
LowerLevel = Lowest [IntradayBarIndex - IndexStartDay + 1](Low)
// Berechnung des Abstands zwischen höchsten Wert
// und niedrigstem Wert des Instrumentes seit StartTime
DayDistance = UpperLevel - LowerLevel
// Berechnung des gewünschten geringsten Abstands zur Berücksichtigung eines Durchbruchs
// der höchsten oder der niedrigsten Werte durch Kurse für einen signifikanten Durchbruch.
EcartMin = DayDistance * MinPercent / 100
// Berechnung der Kauf- und Verkauf-Levels des Tages, sollten die Bedingungen vorliegen.
IF DayDistance <= AmplitudeMax THEN
IF SellLevel = 0 AND (Close - LowerLevel) >= EcartMin THEN
SellLevel = LowerLevel + OrderDistance
ENDIF
IF BuyLevel = 0 AND (UpperLevel - Close) >= EcartMin THEN
BuyLevel = UpperLevel - OrderDistance
ENDIF
ENDIF
ENDIF
// Erstellen der Kauf- und Leerverkauf-Order für den Tag, wenn die Bedingungen vorliegen
IF SellLevel > 0 AND BuyLevel > 0 AND (BuyLevel - SellLevel) >= AmplitudeMin THEN
IF BuyPosition = 0 THEN
IF LongOnMarket THEN
BuyPosition = 1
ELSE
BUY PositionSize CONTRACT AT BuyLevel STOP
ENDIF
ENDIF
IF SellPosition = 0 THEN
IF ShortOnMarket THEN
SellPosition = 1
ELSE
SELLSHORT PositionSize CONTRACT AT SellLevel STOP
ENDIF
ENDIF
ENDIF
ENDIF
// Festlegung der Ausstiegsbedingungen, wenn Kauf-Position oder Leerverkauf-Position eingenommen wurde.
IF LongOnMarket AND ((Time <= LimitEntryTime AND SellPosition = 1) OR Time > LimitEntryTime) THEN
SELL AT SellLevel STOP
ELSIF ShortOnMarket AND ((Time <= LimitEntryTime AND BuyPosition = 1) OR Time > LimitEntryTime) THEN
EXITSHORT AT BuyLevel STOP
ENDIF
super = Supertrend[2.6,4]
superl = close crosses under super
supers = close crosses over super
if longonmarket and superl then
sell at market
endif
if shortonmarket and supers then
exitshort at market
endif
// Festlegen des höchsten Verlustrisikos pro Position
// im Falle eines ungünstigen Kursverlaufs des Instruments
SET STOP LOSS AmplitudeMax
SET TARGET %PROFIT 2.1 //120 2.1
//************************************************************************
//trailing stop function
trailingstart = 9 //9 trailing will start @trailinstart points profit
trailingstep = 3 //2 trailing step to move the "stoploss"
//reset the stoploss value
IF NOT ONMARKET THEN
newSL=0
ENDIF
//manage long positions
IF LONGONMARKET THEN
//first move (breakeven)
IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THEN
newSL = tradeprice(1)+trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND close-newSL>=trailingstep*pipsize THEN
newSL = newSL+trailingstep*pipsize
ENDIF
ENDIF
//manage short positions
IF SHORTONMARKET THEN
//first move (breakeven)
IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THEN
newSL = tradeprice(1)-trailingstep*pipsize
ENDIF
//next moves
IF newSL>0 AND newSL-close>=trailingstep*pipsize THEN
newSL = newSL-trailingstep*pipsize
ENDIF
ENDIF
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
Es ist schwierig, ohne die wirklich genaue Fehlermeldung zu antworten, aber versuchen Sie, die Zeilen 44 und 45 zu ändern mit:
UpperLevel = Highest[max(1,IntradayBarIndex - IndexStartDay + 1)](High)
LowerLevel = Lowest [max(1,IntradayBarIndex - IndexStartDay + 1)](Low)
Leider wars das nicht. Wo genau finde ich den Button um einen Bericht per Email zu schicken?
Oder haben Sie noch eine Idee?
Ich finde nirgends einen Fehlercode oder so. Die Plattform sagt mir nur, es wurde wegen einem Fehler gestoppt.
Hat das vielleicht etwas mit
Preloadbars=0
zu tun?
Was ist die Plattformversion? Das Tool für technische Berichte befindet sich im Menü Hilfe in der Software.
V10.3
Sehe ich später mal nach. Danke.
Ich habe einen Bericht per Mail gesendet. Kommt das bei Ihnen an @Nicolas?
Ich habe die Codes nochmal verglichen mit denen, die ähnlich hier auf der Plattform sind. Es muss irgendetwas mit meinen zugefügten Codes zu tun habe, denk ich. Bin leider kein Programmierer.
Entweder mein Supertrendstop oder der BE-Trailing-Code.
Versuchen Sie, Zeile 4 zu entfernen.
Möglicherweise sind nicht genügend Balken vorhanden, um SuperTrend und Highest / Lowest zu berechnen.
Ich habe Preloloadbars=20 gesetzt, damit scheint es zu funktionieren.
Vielen Dank.