Stratégie de trading à court terme avec stop loss flexible basée sur l'indicateur stochastique


Date de création: 2023-09-28 10:45:41 Dernière modification: 2023-09-28 10:45:41
Copier: 0 Nombre de clics: 679
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie est basée sur l’indicateur stochastique de l’oscillateur pour juger de l’état de survente et de survente du marché, en combinaison avec le principe de l’arrêt souple pour effectuer des transactions à court terme. Faites plus lors de la fourche d’or sur l’indicateur stochastique, faites moins lors de la fourche morte, tout en définissant un arrêt souple basé sur le pivot de la période précédente, tout en contrôlant le risque pour garantir la rentabilité.

Principe de stratégie

Principe d’entrée

L’indicateur stochastique de l’oscillateur contient les lignes%K et%D. Lorsque la ligne%K franchit la ligne%D de bas en haut, c’est le signal de la fourche dorée. Lorsque la ligne%K franchit la ligne%D de haut en bas, c’est le signal de la fourche morte.

Plus précisément, lors d’une fourchette dorée de l’indicateur stochastique, si la valeur de la ligne K est inférieure à 80 ((non suracheté), faites plus; lors d’une fourchette morte de l’indicateur stochastique, si la valeur de la ligne K est supérieure à 20 ((non survendue), faites moins.

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

Le principe de l’arrêt

Cette stratégie utilise la méthode de l’arrêt souple pour fixer le prix d’arrêt en fonction du pivot de la période précédente, le code est le suivant:

piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)

stoploss_long=valuewhen(piv_low,piv_low,0) 
stoploss_short=valuewhen(piv_high,piv_high,0)

Les pivots représentent une résistance importante au support et, si le prix dépasse les pivots, ils sortent de la position, ce qui permet au prix d’arrêt de suivre la tendance de l’élasticité du pivot.

En outre, le prix de stop-loss prend en compte les prix minimum et maximum de la période en cours pour optimiser davantage la position de stop-loss, comme indiqué dans le code suivant:

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort  
    stoploss_short := high>ph ? high : ph   

Avantages stratégiques

  1. L’indicateur stochastique est utilisé pour juger si le marché est en sur-achat ou en sur-vente et éviter de suivre les hauts et les bas.

  2. l’application du principe de l’élasticité des arrêts, qui permet d’optimiser les positions de stop-loss en fonction des variations du marché;

  3. La mise en œuvre d’un arrêt de perte plus efficace, combinée à une percée des axes centraux;

  4. L’optimisation des arrêts de perte en tenant compte des prix les plus bas et les plus élevés de l’époque.

Les risques et les solutions

  1. Les stochastiques risquent de donner de faux signaux

    • Solution: vérifier en combinaison avec d’autres indicateurs et éviter les erreurs
  2. Risque d’amplification des pertes par rupture du stop loss

    • Solution: réduire la distance de rupture de manière appropriée ou utiliser une rupture de rupture telle que la sortie Chandelier
  3. Risque d’augmentation des frais de transaction en raison de la fréquence des transactions

    • La solution: un assouplissement approprié des conditions d’entrée et une réduction du nombre de transactions

Optimiser les idées

  1. Optimiser les stratégies de stop loss, par exemple en utilisant la sortie Chandelier, le stop mobile ou le stop oscillant

  2. Optimiser les conditions d’entrée, en combinaison avec d’autres indicateurs pour éviter les faux signaux des indicateurs stochastiques

  3. Optimisation des méthodes de freinage, telles que l’utilisation de freins mobiles, de freins oscillants, etc., pour obtenir des taux de freinage plus élevés

  4. Ajout d’une gestion de position, comme un nombre fixe de lots, un pourcentage fixe d’investissement, etc. pour contrôler le risque des lots

  5. Définition des paramètres d’optimisation, tels que le nombre de périodes K, D, les cycles de lissage, etc., afin d’ajuster les paramètres pour différents marchés

Résumer

Cette stratégie utilise l’indicateur stochastique pour juger de l’entrée en survente et de la gestion du risque. La stratégie a des avantages tels que l’évitement de la poursuite des hautes et des basses, l’arrêt efficace, mais il existe également un certain risque de faux signaux.

Code source de la stratégie
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 2h
basePeriod: 15m
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 example with cancelling pending orders", commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=true, default_qty_value=100000, initial_capital=1000)

// This script was created for educational purposes only.
// It is showing how to create pending orders and cancel them
// Together with syntax to send these events through TradingView alerts system
// All the way to brokers for execution

TakeProfitLevel=input(400)

// **** Entries logic **** {
periodK = 13 //input(13, title="K", minval=1)
periodD = 3 //input(3, title="D", minval=1)
smoothK = 4 //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
GoShort=crossunder(k,d) and k>20
// } 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
plot(stoploss_long, color=color.lime, title="stoploss_long")
plot(stoploss_short, color=color.red, title="stoploss_short")
// } End of Pivot-points and stop-loss logic

CancelLong=crossunder(low,stoploss_long) and strategy.position_size[1]<=0 and strategy.position_size<=0
CancelShort=crossover(high,stoploss_short) and strategy.position_size[1]>=0 and strategy.position_size>=0
entry_distance=input(10, title="Entry distance for stop orders")

plotshape(CancelLong ? stoploss_long[1]-10*syminfo.mintick : na, location=location.absolute, style=shape.labelup, color=color.gray, textcolor=color.white, text="cancel\nlong", size=size.tiny)
plotshape(CancelShort ? stoploss_short[1]+10*syminfo.mintick : na, location=location.absolute, style=shape.labeldown, color=color.gray, textcolor=color.white, text="cancel\nshort", size=size.tiny)

strategy.entry("Long", strategy.long, when=GoLong, stop=close+entry_distance*syminfo.mintick)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.cancel("Long", when = CancelLong)
strategy.entry("Short", strategy.short, when=GoShort, stop=close-entry_distance*syminfo.mintick)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)
strategy.cancel("Short", when = CancelShort)

if GoLong
    alertsyntax_golong='long offset=' + tostring(entry_distance) + ' slprice=' + tostring(stoploss_long) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short offset=' + tostring(-entry_distance) + ' slprice=' + tostring(stoploss_short) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if CancelLong
    alertsyntax_cancellong='cancel long'
    alert(message=alertsyntax_cancellong, freq=alert.freq_once_per_bar_close)
if CancelShort
    alertsyntax_cancelshort='cancel short'
    alert(message=alertsyntax_cancelshort, freq=alert.freq_once_per_bar_close)