Stratégie de trading automatique basée sur STOCH

Auteur:ChaoZhang est là., Date: le 28 septembre 2023
Les étiquettes:

Cette stratégie conçoit un système de trading automatique simple basé sur l'indicateur STOCH. Elle convient au Forex, aux indices boursiers, aux matières premières et peut être étendue aux actions et aux marchés cryptographiques.

Vue d'ensemble de la stratégie

Cette stratégie identifie les positions de surachat et de survente en utilisant l'indicateur STOCH combiné avec des points PIVOT pour définir des positions de stop loss, réalisant la tendance suivante.

La logique de la stratégie

Cette stratégie utilise l'intersection des lignes %K et %D de l'indicateur STOCH pour générer des signaux longs et courts. Plus précisément, lorsque la ligne %K traverse au-dessus de la ligne %D, elle sera longue. Lorsque la ligne %K traverse au-dessous de la ligne %D, elle sera courte. Cela capture les statuts de surachat et de survente.

Pour contrôler les risques, le point de stop loss long est placé près du point PIVOT le plus bas quotidien et le point de stop loss court est placé près du point PIVOT le plus élevé quotidien.

Pour un bénéfice partiel, il ferme 50% de la position après un certain niveau de profit après l'ouverture de la position.

En résumé, cette stratégie capture les points de surachat et de survente de manière appropriée; contrôle les risques en utilisant le stop loss; et optimise l'efficacité de l'utilisation du capital.

Points forts de la stratégie

  • L'utilisation de l'indicateur STOCH permet de capturer efficacement les états de surachat et de survente.

  • Le mécanisme de prise partielle de bénéfices optimise l'efficacité de l'utilisation du capital.

  • Les paramètres personnalisables permettent une flexibilité en fonction des conditions du marché et de la préférence pour le risque.

  • Une logique simple et claire, facile à comprendre et à maîtriser pour tous les traders.

Risques stratégiques

  • En tant que stratégie de suivi de tendance, il peut se retrouver bloqué sur des marchés limités et ne pas réaliser de bénéfices.

  • STOCH peut générer de faux signaux, provoquant des transactions inutiles.

  • L'arrêt des pertes près des points de pivot peut être trop proche après les ruptures.

  • Certains paramètres tels que la période peuvent nécessiter des ajustements pour différents marchés, sinon cela affecte le rendement de la stratégie.

  • Le backtest repose uniquement sur des données historiques, ne garantissant pas les performances futures, plus de facteurs incontrôlables dans le trading en direct.

  • Les systèmes de trading automatique nécessitent des connexions stables pour éviter les problèmes d'exécution des transactions.

Optimisation de la stratégie

  • Ajoutez un filtre de tendance pour éviter de négocier sans tendance claire, par exemple en utilisant MA pour déterminer la direction de la tendance.

  • Ajoutez une analyse de volume pour détecter les fausses ruptures et éviter les pièges.

  • Ajustez les paramètres tels que les entrées STOCH en fonction de différents produits et délais pour optimiser les performances.

  • Considérez les algorithmes d'apprentissage automatique pour former des modèles en utilisant des données volumineuses et optimiser automatiquement les paramètres.

  • Définissez le ratio de facteur de profit pour introduire un contrôle des risques et éviter d'énormes pertes.

  • Ajoutez plus de filtres comme les conditions de trading, les fondamentaux pour améliorer le taux de gain.

Conclusion

Cette stratégie adopte une approche simple et intuitive de suivi de tendance basée sur l'indicateur STOCH pour identifier les points de surachat/survente. Avec PIVOT stop loss pour contrôler le risque et partiel profit pour optimiser l'efficacité du capital. La conception couvre la capture, le contrôle et l'optimisation. La logique est simple et personnalisable.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Peter_O

//@version=4
// strategy(title="TradingView Alerts to MT4 MT5 - Forex, indices, commodities, stocks, crypto", commission_type=strategy.commission.cash_per_contract, commission_value=0.00003, overlay=false, default_qty_value=20000, initial_capital=1000)
//
// This script was created for educational purposes only.
// It is showing how to use Alerts-Straight-From-Strategies and
// dynamic variables in TradingView alerts.
// And how to auto-execute them in Forex, indices, commodities markets
// 
// (This method will also work with stocks and crypto - anything your 
// broker is offering via their MT4/MT5 platform).
 
TakeProfitLevel=input(400)
TakePartialProfitLevel=input(150)

// **** Entries logic **** {
periodK = input(13, title="K", minval=1)
periodD = input(3, title="D", minval=1)
smoothK = input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
plot(k, title="%K", color=color.blue)
plot(d, title="%D", color=color.orange)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=color.purple, transp=75)

GoLong=crossover(k,d) and k<80 and year>2009
GoShort=crossunder(k,d) and k>20 and year>2009

AlertTest=open>close or open<close or open==close
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph
// } End of Pivot-points and stop-loss logic

// **** Trade counter and partial closing mechanism **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id+1

TakePartialProfitLong = barssince(GoLong)<barssince(GoShort) and crossover(high,(valuewhen(GoLong,close,0)+TakePartialProfitLevel*syminfo.mintick))
TakePartialProfitShort = barssince(GoLong)>barssince(GoShort) and crossunder(low,(valuewhen(GoShort,close,0)-TakePartialProfitLevel*syminfo.mintick))
// } End of Trade counter and partial closing mechanism

strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XPartLong", from_entry="Long", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XPartShort", from_entry="Short", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)

if GoLong
    alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if TakePartialProfitLong
    alertsyntax_closepartlong='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
    alert(message=alertsyntax_closepartlong, freq=alert.freq_once_per_bar_close)
if TakePartialProfitShort
    alertsyntax_closepartshort='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
    alert(message=alertsyntax_closepartshort, freq=alert.freq_once_per_bar_close)


Plus de