La estrategia consiste en calcular los promedios móviles de dos períodos diferentes y formar las señales de compra y venta en función de su horquilla dorada.
La estrategia primero permite al usuario elegir el tipo y la duración de la media móvil. Los tipos incluyen SMA, EMA, VWMA, etc., mientras que la longitud determina el período de la media.
Luego se calculan dos promedios móviles según la elección del usuario. Si la línea rápida atraviesa la línea lenta desde abajo, formando un tenedor, se genera una señal de compra. Si la línea rápida atraviesa la línea lenta desde arriba y abajo, formando un tenedor muerto, se genera una señal de venta.
Así, cuando el precio medio a corto plazo es superior al precio medio a largo plazo, se considera que el mercado está en tendencia al alza y se debe comprar. Cuando el precio a corto plazo es inferior al precio a largo plazo, se considera que el mercado está en tendencia a la baja y se debe vender.
Se puede controlar el riesgo mediante la optimización adecuada de los parámetros, la combinación de otras señales de generación de indicadores, el establecimiento de paradas de stop loss, etc.
La idea general de la estrategia es simple y clara, la formación de señales de negociación mediante el cálculo de dos líneas de equilibrio, los parámetros de ajuste flexible en función de la situación del mercado, y otras combinaciones de estrategias optimizadas, pero se debe tener en cuenta la prevención de riesgos de los mercados turbulentos, la gestión racional de fondos. En general, es una opción que vale la pena considerar.
/*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)