Стратегия прорыва N Bars


Дата создания: 2024-04-12 16:57:15 Последнее изменение: 2024-04-12 16:57:15
Копировать: 0 Количество просмотров: 572
1
Подписаться
1617
Подписчики

Стратегия прорыва N Bars

Обзор

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

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

  1. Вычислите наивысшую и наименьшую цены за последние N торговых дней.
  2. Если текущая цена закрытия выше “highest”, то открывается позиция “long”.
  3. Если текущая цена закрытия ниже lowest, то торгуется сверхпозиция ((short) ).
  4. В качестве источника сигнала можно использовать ценовую систему close или high/low.
  5. В зависимости от источника сигнала, используются ta.highest и ta.lowest для вычисления максимальной и минимальной цены.
  6. Используйте ta.crossover и ta.crossunder для определения ценового прорыва.

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

  1. Логика проста, понятна, легко реализована и оптимизирована.
  2. Это позволяет эффективно отслеживать тенденции и отслеживать прорывные тренды.
  3. Параметры могут быть скорректированы в зависимости от разных сортов и циклов.
  4. Широко применяется и хорошо работает для большинства сортов и циклов.
  5. Гибкость в выборе источника сигнала повышает адаптивность стратегии.

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

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

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

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

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

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

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