Stratégie d'oscillateur stochastique double

Auteur:ChaoZhang est là., Date: 2023-09-17 18h26 et 16h
Les étiquettes:

Résumé

Cette stratégie utilise deux oscillateurs stochastiques avec des paramètres différents pour déterminer les conditions taureau / ours. Il s'agit d'un système de croisement moyen mobile typique. L'oscillateur plus rapide juge les tendances à court terme et les signaux d'entrée, tandis que le plus lent confirme la direction générale de la tendance. Les signaux sont générés à partir de la combinaison.

La logique de la stratégie

  1. La vitesse %K indique la direction de la tendance à court terme.

  2. L'oscillateur lent %K reflète les conditions générales de la tendance.

  3. Un taux de convergence rapide de %K au-dessus de SM1 indique un signal haussier.

  4. Un taux de convergence rapide inférieur à SM1 indique un signal de baisse.

  5. Fixer les points de prise de profit et de stop-loss à des pourcentages fixes.

Analyse des avantages

  1. Le double stochastique filtre le bruit et améliore la précision.

  2. Un paramètre SM1 plus petit rend le %K sensible à la capture d'opportunités à court terme.

  3. Un cycle plus long juge la tendance globale, un cycle plus court capte les renversements.

  4. Les points de prise de profit et d'arrêt de perte fixes permettent de contrôler le risque sans fluctuations énormes.

Analyse des risques

  1. La divergence entre les indicateurs peut entraîner des transactions manquées ou des signaux erronés.

  2. Les points de prise de profit et d'arrêt de perte fixes manquent de souplesse pour s'adapter aux marchés.

  3. Les paramètres stochastiques ont besoin d'optimisation répétitive, des réglages incorrects conduisent à l'échec.

  4. La fréquence élevée des transactions à court terme augmente les coûts de transaction.

Directions d'optimisation

  1. Ajouter d'autres indicateurs ou filtres pour assurer la qualité du signal.

  2. Testez différentes combinaisons de paramètres pour trouver les paramètres optimaux.

  3. Incorporer des mesures de volatilité pour dynamiser les niveaux de prise de profit et de stop-loss.

  4. Utilisez des filtres temporels pour éviter les événements clés et les fluctuations de prix irrationnelles.

  5. Optimiser les stratégies de gestion des capitaux comme la taille des positions pour améliorer l'efficacité des capitaux.

Résumé

Cette stratégie intègre des oscillateurs stochastiques rapides et lents dans un système bidirectionnel. L'optimisation des paramètres et l'ajout de filtres tels que les indicateurs de tendance et de volatilité peuvent l'améliorer.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Double Stochastic", overlay=true)

//-----------------------Stochastics------------------------//

c= security(syminfo.tickerid,timeframe.period , close)  
h= security(syminfo.tickerid, timeframe.period, high)  
l= security(syminfo.tickerid, timeframe.period, low)  

c1= security(syminfo.tickerid, timeframe.period, close)  
h2= security(syminfo.tickerid, timeframe.period, high)  
l1= security(syminfo.tickerid, timeframe.period, low)  

K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)

K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)

// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50) 
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50

//-----------------------Mechanics------------------------//

buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0

buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)

buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)

//------------------------Buy/Sell-------------------------//

longCondition = buy == 1
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

close_long = close >= buy_close
if (close_long)
    strategy.close("My Long Entry Id")
    
sellCondition = sell == 1
if (sellCondition)
    strategy.entry("My Short Entry Id", strategy.short)

close_short = close <= sell_close
if (close_short)
    strategy.close("My Short Entry Id")    

Plus de