Combinação de média móvel dupla sobreposta Estratégia de negociação de K-line de similaridade e diferença estocástica


Data de criação: 2023-10-27 17:00:04 última modificação: 2023-10-27 17:00:04
cópia: 3 Cliques: 615
1
focar em
1617
Seguidores

Combinação de média móvel dupla sobreposta Estratégia de negociação de K-line de similaridade e diferença estocástica

Visão geral

Esta estratégia permite uma negociação de curto prazo e eficiente, identificando oportunidades de reversão de tendência usando uma combinação de indicadores de média dupla e estocástica. A estratégia opta por fazer um curto prazo quando o preço entra em uma área de sobrecompra e venda; a estratégia opta por fazer um longo prazo quando o preço entra em uma área de venda para capturar a reversão da tendência da linha curta.

Princípio da estratégia

A estratégia baseia-se principalmente na combinação de uso de médias duplas e indicadores estocásticos.

As médias duplas são compostas por médias móveis rápidas, médias móveis lentas e médias móveis superlentos. Quando a média móvel rápida é cruzada pela média móvel lenta, é considerada um sinal de compra. Quando a média móvel rápida é cruzada pela média móvel lenta, é considerada um sinal de venda.

O indicador estocástico contém os valores K e D. O valor K representa a posição do preço de encerramento atual em relação ao preço máximo e mínimo em N dias. O valor D é a média móvel simples de M dias do valor K. Os valores K e D acima de 80 são considerados super-comprados e menores de 20 são considerados super-vendidos.

Esta estratégia combina a dupla média e o indicador estocástico, e quando o indicador estocástico mostra uma área de sobrevenda ou sobrevenda, o treeview vê se está de acordo com o sinal de dupla média e, se estiver de acordo, escolhe o ponto para inverter a negociação, na esperança de capturar o ponto de viragem da tendência da linha curta.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A combinação usa uma média dupla sobreposta e um indicador estocástico para identificar pontos de reviravolta de tendências em linha curta e curta ao mesmo tempo.

  2. O indicador Stochastic usa sinais de overbought e oversold para selecionar oportunidades de negociação de inversão de média dupla mais eficazes.

  3. As regras da estratégia de negociação são claras e fáceis de implementar.

  4. Parâmetros de horários e meses de negociação ajustáveis para diferentes variedades e períodos de tempo.

  5. Estabeleça um stop loss para controlar o risco.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. As médias duplicadas podem produzir falsas rupturas, e os indicadores estocásticos podem apresentar uma forma de linha K heterogênea inválida, resultando em erros de sinal de negociação. Os parâmetros podem ser ajustados de acordo com o caso, ou outros indicadores podem ser adicionados para verificação de combinação.

  2. Baseado apenas em indicadores técnicos, sem levar em conta os fatores fundamentais, é propenso a falhar quando ocorrem eventos econômicos importantes. Pode ser incluído no controle de risco de eventos econômicos.

  3. A dificuldade de entender o momento exato em que a média móvel se inverte pode causar um problema de parada pequena ou grande demais. A estratégia de parada deve ser otimizada.

  4. A configuração inadequada dos parâmetros pode levar a uma frequência de negociação excessiva ou má eficácia do sinal. Os testes de otimização de parâmetros devem ser feitos para diferentes variedades e períodos.

  5. Só é adequado para negociação de curto prazo, não para a posse de longo prazo. O tamanho da posição deve ser controlado.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Teste mais combinações de indicadores, como KDJ, MACD, etc., para aumentar a eficácia do sinal.

  2. A análise de indicadores de volume de transação é utilizada para evitar falsas rupturas.

  3. Optimizar os parâmetros de média dupla para identificar pontos de reversão mais precisos.

  4. Otimizar a estratégia de stop loss para reduzir a probabilidade de que o stop loss seja acionado

  5. Aumentar o módulo de controle de risco de eventos econômicos para evitar o impacto de eventos significativos nas transações.

  6. Otimizar automaticamente os parâmetros usando técnicas de aprendizagem de máquina para melhorar a adaptabilidade dos parâmetros.

  7. Re-analisar em mais variedades e ciclos para encontrar a melhor direção de aplicação.

Resumir

Esta estratégia, através de uma combinação de dupla sobreposição de média e Stochastic heterogêneo K-line forma, alcança o objetivo de negociar no meio de curta linha tendência inversa. Em comparação com o uso de um indicador sozinho, a estratégia pode melhorar a rentabilidade dos trades, e a estratégia regras claras e fáceis de operar. Mas a estratégia também existe um certo risco, a necessidade de parâmetros e parar de perda de otimização, e adicionar mais indicadores de verificação e meios de controle de risco.

Código-fonte da estratégia
/*backtest
start: 2022-10-26 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Intraday Stochiastic Strategy", shorttitle="Intraday Stochiastic Strategy", overlay=true, initial_capital = 1000)
//WORKS FOR BTCUSD M30
//OBVERVED GOOD PERFORMANCES FOR SELL MODE M15 : US30USD / UK100GBP / JP225USD / SPX500USD / BCOUSD / EURGBP
//Best Forex Hours are 7-21
//0 is Long Position
//1 is Short Position
//2 No position
mode=input(1, maxval=2, title="Mode")
lossLimit=input(10000, maxval=10000, title="Loss Limit")
hourStart=input(2, maxval=24, title="Hour Start")
hourStop=input(13, maxval=24, title="Hour Stop")

//Month selected for back testing. 0 is maximum number of months
monthSelected = input(0, maxval=12, title="Month Selected")

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

fast = 20, slow = 50, ultraSlow = 200
fastMA = sma(close, fast)
slowMA = sma(close, slow)
ultraSlowMA = sma(close, ultraSlow)

colorFast = red
colorSlow = black
colorUltraSlowMA = purple

if(timeframe.period == "1" or timeframe.period == "3" or timeframe.period == "5" or timeframe.period == "15" or timeframe.period == "30" or timeframe.period == "45" or timeframe.period == "60" or timeframe.period == "120" or timeframe.period == "180" or timeframe.period == "240")
    fastMA := ema(close, fast)
    slowMA := ema(close, slow)
    ultraSlowMA := ema(close, ultraSlow)
    colorFast := orange
    colorSlow := gray
    colorUltraSlowMA := blue

p1 = plot(fastMA, color=colorFast)
p2 = plot(slowMA, color=colorSlow, linewidth=2)  
p3 = plot(ultraSlowMA, color=colorUltraSlowMA, linewidth=3)

fill(p1, p2, color = fastMA > slowMA ? green : red)

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

ema150 = 200
ema150MA = ema(close, ema150)

smooth = input(3, minval=1), K = input(14, minval=1), D=input(3,minval=1)
hh=highest(high,K)
ll=lowest(low,K)
k = sma((close-ll)/(hh-ll)*100, smooth)
d = sma(k, 3)
//plot(k, color=blue)
//plot(d, color=red)
//h0 = hline(80)
//h1 = hline(20)
//fill(h0, h1, color=purple, transp=95)


//plot(hour*100, color=red, linewidth=2)

stochiasticHigh = 80
stochiasticLow = 20

data = close < ema150MA and k>stochiasticHigh and d>stochiasticHigh and close>open
plotshape(data, style=shape.triangledown, location=location.belowbar, color=red)

data2 = close > ema150MA and k<stochiasticLow and d<stochiasticLow and close<open
plotshape(data2, style=shape.triangleup, location=location.abovebar, color=green)

isData = 0
isData := isData[1]

    
if(isData == 0)
    if(data)
        if(mode==1 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected)) //DOW hours : 2-13
            strategy.entry("SCALP SHORT", strategy.short)  
            isData := 1
else
    if(k<stochiasticLow and d<stochiasticLow)
        if(mode==1)
            strategy.close_all(when = true)
        isData := 0
        
isData2 = 0
isData2 := isData2[1]
    
if(isData2 == 0)
    if(data2)
        if(mode==0 and hour>hourStart and hour<hourStop and (monthSelected==0 or month==monthSelected))
            strategy.entry("SCALP LONG", strategy.long)  
            isData2 := 1
else
    if(k>stochiasticHigh and d>stochiasticHigh)
        if(mode==0)
            strategy.close_all(when = true)
        isData2 := 0

strategy.exit("STOP LOSS", "SCALP LONG", loss=lossLimit)
strategy.exit("STOP LOSS", "SCALP SHORT", loss=lossLimit)