Это классическая система следования трендам. Он использует скользящие средние кроссоверы для определения направления тренда и входит, когда цена выходит из каналов Дончиана. Параметр канала Дончиана установлен на 50 дней, чтобы отфильтровать краткосрочный рыночный шум.
Стратегия основывается главным образом на следующих пунктах:
40-дневные и 120-дневные экспоненциальные скользящие средние используются для построения индикатора определения тренда. Когда быстрая линия пересекается над медленной линией снизу, это золотистый крестный сигнал, указывающий на восходящий тренд. Когда быстрая линия пересекается ниже медленной линии сверху, это смертельный крестный сигнал, указывающий на нисходящий тренд.
Параметр Donchian Channel установлен на 50 дней, чтобы отфильтровать рыночный шум. Продолжайте продавать только тогда, когда цена выходит выше верхней полосы, и продолжайте продавать только тогда, когда цена выходит ниже нижней полосы, чтобы избежать ловушки.
Стоп-лосс устанавливается в 4 раза ниже цены ATR. ATR может эффективно измерять волатильность рынка и риск.
Экспоненциальные скользящие средние лучше подходят для текущих ценовых тенденций, в то время как простые скользящие средние слишком плавно.
50-дневный период канала хорошо работает с 40-дневными и 120-дневными скользящими средними для эффективного фильтрации ложных прорывов.
Преимущества этой стратегии включают:
Сочетание скользящих средних может эффективно определять направление тренда рынка. 40-дневный MA фиксирует краткосрочные тенденции, а 120-дневный MA оценивает долгосрочные тенденции.
Дончианский канал фильтрует шум и избегает преследования вершин и дна.
Установка стоп-лосса является разумной для контроля потери на отдельных сделках и избежания взрывов счетов.
Экспоненциальные скользящие средние лучше соответствуют тенденциям изменения цен, что позволяет более длительные периоды хранения, соответствующие идее трендовой торговли.
Параметры скользящей средней достигают баланса между чувствительностью улавливания тенденции и стабильностью фильтра шума.
Риски этой стратегии включают:
Риск длительного периода хранения: в качестве стратегии, следующей за трендом, при длительном боковом диапазоне или изменении тренда могут возникнуть большие потери.
Риск ложного прорыва: может возникнуть определенный процент ложных прорывов, когда цена достигает диапазонов каналов, что приводит к ненужным сделкам.
Параметр определения риска: настройки скользящих средних и каналов являются субъективными. Различные рынки нуждаются в скорректированных комбинациях, иначе стабильность системы оказывается затронута.
Слишком жесткий риск стоп-лосса: слишком жесткое установление стоп-лосса может привести к слишком большому количеству стоп-отов, что повлияет на прибыльность.
Решения:
Стратегия может быть оптимизирована в следующих аспектах:
Проверить различные комбинации скользящих средних для поиска оптимальных параметров.
Оптимизировать период и настройки канала, чтобы сделать сигналы более эффективными.
Оптимизируйте стратегию стоп-лосса. Принимайте последующие остановки во время периодов тренда и фиксированные остановки после окончания тренда.
Добавьте подтверждающие индикаторы, такие как MACD, KD, чтобы улучшить точность сигнала.
Внедрять стратегии размещения позиций, пирамиды в период тренда для оптимизации прибыли.
Выбирать комбинации параметров в соответствии с различными характеристиками продукта, чтобы сделать систему более надежной.
В целом, это типичная и простая система, следующая за трендом. Ядро заключается в использовании скользящих средних и прорывов канала. Стратегия стоп-лосса также является классической и практичной. Стратегия может работать в качестве базовой основы для разработки квантовой системы, а также может быть непосредственно развернута для относительно стабильной прибыли. Дальнейшая оптимизация посредством тестирования может улучшить стабильность и прибыльность системы. Вкратце, стратегия имеет удобство использования и универсальность, что делает ее подходящей как фундаментальную количественную торговую стратегию.
/*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")