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


Дата создания: 2024-02-20 13:45:42 Последнее изменение: 2024-02-20 13:45:42
Копировать: 2 Количество просмотров: 607
1
Подписаться
1617
Подписчики

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

Обзор

Эта стратегия является свинговой стратегией, применяемой для трендовых рынков, таких как криптовалюты и акции, и использует более крупные временные рамки, такие как 8 часов. Эта стратегия использует несколько подвижных средних, включая SMA, EMA, VWMA, ALMA, SMMA, LSMA и VWMA, которые применяются к высоким и низким точкам соответственно, образуя два средних канала.

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

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

В этой стратегии используются 7 различных показателей движущихся средних, включая SMA, EMA, VWMA, ALMA, SMMA, LSMA и VWMA. Эти движущиеся средние применяются к наивысшей и наименьшей цене K-линий, производя две средние.

Среднее значение, применяемое к самой высокой цене, называется avg_high, а среднее значение, применяемое к самой низкой цене, называется avg_low. Эти два среднего значения образуют канал.

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

Стоп-линия - это avg_low, стоп-линия - цена открытия позиции.(1+tp_long); при открытии позиции, стоп-линия - это avg_high, а стоп-линия - цена открытия позиции(1-tp_short)。

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

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

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

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

В этой стратегии есть два основных риска:

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

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

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

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

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

  1. Попробуйте больше типов скользящих средних, чтобы найти лучшие комбинации. Можно рассмотреть SMA, EMA, KAMA, TEMA и т. д.

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

  3. Для тестирования различных параметров стоп-стоп-убытков. Можно рассмотреть такие варианты, как trailing stop или динамический стоп-убыток.

  4. В сочетании с индикаторами для определения тенденции, избегайте частого трейдинга на рынках без четкой тенденции. Например, ADX, ATR и т. Д.

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

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

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

Исходный код стратегии
/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 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/
// © exlux99

//@version=4

strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)

////////////////////////////////SETUP///////////////////////////////////////////

sma_high   = sma(high, length_ma)
ema_high   = ema(high, length_ma)
wma_high   = wma(high, length_ma)
alma_high  = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)



avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7

///////////////////////////////////////////

sma_low   = sma(low, length_ma)
ema_low   = ema(low, length_ma)
wma_low   = wma(low, length_ma)
alma_low  = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)



avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7

////////////////////////////PLOTTING////////////////////////////////////////////


plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)

long= close > avg_high
short = close < avg_low

tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)

tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    strategy.close("long", when=crossunder(low,avg_low))
    
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
    strategy.close("short",when=crossover(high,avg_high))