Тенденция в соответствии со стратегией, основанной на скользящей средней

Автор:Чао Чжан, Дата: 2024-01-22 17:26:04
Тэги:

img

Обзор

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

Эта стратегия использует две экспоненциальные скользящие средние (EMAs) с разными периодами в качестве основы для торговых решений.

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

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

Преимущества этой стратегии включают:

  1. Принимает подход с двойной EMA для четкого определения направленности тренда.
  2. Позволяет оптимизировать параметры, где можно настроить быстрые и медленные периоды EMA.
  3. Простая и понятная логика, легкая для понимания и реализации, подходящая для новичков.

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

Существуют также некоторые риски:

  1. Склонность к ложным сигналам, когда цены движутся в сторону.
  2. Неэффективен в борьбе с экстремальными колебаниями цен.

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

  1. Оптимизировать периоды EMA для повышения рентабельности.
  2. Добавьте другие показатели, такие как объем торговли, чтобы избежать ложных прорывов.
  3. Добавьте стратегии стоп-лосса, чтобы ограничить снижение на одиночных сделках.
  4. Ввести оптимизацию параметров для более широкой адаптивности.

Заключение


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

//@version=2
strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10)


// === Inputs ===
// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 30, title = "Fast MA Period", minval = 1)

// long ma
maSlowSource   = input(defval = close, title = "Slow MA Source")
maSlowLength   = input(defval = 100, title = "Slow MA Period", minval = 1)

// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = true, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 0, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 0, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 0, title = "Trail Offset Points", minval = 1)

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=blue)
plot(slowMA, color=purple)

goLong() => crossover(fastMA, slowMA)
killLong() => crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong())

// Shorting if using
goShort() => crossunder (fastMA, slowMA)
killShort() => crossover(fastMA, slowMA)
//strategy.entry("Sell", strategy.short, when = goShort())
//strategy.close("Sell", when = killShort())

if (useStop)
    strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 )
    strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)

Больше