Esta estratégia usa principalmente a cruz de ouro e a cruz morta das médias móveis e o avanço do candelabro das médias móveis para tomar decisões longas e curtas.
Calcular duas médias móveis, EMA1 e EMA2, com períodos diferentes.
Determine se a EMA1 cruza a EMA2, se sim, vá longo.
Determine se a EMA1 cruza abaixo da EMA2, se for sim, vá para curto.
Determinar se o preço de fechamento atravessa a EMA1 como sinal de entrada.
Mecanismo de saída: definir stop loss fixo ou utilizar o canal de Donchian para definir stop loss.
Funções principais utilizadas:
Lógica simples, fácil de entender e implementar.
Utilize a tendência de seguir a característica das médias móveis para rastrear efetivamente as tendências.
Combinando o avanço do preço de fechamento do candelabro ajuda a evitar falsos avanços.
Utilização flexível de diferentes combinações de médias móveis adaptáveis a diferentes períodos.
O mecanismo de stop loss controla o risco.
Frequentes cruzadas de ouro e cruzadas mortas durante a consolidação do mercado causam problemas.
Os pontos de stop loss fixos podem ser demasiado rígidos para serem ajustados com base nas alterações do mercado.
As médias móveis estão atrasadas e podem perder sinais de reversão em pontos de virada.
Julgamento preciso da inclinação média móvel necessária para filtrar falsos avanços.
A selecção de parâmetros requer cautela, uma frequência inadequada ou um atraso podem afetar o desempenho da estratégia.
O cruzamento da linha zero do MACD pode ajudar a determinar as tendências e a filtrar as consolidações.
Adicionar o canal Donchian para a linha de stop loss dinâmica para melhorar a stop loss fixa.
Adicionar Bandas de Bollinger para julgar tendências fortes ou fracas, evitando negociações ineficazes durante as consolidações de mercado.
Otimizar as combinações de parâmetros da média móvel e testar o desempenho real de diferentes estratégias de período.
Considere a adição de médias móveis ancoradas para reduzir o atraso.
A lógica geral desta estratégia é simples e clara, utilizando técnicas clássicas de negociação de crossover de média móvel e combinando breakout de velas para entrada para filtrar efetivamente sinais falsos.
/*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) ///////////////////////////////////////////////////////////////////////////////////////////