В процессе загрузки ресурсов... загрузка...

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

Автор:Чао Чжан
Тэги:ЕМАSMA

img

Обзор

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

  1. Когда быстро движущаяся средняя пересекает медленно движущуюся среднюю (золотой крест), открывайте длинную позицию, если текущей позиции нет, и устанавливайте цену стоп-лосса (вычисляемую на основе процента стоп-лосса).
  2. Когда быстро движущаяся средняя пересекается ниже медленно движущейся средней (смертный перекресток), открыть короткую позицию, если текущей позиции нет, и установить цену стоп-лосса.
  3. Если существует короткая позиция, закрыть позицию, когда произойдет золотой крест. Открывать позиции на основе скользящих средних перекрестных сигналов и устанавливать стоп-лосс для отслеживания средне- и долгосрочных ценовых тенденций в соответствии с тенденциями.

Преимущества стратегии

  1. Он поддерживает как SMA, так и EMA, которые можно гибко выбирать.
  2. Установка стоп-лосса в определенной степени контролирует риск потери.

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

  1. Неправильный выбор параметров (например, ненадлежащие периоды скользящей средней) может привести к частым сигналам или отставанию в оценке тренда.
  2. Быстро колеблющиеся рынки могут привести к частой торговле и плохой производительности.
  3. Когда тенденция меняется или заканчивается, могут возникнуть более крупные снижения.
  4. Фиксированный процент стоп-лосса может плохо контролировать риски.

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

  1. Рассмотреть возможность внедрения показателей, связанных с волатильностью, таких как ATR, для динамической корректировки позиций стоп-лосса.
  2. Подтвердить тренд перед открытием позиции вместо того, чтобы сразу же открывать его на перекрестке, или добавить другие индикаторы подтверждения тренда для облегчения суждения и улучшения точности захвата тренда.
  3. Подумайте о сочетании с другими сигналами для формирования многофакторной стратегии.

Резюме


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

//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)

//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length") 
maSlowLength  = input(200, title="Quick MA Length") 
useSma        = input(true, title="Use SMA? If false, EMA is used.")

maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow  = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)

stop_loss_percentage = input(2.0, title="Stop Loss (%)")

var float longStopLevel = na
var float shortStopLevel = na

bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross  = ta.crossunder(maQuick, maSlow)

//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------

if(strategy.position_size == 0)
    // Golden cross, enter a long position
    if(isGoldenCross)
        strategy.entry("Buy", strategy.long)
        longStopLevel := close - close * stop_loss_percentage/100.0
        strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
    // Death cross, enter short position
    else if(isDeathCross)
        strategy.entry("Sell", strategy.short)
        shortStopLevel := close + close * stop_loss_percentage/100.0
        strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)

//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
    // Close long position on death cross
    if(strategy.position_size > 0 and isDeathCross)
        strategy.close("Buy")
    
    // Close short position on golden cross
    else if(strategy.position_size < 0 and isGoldenCross)
        strategy.close("Sell")

//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)

Связанные

Больше