Esta estratégia é um sistema de negociação quantitativo baseado em quebras de faixa de preços. Ele opera estabelecendo dinamicamente limites de preço superiores e inferiores e executando negócios quando os preços quebram esses níveis-chave. O conceito central é capturar oportunidades de tendência quando o mercado quebra as faixas de preços estabelecidas, adaptando-se às mudanças do mercado através do ajuste dinâmico de zonas de preços. A estratégia emprega gestão de posição flexível, permitindo que negócios adicionais na mesma direção para maximizar os lucros das principais tendências.
A estratégia opera com base nos seguintes mecanismos principais: primeiro, define tamanhos de passo apropriados para diferentes instrumentos de negociação, normalmente em torno de 1,5% do preço do instrumento. O sistema estabelece zonas de preços acima e abaixo do preço atual, desencadeando sinais longos quando os preços ultrapassam o limite superior e sinais curtos quando ultrapassam o limite inferior. Após cada quebra, as zonas de preços se ajustam para se adaptar ao novo ambiente de mercado. A estratégia suporta a adição de posições na mesma direção, permitindo até 200 posições, permitindo a maximização de lucro durante tendências fortes.
Esta é uma tendência bem projetada seguindo uma estratégia com lógica clara. Através de configurações e ajustes dinâmicos da zona de preços, combinados com gestão de posição flexível, a estratégia pode capturar efetivamente as oportunidades de tendências do mercado. Embora haja espaço para otimização, no geral, a estratégia fornece uma estrutura comercial quantitativa robusta. Através de otimização e melhoria contínua, o desempenho da estratégia pode ser ainda melhorado.
/*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")