Estrategia de negociación agregada basada en el indicador de impulso


Fecha de creación: 2024-02-21 11:59:22 Última modificación: 2024-02-21 11:59:22
Copiar: 0 Número de Visitas: 597
1
Seguir
1617
Seguidores

Estrategia de negociación agregada basada en el indicador de impulso

Descripción general

Esta estrategia utiliza varios indicadores técnicos como las medias móviles, MACD, RSI y las bandas de Bryn para lograr la agregación de varias señales de compra y venta, formando una estrategia de negociación de agregación de indicadores de dinámica más completa.

Principio de estrategia

La lógica central de la estrategia es la agregación de señales de compra y venta de varios indicadores técnicos, que en concreto incluyen:

  1. Indicador de promedio móvil: calcula promedios móviles rápidos y promedios móviles lentos, que generan una señal de compra cuando la línea rápida atraviesa la línea lenta, y generan una señal de venta cuando atraviesa la línea baja.

  2. Indicador MACD: calcula las líneas MACD y las líneas de señal, generando una señal de compra cuando la línea MACD cruza la línea de señal y una señal de venta cuando la línea MACD cruza.

  3. Indicador RSI: Calcula el RSI para determinar si se está entrando en zona de sobreventa o sobreventa y genera una señal de compra y venta combinando el cruce de oro y muerte de la línea RSI con la línea 50 del eje central.

  4. Indicador de la banda de Brin: determina si el precio ha roto la trayectoria ascendente o descendente y genera señales de compra y venta en combinación con las señales de retroceso en la trayectoria media.

  5. Juzga de salida: establece un criterio de stop-loss y se retira de la posición cuando se alcanza una cierta proporción.

Los módulos de señales mencionados son independientes entre sí, la estrategia monitoriza estas señales en tiempo real, abre posiciones adicionales cuando se activa una señal de compra, abre posiciones en blanco cuando se activa una señal de venta, y logra un agregado dinámico para obtener ganancias.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Fuentes de señales abundantes: Combinando las señales de compra y venta de varios indicadores técnicos, no es fácil perder oportunidades de mercado.

  2. Reducción de falsas señales: La verificación de la agregación de diferentes señales de indicadores puede reducir en cierta medida los efectos adversos de las falsas señales de algunos indicadores.

  3. Considera la tendencia y la reversión: el uso de indicadores de tendencia, como los promedios móviles, y de indicadores de reversión, como el RSI y el MACD, puede tener un buen efecto en diferentes situaciones.

  4. Detención automática de pérdidas: la estrategia tiene un mecanismo de detención automática de pérdidas que permite controlar el riesgo de manera efectiva y evitar que las pérdidas se expandan.

Análisis de riesgos

La estrategia también tiene sus riesgos, que se manifiestan principalmente en los siguientes aspectos:

  1. Riesgo de fallo del indicador: En ciertas circunstancias, cada indicador puede presentar un fallo, lo que lleva a que la señal se desvíe.

  2. Problemas de agregación excesiva: la señal está demasiado agrupada, lo que puede generar una resolución de indicadores insuficiente, y se pierde parte de la oportunidad.

  3. La dificultad de optimización de parámetros es mayor: debido a la cantidad de indicadores, la dificultad de optimización de parámetros es mayor, y la configuración incorrecta de los parámetros de los indicadores también puede afectar el rendimiento de la estrategia.

  4. Alta tasa de cambio de manos: las señales de estrategia son más frecuentes, lo que genera una mayor tasa de cambio de manos y aumenta los costos de las transacciones.

Dirección de optimización

La estrategia también tiene un cierto margen de mejora, que se puede comenzar en los siguientes aspectos:

  1. Prueba y optimización de los indicadores y parámetros para encontrar la combinación óptima de indicadores.

  2. La búsqueda automática de los parámetros óptimos a través de métodos de aprendizaje automático evita la optimización manual de los parámetros.

  3. Prueba diferentes métodos de agregación de indicadores para encontrar la mejor solución para la agregación de señales.

  4. Se ha añadido un mecanismo de amortización de pérdidas que permite ajustar automáticamente los parámetros de amortización de pérdidas según las fluctuaciones del mercado.

  5. Aumentar el algoritmo de apertura de posiciones, controlar el porcentaje de apertura de posiciones individuales y reducir el riesgo individual.

Resumir

Esta estrategia en su conjunto es una estrategia de comercio de agregación de indicadores de dinámica más típica y general, que utiliza una combinación de señales de compra y venta de varios indicadores técnicos comunes para mejorar el rendimiento de la estrategia a través de la agregación de señales. En comparación con la estrategia de indicadores individuales, tiene ventajas como una fuente de señal más abundante, identificación de tendencias y una inversión más completa. Al mismo tiempo, la dificultad de optimización de parámetros y el aumento del riesgo de fallo del indicador también son problemas a tener en cuenta. Con más pruebas y optimización, esta estrategia puede convertirse en una herramienta de comercio de cuantificación muy útil.

Código Fuente de la Estrategia
/*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)