Stratégie de trading de rupture de gamme de prix dynamique, système quantitatif basé sur les niveaux de support et de résistance


Date de création: 2024-12-11 15:03:50 Dernière modification: 2024-12-11 15:03:50
Copier: 3 Nombre de clics: 378
1
Suivre
1617
Abonnés

Stratégie de trading de rupture de gamme de prix dynamique, système quantitatif basé sur les niveaux de support et de résistance

Aperçu

La stratégie est un système de négociation quantitative basé sur la rupture de la fourchette de prix. Elle définit dynamiquement les limites supérieures et inférieures de la fourchette de prix et négocie lorsque les prix franchissent ces niveaux critiques. L’idée centrale de la stratégie est de capturer les opportunités de tendance lorsque le marché franchit la fourchette de prix établie, tout en adaptant dynamiquement la fourchette de prix pour s’adapter aux changements du marché.

Principe de stratégie

Le fonctionnement de la stratégie est basé sur le mécanisme central suivant: d’abord, en fonction des caractéristiques des différentes variétés de transactions, un pas correspondant (step_size) est défini, qui est basé sur environ 1,5% du prix de la variété. Le système définit une fourchette de prix au-dessus et au-dessous du prix actuel, qui déclenche plusieurs signaux lorsque le prix franchit la limite supérieure; lorsque la limite inférieure est franchie, le signal de fermeture est déclenché. Après chaque rupture, la fourchette de prix est ajustée pour s’adapter à un nouveau contexte de marché.

Avantages stratégiques

  1. Adaptabilité dynamique: la fourchette de prix s’adapte automatiquement aux évolutions du marché, permettant ainsi aux stratégies de s’adapter aux différentes conditions du marché.
  2. La capacité de suivi des tendances est remarquable: en permettant une prise de position simultanée, la stratégie est en mesure de saisir pleinement les tendances fortes.
  3. Le contrôle des risques est parfait: des conditions de stop-loss claires sont définies, et la position est automatiquement liquidée lorsque le prix est inférieur à la fourchette.
  4. Large portée: la stratégie peut s’appliquer à de nombreux marchés en définissant des paramètres de longueur d’étape correspondants pour différentes variétés de transactions.
  5. L’efficacité du calcul: la persistance des variables et l’efficacité du calcul sont utilisées pour assurer le bon fonctionnement de la stratégie.

Risque stratégique

  1. Risque de choc des marchés: dans les marchés à choc intermédiaire, il est possible de déclencher fréquemment de fausses ruptures, entraînant des pertes continues.
  2. Risques de gestion des fonds: l’hypothèque de placement simultané peut entraîner une concentration excessive des positions et nécessite un contrôle raisonnable des marges de risque dans une seule direction.
  3. Risque de glissement: une forte volatilité peut entraîner un glissement important affectant la performance de la stratégie.
  4. Sensibilité des paramètres: la rationalité des réglages de la longueur d’étape affecte directement l’efficacité de la stratégie et doit être soigneusement testée.

Orientation de l’optimisation de la stratégie

  1. L’introduction d’indicateurs de volatilité permettant d’ajuster la longueur d’avance en fonction de la dynamique de la volatilité du marché et d’améliorer l’adaptabilité de la stratégie.
  2. Augmentation du mécanisme de filtrage: ajout d’indicateurs de confirmation de tendance et réduction des pertes dues aux fausses percées.
  3. Amélioration de la gestion des positions: conception d’un mécanisme de contrôle des positions plus minutieux, équilibrant les gains et les risques.
  4. Optimiser l’exécution des commandes: ajouter un routage intelligent des commandes pour réduire l’impact des points de glissement.
  5. Augmentation de la dimension temporelle: prendre en compte les caractéristiques temporelles du marché et ajuster les paramètres stratégiques à différentes périodes.

Résumer

Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle et logique. La stratégie est capable de capturer efficacement les opportunités de tendance du marché grâce à la définition et à l’ajustement de la fourchette de prix dynamique, associée à une gestion de position flexible.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
// 每个图表上画对应间隔的横线,自己手画吧
// 同方向追加20单,订单成交后重新计算,每个tick重新计算,变量保存1000个周期,k线结束后再处理一次订单,按照代码顺序来绘制plot
strategy("Price Level Breakout Strategy", overlay=true, pyramiding=200, calc_on_order_fills=true, calc_on_every_tick=true, max_bars_back=1000, process_orders_on_close=true, explicit_plot_zorder=true)
// var创建持久性变量,:=是更新变量,不重新声明
// 这个是全局变量
// a = array.new<string>(200)
// array.push(a, "a")
// plot(close, color = array.get(a, close > open ? 1 : 0))
string ticker = syminfo.ticker
var float step_size = 1000
// label.new(x=bar_index, y=close, text="当前品种代码: " + ticker)
// 根据定值画1.5的平行线
if ticker == "000300"
    step_size := 4000 * 0.015
if ticker == "XAUUSD"
    step_size := 3000 * 0.016
if ticker == "BTCUSD"
    step_size := 60000 * 0.015
if ticker == "SILVER"
    step_size := 50 * 0.015
if ticker == "UKOIL"
    step_size := 150 * 0.015
if ticker == "GBPUSD"
    step_size := 1.6 * 0.015
if ticker == "EURUSD"
    step_size := 1.1 * 0.015
    // 从0开始画200条间隔线
if ticker == "USDJPY"
    step_size := 100 * 0.015
var float start_value = close
var float up_number = close + step_size
var float low_number = close - step_size
// hline(3.14, title='Pi', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
// plot(1)
// 当价格突破上限,产生买入信号
if close > up_number
    // 生成买入信号
    strategy.entry(id = "Buy", direction = strategy.long)
    // 更新新的价格区间
    start_value := start_value + step_size
    up_number := start_value + step_size
    low_number := start_value - step_size
    strategy.close(id = "Sell")
// 当价格跌破下限,产生卖出信号
if close < low_number
    // 生成卖出信号
    strategy.entry("Sell", strategy.short)
    // 更新新的价格区间
    start_value := start_value - step_size
    up_number := start_value + step_size
    low_number := start_value - step_size
    strategy.close(id = "Buy")