
Cette stratégie permet de générer des signaux de trading en choisissant dynamiquement différents types de moyennes mobiles et en les combinant sur plusieurs périodes.
La stratégie permet de choisir les cinq moyennes mobiles SMA, EMA, TEMA, WMA et HMA et de définir la durée de la période de la moyenne. La stratégie trace différents types de moyenne en fonction de la dynamique choisie. Faire plus lorsque le cours de clôture monte au-dessus de la moyenne; Faire plus lorsque le cours de clôture baisse au-dessus de la moyenne.
Plus précisément, la stratégie définit d’abord le cycle de rétroévaluation en fonction des paramètres d’entrée. Ensuite, elle calcule cinq indicateurs de moyenne:
Selon le choix, tracez la moyenne correspondante. Lorsque le prix de clôture est supérieur à la moyenne, faites plus; lorsque le prix de clôture est inférieur à la moyenne, faites vide.
Cette stratégie permet de produire des signaux de négociation plus fiables en utilisant en combinaison différents types de courbes, ce qui permet d’aplanir les données de prix, de filtrer le bruit du marché et de permettre la personnalisation de la longueur des cycles de courbes, ce qui permet de négocier en fonction des tendances de différents cycles.
Le risque peut être réduit en optimisant:
Cette stratégie peut être optimisée dans les directions suivantes:
Par exemple, on peut ajouter un indicateur de capacité quantitative, qui ne génère des signaux de transaction que si le volume de transactions est élevé, et filtrer les fausses percées.
Il est possible de mettre en place des canaux qui ne s’ouvrent qu’une fois que le prix a franchi le canal. Il est possible de mettre en place des lignes de stop-loss qui permettent de faire un placement après que le prix a touché la ligne de stop-loss. Cela permet de réduire les pertes inutiles.
Il est possible d’ajuster la moyenne périodique en fonction de la dynamique de la situation du marché, d’utiliser la moyenne périodique longue lorsque la tendance est plus évidente, d’utiliser la moyenne périodique courte lors de la consolidation.
Il est possible d’ajuster la taille de la position en fonction des conditions de retrait, de réduire la position en cas de retrait et d’augmenter modérément la position en cas de profit.
La stratégie utilise une combinaison de plusieurs indicateurs de ligne moyenne, combinés à plusieurs périodes de temps, pour former un effet de suivi de tendance relativement stable. Il y a beaucoup de place pour l’optimisation de la stratégie.
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)
qty = input(100000000, "Buy quantity")
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])
len1 = input(7, minval=1, title="Period")
s=sma(close,len1)
e=ema(close,len1)
xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3
f_hma(_src, _length)=>
_return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
h = f_hma(close, len1)
w = wma(close, len1)
ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na
buy= close>ma
sell= close<ma
alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')
ordersize=floor(strategy.equity/close)
if testPeriod()
strategy.entry("long",strategy.long,ordersize,when=buy)
strategy.close("long", when = sell )