Stratégie de trading basée sur l'indicateur KST et l'indicateur EMA


Date de création: 2023-11-07 16:36:21 Dernière modification: 2023-11-07 16:36:21
Copier: 0 Nombre de clics: 756
1
Suivre
1621
Abonnés

Stratégie de trading basée sur l’indicateur KST et l’indicateur EMA

Aperçu

L’idée centrale de cette stratégie est de combiner l’indicateur KST et la ligne moyenne EMA, pour permettre le jugement et le suivi de la tendance. Acheter lorsque l’indicateur KST apparaît avec un forfait d’or et est inférieur à 0, vendre lorsque le forfait mort apparaît et est supérieur à 0.

Principe de stratégie

  1. Calculer l’indicateur KST: Calculer les indicateurs ROC de 10, 15, 20 et 30 jours, puis les additionner et les pondérer respectivement, pour finalement obtenir l’indicateur KST par un SMA de 9 jours.

  2. Calculer la moyenne EMA: une moyenne EMA de longueur de 50

  3. Génération d’un signal d’achat: génération d’un signal d’achat lorsque la ligne rapide de l’indicateur KST traverse la ligne lente (la fourche) et est inférieure à 0, tandis que le prix de clôture est supérieur à la moyenne de l’EMA.

  4. Générer un signal de vente: lorsque la ligne rapide de l’indicateur KST traverse la ligne lente (dead fork) et est supérieure à 0, et que la clôture est inférieure à la ligne moyenne de l’EMA, générer un signal de vente.

  5. Arrêt mobile: arrêt de suivi est défini à 1% de la valeur du compte, permettant un arrêt automatique.

Avantages stratégiques

  1. L’indicateur KST peut identifier les changements de tendance, l’EMA peut confirmer la direction de la tendance, les deux combinés peuvent déterminer avec précision le moment de l’ENTRY.

  2. L’orientation de l’indicateur KST est déterminée par l’axe 0 de la combinaison croisée rapide et lente, afin d’éviter les transactions inutiles.

  3. L’EMA sert de résistance de support et de filtrage des fausses signaux. Elle n’intervient que lorsque l’EMA est franchie.

  4. Le suivi automatique des stop-loss pour contrôler les risques et faire fonctionner les bénéfices.

  5. Les paramètres de stratégie sont moins nombreux et plus faciles à mettre en œuvre et à optimiser.

Risque stratégique

  1. L’indicateur KST est en retard sur les changements de tendance et peut manquer certaines opportunités. Vous pouvez raccourcir le cycle de calcul ou optimiser la méthode de pondération.

  2. Les EMA sont rétrogrades et peuvent s’effondrer à un tournant de tendance. D’autres indicateurs ou des combinaisons de plusieurs EMA peuvent être essayés.

  3. Les paramètres d’arrêt trop lâches peuvent amplifier les pertes; trop serrés peuvent être arrêtés par des fluctuations massives du jour au lendemain. Il est nécessaire de tester soigneusement pour trouver un point d’équilibre.

  4. Les signaux stratégiques sont fréquents et les coûts de transaction peuvent être élevés. Les conditions d’entrée peuvent être assouplies de manière appropriée et le nombre de transactions réduit.

Orientation de l’optimisation de la stratégie

  1. Optimiser les paramètres de cycle de calcul de l’indicateur KST pour trouver des combinaisons de paramètres plus sensibles à une variété particulière.

  2. Testez différents indices ou combinaisons de la même ligne, comme MA, WMA, etc. pour voir lequel fonctionne mieux avec KST.

  3. Essayez d’ajuster le stop loss en fonction de la volatilité ou de la dynamique ATR.

  4. Les conditions de filtrage sont ajoutées pour éviter d’être piégé, par exemple en cas d’augmentation soudaine du volume des transactions.

  5. Considérez d’autres indicateurs, tels que le RSI, le MACD, etc. pour une stratégie plus globale.

  6. Tester l’efficacité des paramètres de différentes variétés et élaborer des programmes d’optimisation adaptés aux différentes variétés.

Résumer

L’idée générale de cette stratégie est claire, fiable et facile à mettre en œuvre. Elle permet de juger le renversement de tendance à l’aide de l’indicateur KST, de filtrer davantage l’EMA, de contrôler les risques de dommages, de suivre automatiquement les tendances à long terme. La sélection des paramètres est raisonnable, l’espace d’optimisation est large, l’utilisateur peut ajuster les paramètres en fonction des besoins.

Code source de la stratégie
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Know Sure Thing and EMA Strategy by JLX", shorttitle="KST EMA JLX", format=format.price, precision=4, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)
roclen1 = input(10, minval=1, title = "ROC Length #1")
roclen2 = input(15, minval=1, title = "ROC Length #2")
roclen3 = input(20, minval=1, title = "ROC Length #3")
roclen4 = input(30, minval=1, title = "ROC Length #4")
smalen1 = input(10, minval=1, title = "SMA Length #1")
smalen2 = input(10, minval=1, title = "SMA Length #2")
smalen3 = input(10, minval=1, title = "SMA Length #3")
smalen4 = input(15, minval=1, title = "SMA Length #4")
siglen = input(9, minval=1, title = "Signal Line Length")
smaroc(roclen, smalen) => sma(roc(close, roclen), smalen)
kst = smaroc(roclen1, smalen1) + 2 * smaroc(roclen2, smalen2) + 3 * smaroc(roclen3, smalen3) + 4 * smaroc(roclen4, smalen4)
sig = sma(kst, siglen)
plot(kst, color=color.green, title="KST")
plot(sig, color=color.red, title="Signal")
hline(0, title="Zero")

len = input(50, minval=1, title="Length EMA")
src = input(close, title="Source EMA")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
fastEMA = ema(src, len)

delta = kst - sig

buySignal = crossover(delta, 0) and kst < 0 and close > fastEMA
sellSignal = crossunder(delta, 0) and kst > 0 and close < fastEMA

longTrailPerc = input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
shortTrailPerc = input(title="Trail Short Loss (%)",type=input.float, minval=0.0, step=0.1, defval=1) * 0.01

// STEP 2:
// Determine trail stop loss prices
longStopPrice = 0.0, shortStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0
shortStopPrice := if (strategy.position_size < 0)
    stopValue = close * (1 + shortTrailPerc)
    min(stopValue, shortStopPrice[1])
else
    999999

// Submit entry orders
if (buySignal)
    strategy.entry(id="EL", long=true)

if (sellSignal)
    strategy.entry(id="ES", long=false)

// STEP 3:
// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
    strategy.exit(id="XL TRL STP", stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit(id="XS TRL STP", stop=shortStopPrice)



alertcondition(crossover(delta, 0) and kst < 0 and close > fastEMA,'Long alert', 'You should buy')

alertcondition(crossunder(delta, 0) and kst > 0 and close < fastEMA, 'Short alert', 'You should sell')