
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.
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:
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.
Comment réagir:
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.
/*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 **********