
La estrategia utiliza dos indicadores de línea de paridad para identificar la dirección de la tendencia y el momento de tomar más acciones. La línea de paridad lenta (la línea azul) se utiliza para determinar la dirección de la tendencia general, y la línea de paridad rápida (la línea roja) se utiliza en combinación con el canal de precios para descubrir el momento de tomar más acciones.
Calcula dos medias lentas. La media lenta tiene un ciclo de 21 para determinar la tendencia general; la media rápida tiene un ciclo de 5 en combinación con el canal de precios para descubrir el momento de negociar.
Calcular si el precio actual ha roto el canal del precio del ciclo anterior. Si el precio ha roto el canal, consideramos que es una oportunidad de negociación.
Calcula la dirección y el número de líneas K. Si las últimas N son raíces K negativas, es posible que sea el tiempo de la multiplicación; si las últimas N son raíces K positivas, es posible que sea el tiempo de la separación. La cantidad de N se configura con el parámetro de Bars.
La combinación de los factores mencionados anteriormente, emite una señal de corto plazo. Si el movimiento coincide con la dirección de la línea media lenta, y la línea media rápida o el canal de precios emite una señal, y la línea K también cumple con las condiciones, se emite una señal de negociación.
El uso de un sistema de doble línea permite un seguimiento eficaz de la dirección de la tendencia.
La combinación de la línea media rápida con el canal de precios permite detectar los puntos de ruptura con anticipación y aprovechar el momento de negociar.
La dirección y la cantidad de líneas K también deben ser consideradas para evitar ser atrapados en el mercado inverso.
Los parámetros de la línea media se pueden ajustar libremente para diferentes variedades y períodos.
Las líneas de paridad binaria son propensas a emitir señales erróneas en el lateral. Se puede usar el indicador de diferencia de precios o el indicador ATR para ayudar a juzgar, para evitar el comercio en situaciones de agitación.
También se puede utilizar en situaciones excepcionales. Se puede establecer un punto de parada adecuado para reducir las pérdidas individuales.
No se puede ser perfecto para evitar ser invertido. Seguiremos optimizando los mecanismos y parámetros para que la estrategia sea más estable.
El uso de indicadores auxiliares como el ADX, MACD, etc. para evitar errores de trading en situaciones de crisis.
Se puede calcular la expectativa de riesgo en función del ATR y establecer una proporción de pérdidas razonable.
La capacidad de adaptación de los parámetros de optimización. Se puede usar un método de aprendizaje automático para que el sistema optimice los parámetros.
Ajuste de los parámetros según las características de la variedad. Por ejemplo, los parámetros de las criptomonedas para un período más corto.
La estrategia en su conjunto es muy adecuada para seguir las tendencias. Al mismo tiempo, también aumenta la oportunidad de realizar operaciones de ruptura. La estrategia puede funcionar de manera estable en más mercados con una optimización razonable. Seguiremos mejorando y esforzándonos por convertirla en una estrategia de alta calidad y cuantificación a nivel comercial.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.9 Extreme", shorttitle = "Trend MAs str 1.9 extreme", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
src = useohlc4 == true ? ohlc4 : close
//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2
//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2
//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]
//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0
//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0
up2 = high < center and high < center2 and bar == -1 ? 1 : 0
dn2 = low > center and low > center2 and bar == 1 ? 0 : 0
//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")
//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)
//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')
//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]
longCondition = up == 1 or (up2 == 1 and needex == true)
if (longCondition)
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
strategy.exit("Stop Long", "Long", stop = stoplong)
shortCondition = dn == 1
if (shortCondition)
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
strategy.exit("Stop Short", "Short", stop = stopshort)