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

Автор:Чао Чжан, Дата: 2024-01-29 11:15:42
Тэги:

img

Обзор

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

Принцип стратегии

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

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

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

Стратегия перекрестной торговли переменными точками имеет следующие преимущества:

  1. Стратегия использует только два индикатора: скользящую среднюю и индикатор ROC.

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

  3. Своевременная остановка потерь с использованием переменных точек скользящей средней может уменьшить большие односторонние потери.

  4. Широкое применение. Принцип стратегии прост и может быть применен к различным продуктам и торговым временным рамкам, таким как суточные и почасовые панели. Большое пространство для оптимизации параметров.

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

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

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

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

  2. Долгие периоды пустого хранения. Эта стратегия имеет своевременные выходы, но более медленные сигналы входа. Это может привести к чрезмерным периодам пустого хранения. Во время периодов пустого хранения упускаются возможности получения прибыли.

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

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

Руководство по оптимизации

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

  1. Включите индикаторы фильтрации тренда. Добавьте такие индикаторы, как ADX и ATR, чтобы оценить состояние тренда. Отключите стратегию, когда нет четкой тенденции, чтобы избежать бесполезных сделок.

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

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

  4. Внедряем распознавание моделей. Определяем модели свечей в точках пересечения MA для фильтрации ложных сигналов.

Резюме

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(close, title="Source")

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

ma2 = input(50, title="2nd MA Length")
type2 = input("SMA", "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)


longCondition = crossover(price1, price2)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition)
    strategy.entry("Short", strategy.short)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

shortexitCondition = ma1up and ma1down[1]
if (shortexitCondition)
    strategy.close("Short")

longexitCondition = ma1down and ma1up[1]
if (longexitCondition)
    strategy.close("Long")



Больше