Стратегия торговли Golden Cross


Дата создания: 2023-11-23 14:07:11 Последнее изменение: 2023-11-23 14:07:11
Копировать: 0 Количество просмотров: 611
1
Подписаться
1617
Подписчики

Стратегия торговли Golden Cross

Обзор

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

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

Ключевыми показателями стратегии являются SR-индикатор и SR-сигнал. SR-индикатор представляет собой вторичный синтез WMA-средней линии и SMA-средней линии с параметрами 8 циклов. SR-сигнал представляет собой SR-индикатор, рассчитанный с параметрами 20 циклов.

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

При прохождении SR-сигнала над SR-индикатором, генерируется сигнал покупки; при прохождении SR-сигнала под SR-индикатором, генерируется сигнал продажи. После выхода сигнала плюс-линия, отношение цены акции к верхней и нижней границе канала определяет положение стоп-стоп.

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

  • Использование технологии двулинейного синтеза для устранения влияния колебаний цен и точного определения направления тенденции;
  • Применение адаптивных алгоритмов перехода для оптимизации времени входа и выхода, чтобы избежать фальшивых прорывов;
  • Использование адаптивной линейной регрессионной фильтрации в канальной кривой, чтобы избежать влияния кривой на предельные значения;
  • Позиция Stop Loss Stop Stop изменяется в зависимости от динамики канала, автоматически отслеживая тренд для получения прибыли.

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

Эта стратегия основана на отслеживании тенденций, и существуют следующие основные риски:

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

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

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

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

  1. оптимизация параметров показателей SR и показателей сигнала для повышения стабильности перекрестного сигнала;

  2. Оптимизация цикла длины адаптивных каналов, сглаживание кривой каналов;

  3. Добавление других фильтрующих показателей, чтобы избежать ошибочных операций, таких как показатели количественной энергии, показатели волатильности и т. д.;

  4. Вместе с алгоритмами глубокого обучения оптимизировать кривую каналов в режиме реального времени, повышая адаптивность.

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

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

Исходный код стратегии
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

strategy(title = " Strategy PyramiCover",
         shorttitle = "S-PC",
         overlay = true,
         precision = 8,
         calc_on_order_fills = true,
         calc_on_every_tick = true,
         backtest_fill_limits_assumption = 0,
         default_qty_type = strategy.fixed,
         default_qty_value = 2,
         initial_capital = 10000,
         pyramiding=50,
         currency = currency.USD,
         linktoseries = true)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)

FromMonth         = input(defval = 1, title = "Month", minval = 1)
FromDay           = input(defval = 1, title = "Day", minval = 1)
FromYear          = input(defval = 2014, title = "Year", minval = 2014)

backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth           = input(defval = 31, title = "Month", minval = 1)
ToDay             = input(defval = 12, title = "Day", minval = 1)
ToYear            = input(defval = 9999, title = "Year", minval = 2014)

backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

per = input(14,title="🔹 Length")
//
up = 0.0
nup= 0.0
lowl = 0.0
nin = 0.0
//
srl=wma(close,8)
srr = sma(close,8)
sr = 2*srl - srr
//
srsl=wma(close,20)
srsr= sma(close,20)
srsignal = 2*srsl - srsr
//
if sr>srsignal
    up := highest(sr,round(150))
    nup :=highest(srsignal,round(20))
else
    up := highest(srsignal,round(150))
    nup := highest(sr,round(20))
//
if sr<srsignal
    lowl := lowest(sr,round(150))
    nin := lowest(srsignal,round(20))
else
    lowl := lowest(sr,round(150))
    nin := lowest(srsignal,round(20))
//reg alexgrover
f_reg(src,length)=>
    x = bar_index
    y = src
    x_ = sma(x, length)
    y_ = sma(y, length)
    mx = stdev(x, length)
    my = stdev(y, length)
    c = correlation(x, y, length)
    slope = c * (my / mx)
    inter = y_ - slope * x_
    reg = x * slope + inter
    reg
//
up_=f_reg(up,per)
lowl_=f_reg(lowl,per)
nup_=f_reg(nup,per)
nin_=f_reg(nin,per)
//
plot(sr, title='SR', color=color.green, linewidth=2, style=plot.style_line,transp=0)
plot(srsignal, title='SR-Signal', color=color.red, linewidth=2, style=plot.style_line,transp=0)
plot(up_, title='Upper limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0)
plot(lowl_, title='Lower limit', color=color.blue, linewidth=3, style=plot.style_line,transp=0)
a=plot(nup_, title='Neuronal Upper', color=color.gray, linewidth=1, style=plot.style_line,transp=0)
b=plot(nin_, title='Neuronal Lower', color=color.gray, linewidth=1, style=plot.style_line,transp=0)
fill(a, b, color=color.gray)
plotshape(crossunder(sr,nup_)? sr+atr(20):na, title="Sell", text="🐻", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.black,transp=0)
plotshape(crossover(sr,nin_)? sr-atr(20):na, title="Buy", text="🐂", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.black,transp=0)

//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //

if backTestPeriod()

    strategy.entry("Buy", true, 1, when = crossover(sr,nin_)) 
    strategy.entry("Short", false, 1, when = crossunder(sr,nup_))