Стратегия Momentum Positional NoroBands


Дата создания: 2024-01-18 10:58:48 Последнее изменение: 2024-01-18 10:58:48
Копировать: 1 Количество просмотров: 561
1
Подписаться
1617
Подписчики

Стратегия Momentum Positional NoroBands

Обзор

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

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

  1. Вычислите верхнюю и нижнюю полосы по диапазону, используя среднюю истинную длину волны. Прорыв верхней полосы цены является позитивным сигналом, а прорыв нижней полосы - нисходящим сигналом.
  2. Показатель RSI показывает зоны перекупа и перепродажи, где RSI ниже 30 позиций и выше 70.
  3. Движение цены определяется прорывом между максимальной и минимальной ценой.
  4. По цвету букв и медведей можно определить, что рынок имеет несколько голов, а что нет. Зелёный - это рынок с много голов, который показывает рост; красный - рынок с пустыми головами, который показывает падение.
  5. В сочетании с уравненным отклонением от линии суждения посылается торговый сигнал.

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

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

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

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

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

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

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

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

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


//@version=2
strategy("Noro's Bands Strategy v1.5", shorttitle = "NoroBands str 1.5", overlay=true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, defval = true, title = "Use ColorBar")
usecb = input(true, defval = true, title = "Use CryptoBottom")
usersi = input(true, defval = true, title = "Use RSI")
usemm = input(true, defval = true, title = "Use min/max")
usepyr = input(true, defval = true, title = "Use pyramiding")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
needlo = input(false, defval = false, title = "Show Locomotive")
needpy = input(false, defval = false, title = "Show Avg.price line")
src = close

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
lencb = abs(close - mac)
sma = sma(lencb, 100)
max = max(open, close)
min = min(open, close)

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) and (min < min[1] or usemm == false) and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) and (max > max[1] or usemm == false) and (close > strategy.position_avg_price or usepyr == false or strategy.position_size >= 0) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0 //CryptoBottom
//dn2 = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0 //CryptoBottom
up3 = fastrsi < 5 and usersi == true and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0
//dn3 = fastrsi > 95 and usersi = true ? 1 : 0

//Avg Price
colpy = needpy == false ? na : black
plot(strategy.position_avg_price, color = colpy)

up4 = close < strategy.position_avg_price and usepyr == true and strategy.position_size >= 0 ? 1 : 0 
dn4 = close > strategy.position_avg_price and usepyr == true and strategy.position_size <= 0 ? 1 : 0 

//Locomotive
uploco = trend == 1 and close < open and min < min[1] and close < center ? 1 : 0
plotarrow(needlo == true and uploco == 1 ? 1 : 0, colorup = black, colordown = black, transp = 0)

longCondition = up == 1 or (up2 == 1 and usecb == true) or (up3 == 1 and usersi == true) or up4 == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1 or dn4 == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)