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


Дата создания: 2023-11-21 11:34:09 Последнее изменение: 2023-11-21 11:34:09
Копировать: 0 Количество просмотров: 561
1
Подписаться
1617
Подписчики

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

Обзор

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

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

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

В частности, стратегия рассчитывает 10-циклическое скользящее среднее ((price1)) и 20-циклическое скользящее среднее ((price2)). Если открытие и закрытие текущей K-линии выше двух скользящих средних, то создается сигнал покупки; если открытие и закрытие текущей K-линии ниже двух скользящих средних, то создается сигнал продажи.

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

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

  • Поймать тренд на ранней стадии, отследить сильные тенденции
  • Двухлинейная фильтрация, предотвращающая частичные ложные прорывы
  • Двойное подтверждение цены открытия и закрытия линии K, уменьшение недействительной сделки

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

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

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

  • Испытание различных комбинаций параметров, чтобы найти оптимальный
  • Увеличение стратегии стоп-лосса и уменьшение размера убытков
  • Добавление фильтров, снижение недействительных сделок
  • Сигнальная эффективность в сочетании с другими показателями

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

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

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

//@version=3
//study(title="MA River CC v1", overlay = true)
strategy("MA River CC v1", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(10, title="1st MA Length")
type1 = input("EMA", "1st MA Type", options=["SMA", "EMA"])

ma2 = input(20, title="2nd MA Length")
type2 = input("EMA", "2nd MA Type", options=["SMA", "EMA"])

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    ema(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    ema(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


buy_entry = (open>price1 and open>price2) and (close>price1 and close>price2)  
sell_entry = (open<price1 and open<price2) and (close<price1 and close<price2)
buy_close = sell_entry
sell_close = buy_entry
//longCondition = crossover(price1, price2)    
if(buy_entry)
    strategy.entry("Long", strategy.long)
    
if(sell_entry)
    strategy.entry("Short", strategy.short)

strategy.close("Long" , when=buy_close)
strategy.close("Short",when=sell_close)