Стратегия прорыва перемещающегося среднего канала

Автор:Чао Чжан, Дата: 2023-12-12 17:38:19
Тэги:

img

Обзор

Это стратегия прорыва движущегося среднего канала, основанная на движущихся средних и диапазоне каналов.

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

Основная логика этой стратегии заключается в следующем:

  1. Установите скользящую среднюю линию определенного периода как среднюю линию.

  2. Установите верхнюю и нижнюю линии канала, умножив среднюю линию на определенные проценты. Верхняя линия - средняя линия * (100% + предопределенный процент). Нижняя линия - средняя линия * (100% - предопределенный процент).

  3. Когда цена выходит выше верхней линии, перейдите на короткую, когда цена выходит ниже нижней линии, перейдите на длинную.

  4. Установка цен на заказы на соответствующих верхних/нижних линиях.

  5. Закрыть позиции, когда цена вернется к средней линии.

Так что он торгуется на основе прорывов движущегося среднего канала.

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

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

  1. Простая и понятная концепция, легкая в понимании и реализации.

  2. Настраиваемые параметры, соответствующие различным рыночным условиям.

  3. Средняя линия и диапазон каналов могут отфильтровывать рыночный шум и улавливать тенденции.

  4. Ограничьте заказы, контролируйте риски.

  5. Сократите убытки, когда цена вернется к средней линии.

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

Существуют также некоторые риски:

  1. Неправильное настройка параметров может привести к перегрузке/недостаточной торговле.

  2. Высокая вероятность ложных прорывов и стоп-лосса.

  3. Неудача средних и канальных линий при огромных колебаниях рынка.

  4. Преждевременный выход, когда вынужден закрыться на средней линии.

Решения:

  1. Оптимизируйте такие параметры, как период MA и процент канала.

  2. Добавьте другие показатели, такие как объем, чтобы избежать ложных прорывов.

  3. Усилить ручное вмешательство.

  4. Используйте более длительный период MA и более широкий диапазон каналов.

Оптимизация

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

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

  2. Добавьте фильтрующие индикаторы, такие как MACD, чтобы уменьшить ложные сигналы.

  3. Включите автоматическую оптимизацию параметров.

  4. Добавьте дополнительные критерии открытых позиций после прорыва.

  5. Оптимизируйте параметры MA и канала.

Заключение

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


/*backtest
start: 2023-01-01 00:00:00
end: 2023-08-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Robot WhiteBox ShiftMA", shorttitle = "Robot WhiteBox ShiftMA", 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")
src = input(ohlc4, title = "Source")
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")

//SMAs
sma = sma(src, per) 
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, 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 = longline)
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = shortline)
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = sma)
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = sma)

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

Больше