
Esta estrategia utiliza principalmente la línea de movimiento de la media de la forca de oro y la línea de K para tomar decisiones sobre la brecha de la media. Haga más cuando la línea de movimiento de la media de movimiento de corto plazo es más que la de movimiento de la media de movimiento de largo plazo, y haga una brecha cuando la línea de movimiento de corto plazo es más que la de movimiento de la media de largo plazo.
Calcular las medias móviles de dos períodos diferentes EMA1 y EMA2. EMA1 es corto y EMA2 es largo.
En el caso de EMA1 y EMA2, se puede hacer más.
Determine si el EMA1 está bajo el EMA2 y, si lo está, haga un vacío.
La señal de entrada para determinar si el precio de cierre ha roto la EMA1 es:
Mecanismo de salida de stop loss: establezca un punto de parada fijo o establezca un stop loss a través del canal Donchian.
Las funciones principales son:
La idea de la estrategia es simple y fácil de entender.
Utilizando las características de seguimiento de tendencias de un sistema lineal promedio, se puede seguir la tendencia de manera efectiva.
La combinación de la ruptura con el cierre de la línea K como momento de entrada, puede evitar una falsa ruptura.
La combinación lineal de diferentes parámetros se puede aplicar con flexibilidad para adaptarse a diferentes períodos.
Se puede configurar un mecanismo de control de riesgo Stop Loss.
Cuando el mercado se encuentra en una situación de agitación, la línea media generará frecuentes señales de horquilla dorada y se detendrá fácilmente.
El punto de parada fijo puede ser demasiado rígido y no puede ajustarse a los cambios en el mercado.
Los sistemas de línea media son más atrasados y son más propensos a perder la señal de reversión en los puntos de cambio de tendencia.
Se requiere un cálculo preciso de la inclinación de la línea media para filtrar las falsas rupturas.
Se deben elegir los parámetros con cuidado, ya que las combinaciones de parámetros demasiado frecuentes o atrasadas afectarán la eficacia de la estrategia.
Se puede utilizar el cruce del eje cero del indicador MACD para determinar la tendencia y filtrar la oscilación.
Se puede agregar el canal Donchian para establecer una línea de stop-loss dinámica y mejorar el problema de stop-loss fijo.
Se puede usar el indicador de la banda de Brent para determinar tendencias fuertes y débiles, evitando que los mercados en crisis no sean válidos.
Optimización de combinaciones de parámetros de la línea media para probar el efecto real de las diferentes estrategias de ciclo.
Se puede considerar la inclusión de una media móvil fija para evitar el retraso.
La idea general de esta estrategia es simple y clara, utiliza la estrategia de negociación de forks y forks de oro y oro de línea uniforme, y al mismo tiempo combina la brecha de la línea K para entrar en juego y filtrar eficazmente las señales falsas. El espacio para la optimización consiste en utilizar otros indicadores para determinar la fortaleza de la tendencia, establecer paradas dinámicas, etc. En general, la estrategia de seguimiento de tendencias clásica basada en la línea uniforme es fácil de entender y vale la pena explorar su espacio de optimización.
/*backtest
start: 2023-09-01 00:00:00
end: 2023-10-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='Mega crypto bot strategy', shorttitle='megacryptobot_Strategy', overlay=true, pyramiding=0, initial_capital=10000, currency=currency.USD)
//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")
//-----------------Support and Resistance
RST = input(title='Support / Resistance length:', defval=10)
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)
//--------------------Trend colour ema------------------------------------------------//
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0 ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)
//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0 ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)
//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")
//============ signal Generator ==================================//
period = input('720')
ch1 = request.security(syminfo.tickerid, period, open)
ch2 = request.security(syminfo.tickerid, period, close)
longCondition = crossover(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (longCondition)
strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (shortCondition)
strategy.entry("SELL", strategy.short)
///////////////////////////////////////////////////////////////////////////////////////////