
La stratégie consiste à calculer une moyenne mobile simple rapide de 30 jours et une moyenne mobile simple lente de 33 jours pour les actions et à effectuer une entrée LONG ou SHORT lorsqu’elles se forment ou se forment. L’arrêt immédiat des pertes en cas de signal contraire. Cela permet de capturer efficacement les changements de tendance.
Le cœur de la stratégie est de calculer une moyenne rapide de 30 jours et une moyenne lente de 33 jours. La ligne rapide est plus réactive aux variations de prix, tandis que la ligne lente a un meilleur effet d’entraînement.
Grâce à cette conception rapide et linéaire, il est possible de générer des signaux de transaction au début d’une tendance et d’arrêter une perte lorsque le signal inverse apparaît, capturant ainsi efficacement la tendance des prix de la ligne moyenne et longue. En même temps, il est également possible d’éviter d’être confondu par les fluctuations excessives du marché.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Ces risques peuvent être contrôlés et réduits par des méthodes telles que l’optimisation des paramètres, la définition des points de perte et la négociation uniquement lorsque la tendance est claire.
Cette stratégie peut être optimisée dans les domaines suivants:
Grâce à des tests et à l’optimisation, il est possible d’améliorer continuellement les règles de la stratégie et d’obtenir des signaux de trading plus fiables dans différents environnements de marché.
Cette stratégie de rupture croisée bi-médian est plus simple et plus pratique dans l’ensemble. La combinaison de la moyenne rapide et de la moyenne lente permet d’identifier efficacement le début d’une tendance à la moyenne et à la longue ligne et de générer un signal de négociation plus fiable.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//future strategy
//strategy(title = "es1!_1minute_hull", default_qty_type = strategy.fixed, initial_capital=250000, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2, calc_on_order_fills=false, calc_on_every_tick=false,pyramiding=0)
//strategy.risk.max_position_size(2)
//stock strategy
strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=1000000, overlay = false)//, calc_on_order_fills=true, calc_on_every_tick=true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true,initial_capital=250000, default_qty_type = strategy.percent_of_equity)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.percent,commission_value=.005,default_qty_value=10000)
//strategy.risk.allow_entry_in(strategy.direction.long) // There will be no short entries, only exits from long.
testStartYear = 2010
testStartMonth = 1
testStartDay = 1
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testEndYear = 2039
testEndMonth = 1
testEndDay = 1
testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0)
testPeriod() =>
//true
time >= testPeriodStart and time <= testPeriodEnd ? true : false
fast_length = 30
slow_length = 33
ema1 = 0.0
ema2 = 0.0
volumeSum1 = sum(volume, fast_length)
volumeSum2 = sum(volume, slow_length)
//ema1 := (((volumeSum1 - volume) * nz(ema1[1]) + volume * close) / volumeSum1)
ema1 := ema(close,fast_length)
//ema2 := (((volumeSum2 - volume) * nz(ema2[1]) + volume * close) / volumeSum2)
ema2 := ema(close,slow_length)
plot(ema1,color=#00ff00, linewidth=3)
plot(ema2, color=#ffff00, linewidth=3)
go_long = crossover(ema1,ema2)
go_short = crossunder(ema1,ema2)
if testPeriod()
strategy.entry("long_ride", strategy.long, when=go_long)
strategy.entry("short_ride", strategy.short,when=go_short)
strategy.close("long_ride",when=go_short)
strategy.close("short_ride",when=go_long)