Estratégias de negociação de aprendizado de máquina prontas para uso


Data de criação: 2024-01-29 11:20:42 última modificação: 2024-01-29 11:20:42
cópia: 0 Cliques: 723
1
focar em
1617
Seguidores

Estratégias de negociação de aprendizado de máquina prontas para uso

Visão geral

Esta estratégia utiliza métodos de aprendizagem de máquina para implementar uma estratégia de negociação automatizada e pronta para usar. Integra vários indicadores e modelos que geram automaticamente sinais de negociação e executam operações de compra e venda com base nos sinais.

Princípio da estratégia

A estratégia baseia-se principalmente nos seguintes pontos:

  1. Usando a linha média de casco para determinar a direção da tendência do mercado
  2. Utilização da EMA para determinar tendências a curto e médio prazo
  3. Utilizando o canal de entidade K para determinar a posição de suporte/resistência
  4. Utilização de preços de abertura e de fechamento de SECURITY de múltiplos ciclos para tomar decisões

Concretamente, a estratégia traça uma linha média de casco, uma EMA de 13 ciclos e uma EMA de 21 ciclos. A direção da tendência de curto e médio prazo é determinada pelo estado de vazio da EMA. A combinação com a linha média de casco determina a tendência de períodos mais longos.

Antes de ajustar a posição, a estratégia se baseia nos níveis de suporte e resistência correspondentes aos preços mais altos e mais baixos no canal físico. Isso evita a geração de sinais de negociação em áreas de preços críticos.

Finalmente, a estratégia chama o preço de abertura e o preço de fechamento de 60 ciclos, gerando um sinal de compra quando o preço de fechamento atravessa o preço de abertura e um sinal de venda quando o preço de fechamento atravessa. Assim, a lógica de negociação completa.

Análise de vantagens estratégicas

A maior vantagem desta estratégia é que ela combina os indicadores de aprendizado de máquina e análise técnica para criar um programa de negociação automatizado com clareza lógica, com parâmetros ajustáveis e fácil de operar.

  1. Combinação de múltiplos indicadores para melhorar a precisão do sinal

A estratégia não se baseia apenas em um ou dois indicadores, mas em vários fatores, como tendências, resistência de suporte e breakouts de preços, aumentando significativamente a confiabilidade e a precisão do sinal.

  1. Configuração de parâmetros flexível

O comprimento da linha média do casco, o número de ciclos de EMA e o número de ciclos de cruzamento de fechamento de liquidação podem ser ajustados por meio de parâmetros, permitindo que a estratégia seja flexível para adaptar-se a diferentes condições de mercado.

  1. Sinais de negociação automática

Os sinais de negociação baseados em indicadores e preços cruzados podem ser automaticamente acionados para comprar e vender sem necessidade de julgamento manual, reduzindo a dificuldade de operação.

  1. Apresentação de visualização

Os gráficos da estratégia podem mostrar claramente a estrutura do mercado, o estado da tendência e os preços-chave, mostrando intuitivamente a base de julgamento da estratégia.

Análise de Riscos

Apesar da otimização multifacetada da estratégia, existem alguns riscos potenciais:

  1. Não é possível acompanhar a evolução da situação.

Em situações de forte flutuação de preços, os indicadores podem falhar ou atrasar, o que impede a estratégia de acompanhar as mudanças de preços em tempo hábil. Os parâmetros precisam ser otimizados para se adaptar a essa situação.

  1. Há uma taxa de erro de sinal.

De acordo com os indicadores e modelos de sinais de negociação, há algumas situações de falhas ou falhas. Isso requer a melhoria da qualidade do sinal através da combinação de mais sinais auxiliares.

  1. Risco de MIX de múltiplos espaços

A estratégia de fazer mais shorting ao mesmo tempo, se o julgamento errado, corre o risco de perder em ambos os lados. Isso requer um rigoroso corte de perdas ou redução de posição para controlar.

  1. Riscos de otimização

A configuração de parâmetros é muito complexa e corre o risco de ser otimizada. Isso requer simplificação do sistema e controle do número de combinações de parâmetros.

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

A estratégia ainda tem espaço para otimização, principalmente em relação aos seguintes aspectos:

  1. Adicionar mais sinais de indicadores

Além dos indicadores já existentes, pode-se introduzir mais indicadores auxiliares, como o canal BOLL, o indicador KD, etc., para enriquecer a base de julgamento do sistema.

  1. Aplicar modelos de aprendizagem profunda

Usar indicadores simples como características, treinar modelos de aprendizagem profunda como LSTM para melhorar a qualidade do sinal.

  1. Combinação de dados básicos

Adicionar fatores básicos, como dados macroeconômicos e informações sobre políticas, para otimizar a tomada de decisões em grande escala.

  1. Gestão de riscos e posições

Introduzir estratégias de stop loss, ajustar o tamanho da posição de acordo com a volatilidade da receita da estratégia e controlar rigorosamente o risco.

Resumir

Esta estratégia integra vários indicadores, como tendências, resistência de suporte e ruptura, e usa métodos de aprendizado de máquina para implementar um programa de negociação quantitativa automática e imediata. Ela tem vantagens como diversidade de pacotes de indicadores, ajustabilidade de parâmetros e automação de sinais, mas também enfrenta alguns problemas como desvio de rastreamento, erro de sinal e MIX de múltiplos espaços. No futuro, mais indicadores auxiliares e modelos serão introduzidos, combinando fatores básicos e posicionamento dinâmico.

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

//@version=4
strategy(title='Ali Jitu Abus', shorttitle='Ali_Jitu_Abis_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 ==================================//
Period=input('60')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
longCondition = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

plot(request.security(syminfo.tickerid, Period, close), color=red, title="Period request.security Close")
plot(request.security(syminfo.tickerid, Period, open), color=green, title="Period request.security Open")

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