Стратегия прорыва скользящей средней полосы

Автор:Чао Чжан, Дата: 2023-09-17 18:33:57
Тэги:

Обзор

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

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

  1. Вычислите скользящие средние с такими вариантами, как SMA/EMA/WMA/RMA.

  2. Верхняя полоса представляет собой определенный процентный прирост скользящей средней. Нижняя полоса представляет собой определенный процентный спад.

  3. Пройти длинный курс выше верхней полосы, пройти короткий курс ниже нижней полосы.

  4. Установите точки остановки и получения прибыли. Точка получения прибыли - это определенный процентный прирост входной цены. Точка остановки - это определенный процентный спад входной цены.

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

  1. Просто внедрить определение тренда с использованием скользящих средних.

  2. Параметры, поддающиеся регулированию, учитывают различные периоды хранения и рисковые предпочтения.

  3. Факультативные длинные/короткие направления адаптируются к различным рыночным условиям.

  4. Фиксированный процент стоп-лосса и прибыли позволяет контролировать.

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

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

  2. Неправильная настройка параметров может привести к переоценке или отставанию.

  3. Фиксированный процент стоп-лосса/прибыли не имеет гибкости.

  4. Увеличение частоты торговли и комиссионных с двусторонней торговлей.

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

  1. Оптимизировать параметры скользящей средней, чтобы сбалансировать отставание и шум.

  2. Оптимизировать пропускную способность канала, чтобы соответствовать частоте волатильности рынка.

  3. Проверяйте различные конфигурации стоп-лосса и прибыли.

  4. Добавить индикаторы тренда и колебаний для оценки общих рыночных условий.

  5. Используйте временные фильтры, чтобы избежать значительных последствий событий.

Резюме

Стратегия достигает простого тренда, следующего по каналам скользящей средней, но требует более сильной оптимизации параметров и контроля рисков.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
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/
// © TaylorTneh
//@version=4

// strategy("Moving Average Band Taylor V1",shorttitle="MA Band+",overlay=true,default_qty_type=strategy.cash,default_qty_value=1000,initial_capital=1000,currency=currency.USD,commission_value=.1)

price = input(close, title="Source")
mabtype = input(title="Moving Average Type", defval="RMA", options=["SMA", "EMA", "RMA", "WMA"])
malen = input(10, "MA Period : 10")
magap = input(0.6, "Band Gap : 0.6", minval = -10, maxval = 10, step = 0.1)
mabup = if mabtype == "SMA"
    sma(high, malen)
else
    if mabtype == "EMA"
        ema(high, malen)
    else
        if mabtype == "WMA"
            wma(high, malen)
        else
            if mabtype == "RMA"
                rma(high, malen)
                    
mabdn = if mabtype == "SMA"
    sma(low, malen)
else
    if mabtype == "EMA"
        ema(low, malen)
    else
        if mabtype == "WMA"
            wma(low, malen)
        else
            if mabtype == "RMA"
                rma(low, malen)
                    
upex = mabup * (1 + magap/100)
dnex = mabdn * (1 - magap/100)
plot(upex, "Upper MA Band", color.orange)
plot(dnex, "Lower MA Band", color.orange)


//-------------------------------------------- (Strategy)
strategy.entry("Long", strategy.long, stop = upex)
strategy.entry("Short", strategy.short, stop = dnex)
//Long Only//strategy.entry("Long", strategy.long, stop = upex)
//Long Only//strategy.exit("Short", stop = dnex)
//Short Only//strategy.entry("Short", strategy.short, stop = dnex)
//Short Only//strategy.exit("Long", stop = upex)


//-------------------------------------------- (Take Profit & Stop Lose)
stopPer = input(500.0, title='# Stop Loss %', type=input.float) / 100
takePer = input(500.0, title='# Take Profit %', type=input.float) / 100
//Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)
if strategy.position_size > 0 
    strategy.exit(id="L-TP/SL", stop=longStop, limit=longTake)
if strategy.position_size < 0 
    strategy.exit(id="S-TP/SL", stop=shortStop, limit=shortTake)


//-------------------------------------------- (Sample Time Filter Strategy)
//fromyear = input(2018, 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(10, defval = 10, 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")
//strategy.entry("Long", strategy.long, stop = upex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
//strategy.entry("Short", strategy.short, stop = dnex, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
//--------------------------------------------


Больше