Stratégie de négociation d'agrégation des indicateurs de dynamique

Auteur:ChaoZhang est là., Date: le 21 février 2024 à 11h59
Les étiquettes:

img

Résumé

Cette stratégie intègre plusieurs indicateurs techniques, notamment la moyenne mobile, le MACD, le RSI et les bandes de Bollinger, pour générer une variété de signaux d'achat et de vente, formant ainsi une stratégie de négociation d'agrégation d'indicateurs de dynamique relativement complète.

La logique de la stratégie

La logique de base de la stratégie est d'agréger les signaux d'achat et de vente de plusieurs indicateurs techniques, qui comprennent principalement les aspects suivants:

  1. Indicateur de moyenne mobile: Calcule les lignes moyennes mobiles rapides et lentes et génère des signaux d'achat lorsque la ligne rapide traverse au-dessus de la ligne lente et des signaux de vente lorsqu'elle traverse en dessous.

  2. Indicateur MACD: Calcule la ligne MACD et la ligne de signal, générant des signaux d'achat lorsque la ligne MACD traverse au-dessus de la ligne de signal, et des signaux de vente lorsqu'elle traverse en dessous.

  3. Indicateur RSI: Calculer les valeurs du RSI pour déterminer s'il entre dans des zones de surachat ou de survente, combiné avec la croix dorée et la croix de mort de la ligne RSI et de la ligne moyenne 50 pour générer des signaux de trading.

  4. Indicateur des bandes de Bollinger: Détermine si les prix franchissent les bandes supérieures et inférieures, combiné avec des signaux de retour à la bande moyenne pour générer des signaux de trading.

  5. Critères de sortie: définir les normes de stop profit et de stop loss, les positions de sortie lorsque certains pourcentages sont atteints.

Les signaux de chaque module d'indicateur fonctionnent indépendamment. La stratégie surveille ces signaux en temps réel, va long lorsque les signaux d'achat sont déclenchés et court lorsque les signaux de vente sont déclenchés, pour agrandir dynamiquement les positions rentables.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Des sources de signaux riches avec divers signaux indicateurs, pas facile de manquer des opportunités.

  2. Réduire les faux signaux en vérifiant les signaux avec différents indicateurs.

  3. Une bonne adaptabilité aux tendances et aux renversements avec des indicateurs à la fois tendance et moyenne.

  4. Le mécanisme automatique d'arrêt des bénéfices et d'arrêt des pertes aide à contrôler les risques.

Analyse des risques

Il existe également certains risques liés à cette stratégie:

  1. Risque d'invalidité des indicateurs dans certaines conditions de marché.

  2. Le problème de la simplification excessive lors de l'agrégation de trop de signaux conduit à une résolution insuffisante.

  3. Difficultés d'optimisation des paramètres avec de nombreux indicateurs.

  4. Taux de chiffre d'affaires élevé et coûts commerciaux plus élevés.

Directions d'optimisation

Il y a quelques possibilités d'optimisation:

  1. Tester et optimiser les combinaisons d'indicateurs et de paramètres.

  2. Utilisez des méthodes d'apprentissage automatique pour trouver automatiquement les paramètres optimaux.

  3. Essayez différentes méthodes de pondération pour l'agrégation des signaux.

  4. Ajouter des mécanismes de stop loss adaptatifs basés sur la volatilité du marché.

  5. Ajouter des algorithmes d'ouverture pour contrôler les proportions d'ouverture unique pour un meilleur contrôle des risques.

Conclusion

En conclusion, il s'agit d'une stratégie de négociation d'agrégation d'indicateurs de dynamique typique et universelle, qui intègre des signaux de négociation provenant de divers indicateurs techniques communs et améliore les performances grâce à l'agrégation de signaux. Par rapport aux stratégies d'indicateur unique, elle présente les avantages d'une plus grande abondance de sources de signaux et d'une meilleure identification des tendances et des renversements.


/*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)

Plus de