Stratégie de rupture des barres N


Date de création: 2024-04-12 16:57:15 Dernière modification: 2024-04-12 16:57:15
Copier: 0 Nombre de clics: 572
1
Suivre
1617
Abonnés

Stratégie de rupture des barres N

Aperçu

La stratégie de rupture de N Bars est une stratégie de négociation quantitative basée sur des ruptures de prix. L’idée principale de cette stratégie est d’ouvrir une position plus élevée lorsque le prix de clôture a franchi le prix le plus élevé des N derniers jours de négociation et de plafonner une position plus élevée lorsque le prix de clôture a chuté au prix le plus bas des N derniers jours de négociation.

Principe de stratégie

  1. Calculer le prix le plus élevé (highest) et le prix le plus bas (lowest) des N derniers jours de négociation.
  2. Si le prix de clôture actuel est supérieur à “highest”, on ouvre une position “long”.
  3. Si le cours de clôture est inférieur au lowest, alors la position est “short”.
  4. Vous pouvez choisir d’utiliser le prix de clôture (close) ou le prix élevé (high/low) comme source de signal (source).
  5. Le prix le plus élevé et le prix le plus bas sont calculés en utilisant ta.highest et ta.lowest selon la source du signal.
  6. Utilisez ta.crossover et ta.crossunder pour détecter les ruptures de prix.

Avantages stratégiques

  1. La logique est simple et claire, facile à mettre en œuvre et à optimiser.
  2. Il est capable de capturer efficacement les tendances de rupture et de suivre les tendances.
  3. Les paramètres ont une grande marge d’adaptation et peuvent être optimisés en fonction des variétés et des cycles.
  4. Il est très polyvalent et s’adapte à la plupart des variétés et des cycles.
  5. Le choix de la source du signal est flexible, ce qui améliore l’adaptabilité de la stratégie.

Risque stratégique

  1. La performance est médiocre face aux chocs et aux fluctuations mineures, et les positions de vente fréquentes entraînent des coûts de transaction plus élevés.
  2. Une mauvaise sélection de paramètres peut entraîner un risque de suradaptation.
  3. Le revirement de tendance pourrait entraîner une reprise plus importante.
  4. Une source de signal unique peut être exposée à un risque de déformation.

Orientation de l’optimisation de la stratégie

  1. Augmentation des conditions de filtrage de tendance, telles que la direction de la tendance ma, l’adx, etc. et réduction des transactions dans des conditions de choc.
  2. Optimiser le choix des paramètres, tels que la valeur N, la source du signal, etc., pour améliorer la stabilité et la rentabilité de la stratégie.
  3. Augmentation de la logique de stop loss et de stop loss mobile, afin de contrôler le risque de chaque transaction.
  4. La combinaison de plusieurs sources de signaux améliore la fiabilité du signal, comme la prise en compte simultanément des prix de clôture et de la rupture des prix élevés et bas.
  5. Optimisez les paramètres et la logique en fonction des variétés et des cycles.

Résumer

La stratégie de rupture de N Bars est une stratégie de négociation quantitative simple et pratique, qui permet de mieux suivre la tendance en capturant les mouvements de rupture de prix. La stratégie est logiquement claire, a un grand espace d’optimisation et une large gamme d’applications. C’est une stratégie quantitative qui mérite d’être étudiée et optimisée.

Code source de la stratégie
/*backtest
start: 2023-04-06 00:00:00
end: 2024-04-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Breakout", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(5, "N Bars", minval=1)
src_input = input.string("Close", "Source", ["Close", "High/Low"])

bull_src = switch src_input
	"Close" => close
	"High/Low" => high
	=>
		runtime.error("Invalid source input")
		na

bear_src = switch src_input
	"Close" => close
	"High/Low" => low
	=>
		runtime.error("Invalid source input")
		na

highest = ta.highest(bull_src[1], n)
lowest = ta.lowest(bear_src[1], n)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

bool long = ta.crossover(bull_src, highest)
bool short = ta.crossunder(bear_src, lowest)

//Plots
lowest_plot  = plot(lowest,  color=color.red, title="Lowest")
highest_plot  = plot(highest,  color=color.green, title="Highest")
bull_src_plot = plot(bull_src, color=color.blue, title="Bull")
bear_src_plot = plot(bear_src, color=color.orange, title="Bear")

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)