
La stratégie est basée sur le VWAP et l’EMA comme indicateur de la direction de la tendance, le VWAP représentant le prix typique et l’EMA200 représentant la tendance de la ligne médiane. Faire plus lorsque le prix est supérieur au VWAP et à l’EMA200 et faire moins lorsque le prix est inférieur au VWAP et à l’EMA200 est une stratégie de suivi de tendance typique.
La logique centrale de la stratégie est d’utiliser le VWAP et l’EMA pour déterminer la tendance des prix.
Par conséquent, la stratégie détermine d’abord si le prix est à la fois supérieur au VWAP et à l’EMA200, et plus si c’est le cas; si le prix est à la fois inférieur au VWAP et à l’EMA200, alors rien. Comme on peut le voir, la stratégie repose principalement sur le VWAP et l’EMA pour juger des décisions d’achat et de vente.
En outre, la stratégie a également mis en place un point d’arrêt de perte. Le stop-loss est fixé à 3,5% du prix d’entrée après le surplus, et à 1,4% du prix d’entrée après la perte. Le stop-loss est fixé à 2,5% du prix d’entrée après la perte et à 0,9% du prix d’entrée après la perte.
Le plus grand avantage de cette stratégie est qu’elle utilise VWAP et EMA pour déterminer les tendances de manière très fiable.
Par conséquent, la combinaison de l’utilisation de VWAP et d’EMA pour déterminer la tendance est très fiable. Lorsque les deux jugent la tendance, le taux de réussite des opérations est élevé.
De plus, le fait de mettre en place un point d’arrêt permettra d’éviter des pertes individuelles excessives.
Le risque principal de cette stratégie est que VWAP et EMA puissent émettre de faux signaux.
En outre, le paramètre de stop loss peut être mal réglé et le risque de pertes individuelles trop importantes est toujours présent.
Pour résoudre ce problème, nous pouvons optimiser les paramètres de VWAP et EMA afin qu’ils puissent mieux détecter le début d’une nouvelle tendance. Nous pouvons également définir des arrêts de rupture adaptatifs pour que les arrêts de rupture s’adaptent aux fluctuations des prix.
Cette stratégie peut être optimisée principalement dans les domaines suivants:
L’ensemble de la stratégie est une stratégie de suivi de tendance très fiable. Elle utilise le VWAP et l’EMA pour déterminer la direction de la tendance, l’idée est claire et simple.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//26m Binance BTCUSDTPERP
//@version=4
strategy("VWAP Trend Follower", initial_capital=100, overlay=true, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 90, currency = currency.USD )
/// INITIALISE STRATEGY ///
price=close[1]
vprice=vwap(price)
trend=ema(price, 200)
/// RISK MANAGEMENT ///
long_tp_inp = input(3.5, title='Long Take Profit %',step=0.1)/100
long_sl_inp = input(1.4, title='Long Stop Loss %',step=0.1)/100
short_tp_inp = input(2.5, title='Short Take Profit %',step=0.1)/100
short_sl_inp = input(0.9, title='Short Stop Loss %',step=0.1)/100
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
short_take_level = strategy.position_avg_price * (1 - short_tp_inp)
short_stop_level = strategy.position_avg_price * (1 + short_sl_inp)
//long_trailing = input(5, title='Trailing Stop Long',step=0.1) / 100
//short_trailing = input(5, title='Trailing Stop short',step=0.1) / 100
/// STRATEGY CONDITIONS ///
aLong= price > trend and price > vprice
entry_long = aLong and aLong[2] and aLong[1]
aShort= price < trend and price < vprice
entry_short = aShort and aShort[2] and aShort[1]
//exit_long =
//exit_short =
//entry_price_long=valuewhen(entry_long,close,0)
//entry_price_short=valuewhen(entry_short,close,0)
/// PLOTTING ///
plot(vprice, color=#5875E1, linewidth=2)
plot(trend, color=#D965E1, linewidth=1)
plotshape(series=aLong, color=#71E181,style=shape.labelup)
plotshape(series=aShort, color=#E18BA5,style=shape.labeldown)
//plot(long_take_level, color=#00E676, linewidth=2)
//plot(long_stop_level, color=#FF5252, linewidth=1)
//plot(short_take_level, color=#4CAF50, linewidth=2)
//plot(short_stop_level, color=#FF5252, linewidth=1)
/// PERIOD ///
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
//// STRATEGY EXECUTION ////
if testPeriod()
if strategy.position_size == 0 or strategy.position_size > 0
strategy.entry(id="Long", long=true, when=entry_long, comment="Long")
strategy.exit("Take Profit/ Stop Loss","Long", limit=long_take_level, stop=long_stop_level,comment="Exit Long")//,trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
// strategy.close(id="Long", when=exit_long, comment = "Exit Long")
if strategy.position_size == 0 or strategy.position_size < 0
strategy.entry(id="Short", long=false, when=entry_short, comment = "Short")
strategy.exit("Take Profit/ Stop Loss","Short", limit=short_take_level , stop=short_stop_level,comment = "Exit Short")//, trail_points=entry_price_short * short_trailing / syminfo.mintick, trail_offset=entry_price_short * short_trailing / syminfo.mintick)
// strategy.close(id="Short", when=exit_short, comment = "Exit Short")