Стратегия выхода из N Bars

Автор:Чао Чжан, Дата: 2024-04-12 16:57:15
Тэги:

img

Обзор

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

Принцип стратегии

  1. Вычислить самый высокий (самый высокий) и самый низкий (самый низкий) из прошлых N баров.
  2. Если текущая цена закрытия выше, чем самая высокая, открыть длинную позицию.
  3. Если текущая цена закрытия ниже минимальной, закрыть длинную позицию (короткую).
  4. Вы можете выбрать ценовую систему, в которой вы можете использовать цену закрытия (закрытие) или высокую/низкую цену (высокая/низкая) как источник сигнала.
  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 Breakout - это простая и практичная количественная торговая стратегия, которая достигает хороших эффектов, следующих за трендом, захватывая ценовые прорывы. Стратегия имеет четкую логику, большое пространство оптимизации и широкую применимость, что делает ее количественной стратегией, достойной дальнейших исследований и оптимизации. Благодаря разумной оптимизации параметров и улучшению логики стабильность и рентабельность этой стратегии могут быть еще больше повышены, чтобы лучше адаптироваться к различным рыночным условиям.


/*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)

Больше