Преимущество системы следования за трендом на основе прорыва скользящей средней


Дата создания: 2023-11-15 11:00:25 Последнее изменение: 2023-11-15 11:00:25
Копировать: 0 Количество просмотров: 536
1
Подписаться
1617
Подписчики

Преимущество системы следования за трендом на основе прорыва скользящей средней

Обзор

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

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

Эта стратегия основана на следующих моментах:

  1. Индексы для определения тренда используют 40- и 120-дневные индикаторные скользящие средние. Когда быстрая линия сверху проходит медленную линию, это является сигналом золотой вилки, указывающим на вход в восходящую тенденцию; когда быстрая линия сверху снизу проходит медленную линию, это является сигналом мертвой вилки, указывающим на вход в нисходящую тенденцию.

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

  3. Стоп-лосс устанавливается как четырехкратный ATR ниже цены. ATR эффективно измеряет волатильность и риск рынка, а стоп-лосс устанавливается в определенном количестве, чтобы контролировать убытки от одной сделки.

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

  5. 50-дневный срок прохождения в сочетании со средней линией 40 и 120 дней позволяет эффективно отфильтровывать ложные прорывы.

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

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

  1. Сочетание скользящих средних позволяет эффективно определять направление рыночных тенденций. 40-дневная средняя линия может улавливать краткосрочные тенденции, 120-дневная средняя линия может определять средне-долгосрочные тенденции.

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

  3. Стоп-лосс устанавливается разумно, чтобы контролировать убытки от одной сделки и избежать разрыва позиции. Контроль потерь от одной сделки может гарантировать устойчивость прибыли.

  4. Индексные скользящие средние больше соответствуют тенденциям изменения цен, и система может держать позиции дольше, в соответствии с тенденционным трейдинговым подходом.

  5. Выбор параметров скользящих средних учитывает чувствительность к улавливанию тенденций и стабильность фильтрации шума.

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

Однако эта стратегия также несет в себе некоторые риски:

  1. Риски, связанные с долгосрочным удержанием позиции: эта стратегия относится к стратегии отслеживания тенденции, и в случае длительного горизонтального скорректирования или обратного тренда, вы столкнетесь с большими потерями.

  2. Риск ложного прорыва: когда цена касается вблизи канала, может быть определенная доля ложного прорыва, что приводит к ненужной сделке.

  3. Риск параметровой настройки: настройка параметров скользящих средних и каналов слишком субъективна, и в разных рынках необходимо корректировать комбинацию параметров, иначе это может повлиять на стабильность системы.

  4. Слишком маленький риск остановки убытков: слишком маленькая остановка убытков, которая может привести к слишком большому количеству остановки убытков, что может повлиять на прибыль.

Решение проблемы:

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

Направление оптимизации

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

  1. Тестируйте комбинации различных равномерных линий, чтобы найти оптимальную комбинацию параметров. Можно тестировать комбинации различных простых, индексов, движущихся средних, таких как Hull.

  2. Оптимизация циклов и параметров каналов, чтобы сделать прорывные сигналы более эффективными. Можно оптимизировать в сочетании с частотой колебаний рынка.

  3. Оптимизация стоп-стратегии, использование стоп-слежения в течение тренда и использование фиксированного стопа после окончания тренда.

  4. Для повышения точности сигналов используются такие показатели, как MACD, KD и другие.

  5. Повышение стратегии управления позициями, увеличение позиций в течение тренда, оптимизация прибыли.

  6. Выбор комбинации параметров в зависимости от характеристик разных сортов делает систему более гибкой.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 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/
// © Robrecht99

//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)

// Backtest Range //

Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")

//Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")

// Donchian Channels //

Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //

length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > h1 and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < l1 and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")