Diese Strategie kombiniert die Indikatoren Parabolic SAR, MACD und RSI, um automatisierten Long- und Short-Handel über mehrere Zeitrahmen hinweg zu implementieren.
Der PSAR-Indikator wird verwendet, um die Kursrichtung und die Trendumkehrpunkte zu bestimmen.
Der MACD-Indikator beurteilt die Kursdynamik. Eine MACD-Linie, die über die SIGNAL-Linie nach oben geht, ist ein Aufwärtssignal, während eine Abwärtslinie ein Bärensignal ist.
Der RSI-Indikator beurteilt überkaufte und überverkaufte Bedingungen.
Kombination von Signalen aus den oben genannten drei Indikatoren zur endgültigen Long/Short Entscheidung.
Adaptiv verwenden Sie den Chop-Index-Indikator, um konsolidierende Märkte auszufiltern, um Whipsaws zu vermeiden.
Verwenden Sie eine umgekehrte Pyramiden-Positionsgröße, um Risiken und Gewinnziele dynamisch zu verwalten.
Die Kombination mehrerer Indikatoren, die Trend, Momentum und Oszillatoren beurteilen, verbessert die Genauigkeit.
Anpassungsfähig an die Marktbedingungen, indem sie die konsolidierenden Märkte filtern, um nicht in Fallen zu geraten.
Dynamisches Risikomanagement und Gewinnmanagement durch umgekehrte Pyramidenpositionsgröße mit anpassungsfähigen Stopps und Limits.
Sehr anpassungsfähig mit einstellbaren Parametern für verschiedene Produkte und Marktumgebungen.
Unterstützung mehrerer Zeitrahmen, flexibel für kurzfristige Intraday- oder mittelfristige/langfristige Positionsgeschäfte.
Lange/kurze Entscheidungen hängen von Parameter-Einstellungen ab, die bei unangemessenem Verhalten Fehler verursachen können.
Möglichkeit falscher Signale, die zu Entscheidungen gegen den Trend führen.
Unangemessene Stop-Loss- und Take-Profit-Einstellungen können Verluste erhöhen oder Gewinne verringern.
Erfordert eine häufige Überwachung und Anpassung der Parameter, was zu hohen Kosten für menschliche Interventionen führt.
Hinzufügen eines Modellvalidierungsmoduls zur Bewertung der Parameter-Einstellungen und der Signalwirksamkeit.
Erhöhung des Moduls für maschinelles Lernen zur automatischen Optimierung von Parametern und Modellen.
Verwenden Sie mehr Datenquellen, um den Funktionsraum zu erweitern und Entscheidungen zu verbessern.
Entwicklung automatisierter Überwachungs- und Wartungssysteme zur Verringerung menschlicher Eingriffe.
Hinzufügen von Backtests und Simulationsbewertungen zur Validierung der Strategieleistung.
Diese Strategie realisiert automatisierten quantitativen Handel durch die Kombination von mehreren technischen Indikatoren Regel-basierte System. Mit großer Optimierung Raum und Flexibilität, ist es geeignet für Parameter-Tuning, Feature-Erweiterung und Machine-Learning-Verbesserungen, um den Live-Handel besser zu bedienen.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © vikris //@version=4 strategy("[VJ]Phoenix Force of PSAR +MACD +RSI", overlay=true, calc_on_every_tick = false,pyramiding=0) // ********** Strategy inputs - Start ********** // Used for intraday handling // Session value should be from market start to the time you want to square-off // your intraday strategy // Important: The end time should be at least 2 minutes before the intraday // square-off time set by your broker var i_marketSession = input(title="Market session", type=input.session, defval="0915-1455", confirm=true) // Make inputs that set the take profit % (optional) longProfitPerc = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01 shortProfitPerc = input(title="Short Take Profit (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01 // Set stop loss level with input options (optional) longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01 shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, defval=3) * 0.01 // ********** Strategy inputs - End ********** // ********** Supporting functions - Start ********** // A function to check whether the bar or period is in intraday session barInSession(sess) => time(timeframe.period, sess) != 0 // Figure out take profit price longExitPrice = strategy.position_avg_price * (1 + longProfitPerc) shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc) // Determine stop loss price longStopPrice = strategy.position_avg_price * (1 - longLossPerc) shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc) // ********** Supporting functions - End ********** // ********** Strategy - Start ********** // See if intraday session is active bool intradaySession = barInSession(i_marketSession) // Trade only if intraday session is active //=================Strategy logic goes in here=========================== psar = sar(0.02,0.02,0.2) c1a = close > psar c1v = close < psar malen = input(50, title="MA Length") mm200 = sma(close, malen) c2a = close > mm200 c2v = close < mm200 fast = input(12, title="MACD Fast EMA Length") slow = input(26, title="MACD Slow EMA Length") [macd,signal,hist] = macd(close, fast,slow, 9) c3a = macd >= 0 c3v = macd <= 0 rsilen = input(7, title="RSI Length") th = input(50, title="RSI Threshold") rsi14 = rsi(close, rsilen) c4a = rsi14 >= th c4v = rsi14 <= th chopi = input(7, title="Chop Index lenght") ci = 100 * log10(sum(atr(1), chopi) / (highest(chopi) - lowest(chopi))) / log10(chopi) buy = c1a and c2a and c3a and c4a ? 1 : 0 sell = c1v and c2v and c3v and c4v ? -1 : 0 //Final Long/Short Condition longCondition = buy==1 and ci <50 shortCondition = sell==-1 and ci <50 //Long Strategy - buy condition and exits with Take profit and SL if (longCondition and intradaySession) stop_level = longStopPrice profit_level = longExitPrice strategy.entry("My Long Entry Id", strategy.long) strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level) //Short Strategy - sell condition and exits with Take profit and SL if (shortCondition and intradaySession) stop_level = shortStopPrice profit_level = shortExitPrice strategy.entry("My Short Entry Id", strategy.short) strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level) // Square-off position (when session is over and position is open) squareOff = (not intradaySession) and (strategy.position_size != 0) strategy.close_all(when = squareOff, comment = "Square-off") // ********** Strategy - End **********