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


Дата создания: 2023-11-02 16:58:23 Последнее изменение: 2023-11-02 16:58:23
Копировать: 0 Количество просмотров: 408
1
Подписаться
1237
Подписчики

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

Обзор

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

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

Эта стратегия использует функцию sma для вычисления простой скользящей средней sma длиной 50 циклов, а также для вычисления быстрой скользящей средней fsma. fsma рассчитывается на основе sma плюс n циклов стандартной разницы цены в 6 раз.

Стратегия использует две булевые переменные long и short для записи состояния выигрыша и проигрыша. Когда цена пересекает sma и fsma, long ставится на 1, чтобы сделать выигрыш; когда цена пересекается, long ставится на -1, чтобы сгладить.

Стратегия использует трендовые переменные для записи трендовых суждений. Когда цена выше fsma и sma, тренд равен 1, что означает тенденцию к росту; когда цена ниже fsma и sma, тренд равен -1, что означает тенденцию к снижению.

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

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

Стратегические преимущества

  1. Используя модель двойного подтверждения, одновременно обнаруживая две скользящие средние, можно эффективно отфильтровать ложные прорывы.

  2. В сочетании с оценкой трендов и прорывными сделками, можно поймать возможности в точке перехода тренда.

  3. Тест и оптимизация без обратной связи, все торговые сигналы генерируются в режиме реального времени, без кривой соответствия.

  4. Логика стратегии проста и понятна, легко понять и изменить.

  5. Параметры визуальной конфигурации, длительность цикла, кратность и т. д. могут быть изменены в зависимости от рынка.

Стратегический риск

  1. Двухлинейная стратегия может привести к частым сделкам и обратным потерям.

  2. Движущаяся средняя сама по себе является отсталой и может пропустить изменение тенденции.

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

  4. Неправильные параметры могут привести к слишком частым или слишком задержанным сделкам.

  5. Для рисков 1 и 2 может быть соответствующим образом продлен среднелинейный цикл и добавлено стоп-потеря для снятия.

  6. Для риска 3 можно установить стопроцентный стоп или привязанный стоп.

  7. Для риска 4 следует адаптировать параметры для различных рынков, избегая одного фиксированного параметра.

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

  1. Добавление условий фильтрации тенденций с использованием MACD, DMI и других показателей подтверждения тенденций.

  2. Для входа в рынок используются такие показатели, как KD, RSI и другие, в сочетании с перекупкой и перепродажей.

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

  4. Добавление модулей управления позициями, таких как динамическое изменение размеров позиций.

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

  6. Добавление модулей машинного обучения для автоматической оптимизации параметров с использованием технологии ИИ.

  7. Построение комплексной стратегии, использующей другие показатели для профилактики прорывов.

  8. Используйте технологии глубокого обучения для выявления более сложных моделей тенденций.

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

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

Исходный код стратегии
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true)
length = input(title="Length", type=input.integer, defval=50)
src_=input(close, title="Source", type=input.source)
mult=input(6.0, title="Mult")
barc=input(true, title="Use barcolor?")
plots=input(false, title="Show plots?")
tri=input(false, title="Use triangles?")


r(src, n)=>
    s = 0.0
    for i = 0 to n-1
        s := s + ((n-(i*2+1))/2)*src[i]
    x=s/(n*(n+1))
    x

l=sma(low, length)
h=sma(high, length)
lr= l+mult*r(low, length)
hr= h+mult*r(high, length)

trend=0
trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1]

strategy.close("Long", when=trend==-1)
strategy.close("Short", when=trend==1)
strategy.entry("Long", strategy.long, when=trend==1 and src_>h)
strategy.entry("Short", strategy.short, when=trend==-1 and src_<l)

long=0
short=0
long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1]

barcolor(barc? (long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue) : na)
plotshape(tri? close : na, style= shape.diamond, color= long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue, location=location.top)

//shortenter=
a1=plot(plots? l : na, color=color.blue, linewidth=1)
//longenter=
a2=plot(plots? h : na, color=color.blue, linewidth=1)
fill(a1, a2, color=color.blue)
//stopshort=
b1=plot(plots? hr : na, color=color.navy, linewidth=1)
//stoplong=
b2=plot(plots? lr : na, color=color.navy, linewidth=1)
fill(b1, b2, color=color.navy)