Esta estratégia integra múltiplos indicadores de EMA de prazo e julgamentos de padrões de linha K para alcançar captura de sinal relativamente sensível a longo prazo e saídas de stop-loss.
A estratégia baseia-se principalmente nos seguintes indicadores de avaliação:
EMA: utiliza 2 conjuntos de 13 e 21 ciclos de EMA para determinar o sinal de negociação quando o preço avança.
Padrão de linha K: julga a direção da entidade de linha K e a utiliza com o indicador EMA para filtrar falsas rupturas.
Resistência de suporte: construída pelos pontos mais altos nos últimos 10 ciclos para determinar se o avanço passa por esta área para melhorar a confiabilidade do sinal.
Rise in Time Division: 120 ciclo de fechamento está acima aberto para julgar como aumento na divisão de tempo, como um julgamento auxiliar.
As regras para a geração de sinais de negociação são:
Sinal de alta: A EMA rápida rompe a EMA lenta para cima com uma linha Yang K-line, fechar posição curta e abrir longa.
Sinal de baixa: EMA rápida quebra através de EMA lenta com uma linha Yin-linha K, posição longa plana.
Saída de stop loss: saída de stop loss na posição atual quando aparece o sinal de reversa.
Os riscos acima podem ser mitigados através de métodos como evitar otimização excessiva, seleção cuidadosa de parâmetros, controlo rigoroso do dimensionamento da posição.
A estratégia integra múltiplos julgamentos de EMA de período de tempo e de entidade de linha K para julgamentos de tendência relativamente confiáveis. Julgamentos auxiliares usando resistência de suporte e divisão de tempo garantem a qualidade do sinal. Usando sinais reversos para stop loss pode controlar efetivamente a perda de stop único. Otimizações futuras podem ser feitas através da introdução de modelos de aprendizado de máquina, paradas adaptativas, análise sentimental e módulos de gerenciamento de tamanho de posição para tornar a estratégia mais robusta.
/*backtest start: 2023-02-14 00:00:00 end: 2024-02-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100) open_long = 0 close_position = 0 last_long=close last_short=close //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=false //-----------------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) //--------------------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 //-------------------- 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 //=============Hull MA// show_hma = false hma_src = input(close, title="HullMA Source:") hma_base_length = input(8, minval=1, title="HullMA Base Length:") hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:") hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length))) //============ signal Generator ==================================// Period=input(title='Period', defval='120') ch1 = request.security(syminfo.tickerid, Period, open) ch2 = request.security(syminfo.tickerid, Period, close) // Signals// long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open)) short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open)) last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) ? 1 : -1 short_signal = crossover(last_short, last_long) ? -1 : 1 if (long_signal == 1) strategy.entry("Long Open", strategy.long) if (short_signal == -1) strategy.close("Long Open") if (long_signal[1] == 1 and short_signal[1] == 1) open_long := 1 close_position := 0 if (short_signal[1] == -1 and long_signal[1] == -1) open_long := 0 close_position := 1 plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10) plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10) //plot(0, title="Trigger", color=white) ///////////////////////////////////////////////////////////////////////////////////////////