
Die Rock-Solid-Sea-Strategie ist eine quantitative Handelsstrategie, die dem Brady-Sea-Handel folgt. Sie verwendet die Methode des Preis-Breakouts, des Stop-Loss-Track-Stopp-Ausgangs, berechnet die Positionsgröße nach der tatsächlichen Breite und kontrolliert die Einzelschäden. Die Strategie funktioniert langfristig stabil und ist resistent gegen Rückschläge und Rücktritte, wie ein harter Stein.
Die Rock-Solid-Sea-Strategie setzt bei einem Breakout-Eintritt. Konkret berechnet sie den Höchst- und den Tiefstpreis innerhalb eines bestimmten Zeitraums anhand der eingegebenen Breakout-Zyklusparameter.
Wenn beispielsweise der Eintrittszyklus-Parameter auf 20 K-Linien festgelegt ist, wird die Strategie die höchsten und niedrigsten Preise der letzten 20 K-Linien extrahieren. Wenn der Schlusskurs der aktuellen K-Line höher ist als der Höchster Preis der letzten 20 K-Linien, wird die Strategie mehrere Stop-Orders an dieser Schlusskursposition ausstellen, bis der Höchster Eintrittspreis überschritten wird.
Die Rock-Solid-Sea-Strategie verfolgt die Stop-Loss-Ausgabe. Sie berechnet dynamisch den Höchst- und Tiefstpreis innerhalb eines bestimmten Zeitraums basierend auf den eingegebenen Ausgangszyklusparametern. Dies dient als Ausstiegskanal für die Strategie.
Wenn man mehrere Positionen hält, wird der Position ein Ausfall verpasst, wenn der Preis den niedrigsten Preis des Ausgangs aus dem Kanal überschreitet. Umgekehrt, wenn man eine Position frei hält, wird der Position ein Ausfall verpasst, wenn der Preis den höchsten Preis des Ausgangs aus dem Kanal überschreitet.
Die Strategie berechnet außerdem die Stop-Loss-Position als letzte Stop-Line auf Basis der realen Breite. Solange der Preis nicht den Exit Channel durchbricht, verfolgt die Stop-Loss-Position die Korrektur, um sicherzustellen, dass die Stop-Loss-Distanz genau richtig ist, weder zu radikal, was zu unnötigen Stop-Losses führt, noch zu weit, um die Verluste effektiv zu kontrollieren.
Die Rock-Solid-Sea-Strategie berechnet die Größe einer einzelnen Position anhand der tatsächlichen Breite. Insbesondere berechnet sie zunächst den Prozentsatz des potenziellen Verlusts in der Nähe des Einstiegspreises und schaltet die Größe der Position anhand der erwarteten Risikoparameter um. So kann der maximale Verlust pro Handel effektiv kontrolliert werden.
Die Rock-Solid-Strategie folgt den Regeln des Brady-Sea-Tradings, wobei die Einstiegs- und Ausstiegsregeln strikt und nicht willkürlich umgesetzt werden. Dies ermöglicht eine langfristige stabile Funktionsweise der Strategie, ohne dass die Systeme durch vorübergehende Fehleinschätzungen zum Absturz führen.
Die Strategie nutzt den Preis-Breakout-Eintritt, um das Risiko eines hohen Fault-Eintritts zu vermeiden und so die Möglichkeit von systemischen Verlusten zu verringern. Die Stop-Loss-Tracking-Strategie gewährleistet gleichzeitig die Kontrolle von Einzelschäden und verhindert so weit wie möglich die Rückgänge, die durch Folgeverluste verursacht werden.
Die Strategie berechnet die Position durch die tatsächliche Breite der Welle, kontrolliert den maximalen Verlust pro Handel streng im zulässigen Bereich und vermeidet die Risikoüberschuss, die durch einzelne große Verluste verursacht wird. Die Stop-Loss-Tracking-Methode stellt gleichzeitig sicher, dass die Stop-Loss-Distanz angemessen ist und die Risiken zeitnah und effektiv kontrolliert werden können.
Wenn ein Schwingungsabbruch ohne Ausmaß erfolgt, kann leicht ein falsches Signal erzeugt werden, was zu einem Fehlintritt des Systems führt. In diesem Fall müssen die Parameter angepasst und die Eintrittsbestätigungsbedingungen erhöht werden, um die Geräuschstörung zu vermeiden, die durch einen unwirksamen Durchbruch verursacht wird.
Die Parameter der Strategie, wie z. B. Eintritts- und Ausstiegszyklen, sind statisch eingestellt. Wenn sich die Marktbedingungen stark ändern, können diese Parameter-Einstellungen außer Kraft gesetzt werden. Die Parameter-Einstellungen müssen neu bewertet und optimiert werden, um sich an neue Marktbedingungen anzupassen.
Die Strategie verwendet technische Indikatoren wie Flags, um den Preis zu überschreiten. Diese technischen Indikatoren können ausfallen, wenn sich die Markttrends und die Schwankungsmuster erheblich ändern.
In der Strategie können auch die üblichen Trend-Kennzahlen wie MA, MACD usw. eingesetzt werden. Wenn Sie mehr tun, um einen Aufwärtstrend zu beurteilen, und wenn Sie weniger tun, um einen Abwärtstrend zu beurteilen, können Sie die Verluste durch Umkehrungen reduzieren.
Technische Indikatoren für die Zeiträume der höheren Stufe können eingeführt werden, um ein umfassendes Urteilsvermögen zu erlangen. Die Position der MA-Linie auf der Ebene 86400 zum Beispiel kann die allgemeine Richtung der Bewegung bestimmen und die Bedienungssignale auf der Zeitdiagramm weiter bestätigen.
Die Optimierung der Parameter auf Basis von historischen Daten und die Anpassung der Parameter an die Veränderungen der Marktumgebung in Echtzeit können durch Methoden wie maschinelles Lernen automatisch optimiert werden. Dies kann die Strategie anpassungsfähiger und stabiler machen.
Die Rock-Solid-Beach-Strategie folgt den klassischen Regeln des Beach-Handels, verfolgt die Stop-Loss-Off-Platz mit einem Preis-Breakout-Eintritt und einem Stop-Loss-Tracking, steuert das Risiko streng, kann langfristig stabil funktionieren und hat eine hervorragende Rückwärts-Rückwärts-Fähigkeit. Obwohl einige Risiken wie Durchbruchfehler, Parameterfehler und andere Risiken noch vorgebeugt werden müssen, können diese Risiken durch die Einführung von Trendurteilen, Zeitrahmenurteilen und dynamischen Parameteroptimierungen effektiv reduziert und die stabile Funktionsfähigkeit der Strategie erheblich verbessert werden.
/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Real Turtle", shorttitle = "Real Turtle", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity,calc_on_order_fills=false, slippage=25,commission_type=strategy.commission.percent,commission_value=0.075)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
// Use if using a specific date range
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//How many candles we want to determine our position entry
enterTrade = input(20, minval=1, title="Entry Channel Length")
//How many candles we want ot determine our position exit
exitTrade = input(10, minval=1, title="Exit Channel Length")
//True Range EMA Length
trLength = input(13, minval=1, title="True Range Length")
//Go all in on every trade
allIn = input(false, title="Use whole position on every trade")
dRisk = input(2, "Use Desired Risk %")
//How much of emaTR to use for TS offset
multiEmaTR = input(2, "Desired multiple of ema Tr (N)")
//absolute value (highest high of of this many candles - lowest high of this many candles) . This is used if we want to change our timeframe to a higher timeframe otherwise just works like grabbing high o r low of a candle
//True range is calculated as just high - low. Technically this should be a little more complicated but with 24/7 nature of crypto markets high-low is fine.
trueRange = max(high - low, max(high - close[1], close[1] - low))
//Creates an EMA of the true range by our custom length
emaTR = ema(trueRange, trLength)
//Highest high of how many candles back we want to look as specified in entry channel for long
longEntry = highest(enterTrade)
//loweest low of how many candles back we want to look as specified in exit channel for long
exitLong = lowest(exitTrade)
//lowest low of how many candles back want to look as specified in entry channel for short
shortEntry = lowest(enterTrade)
//lowest low of how many candles back want to look as specified in exit channel for short
exitShort = highest(exitTrade)
//plots the longEntry as a green line
plot(longEntry[1], title="Long Entry",color=green)
//plots the short entry as a purple line
plot(shortEntry[1], title="Short Entry",color=purple)
howFar = barssince(strategy.position_size == 0)
actualLExit = strategy.position_size > 0 ? strategy.position_avg_price - (emaTR[howFar] * multiEmaTR) : longEntry - (emaTR * multiEmaTR)
actualLExit2 = actualLExit > exitLong ? actualLExit : exitLong
actualSExit = strategy.position_size < 0 ? strategy.position_avg_price + (emaTR[howFar] * multiEmaTR) : shortEntry + (emaTR * multiEmaTR)
actualSExit2 = actualSExit < exitShort ? actualSExit : exitShort
//plots the long exit as a red line
plot(actualLExit2[1], title="Long Exit",color=red)
//plots the short exit as a blue line
plot(actualSExit2[1], title="Short Exit",color=yellow)
//Stop loss in ticks
SLLong =(emaTR * multiEmaTR)/ syminfo.mintick
SLShort = (emaTR * multiEmaTR)/ syminfo.mintick
//Calculate our potential loss as a whole percentage number. Example 1 instead of 0.01 for 1% loss. We have to convert back from ticks to whole value, then divided by close
PLLong = ((SLLong * syminfo.mintick) * 100) / longEntry
PLShort = ((SLShort * syminfo.mintick) * 100) / shortEntry
//Calculate our risk by taking our desired risk / potential loss. Then multiple by our equity to get position size. we divide by close because we are using percentage size of equity for quantity in this script as not actual size.
//we then floor the value. which is just to say we round down so instead of say 201.54 we would just input 201 as TV only supports whole integers for quantity.
qtyLong = floor(((dRisk / PLLong) * strategy.equity) /longEntry )
qtyShort = floor(((dRisk / PLShort) * strategy.equity) /shortEntry )
qtyLong2 = allIn ? 100 : qtyLong
qtyShort2 = allIn ? 100 : qtyShort
//Only open long or short positions if we are inside the test period specified earlier
if testPeriod()
//Open a stop market order at our long entry price and keep it there at the quantity specified. This order is updated/changed on each new candlestick until a position is opened
strategy.entry("long", strategy.long, stop = longEntry, qty = qtyLong2)
//sets up or stop loss order by price specified in our actualLExit2 variable
strategy.exit("Stoploss-Long", "long", stop=actualLExit2)
//Open a stop market order at our short entry price and keep it there at the quantity specified. This order is updated/changed on each new candlestick until a position is opened
strategy.entry("short", strategy.short, stop = shortEntry, qty = qtyShort2)
//sets up or stop loss order by price specified in our actualLExit2 variable
strategy.exit("Stoploss-Short", "short", stop=actualSExit2)