La stratégie consiste à calculer des moyennes mobiles de deux périodes différentes et à former des signaux d’achat et de vente en fonction de leurs fourches dorées.
La stratégie permet d’abord à l’utilisateur de choisir le type et la longueur de la moyenne mobile. Les types comprennent les SMA, EMA, VWMA, etc., tandis que la longueur détermine la périodicité de la moyenne.
Ensuite, deux moyennes mobiles sont calculées selon le choix de l’utilisateur. Si la ligne rapide traverse la ligne lente par le bas, formant une fourchette dorée, un signal d’achat est généré. Si la ligne rapide traverse la ligne lente par le haut, formant une fourchette morte, un signal de vente est généré.
Ainsi, lorsque le prix moyen à court terme est supérieur au prix moyen à long terme, il est considéré que le marché est en tendance à la hausse et devrait être acheté. Lorsque le prix à court terme est inférieur au prix à long terme, il est considéré que le marché est en tendance à la baisse et devrait être vendu.
Le risque peut être maîtrisé par l’optimisation appropriée des paramètres, la combinaison de signaux générés par d’autres indicateurs et la mise en place d’un stop-loss.
L’idée générale de la stratégie est simple et claire, elle forme un signal de négociation en calculant des lignes biunivoques, permet d’ajuster les paramètres de manière flexible en fonction de l’environnement du marché et d’optimiser d’autres combinaisons de stratégies, mais elle nécessite une attention particulière à la prévention des risques de choc sur le marché et une gestion rationnelle des fonds.
/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)
//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3
//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))
//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
plot(ma, color = blue, linewidth = 3, transp = 0)
trend = low > ma ? 1 : high < ma ? -1 : trend[1]
longCondition = trend == 1 and trend[1] == -1
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
strategy.entry("Short", strategy.short)