Trading automatique basé sur la stratégie de trading STOCH


Date de création: 2023-09-28 11:38:44 Dernière modification: 2023-09-28 11:38:44
Copier: 0 Nombre de clics: 702
1
Suivre
1617
Abonnés

Cette stratégie est basée sur l’indicateur STOCH et est conçue comme un système de trading automatique simple. Elle est adaptée aux marchés tels que les devises étrangères, les indices boursiers, les matières premières, mais peut également être étendue aux marchés boursiers et aux crypto-monnaies.

Aperçu de la stratégie

La stratégie utilise l’indicateur STOCH pour identifier les situations de survente et de survente, en combinaison avec le point PIVOT pour définir une position de stop-loss, permettant le suivi de la tendance. Lorsque l’indicateur STOCH indique une survente et une survente, effectuez plusieurs opérations de couverture. Le point de stop-loss est situé à proximité du point PIVOT du jour, ce qui permet de contrôler efficacement le risque.

Principe de stratégie

La stratégie utilise la ligne rapide%K et la ligne lente%D de l’indicateur STOCH pour réaliser des forfaits en or et des forfaits morts. La logique spécifique est d’effectuer des opérations multiples lorsque la ligne%K franchit la ligne%D de bas en haut et des opérations blanches lorsque la ligne%K franchit la ligne%D de haut en bas.

Pour contrôler le risque, les positions longues font un point d’arrêt de plus près du PIVOT le plus bas de la journée, et les positions vides font un point d’arrêt de plus près du PIVOT le plus élevé de la journée, ce qui permet de verrouiller efficacement le risque.

Une partie de la logique de l’arrêt est de fermer 50% de la position à un niveau de profit spécifique après l’ouverture de la position. Cela permet d’optimiser l’efficacité de l’utilisation des fonds.

Dans l’ensemble, la stratégie est le point de basculement de l’état de survente de Capture dans son ensemble; le contrôle en termes de contrôle des risques; l’efficacité de l’utilisation des fonds d’Optimize. On peut parler d’une combinaison organique de Capture, Control et Optimize.

Avantages stratégiques

  • L’indicateur STOCH permet de capturer efficacement le phénomène d’excédent de vente et d’achat, et le PIVOT permet de contrôler le risque, ce qui permet de maîtriser pleinement le risque de transaction.

  • Le mécanisme de blocage partiel permet d’optimiser l’efficacité de l’utilisation des fonds. La méthode de placement partiel assure une partie des bénéfices et conserve une marge de profit pour les opérations ultérieures.

  • Les paramètres de la stratégie sont personnalisables et les traders peuvent les ajuster en fonction de leurs préférences en matière de marché et de risque, ce qui permet une utilisation flexible de la stratégie.

  • La logique de la stratégie est très simple et claire, facile à comprendre et à maîtriser, adaptée à différents traders. Le code est intuitif et facile à lire, facile à modifier et à entretenir.

Risque stratégique

  • Il s’agit d’une stratégie de suivi des tendances, qui est susceptible d’être piégée dans les chocs et de ne pas être rentable.

  • L’indicateur STOCH peut générer des signaux erronés qui peuvent entraîner des transactions inutiles. Les signaux doivent être filtrés de manière appropriée pour éviter les transactions inutiles.

  • Le point d’arrêt est proche de l’axe principal du jour, il peut être trop proche après la rupture de la correction, il faut augmenter la distance d’arrêt de manière appropriée.

  • Certains paramètres de la stratégie, tels que la longueur de la période, doivent être adaptés aux différents marchés, sinon cela affectera la performance de la stratégie.

  • La rétroaction est basée uniquement sur les données historiques et ne garantit pas la performance future.

  • Le système de trading automatique doit assurer la stabilité du serveur et éviter que des problèmes de connexion n’entraînent des transactions irrégulières.

Orientation de l’optimisation de la stratégie

  • Il est possible d’introduire un filtre de tendance pour éviter les transactions aveugles lorsque la tendance n’est pas connue. Par exemple, l’ajout d’un indicateur MA pour déterminer la direction de la tendance.

  • Il est possible d’ajouter une surveillance du volume des transactions, comme la décharge, la décharge de tête vide, etc., pour filtrer les fausses ruptures.

  • Il est possible d’ajuster les paramètres en fonction des variétés et des périodes pour optimiser la performance de la stratégie. Par exemple, ajuster les paramètres de STOCH.

  • L’intégration d’algorithmes d’apprentissage automatique peut être envisagée, en utilisant des modèles d’entraînement de données volumineuses pour optimiser automatiquement les paramètres.

  • On peut définir un ratio de profit/perte pour introduire une maîtrise des risques et éviter des pertes massives.

  • Des conditions supplémentaires peuvent être ajoutées pour filtrer le moment de l’entrée et améliorer le taux de réussite de la stratégie.

Résumer

La stratégie utilise une méthode de suivi de tendance simple et intuitive pour identifier les sur-achats et les sur-vente avec l’indicateur STOCH, et ajoute des arrêts PIVOT pour contrôler les risques, tout en introduisant des arrêts partiels pour optimiser l’efficacité des fonds. Conçue à partir des trois niveaux de capture, contrôle et optimisation, elle forme un système de trading automatisé plus complet. La logique de la stratégie est simple à comprendre, les paramètres peuvent être personnalisés et peuvent être utilisés par différents traders.

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