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

Автор:Чао Чжан, Дата: 2023-11-22 16:10:21
Тэги:

img

Обзор

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

Логика стратегии

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

В частности, эта стратегия определяет 5-дневную (быструю) и 34-дневную (медленную) двойную скользящую среднюю. Она ежедневно рассчитывает эти два МА и проверяет, пересекает ли быстрый МА выше или ниже медленного МА. Если происходит золотой крест, он длинный. Если происходит смертельный крест, он выходит из позиций.

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

Это простая и понятная стратегия, подходящая для начинающих торговцев.

Стратегия двойного MA может эффективно отфильтровывать рыночный шум и отслеживать основную тенденцию.

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

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

Стратегия двойного MA имеет риски, такие как неудачные стоп-потери или неудачи в настройке кривой.

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

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

  3. Он опирается исключительно на технические показатели, не сочетая фундаментальный анализ.

  4. Это не учитывает размер позиций и управление рисками.

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

Чтобы лучше использовать свои сильные стороны и снизить риски, можно оптимизировать следующие способы:

  1. Добавьте индикаторы тренда, такие как MACD и индикаторы волатильности, такие как KDJ, чтобы установить более строгие правила входа и отфильтровать ложные сигналы.

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

  3. Оптимизируйте комбинации быстрых и медленных дней MA для адаптации к колебаниям цен в разных временных рамках.

  4. Ссылка на широкие рыночные индексы для определения общего режима рынка и избежания переоценки на различных рынках.

  5. Включайте изменения объема торговли для проверки надежности сигналов тренда.

Заключение

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


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
// This strategy is a modification to the "Bill Williams, Awesome Oscillator
// (AO) Backtest" strategy (Copyright by HPotter v1.0 29/12/2016)
//
// This version of the strategy by Midnight Mouse. 10/4/2018
//
// DESCRIPTION
//
// This indicator plots the oscillator as a column where periods fit for buying
// are marked as green, and periods fit for selling as orange/brown. If the
// current value of AO (Awesome Oscillator) is > the previous, the period is
// deemed fit for buying and the indicator is marked green. If the AO values is
// not over the previous, the period is deemed fit for selling and the indicator 
// is marked orange/brown.
//
// You can change long to short in the Input Settings
//
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////

strategy("Awesome Oscillator.MMouse_Lager_BCE")

// === SETTINGS ===

// Strategy start date
FromMonth   = input(defval = 1,    title = "From Month", minval = 1)
FromDay     = input(defval = 1,    title = "From Day",   minval = 1)
FromYear    = input(defval = 2017, title = "From Year",  minval = 2014)

// Strategy settings
nLengthSlow = input(34, minval=1,  title="Length Slow")
nLengthFast = input(5,  minval=1,  title="Length Fast")
allowShorts = input(false,         title="Include Short Trades")
reverse     = input(false,         title="Trade reverse")


// === BODY ===

// Use Heikin-Ashi candles for the buy/sell signal
ha_t        = heikinashi(syminfo.tickerid)
ha_high     = security(ha_t, timeframe.period, high)
ha_low      = security(ha_t, timeframe.period, low)
length      = input( 14 )
price       = open
vrsi        = rsi(price, length)

// Calc (H+L)/2 for each length
xSMA1_hl2   = sma((ha_high + ha_low)/2, nLengthFast)
xSMA2_hl2   = sma((ha_high + ha_low)/2, nLengthSlow)

// Get SMA difference (Fast - Slow)
xSMA1_SMA2  = xSMA1_hl2 - xSMA2_hl2

// Derive the color of the column
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? #93c47d : #ad5e1d

// Determine the position to take (Long vs. Short)
pos = iff(xSMA1_SMA2 > xSMA1_SMA2[1],  1, iff(xSMA1_SMA2 < xSMA1_SMA2[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos))

// Only apply strategy from the start date
if (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00))
    if (possig == 1)
        // Market is currently fit for a Long position
        strategy.entry("Long", strategy.long)

    if (possig == -1)
        // Market is currently fit for a Short position
        if(allowShorts)
            // Shorts are allowed. Record a Short position
            strategy.entry("Short", strategy.short)	   	    
        else
            // Shorts are not allowed. Closec the Long position.
            strategy.close("Long")

// Define the candle colors
//barcolor(possig == -1 ? red : 
//         possig ==  1 ? green : 
//         blue )

// Plot the oscillator
plot(xSMA1_SMA2, style=columns, linewidth=1, color=cClr)

Больше