Estratégia de negociação agregada com base no indicador de momentum


Data de criação: 2024-02-21 11:59:22 última modificação: 2024-02-21 11:59:22
cópia: 0 Cliques: 341
1
focar em
1235
Seguidores

Estratégia de negociação agregada com base no indicador de momentum

Visão geral

Esta estratégia utiliza um conjunto de indicadores técnicos, como a média móvel, o MACD, o RSI e as faixas de Brink, para realizar a agregação de vários sinais de compra e venda, formando uma estratégia de negociação mais completa de agregação de indicadores de dinâmica.

Princípio da estratégia

A lógica central da estratégia é agrupar os sinais de compra e venda de vários indicadores tecnológicos, que incluem os seguintes aspectos:

  1. Indicador de média móvel: calcula a média móvel rápida e a média móvel lenta, gerando um sinal de compra quando a linha rápida atravessa a linha lenta e gerando um sinal de venda quando a linha baixa atravessa.

  2. Indicador MACD: calcula linhas MACD e linhas de sinal, gerando um sinal de compra quando a linha MACD atravessa a linha de sinal, gerando um sinal de venda quando atravessa a linha de sinal.

  3. Indicador RSI: Calcula o RSI para determinar se está em uma zona de sobrecompra ou de sobrevenda, e combina a linha RSI com a linha 50 do eixo central para gerar um sinal de compra e venda.

  4. Indicador de correia de Brin: determina se o preço atravessou a trajetória ascendente ou descendente e, em combinação com a trajetória de retorno, gera sinais de compra e venda.

  5. Julgamento de saída: definir um padrão de stop-loss e sair da posição quando atingir uma certa proporção.

Os módulos de sinais acima são independentes um do outro, a estratégia monitora esses sinais em tempo real, abre uma posição a mais quando o sinal de compra é acionado, abre uma posição a menos quando o sinal de venda é acionado, e realiza a agregação dinâmica do disco de lucro.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A fonte de sinais é abundante: a combinação de vários indicadores técnicos de compra e venda de sinais, não é fácil perder oportunidades de mercado.

  2. Redução de falsos sinais: a verificação agregada de diferentes sinais de indicadores pode reduzir os efeitos adversos de falsos sinais de alguns indicadores.

  3. Considerando tendências e reversões: a utilização de indicadores de tendências, como as médias móveis, bem como indicadores de reversão, como o RSI e o MACD, pode ser eficaz em diferentes situações.

  4. Stop Loss Automático: A estratégia possui um mecanismo de stop loss automático para controlar o risco e evitar a expansão dos prejuízos.

Análise de Riscos

A estratégia também apresenta alguns riscos, que se manifestam nos seguintes aspectos:

  1. Risco de falha do indicador: em determinadas circunstâncias, cada indicador pode apresentar uma falha, causando distorção do sinal.

  2. Problemas de hiperagregação: o sinal é hiperagregado, sendo propenso a produzir uma resolução de indicador insuficiente, o problema de perder algumas oportunidades.

  3. Dificuldade de otimização de parâmetros: Como há mais indicadores, a dificuldade de otimização de parâmetros é maior, e a configuração inadequada de parâmetros de indicadores também pode afetar o desempenho da estratégia.

  4. Alta taxa de troca de mãos: sinais de estratégia são mais frequentes, resultando em altas taxas de troca de mãos e aumentando os custos de transação.

Direção de otimização

A estratégia ainda tem espaço para melhorias, que podem ser iniciadas em várias áreas:

  1. Testar e otimizar os indicadores e parâmetros para encontrar a melhor combinação de indicadores.

  2. A busca automática de parâmetros ótimos através de métodos de aprendizagem de máquina evita a otimização manual de parâmetros.

  3. Teste diferentes métodos de agregação de peso de indicadores para encontrar o melhor plano de agregação de sinais.

  4. Aumento do mecanismo de suspensão de perda adaptável, que permite ajustar automaticamente os padrões de suspensão de perda de acordo com as flutuações do mercado.

  5. Aumentar os algoritmos de abertura de posições, controlar a taxa de abertura de posições individuais e reduzir o risco de uma única posição.

Resumir

Esta estratégia, como um todo, é uma estratégia de negociação de agregado de indicadores de dinâmica mais típica e comum, que usa sinais de compra e venda de vários indicadores técnicos comuns para melhorar o desempenho da estratégia por meio de agregação de sinais. Comparado à estratégia de indicadores individuais, tem vantagens como maior abundância de fontes de sinais, identificação de tendências e reversão mais abrangente.

Código-fonte da estratégia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Kesin Etkili Analiz V1 - Artun Sinan", overlay=true)
//indicator("Kesin Etkili Analiz V1 - Artun Sinan", overlay=true)

//BackTest
yearin = input (2019, title="BackTestBaşlangıç Tarihi")

// Göstergelerin parametrelerini tanımlayın
emaShrtPeriod = input.int(title="EMA Kısa Periyodu", defval=50, minval=1)
emaLngPeriod = input.int(title="EMA Uzun Periyodu", defval=100, minval=1)

maPeriod = input.int(50, "Hareketli Ortalama Periyodu", minval=1)
fast = input.int(12, "MACD Hızlı Periyodu", minval=1)
slow = input.int(26, "MACD Yavaş Periyodu", minval=1)
signal = input.int(9, "MACD Sinyal Periyodu", minval=1)
rsiPeriod = input.int(14, "RSI Periyodu", minval=1)
rsiOverbought = input.int(70, "RSI Aşırı Alım Eşiği", minval=50, maxval=100)
rsiOversold = input.int(30, "RSI Aşırı Satım Eşiği", minval=0, maxval=50)
bbPeriod = input.int(20, "Bollinger Bantları Periyodu", minval=1)
bbStd = input.float(2, "Bollinger Bantları Standart Sapması", minval=0.1)

//EMA göstergesi ayarları
ema1 = ta.ema (close,emaShrtPeriod)
ema2 = ta.ema (close, emaLngPeriod)

emaCrossUp = ema1 >= ema2
emaCrossDown = ema2 < ema1

plot(ema1, title="EMAKısa", color=color.rgb(0, 255, 13))
plot(ema2, title="EMAUzun", color=color.rgb(255, 251, 1))



// Göstergeleri hesaplayın
ma = ta.sma(close, maPeriod) // Hareketli ortalama
[macd, macdsignal, macdhist] = ta.macd(close, fast, slow, signal) // MACD
rsi = ta.rsi(close, rsiPeriod) // RSI
[upper, middle, lower] = ta.bb(close, bbPeriod, bbStd) // Bollinger Bantları

// Alım veya satım sinyalleri üretin
buySignal = false
sellSignal = false

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Fibonacci seviyelerini tanımlayın
fibLevels = array.new_float(7) // Fibonacci seviyelerini tutacak bir dizi oluşturun
array.set(fibLevels, 0, 0.0) // %0 seviyesini ayarlayın
array.set(fibLevels, 1, 0.236) // %23.6 seviyesini ayarlayın
array.set(fibLevels, 2, 0.382) // %38.2 seviyesini ayarlayın
array.set(fibLevels, 3, 0.5) // %50 seviyesini ayarlayın
array.set(fibLevels, 4, 0.618) // %61.8 seviyesini ayarlayın
array.set(fibLevels, 5, 0.786) // %78.6 seviyesini ayarlayın
array.set(fibLevels, 6, 1.0) // %100 seviyesini ayarlayın

// Tepe ve dip noktasını belirleyin
highpoint = ta.highest (high, 20) // Son 30 mum çubuğunun en yüksek değerini alın
lowpoint = ta.lowest (low, 20) // Son 30 mum çubuğunun en düşük değerini alın
diff = highpoint - lowpoint // Tepe ve dip noktası arasındaki farkı hesaplayın

// Fibonacci seviyelerini hesaplayın
fib0 = lowpoint + diff * array.get(fibLevels, 0) // %0 seviyesini hesaplayın
fib1 = lowpoint + diff * array.get(fibLevels, 1) // %23.6 seviyesini hesaplayın
fib2 = lowpoint + diff * array.get(fibLevels, 2) // %38.2 seviyesini hesaplayın
fib3 = lowpoint + diff * array.get(fibLevels, 3) // %50 seviyesini hesaplayın
fib4 = lowpoint + diff * array.get(fibLevels, 4) // %61.8 seviyesini hesaplayın
fib5 = lowpoint + diff * array.get(fibLevels, 5) // %78.6 seviyesini hesaplayın
fib6 = lowpoint + diff * array.get(fibLevels, 6) // %100 seviyesini hesaplayın

// Alım sinyali: Fiyat %61,8 seviyesinden yukarı yönlü kırılırsa ve MACD çizgisi sinyal çizgisinin üzerine çıkarsa, alım pozisyonu açın
alSignal = close > fib4 and ta.crossover(macd, macdsignal)

// Satım sinyali: Fiyat %61,8 seviyesinden aşağı yönlü kırılırsa ve MACD çizgisi sinyal çizgisinin altına inerse, satım pozisyonu açın
satSignal = close < fib4 and ta.crossunder(macd, macdsignal)

// Çıkış sinyali: Fiyat %38,2 Fibonacci seviyesine ulaşırsa veya belirli bir yüzde oranında kar veya zarar elde ederseniz, pozisyonu kapatın
exitSignal = close >= fib2 or close <= strategy.position_avg_price * 0.95 // Kar oranı olarak %5, zarar oranı olarak %5 belirledik

plot(fib0, title="%0", color=color.rgb(25, 0, 255))
plot(fib1, title="%23.6", color=color.rgb(25, 0, 255))
plot(fib2, title="%38.2", color=color.rgb(25, 0, 255))
plot(fib3, title="%50", color=color.rgb(25, 0, 255))
plot(fib4, title="%61.8", color=color.rgb(25, 0, 255))
plot(fib5, title="%78.6", color=color.rgb(25, 0, 255))
plot(fib6, title="%100", color=color.rgb(25, 0, 255))
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Hareketli ortalama kesişimi sinyali
maCrossUp = ta.crossover(ma, close) // Fiyat hareketli ortalamanın üzerine çıkarsa
maCrossDown = ta.crossunder(ma, close) // Fiyat hareketli ortalamanın altına inerse

// MACD çizgisi ve sinyal çizgisi kesişimi sinyali // Histogram yerine çizgiler
macdCrossUp = ta.crossover(macd, macdsignal) // MACD çizgisi sinyal çizgisinin üzerine çıkarsa
macdCrossDown = ta.crossunder(macd, macdsignal) // MACD çizgisi sinyal çizgisinin altına inerse

// RSI aşırı alım veya aşırı satım sinyali ve 50 seviyesi kesişimi sinyali // Sinyalleri birleştir
// Eşik değerleri doğrudan kullanın
rsiOverboughtSignal = rsi > rsiOverbought and ta.crossover(rsi, 50) // RSI değeri aşırı alım eşiğinin üzerindeyse ve 50 seviyesini yukarı keserse
rsiOversoldSignal = rsi < rsiOversold and ta.crossunder(rsi, 50) // RSI değeri aşırı satım eşiğinin altındaysa ve 50 seviyesini aşağı keserse

// Bollinger Bantları kırılımı sinyali ve orta bant geri dönüşü sinyali // Sinyalleri birleştir
bbBreakUp = close > upper and ta.crossover(close, middle) // Fiyat üst banttan çıkarsa ve orta banta geri dönerse
bbBreakDown = close < lower and ta.crossunder(close, middle) // Fiyat alt banttan inerse ve orta banta geri dönerse

// Sinyalleri birleştirin
buySignal := maCrossUp or macdCrossUp or rsiOversoldSignal or bbBreakUp or emaCrossUp and yearin >= year
sellSignal := maCrossDown or macdCrossDown or rsiOverboughtSignal or bbBreakDown or emaCrossDown and yearin >= year

// Sinyalleri grafikte oklar ile gösterin
plotshape(buySignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

plot(macd, title="MACD", color=color.blue) // MACD çizgisini mavi renkte çizin
plot(macdsignal, title="Sinyal", color=color.orange) // Sinyal çizgisini turuncu renkte çizin


if buySignal
    strategy.entry("Enter Long", strategy.long)
else if sellSignal
    strategy.entry("Enter Short", strategy.short)