Движущаяся средняя стратегия кроссовера генерирует сигналы покупки и продажи путем расчета кроссовера быстрой EMA (fastLength) и медленной EMA (slowLength) линий. Когда быстрая линия пересекает медленную линию, генерируется сигнал покупки. Когда быстрая линия пересекает медленную линию, генерируется сигнал продажи. Эта стратегия проста и практична, подходит для средне- и краткосрочной торговли.
Стратегия использует две скользящие средние линии, быструю линию и медленную линию. Параметр быстрой линии EMAfastLength является по умолчанию 9-дневной линией, а параметр медленной линии EMAslowLength является по умолчанию 26-дневной линией. Вычислить перекресток двух линий EMA для определения сигналов покупки и продажи на рынке:
Конкретные торговые сигналы и правила стратегии следующие:
Эта стратегия основана на золотом кресте и мертвом кресте двух скользящих средних линий.
Для решения рисков параметры, которые можно оптимизировать, включают цикл скользящей средней, разнообразие торговли, отношение получения прибыли и остановки убытков и т. Д. Для снижения рисков требуется широкое тестирование.
Идея пересечения скользящей средней этой стратегии проста и практична.
Благодаря этим тестам оптимизации можно значительно улучшить практический эффект и стабильность стратегии.
Идея стратегии пересечения скользящей средней проста, но практическое применение требует непрерывной оптимизации. Эта стратегия дает логику генерации торговых сигналов и основных правил торговли. На этой основе она может быть значительно оптимизирована, чтобы стать полезной количественной стратегией. Применение скользящей средней также предоставляет нам идеи для стратегий, на основе которых мы можем внедрять инновации и совершенствоваться.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("EMA Cross by MarketAlpha", overlay=true) EMAfastLength = input(defval = 9, minval = 2) EMAslowLength = input(defval = 26, minval = 2) Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05) StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05) profitpoints = close*Targetpercentage stoplosspoints = close*StopLosspercentage price = close FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2000) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" emafast = ema(price, EMAfastLength) emaslow = sma(price, EMAslowLength) plot(emafast,color=green) plot(emaslow,color=red) enterLong() => crossover(emafast, emaslow) strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong()) strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints) enterShort() => crossunder(emafast, emaslow) strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort()) strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)