Тройная тенденция EMA в соответствии со стратегией

Автор:Чао Чжан, Дата: 2023-12-20 15:00:44
Тэги:

img

Обзор

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

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

Логика стратегии

Логика входа

Стратегия использует 7--, 14- и 21-периодные EMA в качестве индикаторов сигналов входа.

Эта конструкция может уменьшить ложные сигналы и гарантировать, что тенденция достаточно ясна до входа.

Метод остановки потерь

Стратегия использует адаптивную систему стоп-лосса, основанную на ATR и максимальном снижении. Она рассчитывает волатильность цен в режиме реального времени и соответствующим образом устанавливает линии стоп-лосса. В частности, она рассчитывает определенное кратное ATR в качестве буферной зоны стоп-лосса.

Во время восходящего тренда линия стоп-лосса будет двигаться вверх с новыми максимумами, с хорошим эффектом преследования. Когда цена опять опускается до низкой точки буферной зоны, линия стоп-лосса будет активирована для закрытия позиций. Это может контролировать риск стоп-лосса в соответствии с рыночными условиями.

Метод получения прибыли

Стратегия использует фиксированный процентный метод получения прибыли. После открытия позиции линия получения прибыли будет установлена на определенный процент выше входной цены. Когда цена поднимется до линии получения прибыли, позиция будет закрыта для получения прибыли.

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

Анализ преимуществ

  • Может уменьшить ложные сигналы и обеспечить относительно сильный тренд цен после открытия позиций
  • Использование перекрытия периодов EMA для быстрого отслеживания рыночных тенденций
  • Адаптивная система стоп-лосса может контролировать риск на основе волатильности
  • Фиксированный процент получения прибыли удовлетворяет цели прибыли до выхода
  • Метод стоп-лосса, основанный на ATR, и максимальное привлечение могут быть оптимизированы на основе рыночных условий
  • Легко настраивать стиль стратегии путем изменения параметров

Анализ рисков

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

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

Руководство по оптимизации

Стратегия также может быть оптимизирована в следующих аспектах:

  1. Используйте больше индикаторов для определения времени входа, таких как MACD, KD и т. Д., Чтобы избежать ловушки волатильных рынков.

  2. Попробуйте переместить методы получения прибыли, или соотношение прибыли, чтобы сделать методы получения прибыли более гибкими.

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

  4. Корректировать параметры периода EMA на основе характеристик различных продуктов, оптимизируя суждение о тренде.

  5. Добавить модуль размещения позиций, может регулировать по размеру торговли на основе соотношения использования средств.

Заключение

Стратегия последовательности трендов Тройной ЕМА - это очень практичная стратегия последовательности трендов. Она обладает сильными возможностями оценки трендов, а также адаптивными механизмами получения прибыли и остановки потерь, которые могут автоматически управлять ордерами. С точки зрения оптимизации системы получения прибыли и остановки потерь могут быть дополнительно улучшены для корректировки на основе рыночных условий в режиме реального времени.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)


//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

ema_1 = ema(close, input(7))
ema_2 = ema(close, input(12))
ema_3 = ema(close, input(21))

Take_profit= ((input (4))/100)

longTakeProfit = strategy.position_avg_price * (1 + Take_profit)


length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)

go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3)



closeLong = close > longTakeProfit or crossunder(close, vStop)



//Entry 
strategy.entry(id="long", long = true, when = go_long and window())



//Exit
strategy.close("long", when = closeLong and window())

plot(vStop,"Vstop", color.black, linewidth=2)
plot(ema_1,"EMA Short", color.green, linewidth=1)
plot(ema_2,"EMA Mid", color.purple, linewidth=1)
plot(ema_3,"EMA Long", color.red, linewidth=1)



Больше