
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.
A estratégia baseia-se principalmente nos seguintes pontos:
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.
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.
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.
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.
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.
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.
Apesar da otimização multifacetada da estratégia, existem alguns riscos potenciais:
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.
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.
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.
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.
A estratégia ainda tem espaço para otimização, principalmente em relação aos seguintes aspectos:
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.
Usar indicadores simples como características, treinar modelos de aprendizagem profunda como LSTM para melhorar a qualidade do sinal.
Adicionar fatores básicos, como dados macroeconômicos e informações sobre políticas, para otimizar a tomada de decisões em grande escala.
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.
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.
/*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")
///////////////////////////////////////////////////////////////////////////////////////////