Stratégie de trading globale basée sur l'indicateur de momentum


Date de création: 2024-02-21 11:59:22 Dernière modification: 2024-02-21 11:59:22
Copier: 0 Nombre de clics: 597
1
Suivre
1617
Abonnés

Stratégie de trading globale basée sur l’indicateur de momentum

Aperçu

Cette stratégie utilise plusieurs indicateurs techniques tels que les moyennes mobiles, le MACD, le RSI, les bandes de Brent, et permet d’agréger plusieurs signaux d’achat et de vente pour former une stratégie de négociation d’agrégation de dynamique plus complète.

Principe de stratégie

La logique centrale de la stratégie est d’agréger les signaux d’achat et de vente de plusieurs indicateurs techniques, notamment les éléments suivants:

  1. Indicateur des moyennes mobiles: calcul des moyennes mobiles rapides et des moyennes mobiles lentes, générant un signal d’achat lorsque la ligne rapide traverse la ligne lente et un signal de vente lorsque la ligne basse traverse.

  2. L’indicateur MACD: Calcule les lignes MACD et les lignes de signal, générant un signal d’achat lorsque la ligne MACD traverse la ligne de signal et générant un signal de vente lorsque la ligne est traversée.

  3. Indicateur RSI: Calcule le RSI pour déterminer s’il s’agit d’une zone de survente ou d’une zone de survente et génère un signal d’achat et de vente en combinant la ligne RSI avec la ligne 50 de l’axe central.

  4. L’indicateur de la ceinture de Brin: détermine si le prix a franchi la trajectoire ascendante ou descendante et, combiné à la rétrocession, génère un signal d’achat et de vente.

  5. Décision de sortie: définir un critère de stop-loss et se retirer de la position lorsqu’un certain pourcentage est atteint.

Les modules de signaux ci-dessus sont indépendants les uns des autres, la stratégie surveille ces signaux en temps réel, ouvre une position en plus lorsqu’un signal d’achat est déclenché, ouvre une position en moins lorsqu’un signal de vente est déclenché, et réalise un regroupement dynamique du plateau de profit.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. La richesse des signaux: les signaux d’achat et de vente, combinés à une variété d’indicateurs techniques, ne sont pas faciles à manquer.

  2. Réduction des faux signaux: l’agrégation des signaux de différents indicateurs peut réduire les effets négatifs de certains indicateurs.

  3. L’utilisation d’indicateurs tendanciels tels que les moyennes mobiles, ainsi que d’indicateurs inverses tels que le RSI et le MACD, peut être efficace dans différentes situations.

  4. Arrêt automatique des pertes: la stratégie intègre un mécanisme d’arrêt automatique des pertes, qui permet de contrôler efficacement le risque et d’éviter l’expansion des pertes.

Analyse des risques

Cette stratégie comporte également des risques, principalement dans les domaines suivants:

  1. Risque de défaillance de l’indicateur: Dans certaines circonstances, chaque indicateur peut avoir un certain défaut, ce qui entraîne une distorsion du signal.

  2. Problème de suragglomération: le signal est suraggloméré, ce qui peut entraîner une résolution insuffisante de l’indicateur et des opportunités manquées.

  3. La difficulté d’optimisation des paramètres est grande: la difficulté d’optimisation des paramètres est plus grande en raison du nombre d’indicateurs. La configuration inappropriée des paramètres des indicateurs peut également affecter la performance de la stratégie.

  4. Un taux de change élevé: les signaux stratégiques sont plus fréquents, ce qui entraîne un taux de change plus élevé et un coût de transaction plus élevé.

Direction d’optimisation

Il y a encore de la place pour l’optimisation de cette stratégie, principalement dans les domaines suivants:

  1. Test et optimisation de chaque indicateur et paramètre pour trouver la meilleure combinaison d’indicateurs.

  2. L’optimisation des paramètres par des méthodes d’apprentissage automatique évite les efforts manuels.

  3. Tester les différentes méthodes d’agrégation de poids des indicateurs pour trouver le meilleur plan d’agrégation du signal.

  4. L’ajout d’un mécanisme d’arrêt de perte adaptatif permettant d’ajuster automatiquement les normes de stop-loss en fonction des fluctuations du marché.

  5. Augmentation de l’algorithme d’ouverture de position, contrôle du taux de prise de position unique et réduction du risque individuel.

Résumer

Cette stratégie est une stratégie de négociation d’agrégation d’indicateurs dynamiques typique et universelle. Elle utilise des signaux d’achat et de vente de plusieurs indicateurs techniques courants pour améliorer la performance de la stratégie. Par rapport à la stratégie d’indicateur unique, elle présente des avantages tels que la richesse des sources de signaux, l’identification des tendances et une inversion plus complète. Dans le même temps, la difficulté d’optimisation des paramètres et le risque accru de défaillance de l’indicateur sont également des problèmes à prendre en compte.

Code source de la stratégie
/*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)