Une stratégie de suivi automatique basée sur le triple SMA


Date de création: 2024-01-26 15:05:58 Dernière modification: 2024-01-26 15:05:58
Copier: 1 Nombre de clics: 640
1
Suivre
1617
Abonnés

Une stratégie de suivi automatique basée sur le triple SMA

Aperçu

La stratégie de triple SMA est une stratégie de jugement de tendance et d’entries basée sur des moyennes mobiles simples de trois périodes différentes. Elle permet de suivre automatiquement la tendance et d’utiliser le rebond de la tendance pour accroître la position.

Principe de stratégie

La stratégie utilise trois SMA de différentes périodes comme indicateurs principaux de jugement de la tendance, y compris les SMA de 200 cycles, 400 cycles et 600 cycles. Le prix est jugé comme tendance à la hausse lorsque le prix est au-dessus des trois SMA, et vice versa comme tendance à la hausse.

L’indicateur de StochClose est utilisé pour juger si un prix est en survente ou en survente. Le StochClose est utilisé pour juger si un prix est en survente ou en survente lorsque le StochClose est en hausse à 95 et en baisse à 5.

La norme de stop loss est la stop loss lorsque le prix touche le SMA le plus lent.

La stratégie peut être mise en place jusqu’à 10 fois. Elle est réglée sur trois niveaux de stop, à 1%, 2% et 6%.

Analyse des avantages

Le plus grand avantage d’une stratégie de triple SMA est qu’elle permet de mieux juger de la direction et de la force d’une tendance en combinant trois SMA de différentes périodes. Elle a une plus grande capacité de filtrage des faux signaux que le seul SMA.

De plus, en combinant l’indicateur StochClose pour déterminer si une survente est surachetée, il est possible d’éviter d’entrer dans une position proche d’un renversement de tendance, ce qui réduit les entrées erronées.

Le critère de stop loss est simple et direct, en utilisant le SMA le plus lent comme ligne de stop loss, ce qui permet d’éviter au maximum les stop loss prématurés.

La possibilité d’une prise de position permet également à la stratégie de suivre la tendance et de réaliser des bénéfices.

Analyse des risques

Le principal risque de cette stratégie est que les trois SMA ne puissent pas filtrer complètement tous les faux signaux, ce qui peut entraîner des pertes si la tendance ne se forme pas à nouveau après la rupture. Cela se produit généralement à proximité d’une résistance de support importante.

En outre, l’indicateur StochClose lui-même peut générer des signaux erronés, entraînant des entrées inappropriées.

Pour réduire ces risques, il est possible d’ajuster la fréquence de la SMA; ou d’ajouter d’autres indicateurs pour un jugement combiné, tels que KDJ, MACD, etc., pour assurer la qualité du signal entrant.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Augmenter ou ajuster le nombre de cycles du SMA pour trouver le paramètre de cycle le plus approprié pour une variété spécifique

  2. Ajout d’autres indicateurs pour un jugement combiné, tels que KDJ, MACD, etc., pour améliorer la qualité des entrées

  3. Optimisation des stop loss standards pour les rendre plus adaptés aux fluctuations du marché

  4. Optimiser le nombre et le pourcentage de prises de position pour trouver les stratégies de prise de position les plus appropriées

  5. Tester différents paramètres de variété afin d’adapter les paramètres de stratégie à plus de variétés

Résumer

La triple SMA est une stratégie de suivi de tendance très pratique dans l’ensemble. Elle permet de mieux juger les tendances en appliquant une combinaison de trois SMA de différentes périodes et d’indicateurs StochClose, ce qui permet d’éviter efficacement les signaux erronés.

Code source de la stratégie
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Tripla Sma with entries based on sma price closes ", shorttitle="TRIPLE SMA STRATEGY", overlay=true) ////resolution=""
len = input(200, minval=1, title="sma 1 length")
len1 = input(400, minval=1, title="sma 2 length")
len2 = input(600, minval=1, title="sma 3 length")
src = input(close, title="Source")
////////////////////////////////////////////
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

up = smma > smma [1]
down =smma < smma[1]
mycolor = up ? #64b5f6 : down ? #d32f2f : na
fastma = sma(hl2, 1)

fastplot = plot(fastma, color=#000000, transp=100, title='sma on candle')
slowplot = plot(smma, color=mycolor, transp=55, title='sma1')

////////////////////////////////////////////
smma1 = 0.0
smma1 := na(smma1[1]) ? sma(src, len1) : (smma1[1] * (len1 - 1) + src) / len1

up2 = smma1 > smma1 [1]
down2 =smma1 < smma1[1]

mycolor2 = up2 ? #64b5f6 : down2 ? #d32f2f : na
slowplot2 = plot(smma1, color=mycolor2, transp=45, title='sma2')

////////////////////////////////////////////
smma2 = 0.0
smma2 := na(smma2[1]) ? sma(src, len2) : (smma2[1] * (len2 - 1) + src) / len2

up3 = smma2 > smma2 [1]
down3 =smma2 < smma2[1]

mycolor3 = up3 ? #64b5f6 : down3 ? #d32f2f : na
slowplot3 = plot(smma2, color=mycolor3, transp=35, title='sma3')

////////////////////////////////////////////////////////////////////////////////////////
//Fill gaps
fillData = smma > fastma
fillData2 = smma < fastma

fillDtat = smma1 > smma
fillDtat2 = smma1 < smma

fillDat = smma2 > smma1
fillDat2 = smma2 < smma1


fillCol1 = fillData ? #ef5350 : fillData2 ? #64b5f6 : na
fillCol2 = fillDtat ? #ef5350 : fillDtat2 ? #64b5f6 : na
fillCol3 = fillDat ? #ef5350 : fillDat2 ? #64b5f6 : na


fill(slowplot, fastplot, color=fillCol1, transp=90, title="sma1 fill")
fill(slowplot, slowplot2, color=fillCol2, transp=80, title="sma2 fill")
fill(slowplot2, slowplot3, color=fillCol3, transp=60, title="sma3 fill")

uc = (close > smma) and (close > smma1)
dc = (close < smma) and (close < smma1)

barColor = uc ? #64b5f6 : dc ? #e91e63 : #b2b5be
barcolor(color=barColor)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//StochClose from @trendinvestpro 
periods = input(50, minval=1, title="length for the oscillator")
smooth = input(5, minval=1, title="oscillator smoothing")
hhc=highest(close,periods)
llc=lowest(close,periods)
StochClose = sma((close-llc)/(hhc-llc)*100, smooth)

shortline = input(95, minval=0, title="signal when oscillator crosses above")
longline = input(5, minval=0, title="signal when oscillator crosses below")

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
longs = close > smma2
shorts = close < smma2



long = longs == true and crossunder(StochClose, longline)
short = shorts == true and crossover(StochClose, shortline)

stoplong = close < smma and close < smma1 and close < smma2
stopshort = close > smma and close > smma1 and close > smma2

p1 = strategy.position_avg_price / 100 / syminfo.mintick

maxx = input(2500, title="max orders filled on a day", minval=0)
takeprofit1 = input(1, title="take profit level 1", minval=0)
takeprofit2 = input(2, title="take profit level 2", minval=0)
takeprofit3 = input(6, title="take profit level 3", minval=0)

takeprofitqt1 = input(30, title="take profit quantity first", minval=0)
takeprofitqt2 = input(30, title="take profit quantity second", minval=0)
takeprofitqt3 = input(30, title="take profit quantity third", minval=0)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////Strategy entries/////////////////////////////////////////////////////////////////////////////////////////
// strategy.risk.max_intraday_filled_orders(maxx)
strategy.entry("long", strategy.long, when=long)
strategy.exit("tpl1", "long", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "long", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "long", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("long", when=stoplong == true)


strategy.entry("short", strategy.short, when=short)
strategy.exit("tpl1", "short", qty_percent = takeprofitqt1, profit = takeprofit1 * p1)
strategy.exit("tpl2", "short", qty_percent = takeprofitqt2, profit = takeprofit2 * p1)
strategy.exit("tpl3", "short", qty_percent = takeprofitqt3, profit = takeprofit3 * p1)
strategy.close("short", when=stopshort == true)