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


Дата создания: 2023-09-17 18:33:57 Последнее изменение: 2023-09-17 18:33:57
Копировать: 0 Количество просмотров: 639
1
Подписаться
1617
Подписчики

Обзор

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

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

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

  2. Пропорциональный прирост подвижного среднего значения на верхней полосе. Пропорциональный уменьшение подвижного среднего значения на нижней полосе.

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

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

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

  1. Вычисление скользящих средних просто и позволяет легко определять тенденции.

  2. Настраиваемые параметры для различных сроков и предпочтений риска.

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

  4. Остановка и остановка убытков в фиксированной пропорции, контролируемая.

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

  1. Например, в Китае, где уровень доходов населения растет в два раза.

  2. Неправильная настройка параметров может привести к слишком частым или задержанным сделкам.

  3. Фиксированная доля Stop Loss не является достаточно гибкой.

  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)))
//--------------------------------------------