Эта стратегия использует перекрестки скользящих средних для определения направления динамики цен, дополненные золотыми/смертными перекрестками для оценки общей тенденции, для реализации следующего тренда.
Стратегия использует перекрестки EMA и SMA для определения направления импульса цены. EMA реагирует быстрее, в то время как SMA реагирует более устойчиво. Когда EMA пересекает SMA, считается, что подъемный импульс силен, идите в длинный. Когда EMA пересекает SMA, считается, что нисходящий импульс силен, идите в короткий.
Кроме того, стратегия также использует перекресток быстрого периода SMA и медленного периода SMA для определения общего направления тренда. Когда быстрая SMA пересекает более медленной SMA, это золотой крест, указывающий на то, что рынок находится в долгосрочном восходящем тренде. Когда быстрая SMA пересекает ниже медленной SMA, это смертельный крест, указывающий на то, что рынок находится в долгосрочном нисходящем тренде.
Стратегия идентифицирует длинную возможность, когда EMA пересекает SMA. Если это золотой крест в это время, это означает, что длинный ход поддерживается как краткосрочным импульсом, так и долгосрочным трендом, что является лучшим длинным временем. Если это смертельный крест, длинный ход поддерживается только краткосрочным импульсом и против долгосрочного тренда, который является более рискованным длинным временем.
Риски могут быть уменьшены путем объединения других индикаторов для подтверждения сигнала, оптимизации периодов MA или установки стоп-лосса.
В целом, это относительно стабильная и надежная стратегия следования тренду. Она учитывает как краткосрочную динамику цен, так и долгосрочное направление тренда, генерируя торговые сигналы через кроссоверы MA. По сравнению с одиночными стратегиями MA, она имеет более высокую надежность, объединяя двойные индикаторы для подтверждения. Но как стратегия следования тренду, ее оптимизация параметров и контроль рисков очень важны. Ей необходимо повторное тестирование и настройка, чтобы действительно реализовать свой потенциал. С постоянными оптимизациями и улучшениями эта стратегия может стать ценным компонентом долгосрочного количественного инвестиционного портфеля.
/*backtest start: 2023-09-19 00:00:00 end: 2023-10-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Cryptoluc1d //@version=4 strategy("Equal-Length EMA/SMA Crossover Strategy", initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, commission_type=strategy.commission.percent, commission_value=0.2, overlay=true) // Create inputs mom_length = input(title="Momentum Length (EMA=SMA)", defval=50) bias_length_fast = input(title="Golden Cross Length (Fast)", defval=50) bias_length_slow = input(title="Golden Cross Length (Slow)", defval=100) // Define MAs ema = ema(close, mom_length) // EMA/SMA crossover of the same period for detecting trend acceleration/deceleration sma = sma(close, mom_length) bias_fast = sma(close, bias_length_fast) // golden/death cross for overall trend bias bias_slow = sma(close, bias_length_slow) // Define signal conditions buy_trend = crossover(ema, sma) and bias_fast >= bias_slow // buy when EMA cross above SMA. if this happens during a bullish golden cross, buying is in confluence with the overall trend (bias). buy_risky = crossover(ema, sma) and bias_fast < bias_slow // buy when EMA cross above SMA. if this happens during a bearish death cross, buying is early, more risky, and not in confluence with the overall trend (bias). buy_late = crossover(sma, bias_slow) and ema > sma // the SMA crossing the Slow_SMA gives further confirmation of bullish trend, but signal comes later. sell = crossunder(ema, sma) // sell when EMA cross under SMA. // Enable option to hide signals, then plot signals show_signal = input(title="Show Signals", defval=true) plotshape(show_signal ? buy_trend : na, title='Trend Buy', style=shape.triangleup, location=location.belowbar, color=color.green, text='TREND BUY') plotshape(show_signal ? buy_risky : na, title='Risky Buy', style=shape.triangleup, location=location.belowbar, color=color.olive, text='RISKY BUY') plotshape(show_signal ? buy_late : na, title='Late Buy', style=shape.triangleup, location=location.belowbar, color=color.lime, text='LATE BUY') plotshape(show_signal ? sell : na, title='Sell', style=shape.triangledown, location=location.abovebar, color=color.red, text='SELL') // Define entry and exit conditions longCondition = ema > sma and bias_fast >= bias_slow // LONG when EMA above SMA, and overall trend bias is bullish if (longCondition) strategy.entry("BUY TREND", strategy.long) exitLong = crossunder(ema, sma) // close LONG when EMA cross under SMA strategy.close("BUY TREND", when=exitLong) // // short conditions. turned off because up only. // shortCondition = ema < sma and bias_fast <= bias_slow // SHORT when EMA under SMA, and overall trend bias is bearish // if (shortCondition) // strategy.entry("SELL TREND", strategy.short) // exitShort = crossover(ema, sma) // close SHORT when EMA cross over SMA // strategy.close("SELL TREND", when=exitShort) // Enable option to show MAs, then plot MAs show_ma = input(title="Show MAs", defval=false) plot(show_ma ? ema : na, title="Momentum EMA", color=color.green, linewidth=1) plot(show_ma ? sma : na, title="Momentum SMA", color=color.yellow, linewidth=1) plot(show_ma ? bias_fast : na, title="Golden Cross SMA (Fast)", color=color.orange, linewidth=2) plot(show_ma ? bias_slow : na, title="Golden Cross SMA (Slow)", color=color.red, linewidth=2)