Estratégia Universal de Franco-atirador

Autora:ChaoZhang, Data: 2023-12-20 11:04:15
Tags:

img

Resumo

Esta estratégia adota uma combinação de múltiplos indicadores técnicos para implementar uma estratégia de negociação de curto prazo versátil.

Princípio da estratégia

  1. A estratégia usa primeiro o indicador do canal do corpo da vela, combinado com o canal de preço mais alto e mais baixo, para determinar a direção e a força da tendência atual.

  2. Em seguida, utiliza o indicador comum EMA para determinar a direcção da tendência a médio e longo prazo.

  3. Em seguida, a estratégia usa o indicador Hull MA para determinar se o preço atual está sobrecomprado ou sobrevendido.

  4. Por último, a estratégia utiliza a função de segurança para abrir um ciclo superior para determinar a direção da tendência do ciclo grande e gerar sinais de negociação.

A combinação de múltiplas sub-estratégias permite que a estratégia capture tendências de ciclo intermediário, ao mesmo tempo que julga a direção geral da tendência com base em ciclos longos, realizando assim uma estratégia de negociação universal versátil.

Análise das vantagens

A maior vantagem desta estratégia é que combina múltiplos indicadores técnicos para a negociação de carteiras, que podem realizar simultaneamente rastreamento de tendências, negociação de reversão média, negociação de ruptura e outros métodos de negociação, que é muito versátil e se adapta à maioria dos ambientes de mercado.

Especificamente, as principais vantagens desta estratégia são:

  1. Usando o indicador do canal do corpo da vela para determinar a fuga da entidade pode identificar efetivamente os sinais de fuga.

  2. Usar combinações de EMA duplas para filtrar sinais falsos melhora a precisão do sinal.

  3. A utilização do indicador Hull MA para determinar as áreas de sobrecompra e sobrevenda permite determinar com mais precisão os pontos de virada.

  4. A adoção do cruzamento dos preços de abertura e fechamento das linhas K de ciclo superior para gerar sinais pode evitar ser enganado pelo ruído.

  5. A combinação de vários métodos de negociação torna a estratégia mais versátil e universal.

Análise de riscos

Embora a estratégia combine múltiplos indicadores para alcançar uma estratégia de negociação versátil, ainda existem certos riscos na negociação, principalmente:

  1. A negociação de breakouts é propensa a ser enganada por falsas breakouts e gera sinais errados.

  2. As negociações de reversão média tendem a causar perdas em mercados de intervalo.

  3. A capacidade de filtragem da combinação EMA dupla ainda é limitada, o que pode filtrar sinais normais.

  4. O indicador MA do casco ainda não tem precisão nas curvas de ajuste.

Em resposta aos riscos acima referidos, podem ser realizadas otimizações nos seguintes aspectos:

  1. Usar indicadores mais estáveis para ajudar a julgar e evitar falhas.

  2. Aumentar as estratégias de stop loss para controlar perdas individuais.

  3. Ajustar os parâmetros EMA duplos para encontrar a combinação ideal.

  4. Tente integrar mais indicadores para determinar condições de sobrecompra e sobrevenda.

Orientações de otimização

De acordo com a análise anterior, a estratégia pode ser essencialmente otimizada nas seguintes direcções:

  1. Usar combinações de indicadores mais tradicionais e estáveis como julgamento auxiliar, tais como Linhas de Kalman, Bandas de Bollinger, etc.

  2. Aumentar as estratégias de stop loss para controlar estritamente a perda única.

  3. Optimização de parâmetros para encontrar a combinação ideal de parâmetros.

  4. Aumentar o julgamento do modelo de aprendizagem de máquina para utilizar a IA para determinar áreas de sobrecompra e sobrevenda.

  5. Aumentar o julgamento lógico adaptativo para ajustar dinamicamente os métodos de estratégia com base em diferentes ambientes de mercado.

Resumo

A estratégia combina múltiplos indicadores para negociação de carteira, alcançando a integração orgânica de vários métodos de negociação, como rastreamento de tendências, negociação de ruptura e negociação de reversão média. É uma estratégia de negociação de curto prazo muito versátil e universal. A maior vantagem desta estratégia é sua ampla aplicabilidade à maioria dos ambientes de mercado. Pertence a uma idéia de estratégia mais universal. Claro, ainda há certos riscos na negociação. Podemos otimizar a estratégia a partir da introdução de indicadores mais estáveis, aumentando o stop loss, otimização de parâmetros, aplicando aprendizado de máquina e muitos outros aspectos para melhorar ainda mais o desempenho da estratégia. Em geral, esta é uma estratégia de negociação de curto prazo universal muito valiosa para se referir e aprender.


/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//╭╮╱╱╭╮╭╮╱╱╭╮
//┃╰╮╭╯┃┃┃╱╱┃┃
//╰╮┃┃╭┻╯┣╮╭┫╰━┳╮╭┳━━╮
//╱┃╰╯┃╭╮┃┃┃┃╭╮┃┃┃┃━━┫
//╱╰╮╭┫╰╯┃╰╯┃╰╯┃╰╯┣━━┃
//╱╱╰╯╰━━┻━━┻━━┻━━┻━━╯
//╭━━━┳╮╱╱╱╱╱╱╱╭╮
//┃╭━╮┃┃╱╱╱╱╱╱╱┃┃
//┃┃╱╰┫╰━┳━━┳━╮╭━╮╭━━┫┃
//┃┃╱╭┫╭╮┃╭╮┃╭╮┫╭╮┫┃━┫┃
//┃╰━╯┃┃┃┃╭╮┃┃┃┃┃┃┃┃━┫╰╮
//╰━━━┻╯╰┻╯╰┻╯╰┻╯╰┻━━┻━╯
//━╯
// 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.