
Эта стратегия использует быстрые и медленные движущиеся средние для построения торговых сигналов, позволяющих идентифицировать и отслеживать тенденции. При пересечении медленной линии на быстрой линии возникает сигнал покупки; при пересечении медленной линии под быстрой линией возникает сигнал продажи.
Эта стратегия использует экспоненциальную движущуюся среднюю с двумя различными периодами в качестве основы для принятия торговых решений. Параметр быстрого движущегося среднего значения установлен на 30 дней, чтобы улавливать более короткие изменения цен. Параметр медленного движущегося среднего значения установлен на 100 дней, чтобы определять направление длинной линии цен.
Когда быстрая линия сверху пересекает медленную линию снизу, это означает, что рынок вступает в восходящую тенденцию, создавая сигнал покупки; когда быстрая линия снизу пересекает медленную линию сверху, это означает, что рынок вступает в нисходящую тенденцию, создавая сигнал продажи.
Эта стратегия имеет следующие преимущества:
Однако эта стратегия также несет в себе некоторые риски:
Эта стратегия может быть оптимизирована в следующих аспектах:
Эта стратегия основана на системе принятия решений о сделках с двумя равномерными линиями, которая определяет рыночные тенденции с помощью ценовых отношений между быстрыми и медленными равномерными линиями, генерирует простые и четкие сигналы. Эта стратегия фильтрует часть шума, способна работать как поток, подходит для торговли средними и длинными линиями. Но есть и некоторые недостатки, которые могут быть оптимизированы более универсально и эффективно путем проведения многомерной оптимизации и контроля риска.
/*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)