
Cette stratégie utilise une moyenne mobile à deux vitesses, une moyenne mobile à 8 et une moyenne mobile à 21 cycles. Lorsque la moyenne mobile à court terme est portée sur la moyenne mobile à long terme, faites plus; lorsque la moyenne mobile à court terme est portée sur la moyenne mobile à long terme, faites moins.
La stratégie a également introduit des indices de pente sur les moyennes mobiles pour filtrer les intervalles sans tendance et ne générer des signaux de négociation que lorsque la tendance est plus évidente.
Le cœur de cette stratégie est la croisée des moyennes mobiles à court terme et des moyennes mobiles à long terme. Les moyennes mobiles à court terme permettent de capturer plus rapidement les tendances des changements de prix, tandis que les moyennes mobiles à long terme ont un meilleur effet de filtrage du bruit.
La stratégie a également un seuil d’inclinaison. Un signal de plus est généré uniquement si l’inclinaison est supérieure à la barre positive et un signal de moins est généré uniquement si l’inclinaison est inférieure à la barre négative. Cela permet de filtrer des intervalles sans tendance évidente, ce qui augmente la qualité du signal de négociation.
Plus précisément, la logique de génération de signaux de transaction de cette stratégie est la suivante:
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Pour ces risques, il est possible d’optimiser les choses de la manière suivante:
La stratégie peut également être optimisée dans les directions suivantes:
La stratégie de la double moyenne mobile est généralement simple et pratique, elle capture les différentes caractéristiques de la tendance à travers les paramètres de deux cycles de diffs, et les fusionne pour produire un signal de transaction. En même temps, l’introduction de la valeur de la pente de la pente améliore la qualité du signal. La stratégie peut être utilisée comme stratégie de base et étendue, avec beaucoup de place pour l’optimisation et l’expansion.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//written by sixpathssenin
//@version=4
strategy(title="Dual Moving Average",initial_capital=10000,overlay=true)
ma1= sma(close,8)
ma2= sma(close,21)
angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13)
i_lookback = input(2, "Angle Period", input.integer, minval = 1)
i_atrPeriod = input(10, "ATR Period", input.integer, minval = 1)
i_angleLevel = input(6, "Angle Level", input.integer, minval = 1)
i_maSource = input(close, "MA Source", input.source)
f_angle(_src, _lookback, _atrPeriod) =>
rad2degree = 180 / 3.141592653589793238462643 //pi
ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback)
ang
_angle = f_angle(ma2, i_lookback, i_atrPeriod)
plot(ma1,color=#FF0000)
plot(ma2,color=#00FF00)
crosso=crossover(ma1,ma2)
crossu=crossunder(ma1,ma2)
_lookback = 15
f_somethingHappened(_cond, _lookback) =>
bool _crossed = false
for i = 1 to _lookback
if _cond[i]
_crossed := true
_crossed
longcrossed = f_somethingHappened(crosso,_lookback)
shortcrossed = f_somethingHappened(crossu,_lookback)
long = longcrossed and _angle > angleCriteria
short= shortcrossed and _angle < -(angleCriteria)
if(long)
strategy.entry("Long",strategy.long)
if(short)
strategy.entry("short",strategy.short)