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

Автор:Чао Чжан, Дата: 2024-02-04 15:44:54
Тэги:

img

Обзор

Стратегия Swing Trend Moving Average - это система, которая использует долгосрочную скользящую среднюю для определения направления тренда в сочетании с средним истинным диапазоном, чтобы отфильтровать фейкоты и ограничить общие снижения.

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

Стратегия разработана на основе следующих принципов:

  1. Используйте экспоненциальную скользящую среднюю для определения общего направления тренда.
  2. Вычислить средний истинный диапазон за последние 10 баров.
  3. Когда цена закрытия выше Подвижной средней + средней истинной диапазоны, она определяется как восходящий тренд.
  4. Когда цена закрытия ниже Крутящейся средней - Средний истинный диапазон, она определяется как нисходящий тренд.
  5. Идите длинные в восходящем тренде и короткие в нисходящем.
  6. По умолчанию скользящая средняя используется в качестве линии остановки потери.

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

Стратегия имеет следующие преимущества:

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

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

Стратегия также сопряжена с некоторыми потенциальными рисками:

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

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

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

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

Заключение

В целом, Swing Trend Moving Average Strategy - это очень простая и практичная стратегия, следующая за трендом. Она также имеет хороший контроль рисков. Хотя стратегия не учитывает многих факторов, все еще требуется детальное тестирование и оптимизация параметров и методов остановки потерь. Однако ее простая логика торговли и параметры настройки делают ее широко применимой к различным продуктам, особенно подходящей для торговли криптовалютами, такими как Биткойн.


/*backtest
start: 2023-01-28 00:00:00
end: 2024-02-03 00:00:00
period: 1d
basePeriod: 1h
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/
// © Inkedlau

//@version=5
strategy('Swing Trend Strategy', overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, commission_value=0.1)

use_short = input.bool(false, 'Open Short Positions?')
exit_type = input.bool(true, 'Exit trade on Moving Average Cross?')
src = input.source(close, 'Source')
len = input.int(200, 'Trend Length')
ma_type = input.string('ema', 'Moving Average Type', options=['sma', 'ema', 'rma', 'wma', 'vwma'], tooltip='Select the type of Moving Average to use to calculate the Trend')
atr_multiplier = input.float(1., 'ATR Threshold', step=0.5, tooltip='Filter the ranging market using the Average True Range')

// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A TREND FOLLOWING SYSTEM THAT USES A COMBINATION OF MOVING AVERAGE AND AVERAGE TRUE RANGE
// TO SPOT THE TRENDS AND ENTER THE MARKET ACCODINGLY.
// THE MARKET IS CONSIDERED IN AN UPTREND WHEN THE PRICE CLOSES ABOVE THE MOVING AVERAGE + THE AVERAGE TRUE RANGE OF THE LAST 10 PERIODS
// THE MARKET IS CONSIDERED IN AN DOWNTREND WHEN THE PRICE CLOSES BLOW THE MOVING AVERAGE - THE AVERAGE TRUE RANGE OF THE LAST 10 PERIODS
// BY DEFAULT, THE STRATEGY WILL ENTER LONG WHEN AN UPTREND IS SPOTTED, THEN CLOSES WHEN THE PRICE CLOSES BELOW THE MOVING AVERAGE
// THE STRATEGY WILL ENTER SHORT WHEN A DOWNTREND IS SPOTTED, THEN CLOSES WHEN THE PRICE CLOSES ABOVE THE MOVING AVERAGE

// ------------------ INDICATORS CALCULATION------------------
my_ma()=>
    ma = close
    if ma_type == 'sma'
        ma := ta.sma(src, len)
    if ma_type == 'ema'
        ma := ta.ema(src, len)
    if ma_type == 'rma'
        ma := ta.rma(src, len)
    if ma_type == 'wma'
        ma := ta.wma(src, len)
    if ma_type == 'vwma'
        ma := ta.vwma(src, len)
    ma

trend = my_ma()
atr = ta.atr(10)
uptrend = trend + atr * atr_multiplier
downtrend = trend - atr * atr_multiplier

// ---------------- ENTRY AND EXIT CONDITIONS ----------------

open_long = strategy.position_size == 0 and src > uptrend
close_long = exit_type ? strategy.position_size > 0 and src < trend : strategy.position_size > 0 and src < downtrend

open_short = use_short and strategy.position_size == 0 and src < downtrend
close_short = exit_type ? strategy.position_size < 0 and src > trend : strategy.position_size < 0 and src > uptrend

strategy.entry('long', strategy.long, when=open_long)
strategy.close('long', when=close_long)

strategy.entry('short', strategy.short, when=open_short)
strategy.close('short', when=close_short)


// ------------------ PLOTTING AND COLORING ------------------
tcolor = src > uptrend ? color.green : src < downtrend ? color.red : na

ptrend = plot(trend, color=color.blue, linewidth=1)
puptrend = plot(uptrend, color=color.green, linewidth=1)
pdowntrend = plot(downtrend, color=color.red, linewidth=1)
pclose = plot(close, color=na)

fill(puptrend, pclose, color=close > uptrend ? color.green : na, transp = 90)
fill(pdowntrend, pclose, color=close < downtrend ? color.red : na, transp = 90)



Больше