Стратегия следования за трендом по трем EMA


Дата создания: 2023-11-10 11:45:30 Последнее изменение: 2023-11-10 11:45:30
Копировать: 1 Количество просмотров: 723
1
Подписаться
1617
Подписчики

Стратегия следования за трендом по трем EMA

Обзор

Три стратегии отслеживания трендов EMA, используемые для определения направления ценового тренда путем вычисления средней линии EMA для различных циклов. Эта стратегия проста и проста в реализации, и ее эффективность заметна в разновидностях, в которых тенденция очевидна.

Стратегический принцип

Эта стратегия рассчитывает средние линии EMA для трех различных периодов, то есть для 10-ти, 20-ти и 30-ти периодов. В коде вычисляется три средних линии через функцию ema.

Стратегия в основном определяет направление трех средних линий. Если три средних линий одновременно поднимаются, то создается сигнал “сделай больше”; если три средних линий одновременно падают, то создается сигнал “сделай меньше”.

Логика определения плюсов и минусов заключается в том, что если ema1, ema2 и ema3 растут одновременно на одной из прошлых K-линий, то enter_long является истинным и создает плюсы. Если ema1, ema2 и ema3 падают одновременно на одной из прошлых K-линий, то enter_short является истинным и создает минусы.

В зависимости от сигнала о покупке и продаже, стратегия устанавливает соответствующие позиции о покупке и продаже. В отличие от сигнала о покупке, логика закрытия позиции заключается в том, что если текущие K-линии ema1, ema2 и ema3 не растут одновременно, то exit_long - это истинно, а выровняется как многопозиционная позиция.

Таким образом, можно определить общую тенденцию цены, осуществив отслеживание тенденции, путем определения согласованности направления трех средних линий EMA.

Стратегические преимущества

  • Используя три средних линии EMA, можно более точно определить направление тренда. По сравнению с одной средней линией, три средних линии более надежны в определении тренда и имеют меньшую вероятность ошибочного сигнала.

  • EMA более чувствительна к изменениям цен и может своевременно отражать переход тренда. По сравнению с другими средними линиями, такими как SMA, EMA лучше подходит для определения направления тренда.

  • При использовании различных циклов ЭМА можно учитывать как краткосрочные, так и среднесрочные тенденции. 10-циклическая ЭМА определяет краткосрочные тенденции, 20-циклическая и 30-циклическая ЭМА определяет среднесрочные тенденции.

  • Реализация стратегии проста, легко понятна, подходит для начинающих и имеет большое пространство для оптимизации параметров, которые могут быть скорректированы для разных сортов.

  • Стратегия основана только на EMA, использует меньше ресурсов, подходит для больших партий и распространения.

Стратегический риск

  • Согласованность трёх направлений EMA является необходимым, но не достаточным условием для определения тренда. При ложном нарушении направления EMA будет создаваться ошибочный сигнал.

  • При переходе тренда, EMA пересекается с задержкой, которая не может вовремя отразить переходный момент тренда, что может привести к убыткам.

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

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

  • Можно расширить трехмесячный промежуток среднелинейных циклов EMA, чтобы снизить вероятность ложного сигнала. Или добавить другие показатели, фильтрующие ложные прорывы.

  • Можно комбинировать количественные и энергетические показатели, чтобы подтвердить тенденцию, идентифицировать переломные моменты тенденции, уменьшить потери. Также можно уместно ослабить точки остановки.

  • Можно по возможности увеличить параметры EMA и снизить частоту открытия позиций. Или заменить их другими показателями.

  • Если вы обнаружите, что рынок находится в шоке, вы можете приостановить стратегию и избежать недействительной сделки.

Направление оптимизации

  • Циклическая оптимизация: адаптация циклических параметров трех ЭМА к характеристикам разных сортов.

  • Условия фильтрации: добавление таких показателей, как MA, BOLL, чтобы избежать ложного прорыва EMA.

  • Стратегия остановки убытков: trailing stop постепенно отслеживает остановки, защищая прибыль.

  • Управление капиталом: оптимизация управления позициями, снижение влияния одиночных убытков на общее положение дел.

  • Оценка рыночной конъюнктуры: оценка степени рыночных колебаний на основе таких показателей, как волатильность, участие в стратегии контроля.

  • Параметры адаптируются: позволяют автоматически оптимизировать параметры цикла 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)