Стратегия входа и выхода из импульсного ценового канала


Дата создания: 2023-12-06 16:44:32 Последнее изменение: 2023-12-06 16:44:32
Копировать: 1 Количество просмотров: 611
1
Подписаться
1619
Подписчики

Стратегия входа и выхода из импульсного ценового канала

Обзор

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

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

Эта стратегия использует индикатор ценового канала, чтобы рассчитать среднее значение наивысшей и самой низкой цены в течение разных периодов, образуя среднюю линию ценового канала. Используя среднюю линию в качестве основы, устанавливайте длинную и короткую линию с помощью параметров сдвига. В частности, формула для расчета длинной линии: средняя линия + (((средняя линия × длинная линия параметры %); формула для расчета короткой линии: средняя линия + (((средняя линия × короткая линия параметры %).

Когда цена ниже длинной линии, используйте ограничительную линию, чтобы открыть многополюс; когда цена выше короткой линии, используйте ограничительную линию, чтобы открыть многополюс. Стоп-убыток многополюса заключается в том, что цена возвращается к средней линии канала.

Анализ преимуществ

Эта стратегия имеет следующие преимущества:

  1. Используя индикатор ценового канала, можно эффективно улавливать ценовые тенденции и ключевые поддерживающие сопротивления.
  2. Применение метода записи прорыва позволяет снизить потери от ложных прорывов.
  3. Стоп-убытки используются непосредственно в качестве средней линии ценового канала, чтобы избежать чрезмерных потерь, вызванных преследованием стоп-убытков.

Анализ рисков

Однако эта стратегия также несет в себе некоторые риски:

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

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

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

Эта стратегия может быть оптимизирована в следующих аспектах:

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

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

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

Исходный код стратегии
/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's PCMA Strategy v1.0", shorttitle = "PCMA 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price Channel
h = highest(high, per)
l = lowest(low, per)
c = (h + l) / 2
ll = c + ((c / 100) * longlevel)
sl = c + ((c / 100) * shortlevel)

//Lines
shortcolor = needshort ? red : na
longcolor = needlong ? lime : na
plot(sl, linewidth = 2, color = shortcolor, title = "Short line")
plot(c, linewidth = 2, color = blue, title = "SMA line")
plot(ll, linewidth = 2, color = longcolor, title = "Long line")

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = ll, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = sl, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()