Ослепительный тренд после стратегии

Автор:Чао Чжан, Дата: 2024-02-02 17:30:09
Тэги:

img

Обзор

Эта стратегия называется Dazzling Bolts. Это стратегия, основанная на трех скользящих средних. Она использует перекрестки быстрых, средних и медленных линий для определения ценовой тенденции и устанавливает цели и остановки на основе значений ATR.

Логика стратегии

В стратегии используются следующие три скользящие средние:

  1. Периодическая скользящая средняя за 13 периодов для оценки краткосрочной тенденции
  2. 55-периодная экспоненциальная скользящая средняя для среднесрочной тенденции
  3. Простая скользящая средняя за 110 периодов, для долгосрочной тенденции

Когда быстрая линия пересекается над средней линией и средняя линия пересекается над медленной линией, это сигнализирует о восходящем тренде. Когда быстрая линия пересекается ниже средней линии и средняя линия пересекается ниже медленной линии, это сигнализирует о нисходящем тренде.

Для отфильтрации некоторых видов шума устанавливаются несколько дополнительных условий:

  1. Низкие цены последних 5 свечей были все выше средней линии
  2. Низкая цена последних 2 свечей упала ниже средней линии
  3. Цена закрытия последней свечи была выше средней линии

Когда эти критерии выполнены, длинные или короткие сигналы будут задействованы.

Цели и остановки устанавливаются на основе определенных кратных значений ATR.

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

Преимущества этой стратегии включают:

  1. Использование комбинации трех скользящих средних позволяет избежать возможности ошибочного суждения по одному показателю.
  2. Многочисленные вспомогательные условия помогают улучшить качество сигнала путем фильтрации шума.
  3. Динамическая ATR стоп-лосс помогает контролировать однократные убытки.

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

Риски этой стратегии также включают:

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

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

Руководство по оптимизации

Возможные оптимизации этой стратегии:

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

Резюме

Стратегия Dazzling Bolts обычно является системой стабильного тренда. Она в основном использует скользящие средние кроссоверы для определения направления тренда, с определенными комбинациями технических индикаторов в качестве вспомогательных средств для фильтрации некоторого шума. Хотя есть место для дальнейшей оптимизации, ее общий риск контролируется и подходит для инвестирования в течение средне- и долгосрочных тенденций.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © greenmask9

//@version=4
strategy("Dazzling Bolts", overlay=true)
//max_bars_back=3000

// 13 SMMA
len = input(10, minval=1, title="SMMA Period")
src = input(close, title="Source")
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

// 55 EMA
emalength = input(55, title="EMA Period")
ema = ema(close, emalength)

// 100 SMA
smalength = input(110, title="SMA Period")
sma = sma(close, smalength)

emaforce = input(title="Force trend with medium EMA", type=input.bool, defval=true)
offsetemavalue = input(defval = 6)

bullbounce = smma>ema and ema>sma and low[5]>ema and low[2]<ema and close[1]>ema and (ema[offsetemavalue]>sma or (not emaforce))
bearbounce = smma<ema and ema<sma and high[5]<ema and high[2]>ema and close[1]<ema and (ema[offsetemavalue]<sma or (not emaforce))
plotshape(bullbounce,  title= "Purple", location=location.belowbar, color=#ff33cc, transp=0, style=shape.triangleup, size=size.tiny, text="Bolts")
plotshape(bearbounce,  title= "Purple", location=location.abovebar, color=#ff33cc, transp=0, style=shape.triangledown, size=size.tiny, text="Bolts")
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
longs = input(title="Test longs", type=input.bool, defval=true)
shorts = input(title="Test shorts", type=input.bool, defval=true)
atrlength = input(title="ATR length", defval=12)
atrm = input(title="ATR muliplier",type=input.float, defval=2)
atr = atr(atrlength)

target = close + atr*atrm
antitarget = close - (atr*atrm)

//limits and stop do not move, no need to count bars from since

bullbuy = bullbounce and longs and strategy.opentrades==0
bb = barssince(bullbuy)
bearsell = bearbounce and shorts and strategy.opentrades==0
bs = barssince(bearsell)

if (bullbuy)
    strategy.entry("Boltsup", strategy.long, ordersize)
    strategy.exit ("Bolts.close", from_entry="Boltsup", limit=target, stop=antitarget)
if (crossover(smma, sma))
    strategy.close("Boltsup", qty_percent = 100, comment = "Bolts.crossover")

if (bearsell)
    strategy.entry("Boltsdown", strategy.short, ordersize)
    strategy.exit("Bolts.close", from_entry="Boltsdown", limit=antitarget, stop=target)
if (crossunder(smma, sma))
    strategy.close("Boltsdown", qty_percent = 100, comment = "Bolts.crossover")

// if (bb<5)
//     bulltarget = line.new(bar_index[bb], target[bb], bar_index[0], target[bb], color=color.blue, width=2)
//     bullclose = line.new(bar_index[bb], close[bb], bar_index[0], close[bb], color=color.blue, width=2)
//     bullstop = line.new(bar_index[bb], antitarget[bb], bar_index[0], antitarget[bb], color=color.blue, width=2)
// if (bs<5)
//     bulltarget = line.new(bar_index[bs], antitarget[bs], bar_index[0], antitarget[bs], color=color.purple, width=2)
//     bullclose = line.new(bar_index[bs], close[bs], bar_index[0], close[bs], color=color.purple, width=2)
//     bullstop = line.new(bar_index[bs], target[bs], bar_index[0], target[bs], color=color.purple, width=2)


Больше