Стратегия Three EMA trend following оценивает направление ценового тренда путем вычисления линий EMA различных периодов и автоматически следует за трендом.
Эта стратегия рассчитывает три линии EMA с различными периодами, в частности 10-периодные, 20-периодные и 30-периодные EMA.
Основная логика заключается в том, чтобы судить о направленной согласованности трех линий EMA. Если все три линии EMA поднимаются вместе, генерируется длинный сигнал. Если все три линии падают вместе, генерируется короткий сигнал.
В частности, если ema1, ema2 и ema3 все поднимаются в последней строке, enter_long становится правдой и генерируется длинный сигнал. Если ema1, ema2 и ema3 все падают в последнюю строку, enter_short становится правдой и генерируется короткий сигнал.
На основе длинных и коротких сигналов стратегия откроет соответствующие длинные и короткие позиции. Логика выхода противоположна сигналам входа. Если ema1, ema2 и ema3 не поднимаются вместе в текущей строке, exit_long становится правдой, и длинная позиция будет закрыта. Если ema1, ema2 и ema3 не падают вместе в текущей строке, exit_short становится правдой, и короткая позиция будет закрыта.
Судя по последовательности направления трех линий EMA, можно определить и отследить общую тенденцию.
Использование трех линий EMA позволяет более достоверно оценить направление тренда по сравнению с одной линией.
EMA более чувствителен к изменениям цен и может отражать изменение тренда во времени.
Комбинация различных периодов EMA учитывает как краткосрочную, так и среднесрочную долгосрочную тенденцию: 10-периодная EMA для краткосрочной, 20- и 30-периодная EMA для среднесрочной долгосрочной тенденции.
Логика стратегии проста и понятна, подходит для новичков.
Стратегия основана исключительно на линиях EMA, требующих меньшего количества ресурсов и подходящих для высокого совпадения.
Последовательность направления линии EMA необходима, но недостаточна для оценки тренда.
Линии EMA отстают в изменении тренда, не способные отражать переломные моменты во времени, что может привести к потерям.
EMA чувствительна к изменениям цен, частое перевёртывание длинных коротких позиций может увеличить затраты на транзакции.
Стратегия неэффективна на изменчивом, волатильном рынке, где линии EMA часто колеблются.
Может оптимизировать разницу в периоде EMA, чтобы уменьшить ложные сигналы, или добавить другие индикаторы, чтобы отфильтровать ложные прорывы.
Добавьте индикаторы импульса, чтобы подтвердить реальный тренд и определить поворотные моменты, уменьшая потери.
Увеличьте периоды EMA, чтобы уменьшить частоту переключения позиций.
Приостановить стратегию, когда рынок диапазона определяется, избегая ненужных сделок.
Настройка периода: корректировка периодов EMA для адаптации к различным инструментам.
Добавить фильтры: Добавить MA, BOLL и т.д. чтобы избежать фальшивых прорывов EMA.
Стоп-потеря: задержка для блокировки прибыли.
Управление рисками: оптимизировать размер позиций для ограничения влияния единых потерь.
Рыночный режим: использовать волатильность для оценки колебаний и контроля стратегического участия.
Адаптивные параметры: автоматическая оптимизация периодов EMA на основе изменений рынка для повышения надежности.
Три EMA следуют тренду стратегии торгов путем определения направления тренда через линии EMA. Это просто и практично с большим пространством оптимизации. Следует отметить риски, такие как ложные прорывы и колебания.
/*backtest start: 2023-10-10 00:00:00 end: 2023-11-09 00:00:00 period: 1d basePeriod: 1h 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/ // © QuantCT //@version=4 strategy("PMA Strategy Idea", shorttitle="PMA", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, commission_type=strategy.commission.percent, commission_value=0.075) // ____ Inputs ema1_period = input(title="EMA1 Period", defval=10) ema2_period = input(title="EMA2 Period", defval=20) ema3_period = input(title="EMA3 Period", defval=30) long_only = input(title="Long Only", defval=false) slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0) use_sl = input(title="Use Stop-Loss", defval=false) // ____ Logic ema1 = ema(hlc3, ema1_period) ema2 = ema(hlc3, ema2_period) ema3 = ema(hlc3, ema3_period) enter_long = (rising(ema1, 1) and rising(ema2, 1) and rising(ema3, 1)) exit_long = not enter_long enter_short = (falling(ema1, 1) and falling(ema2, 1) and falling(ema3, 1)) exit_short = not enter_short strategy.entry("Long", strategy.long, when=enter_long) strategy.close("Long", when=exit_long) if (not long_only) strategy.entry("Short", strategy.short, when=enter_short) strategy.close("Short", when=exit_short) // ____ SL sl_long = strategy.position_avg_price * (1- (slp/100)) sl_short = strategy.position_avg_price * (1 + (slp/100)) if (use_sl) strategy.exit(id="SL", from_entry="Long", stop=sl_long) strategy.exit(id="SL", from_entry="Short", stop=sl_short) // ____ Plots colors = enter_long ? #27D600 : enter_short ? #E30202 : color.orange ema1_plot = plot(ema1, color=colors) ema2_plot = plot(ema2, color=colors) ema3_plot = plot(ema3, color=colors) fill(ema1_plot, ema3_plot, color=colors, transp=50)