Stratégie de trading à court terme pour la cassure de la ligne K inversée


Date de création: 2023-11-21 17:03:32 Dernière modification: 2023-11-21 17:03:32
Copier: 0 Nombre de clics: 555
1
Suivre
1617
Abonnés

Stratégie de trading à court terme pour la cassure de la ligne K inversée

Aperçu

Cette stratégie est utilisée pour capturer les opportunités de revers de courte ligne. Elle ouvre la position en position vide après que les lignes K de la racine N de la racine K sont en hausse, et la position de la racine M de la racine K de la racine M de la racine K est en baisse.

Le principe

  1. Paramètres d’entrée: N lignes K à la hausse et M à la baisse
  2. Définition de la logique
    • ups statistique augmentation du nombre de lignes K, prix>price[1] est +1, sinon réinitialisé à 0
    • dns statistique descente de la ligne K, prix < prix[1] est +1, sinon réinitialisé à 0
  3. Entrée en bourse: couper lorsque ups≥N; clôturer lorsque dns≥M
  4. Sortie: arrêt de perte fixe ou fin de période

Les avantages

  1. Capture d’opportunités de revers, adaptées aux opérations de courte ligne
  2. Flexible pour les périodes de négociation et les programmes de négociation
  3. Fonction d’arrêt des dommages intégrée pour le contrôle des risques

Les risques

  1. Une inversion de la ligne courte n’est pas forcément un succès, mais une nouvelle inversion peut entraîner des pertes.
  2. N, M, trop grand ou trop petit ne convient pas
  3. Le mauvais réglage de l’heure d’arrêt peut entraîner une défaillance en temps opportun

Direction d’optimisation

  1. Combiner les indicateurs de tendance pour éviter les opérations de revers
  2. Paramètres de réglage dynamique N, M
  3. Optimisation des mécanismes de couverture

Résumer

Cette stratégie permet de capturer les opportunités de trading en ligne courte en calculant les formes de la ligne K. La mise en place de paramètres raisonnables et de mesures de contrôle du vent est essentielle pour obtenir des gains stables. De meilleurs résultats sont attendus en combinant davantage de jugement de tendance et de paramètres d’ajustement dynamique.

Code source de la stratégie
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Strategy
strategy("Up/Down Short Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash)

// There will be no short entries, only exits from long.
strategy.risk.allow_entry_in(strategy.direction.short)

consecutiveBarsUp = input(1, title='Consecutive Bars Up')
consecutiveBarsDown = input(1, title='Consecutive Bars Down')

price = close

ups = 0.0
ups := price > price[1] ? nz(ups[1]) + 1 : 0

dns = 0.0
dns := price < price[1] ? nz(dns[1]) + 1 : 0

// Strategy Backtesting
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date')
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date')

time_cond  = true

//Time Restriction Settings
startendtime = input("", title='Time Frame To Enter Trades')
enableclose = input(false, title='Enable Close Trade At End Of Time Frame')
timetobuy = (time(timeframe.period, startendtime))
timetoclose = na(time(timeframe.period, startendtime))

// Stop Loss & Take Profit Tick Based
enablesltp = input(false, title='Enable Take Profit & Stop Loss')
stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100
takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100

longStop = strategy.position_avg_price - stopTick
shortStop = strategy.position_avg_price + stopTick
shortTake = strategy.position_avg_price - takeTick
longTake = strategy.position_avg_price + takeTick

plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

// Alert messages
message_enterlong  = input("", title="Long Entry message")
message_entershort = input("", title="Short Entry message")
message_closelong = input("", title="Close Long message")
message_closeshort = input("", title="Close Short message")
message_takeprofit = input("", title="Take Profit message")
message_stoploss = input("", title="Stop Loss message")

// Strategy Execution
if (ups >= consecutiveBarsUp) and time_cond and timetobuy
    strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong)
    
if (dns >= consecutiveBarsDown) and time_cond and timetobuy
    strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort)
    
if strategy.position_size > 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closelong)
if strategy.position_size < 0 and timetoclose and enableclose
    strategy.close_all(alert_message = message_closeshort)
    
if strategy.position_size > 0 and enablesltp and time_cond
    strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_takeprofit)
if strategy.position_size < 0 and enablesltp and time_cond
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_stoploss)