Динамическая стратегия прорыва ценового диапазона торговой количественной системы, основанной на уровнях поддержки и сопротивления


Дата создания: 2024-12-11 15:03:50 Последнее изменение: 2024-12-11 15:03:50
Копировать: 3 Количество просмотров: 378
1
Подписаться
1617
Подписчики

Динамическая стратегия прорыва ценового диапазона торговой количественной системы, основанной на уровнях поддержки и сопротивления

Обзор

Стратегия является количественной торговой системой, основанной на прорывах в ценовых диапазонах. Она динамически устанавливает верхние и нижние границы ценовых диапазонов и совершает сделки, когда цены прорывают эти ключевые уровни.

Стратегический принцип

Стратегия основана на следующем ключевом механизме: во-первых, в зависимости от особенностей различных торговых сортов устанавливается соответствующий шаг ((step_size), который основан на цене разновидности примерно на 1,5%. Система устанавливает ценовой диапазон вверх и вниз от текущей цены, который вызывает многосигналы, когда цена превышает верхний предел; при превышении нижнего предела вызывает пустой сигнал. После каждого прорыва ценовой диапазон корректируется, чтобы адаптироваться к новой рыночной среде.

Стратегические преимущества

  1. Динамическая адаптивность: ценовые диапазоны автоматически корректируются с изменением рынка, что позволяет стратегии адаптироваться к различным рыночным условиям.
  2. Выделяется способность отслеживать тенденции: стратегия позволяет полностью уловить сильные тенденции, позволяя одновременно наращивать позиции.
  3. Управление рисками: установлены четкие условия стоп-лосса, автоматическое ликвидация позиций при падении цены за пределы диапазона
  4. Широкая применимость: Стратегия может применяться на различных рынках путем установки соответствующих параметров длины шага для различных торговых сортов.
  5. Высокая вычислительная эффективность: используется постоянная и эффективная вычислительная способность переменных, чтобы гарантировать, что стратегия работает плавно.

Стратегический риск

  1. Риск рыночных потрясений: возможны частые фальшивые прорывы, которые могут привести к последовательным остановкам на рынке.
  2. Управление рисками капитала: одностороннее наращивание позиций может привести к чрезмерной концентрации позиций, требуя разумного контроля над рисковыми выходами в одном направлении.
  3. Риск скольжения: при сильных колебаниях может возникнуть большая скольжение, влияющая на эффективность стратегии.
  4. Чувствительность параметров: обоснованность параметров длины шага напрямую влияет на эффективность стратегии и требует тщательного тестирования.

Направление оптимизации стратегии

  1. Введение показателей волатильности: можно скорректировать шаг за шагом в зависимости от динамики волатильности рынка, повышая адаптивность стратегии.
  2. Повышение механизма отбора: добавление признаков признания тенденций, снижение убытков от ложных прорывов.
  3. Усовершенствование управления позициями: разработать более тонкий механизм контроля позиций, балансирующий прибыль и риски.
  4. Оптимизация исполнения заказов: можно добавить интеллектуальную маршрутизацию заказов, чтобы уменьшить влияние скольжения.
  5. Добавление временного измерения: учитывая временные особенности рынка, изменение параметров стратегии в разные периоды времени.

Подвести итог

Это стратегия для отслеживания тенденций, разработанная с рациональной и логической ясностью. Благодаря установке и корректировке динамических ценовых диапазонов в сочетании с гибким управлением позициями, стратегия может эффективно улавливать тенденционные возможности на рынке.

Исходный код стратегии
/*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")