Quantitative Handelsstrategie mit mehreren Zeitrahmen basierend auf PSAR, MACD und RSI


Erstellungsdatum: 2023-12-27 16:12:57 zuletzt geändert: 2023-12-27 16:12:57
Kopie: 0 Klicks: 657
1
konzentrieren Sie sich auf
1623
Anhänger

Quantitative Handelsstrategie mit mehreren Zeitrahmen basierend auf PSAR, MACD und RSI

Überblick

Die Strategie ermöglicht den automatisierten Multi-Head-Handel über mehrere Zeiträume durch die Kombination von Parabolic SAR (Parallel-Line-Drehungs-Indikator), MACD (Indikator-Glatt-Moving-Average) und RSI (Relativ-Schwach-Indikator). Die Strategie ist hauptsächlich für den Tageshandel mit Aktien und Warenarten geeignet.

Strategieprinzip

  1. Der PSAR-Indikator wird verwendet, um die Richtung der Preise und die Trendwende zu bestimmen. Wenn die Punktzahl sinkt, ist dies ein Mehrkopfsignal, wenn die Punktzahl steigt, ein Leerkopfsignal.

  2. Der MACD-Indikator beurteilt die Preisbewegung. Die MACD-Linie und die SIGNAL-Linie brechen nach oben als Mehrkopfsignal und nach unten als Leerkopfsignal durch.

  3. Der RSI-Indikator beurteilt Überkauf und Überverkauf. Wenn der RSI über der Schwelle liegt, ist dies ein Mehrkopfsignal, wenn er unter der Schwelle liegt, ist dies ein Leerkopfsignal.

  4. Die Kombination der drei oben genannten Indikatoren bildet die letztendliche Entscheidung.

  5. Der Chop-Index ist ein Index, der sich an die Konsolidierung von Märkten anpasst, um Whipsaws zu vermeiden.

  6. Die dynamische Verwaltung von Risiken und Erträgen durch die Einstellung von Stop-Loss- und Stop-Off-Positionen erfolgt durch die Verwendung des Inverse-Pyramid-Prozess-Prinzips.

Strategische Vorteile

  1. Eine Kombination aus mehreren Indikatoren, um Trends, Dynamik und Überkauf-Überverkauf-Charakteristiken zu analysieren und die Entscheidungsgenauigkeit zu verbessern.

  2. Anpassung an die Merkmale des Marktes, Filterung durch den Chop Index auf die Konsolidierung des Marktes und Vermeidung von Abhängigkeiten.

  3. Risikomanagement und Ertragsdynamik durch die Umsetzung von Aktiven Stop-Loss-Stopps auf Basis von Reverse-Pyramid-Haufungen.

  4. Die Parameter sind individuell anpassbar und optimierbar und lassen sich leicht an unterschiedliche Sorten und Marktumgebungen anpassen.

  5. Es unterstützt mehrere Zeitrahmen und bietet Flexibilität für den täglichen Handel mit kurzen und mittleren Linien.

Risikoanalyse

  1. Die Entscheidung für die Mehrfach-Leerkopf-Anwendung hängt von der Einstellung der Parameter ab, und eine unsachgemäße Einstellung kann zu Fehlern führen.

  2. Die Wahrscheinlichkeit, dass ein Indikator ein falsches Signal aussendet, kann dazu führen, dass Entscheidungen gegen die Trends gerichtet werden.

  3. Der Stop-Loss-Stopp ist falsch eingestellt, was zu einem höheren Verlust oder geringeren Gewinn führen kann.

  4. Es ist notwendig, die Parameter häufig zu überwachen und anzupassen, was zu hohen Kosten für die menschliche Intervention führt.

Optimierungsrichtung

  1. Modellüberprüfungsmodule hinzugefügt, um die Parameter-Einstellungen und die Wirksamkeit der Signale zu bewerten.

  2. Die Erweiterung des Moduls “Machine Learning” zur automatischen Optimierung von Parametern und Modellen.

  3. Zugriff auf mehr Datenquellen, mehr Funktionsräume und bessere Entscheidungsfindung.

  4. Entwicklung automatisierter Überwachungs- und Wartungssysteme, um die Kosten für die menschliche Intervention zu senken.

  5. Erhöhung der Effektivität von Rückprüfungs- und Simulationsbewertungen und Prüfstrategien.

Zusammenfassen

Die Strategie ermöglicht regelbasierte automatisierte und quantifizierte Transaktionen durch die Verwendung einer Kombination verschiedener technischer Kennzahlen. Die Strategie bietet einen großen Optimierungsraum, ist skalierbar und eignet sich für Optimierungen wie Parameteranpassung, Funktionserweiterung und Maschinelles Lernen.

Strategiequellcode
/*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 **********