Estratégia de combinação de padrões de candlestick e rompimento de EMA multi-tempo


Data de criação: 2024-02-21 15:00:06 última modificação: 2024-02-21 15:00:06
cópia: 0 Cliques: 585
1
focar em
1617
Seguidores

Estratégia de combinação de padrões de candlestick e rompimento de EMA multi-tempo

Visão geral

Esta estratégia combina os indicadores do EMA do quadro de tempo múltiplo com o julgamento de forma de linha K, permitindo a captura de sinais de linha longa e a saída de perda mais sensíveis.

Princípio da estratégia

A estratégia baseia-se nos seguintes indicadores:

  1. EMA mediana: utiliza 13 ciclos, 21 ciclos 2 grupos de EMA, para determinar a ruptura de preços para formar um sinal de negociação.

  2. Forma da linha K: determina a direção da entidade da linha K. Utilizado em conjunto com o indicador EMA, filtrando a falsa ruptura.

  3. Resistência de suporte: construída com base no pico mais recente de 10 ciclos, julga-se que a ruptura aumenta a confiabilidade do sinal através dessa região.

  4. Tempo de subida: 120 períodos de fechamento do preço de fechamento acima do preço de abertura de negociação, como julgamento auxiliar.

As regras de geração de sinais de transação são:

  1. Multi-cabeça: EMA rápida para cima, quebra a EMA lenta, e para a linha K do sol, feche o estoque aberto.

  2. Sinal de cabeça vazia: EMA rápida para baixo, quebra EMA lenta, e para a linha K de cadência, para eliminar a posição.

  3. Parar para sair: Parar para sair da posição atual quando o sinal de contra-mão é emitido.

Vantagens estratégicas

  1. Indicadores de EMA de múltiplos quadros temporais, para julgar tendências com mais confiança e evitar falsas rupturas.
  2. A combinação com a direção da entidade de linha K permite uma filtragem mais precisa para identificar tendências.
  3. Aumentar o julgamento de tempo e apoiar o julgamento de resistência para garantir a qualidade do sinal.
  4. O método de “stop loss” (para reduzir o risco de perdas) é a contrapartida.

Risco estratégico

  1. O risco de perda de uma falha de ruptura. Mesmo com a introdução do multi-frame EMA e o julgamento da linha K, não é possível evitar completamente o impacto da falha de ruptura na estratégia.
  2. Risco de seleção de parâmetros. A configuração inadequada de parâmetros como o ciclo EMA, o ciclo de julgamento da linha K, pode levar à diminuição da qualidade do sinal.
  3. Risco de falha de resistência de suporte. Falha de resistência de suporte histórico é uma situação comum, que também pode levar a um sinal de insuficiência de impulso quando produzido.
  4. Risco de falha horária. As situações são variáveis e não podem ser avaliadas exclusivamente por intervalos de tempo.

Os riscos acima podem ser mitigados evitando otimização excessiva, selecionando cuidadosamente os parâmetros e controlando rigorosamente o tamanho da posição.

Direção de otimização da estratégia

  1. A introdução de um modelo de aprendizagem de máquina para auxiliar o julgamento. O modelo de classificação pode ser treinado para julgar a direção da entidade da linha K, aumentando a precisão do julgamento.
  2. Aumentar os mecanismos de parada de perda adaptativos, como o trailing stop ou o stop baseado na taxa de flutuação
  3. Combinando a análise emocional, introduzir um mecanismo de julgamento da opinião da mídia para evitar que as notícias negativas importantes influenciem a estratégia.
  4. A adição de módulos de gerenciamento de posições. Como a introdução de proporções de posições fixas ou módulos de regulação de posições baseados em gerenciamento de fundos.

Resumir

Esta estratégia integra o indicador de EMA do multi-quadro temporal com o julgamento da entidade da linha K, permitindo um julgamento de tendências mais confiável. Ao mesmo tempo, combina a resistência de suporte com a situação de tempo para auxiliar e garantir a qualidade do sinal.

Código-fonte da estratégia
/*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)

///////////////////////////////////////////////////////////////////////////////////////////