O recurso está a ser carregado... Carregamento...

A estratégia de canal de média móvel tripla para minerar pacientemente informações valiosas a partir de linhas de velas

Autora:ChaoZhang, Data: 2024-02-01 11:12:47
Tags:

img

Resumo

A estratégia de canal de média móvel tripla utiliza múltiplos indicadores de média móvel para analisar profundamente o gráfico de velas e descobrir regras ocultas por trás das flutuações de preços, alcançando assim negociações de arbitragem de baixo risco.

Princípios

Esta estratégia empilha várias métricas da EMA em cima das Bandas de Bollinger para construir canais de preços e descobrir padrões na volatilidade de preços.

  1. O indicador BodyResistanceChannel é usado para traçar os níveis de resistência do corpo da vela.
  2. O indicador de suporte/resistência é alavancado para desenhar níveis de suporte e resistência de vários dias.
  3. O sistema EMA duplo ajuda a determinar a direcção da tendência.
  4. O indicador Hull MA suaviza a curva de preços.

Com base nisto, são identificadas oportunidades de reversão através do reconhecimento de padrões para formular estratégias de arbitragem.

Vantagens

As vantagens desta estratégia incluem:

  1. A criação de canais de preços com múltiplos EMAS ajuda a determinar claramente a tendência dos preços.
  2. O indicador Hull MA suaviza efetivamente as variações de preços.
  3. A combinação de padrões de reversão e indicadores de canal permite uma negociação de alta probabilidade e baixo risco.
  4. A construção de um sistema de indicadores de várias camadas garante sinais de negociação estáveis e fiáveis.

Análise de riscos

Também existem riscos potenciais desta estratégia:

  1. O risco de grandes perdas quando o canal de preço é violado.
  2. O risco de sinais errados quando o reconhecimento de padrão de reversão dá errado.
  3. O risco de deterioração da qualidade do sinal quando os parâmetros dos indicadores não correspondem.

Orientações de otimização

As principais direcções de otimização incluem:

  1. Otimizar as combinações dos parâmetros do período EMA para melhor adaptarem-se às condições de mercado.
  2. Ajustar os níveis de stop loss para maximizar o retorno por negociação, minimizando o risco de perda por negociação.
  3. Introduzir um módulo dinâmico de dimensionamento de posições baseado na volatilidade para gerir eficazmente os riscos.
  4. Utilize tecnologias de aprendizagem profunda para descobrir mais padrões de preços e melhorar a qualidade do sinal.

Conclusão

A estratégia de canal de média móvel tripla mina profundamente a regularidade do movimento de preços com estabilidade e eficiência, digna de aplicação a longo prazo e otimização contínua.


/*backtest
start: 2023-01-25 00:00:00
end: 2024-01-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// http://www.vdubus.co.uk/
strategy(title='Vdub FX SniperVX3 / Strategy  v3', shorttitle='Vdub_FX_SniperVX3_Strategy', overlay=true, pyramiding=0, initial_capital=1000, 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 ==================================//
Piriod=input('720')
ch1 = request.security(syminfo.tickerid, Piriod, open)
ch2 = request.security(syminfo.tickerid, Piriod, close)
longCondition = crossover(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Piriod, close),request.security(syminfo.tickerid, Piriod, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

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

Mais.