Quantitative Umkehrstrategie basierend auf MFI und MA


Erstellungsdatum: 2023-12-27 14:42:16 zuletzt geändert: 2023-12-27 14:42:16
Kopie: 5 Klicks: 761
1
konzentrieren Sie sich auf
1623
Anhänger

Quantitative Umkehrstrategie basierend auf MFI und MA

Überblick

Die Strategie ist eine Short-Line-Trading-Strategie, bei der MFI-Indikatoren verwendet werden, um überkaufte und überverkaufte Bereiche zu identifizieren, kombiniert mit MA-Filtern, um die Richtung der Preisumkehr zu bestimmen. Es kann in Märkten wie Aktien, Devisen, Waren und Kryptowährungen wirksam sein.

Strategieprinzip

Die Strategie nutzt die MFI-Indikatoren, um die Überkauf-Überverkauf-Phänomene des Marktes zu beurteilen. Wenn MFI in die Überverkaufszone unter 20 geht, zeigt dies die untere Zone, in der der Wert unterbewertet ist, und dann ist es bullish. Wenn MFI in die Überkaufszone über 80 geht, zeigt es die obere Zone, in der die Vermögenswerte überbewertet sind und dann sind sie bullish.

Um falsche Umkehrungen zu filtern, wurde auch ein MA-Indikator eingeführt, der die Richtung der Kursentwicklung bestimmen soll. Das Handelssignal wird nur erzeugt, wenn der Preis gleichzeitig mit der MFI-Umkehrung auf oder unter der MA-Mittellinie steht.

Die Transaktionslogik lautet wie folgt:

  1. MFI brechen unter 20 und gehen in die Überverkaufszone, während die Schlusskursstation auf der MA-Gleichlinie steht und ein Kaufsignal erzeugt
  2. MFI-Kurs über 80 in Überkaufzone, Schlusskurs unter MA-Durchschnittslinie, Verkaufssignal

Auf diese Weise kann die Umkehrmöglichkeit durch eine Doppel-Indikator-Filterung effektiv identifiziert werden, wodurch ein Signal für den Einstieg zuverlässiger ist.

Strategische Vorteile

  1. Bestätigung mit doppelten Indikatoren, Vermeidung falscher Durchbrüche, hohe Signalsicherheit
  2. Die Umkehrung der Überkauf- und Überverkaufszone ist eine klassische und wirksame Handelstechnik
  3. Trend-Filter, um die Signale genauer zu machen
  4. Für verschiedene Märkte geeignet und flexibel

Strategisches Risiko

  1. Der Markt kann langfristig steigen oder fallen, was zu Stop-Losses führt.
  2. Systematische Risiken müssen berücksichtigt werden, um Fehlentscheidungen zu vermeiden
  3. Die Frequenz der Transaktionen ist möglicherweise höher und die Kosten für die Transaktionen müssen kontrolliert werden.

Wie man damit umgeht:

  1. Die Stop-Loss-Marge wird entsprechend gelockert und der Strategie wird mehr Raum eingeräumt.
  2. Vergrößern Sie Ihre Positionen, indem Sie sich auf ein größeres Diagramm konzentrieren und systemisches Risiko beurteilen.
  3. Optimierung der Parameter und Reduzierung der unnötigen Transaktionen

Richtung der Strategieoptimierung

  1. Optimierung der MA-Parameter, um mit den Eigenschaften der Handelsvariante zu übereinstimmen
  2. Optimierung von Überkauf- und Überverkauf-Parametern für unterschiedliche Marktstimmung
  3. Ein zusätzlicher Positionsmanagement-Mechanismus, um die Gewinne besser zu steuern

Zusammenfassen

Die Strategie, die klassische Analysemethoden mit modernen quantitativen Technologien integriert, zeigt eine starke Anpassungsfähigkeit bei verschiedenen Sorten durch strenge Doppel-Messwerter-Filterung und ist eine empfehlenswerte allgemeine Short-Line-Strategie.

Strategiequellcode
/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 1m
basePeriod: 1m
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]Thor for MFI", 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=1) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=1) * 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=0.5) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01    

i_MFI = input(3, title="MFI Length")
OB=input(100, title="Overbought Level")
OS=input(0, title="Oversold Level")
barsizeThreshold=input(.5, step=.05, minval=.1, maxval=1, title="Bar Body Size, 1=No Wicks")
i_MAFilter = input(true, title="Use MA Trend Filter")
i_MALen = input(80, title="MA Length")
// ********** 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 = true

// Trade only if intraday session is active

//=================Strategy logic goes in here===========================
 

MFI=mfi(close,i_MFI)
barsize=high-low
barbodysize=close>open?(open-close)*-1:(open-close)
shortwicksbar=barbodysize>barsize*barsizeThreshold
SMA=sma(close, i_MALen)
MAFilter=close > SMA



BUY = MFI[1] == OB and close > open and shortwicksbar and (i_MAFilter ? MAFilter : true)

SELL = MFI[1] == OS and close < open and shortwicksbar and (i_MAFilter ? not MAFilter : true) 

//Final Long/Short Condition
longCondition = BUY
shortCondition = SELL
 
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("Buy", strategy.long)
    strategy.exit("TP/SL", "Buy", 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("Sell", strategy.short)
    strategy.exit("TP/SL", "Sell", 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 **********