
La stratégie de suivi de la tendance des deux EMA est une stratégie de trading quantitative qui utilise deux indicateurs EMA pour déterminer la direction de la tendance des prix. Cette stratégie détermine la tendance des prix en calculant deux ensembles de paramètres différents pour l’indicateur EMA, combinant les signaux de la fourche et de la fourche.
La stratégie est basée sur deux ensembles d’EMAs, composés d’un ensemble EMA1 à période plus longue et d’un ensemble EMA2 à période plus courte. Le paramètre EMA1 est 21 et le paramètre EMA2 est 10. La stratégie calcule ces deux ensembles d’EMA sur une ligne de 4 heures comme période de référence.
Lorsque la courte période EMA2 est traversée par la plus longue période EMA1, un signal d’achat est généré. Cela indique que la tendance à court terme des prix s’intensifie et commence à entrer en hausse. Lorsque la courte période EMA2 est traversée par la plus longue période EMA1, un signal de vente est généré. Cela indique que la tendance à court terme à la hausse des prix est interrompue et commence à entrer en baisse.
Pour filtrer les signaux d’erreur, la stratégie définit deux ensembles d’indicateurs de forfait. Seuls les signaux des deux ensembles d’indicateurs sont déclenchés simultanément, ce qui permet de réduire efficacement les transactions erronées causées par les fluctuations de prix.
Ces risques peuvent être maîtrisés par les moyens suivants:
Il y a encore de la place pour optimiser cette stratégie:
Augmentation du portefeuille de modèles. Il est possible de créer un plus grand nombre de combinaisons d’indicateurs de paramètres différents, ce qui améliore la stabilité de la stratégie.
Augmentation des mécanismes d’arrêt des pertes. Définir des points d’arrêt raisonnables permettant de contrôler efficacement les pertes individuelles.
Optimisation dynamique des paramètres. Les paramètres de l’EMA peuvent être optimisés automatiquement en fonction des différentes conditions du marché.
Combiné avec l’apprentissage automatique. Utilisez des frameworks tels que Tensorflow pour former des modèles qui prédisent les tendances des prix en temps réel.
La stratégie de suivi de tendance à double fourche EMA est une stratégie de trading de tendance simple et pratique. Elle utilise les deux indicateurs EMA pour déterminer les tendances à court terme des prix afin de capturer les opportunités de tendance directionnelle.
/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() => true
// Component Code Stop
strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)
mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)
last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])
in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0
mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)
last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])
in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0
condlongx = in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)
condshortx = in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)
if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
strategy.entry("Long", strategy.long, comment="Long")
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0
strategy.close("Long",when = not Margin)
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
strategy.entry("Short", strategy.short, comment="Short", when = Margin)