Стратегия следования за трендом на основе пересечения скользящих средних


Дата создания: 2023-12-12 12:24:11 Последнее изменение: 2023-12-12 12:24:11
Копировать: 0 Количество просмотров: 358
1
Подписаться
1213
Подписчики

Стратегия следования за трендом на основе пересечения скользящих средних

Обзор

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

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

Стратегия основана на двух технических показателях:

  1. Средняя линия EMA: средняя линия EMA с двумя различными параметрами, рассматривается как многоголовый сигнал при прохождении медленной линии на быстрой линии и как пустой сигнал при прохождении нижней.

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

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

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

Эта стратегия имеет следующие преимущества:

  1. Торговля только в том случае, если индикатор ATR считает, что это тенденция, помогает избежать запертия в неизвестном колебании.

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

  3. С помощью параметров чувствительность и гладкость средней линии ЭМА могут быть скорректированы в соответствии с личными предпочтениями.

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

  5. Не требуется часто корректировать параметры, чтобы реализовать простые стратегии ParameterSet и Forget.

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

Однако есть и другие риски, о которых следует помнить:

  1. EMA-пересечение легко создает ложные сигналы, которые могут привести к ненужным потерям. Можно сгладить некоторые показатели, скорректировав параметры EMA.

  2. ATR-индикаторы иногда могут ошибочно оценивать сводку и тенденции, что приводит к упущенным торговым возможностям.

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

Эти риски можно снизить с помощью оптимизации.

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

В этой стратегии есть несколько основных улучшений:

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

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

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

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This strategy has been created for GMT trade 4h by Zhukov


//@version=5
strategy('ZhukovTrade', overlay=true, calc_on_every_tick=true, currency=currency.USD)

// INPUT:

// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input.int(title='Fast EMA', defval=100, minval=1, maxval=9999)
emaSlow = input.int(title='Slow EMA', defval=200, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both')

// Options that configure the backtest date range
startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00'))
endDate = input(title='End Date', defval=timestamp('31 Dec 2023 23:59'))


// CALCULATIONS:

// Use the built-in function to calculate two EMA lines
fastEMA = ta.ema(close, emaFast)
slowEMA = ta.ema(close, emaSlow)
emapos = ta.ema(close,200)

// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2)
plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2)
plot(series=emapos, color=color.new(color.red, 0), linewidth=2)


// CONDITIONS:

// Check if the close time of the current bar falls inside the date range
inDateRange = true

// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'

// Decide if we should go long or short using the built-in functions
longCondition = ta.crossover(fastEMA, slowEMA) 
shortCondition = ta.crossunder(fastEMA, slowEMA) 
// ORDERS:
// Set take profit and stop loss percentages
take_profit_percent = input(0, title="Take Profit Percent")
stop_loss_percent = input(0, title="Stop Loss Percent")
// Submit entry (or reverse) orders


atrPeriod = input(12, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)

if longCondition and inDateRange 
    if longOK and direction<0

        strategy.entry(id='long', direction=strategy.long, alert_message = "LONG")
if shortCondition and inDateRange 
    if shortOK and direction>0
        strategy.entry(id='short', direction=strategy.short, alert_message = "SHORT")

// Submit exit orders in the cases where we trade only long or only short

if strategy.position_size > 0 and take_profit_percent
    strategy.exit(id='tp long',from_entry ="long",profit = take_profit_percent)
if strategy.position_size > 0 and stop_loss_percent
    strategy.exit(id='sl long',from_entry="long",loss=stop_loss_percent)

if strategy.position_size < 0 and stop_loss_percent
    strategy.exit(id='sl short',from_entry="short",loss=stop_loss_percent)
if strategy.position_size < 0 and take_profit_percent
    strategy.exit(id='tp short',from_entry="short",profit = take_profit_percent)