Cette stratégie est un système de négociation quantitatif basé sur les ruptures de gamme de prix. Elle fonctionne en établissant dynamiquement des limites de prix supérieures et inférieures et en exécutant des transactions lorsque les prix franchissent ces niveaux clés. Le concept de base est de saisir les opportunités de tendance lorsque le marché se démarque des gammes de prix établies tout en s'adaptant aux changements du marché grâce à un ajustement dynamique des zones de prix.
La stratégie fonctionne sur la base des mécanismes de base suivants: Premièrement, elle fixe des tailles d'étape appropriées pour différents instruments de trading, généralement autour de 1,5% du prix de l'instrument. Le système établit des zones de prix au-dessus et en dessous du prix actuel, déclenchant des signaux longs lorsque les prix dépassent la limite supérieure et des signaux courts lorsqu'ils dépassent la limite inférieure. Après chaque rupture, les zones de prix s'adaptent pour s'adapter au nouvel environnement du marché.
Il s'agit d'une tendance bien conçue qui suit une stratégie avec une logique claire. Grâce à des paramètres et des ajustements dynamiques de la zone de prix, combinés à une gestion flexible des positions, la stratégie peut capturer efficacement les opportunités de tendance du marché. Bien qu'il existe une marge d'optimisation, dans l'ensemble, la stratégie fournit un cadre de trading quantitatif robuste. Grâce à une optimisation et une amélioration continues, les performances de la stratégie peuvent être encore améliorées.
/*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")