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

EMA SMA
Дата создания: 2024-05-17 15:48:04 Последнее изменение: 2024-05-17 15:48:04
Копировать: 0 Количество просмотров: 661
1
Подписаться
1617
Подписчики

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

Обзор

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

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

В основе этой стратегии лежит использование трендовых характеристик и перекрестных сигналов для определения направления тренда и времени открытия позиции. Первым делом параметры устанавливаются с помощью быстрого скользящего среднего ((по умолчанию 50) и медленного скользящего среднего ((по умолчанию 200) циклов, а также с помощью выбора использования SMA или EMA. Затем рассчитываются два скользящих средних, чтобы определить их перекрестность:

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

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

  1. Логика проста и понятна, легко понятна и реализуема, и является основой стратегии отслеживания тенденций.
  2. Скрещивание движущихся средних двух различных периодов позволяет лучше судить о формировании и обращении трендов.
  3. Поддерживает два типа скользящих средних: SMA и EMA, с гибким выбором.
  4. Установка стоп-лосса и некоторая степень контроля над риском потери.
  5. В этом стиле можно понять средне- и долгосрочные тенденции.

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

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

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

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

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

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

Исходный код стратегии
/*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)