Les ressources ont été chargées... Je charge...

Stratégie de négociation bidirectionnelle de rupture de grande volatilité: système d'entrée de seuil basé sur des points

Auteur:ChaoZhang est là., Date: 2024-11-18 16:11:21 Je suis désolé
Les étiquettes:ATRSLTP

img

Résumé

Cette stratégie est un système de trading bidirectionnel basé sur des bougies de 30 minutes, à la recherche d'opportunités de trading grâce à la surveillance de la volatilité des prix. Le mécanisme de base consiste à identifier les mouvements de prix significatifs en utilisant des seuils de points et à exécuter des transactions à la confirmation de la rupture. La stratégie intègre une gestion stricte du temps, des mécanismes de stop-loss / take-profit et des protocoles de gestion des transactions pour un trading automatisé contrôlé.

Principe de stratégie

La stratégie utilise plusieurs mécanismes de filtrage pour identifier les signaux de trading valides. Elle calcule la fourchette de volatilité de chaque bougie de 30 minutes à la fermeture, marquant les opportunités de trading potentielles lorsque la fourchette dépasse les seuils prédéfinis.

Les avantages de la stratégie

  1. Gestion complète du temps: fenêtres de négociation limitées pour éviter les faux signaux pendant les périodes d'inactivité
  2. Commerce bidirectionnel: saisir les opportunités dans les deux sens du marché, améliorer l'efficacité des capitaux
  3. Contrôle robuste des risques: des niveaux fixes d'arrêt des pertes et de prise de bénéfices facilitent l'évaluation et la gestion des risques
  4. Automatisation élevée: entièrement automatisée de l'identification du signal à l'exécution des transactions, minimisant l'intervention humaine
  5. Paramètres flexibles: paramètres clés réglables s'adaptent aux différentes conditions du marché

Risques stratégiques

  1. Risque de fausse rupture: une forte volatilité peut entraîner de fausses ruptures entraînant des sorties stop-loss.
  2. Sensibilité des paramètres: des seuils incorrects peuvent entraîner des occasions manquées ou des surtrades
  3. Dépendance de l'environnement du marché: peut déclencher des stop-loss fréquents sur différents marchés
  4. Impact du glissement: les prix d'exécution réels peuvent s'écarter sensiblement des prix de signal en cas de forte volatilité
  5. Risque de gestion des capitaux: l'absence de mécanismes de dimensionnement des positions peut entraîner une exposition excessive au risque

Directions d'optimisation de la stratégie

  1. Ajout de filtrage de tendance: intégrer des indicateurs de tendance à plus long terme pour améliorer la qualité du signal
  2. Optimisation dynamique des paramètres: ajustement automatique des seuils et des paramètres de stop-loss en fonction de la volatilité du marché
  3. Confirmation du volume: ajouter des conditions de filtrage du volume pour améliorer la fiabilité de la rupture
  4. Optimiser le stop-loss/take-profit: mettre en œuvre des sorties dynamiques adaptées aux différentes conditions du marché
  5. Incorporer la dimensionnement des positions: ajuster dynamiquement les positions en fonction de la force du signal et de la volatilité du marché

Conclusion

Il s'agit d'une stratégie de trading automatisée entièrement conçue avec une logique claire. Grâce à un filtrage strict des conditions et à un contrôle des risques, la stratégie démontre une applicabilité pratique. Cependant, des tests approfondis et une optimisation dans le trading en direct sont nécessaires, en particulier dans les paramètres et les aspects de contrôle des risques qui doivent être ajustés en fonction des conditions réelles du marché.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Big Candle Breakout Strategy Both Side", overlay=true)  

// Input for the point move threshold
point_move_in = input.int(100, title="Point Move Threshold")
point_target = input.int(100, title="Point Target")
point_stoploss = input.int(100, title="Point Stop Loss")
point_buffer = input.int(5, title="Point Buffer")

point_move = point_buffer + point_move_in

// Define the start and end times for trading
start_hour = 9
start_minute = 15
end_hour = 14
end_minute = 30

// Function to check if the current time is within the allowed trading window
in_time_range = (hour(time('30')) > start_hour or (hour(time('30')) == start_hour and minute(time('30')) >= start_minute)) and (hour(time('30')) < end_hour or (hour(time('30')) == end_hour and minute(time('30')) <= end_minute))

// Retrieve the open, high, low, and close prices of 30-minute candles
open_30m = request.security(syminfo.tickerid, "30", open)
high_30m = request.security(syminfo.tickerid, "30", high)
low_30m = request.security(syminfo.tickerid, "30", low)
close_30m = request.security(syminfo.tickerid, "30", close)

// Calculate the range of the candle
candle_range_long = (close_30m - open_30m)
candle_range_short = (open_30m - close_30m)

// Determine if the candle meets the criteria to be marked
big_candle_long = candle_range_long >= point_move_in
big_candle_short = candle_range_short >= point_move_in

// Variables to store the state of the trade
var float long_entry_price = na
var float long_target_price = na
var float long_stop_loss_price = na

var float short_entry_price = na
var float short_target_price = na
var float short_stop_loss_price = na

// Check if there are no active trades
no_active_trades = (strategy.opentrades == 0)

// Long entry condition
if (big_candle_long and na(long_entry_price) and in_time_range and no_active_trades)
    long_entry_price := high_30m+point_buffer
    long_target_price := long_entry_price + point_target
    long_stop_loss_price := long_entry_price - point_stoploss
    strategy.entry("Buy", strategy.long, stop=long_entry_price, limit=long_target_price)

plot(long_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Entry Price")
plot(long_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Target Price")
plot(long_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Stop Loss Price")

// Short entry condition
if (big_candle_short and na(short_entry_price) and in_time_range and no_active_trades)
    short_entry_price := low_30m - point_buffer
    short_target_price := short_entry_price - point_target
    short_stop_loss_price := short_entry_price + point_stoploss
    strategy.entry("Sell", strategy.short, stop=short_entry_price, limit=short_target_price)

plot(short_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Short Entry Price")
plot(short_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Short Target Price")
plot(short_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Short Stop Loss Price") 

// Long exit conditions
if (not na(long_entry_price))
    strategy.exit("Long Exit", from_entry="Buy", limit=long_target_price, stop=long_stop_loss_price)
   
// Short exit conditions
if (not na(short_entry_price))
    strategy.exit("Short Exit", from_entry="Sell", limit=short_target_price, stop=short_stop_loss_price)

// Reset trade status
if (strategy.position_size == 0)
    long_entry_price := na
    long_target_price := na
    long_stop_loss_price := na

    short_entry_price := na
    short_target_price := na
    short_stop_loss_price := na

// Plot the big candle and entry/exit levels
plotshape(series=big_candle_long, location=location.abovebar, style=shape.circle, color=color.green)
plotshape(series=big_candle_short, location=location.abovebar, style=shape.circle, color=color.red)

//plot(long_entry_price, style=plot.style_stepline, color=color.blue, linewidth=2, title="Entry Price")
//plot(long_target_price, style=plot.style_stepline, color=color.green, linewidth=2, title="Target Price")
//plot(long_stop_loss_price, style=plot.style_stepline, color=color.red, linewidth=2, title="Stop Loss Price")


Relationnée

Plus de