Stratégie de retournement quantitatif basée sur MFI et MA


Date de création: 2023-12-27 14:42:16 Dernière modification: 2023-12-27 14:42:16
Copier: 5 Nombre de clics: 761
1
Suivre
1623
Abonnés

Stratégie de retournement quantitatif basée sur MFI et MA

Aperçu

Cette stratégie est une stratégie de trading en ligne courte qui utilise les indicateurs de MFI pour identifier les zones de survente et de survente, combinée à un filtrage MA pour déterminer la direction de la reprise des prix. Elle peut être efficace dans des marchés tels que les actions, les devises, les matières premières et les crypto-monnaies.

Principe de stratégie

La stratégie utilise l’indicateur MFI pour juger du phénomène de survente et de survente du marché. Lorsque les MFI entrent dans la zone de survente inférieure à 20, ils indiquent la zone de basse, où la valeur est sous-évaluée, et sont alors en hausse; lorsque les MFI entrent dans la zone de survente supérieure à 80, ils indiquent la zone supérieure, où les actifs sont surévalués, et sont alors en baisse.

Afin de filtrer les faux retournements, la stratégie a également introduit un indicateur de MA pour déterminer la direction de la tendance des prix. Un signal de négociation n’est généré que lorsque le prix est au-dessus ou au-dessous de la moyenne de la MA en même temps que le retournement de la MFI.

La logique de l’opération est la suivante:

  1. Les MFI ont franchi la barre des 20 et sont entrés dans la zone de survente, tandis que les cours de clôture ont atteint la ligne moyenne de la MA, générant un signal d’achat
  2. Les MFI ont franchi la barre des 80 et sont entrés dans la zone de survente, tandis que les cours de clôture ont chuté au-dessous de la moyenne MA, générant un signal de vente.

Ainsi, grâce à un filtre à double indice, il est possible d’identifier efficacement les occasions de revirement, et le signal d’entrée en jeu est plus fiable.

Avantages stratégiques

  1. Confirmation à double indicateur, prévention des fausses percées, fiabilité élevée du signal
  2. La technique classique et efficace de négociation est d’utiliser le renversement de zone de survente.
  3. Le filtrage de tendance est utilisé pour rendre les signaux plus précis et plus fiables.
  4. Adapté à de nombreux marchés et flexible

Risque stratégique

  1. Les marchés peuvent augmenter ou baisser de façon prolongée, entraînant des arrêts de pertes
  2. Attention au risque systémique pour éviter que des événements extrêmes ne provoquent de faux retournements
  3. La fréquence des transactions pourrait être plus élevée et les coûts de transaction devraient être maîtrisés

Comment réagir:

  1. Une plus grande marge de manœuvre pour les stratégies
  2. Si vous augmentez votre position, faites attention aux graphiques à plus grande échelle pour évaluer le risque systémique.
  3. Optimiser les paramètres pour réduire les transactions inutiles

Orientation de l’optimisation de la stratégie

  1. Optimiser les paramètres MA pour qu’ils correspondent aux caractéristiques des variétés négociées
  2. Optimiser les paramètres de surachat et de survente pour s’adapter aux différentes émotions du marché
  3. Les investisseurs ont été invités à s’engager dans une stratégie de gestion des positions afin d’améliorer la maîtrise des bénéfices.

Résumer

Cette stratégie, qui intègre des méthodes d’analyse classiques et des techniques modernes de quantification, présente une forte adaptabilité dans une variété de variétés grâce à des filtres stricts à double indice et constitue une stratégie de courte ligne générale recommandée.

Code source de la stratégie
/*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 **********