Круговая количественная стратегия EMA

Автор:Чао Чжан, Дата: 2024-03-08 14:18:21
Тэги:

img

Обзор

Эта стратегия основана на перекрестных сигналах двух экспоненциальных скользящих средних (EMAs) для торговли. Когда краткосрочная EMA пересекает длинную EMA, она открывает длинную позицию; когда краткосрочная EMA пересекает длинную EMA, она закрывает позицию. Стратегия также вводит механизм остановки потерь и фильтр времени торговли для контроля рисков и оптимизации эффективности стратегии.

Принципы стратегии

Эта стратегия использует две EMA с разными периодами в качестве основы для оценки тренда. По сравнению с простыми скользящими средними (SMA), EMA могут быстрее реагировать на изменения цен и иметь более разумное распределение веса. Когда краткосрочная EMA пересекает длинную EMA, это указывает на то, что цена может сформировать восходящую тенденцию, и открывается длинная позиция; наоборот, когда краткосрочная EMA пересекает длинную EMA, это указывает на то, что восходящая тенденция может закончиться, и позиция закрывается.

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

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

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

  1. Простая и простая в использовании: логика стратегии ясна и использует только два EMA в качестве торговых сигналов, что легко понять и реализовать.

  2. Отслеживание трендов: EMA могут быстро реагировать на изменения цен, что позволяет стратегии своевременно отслеживать формирование и завершение трендов, тем самым получая прибыль от отслеживания трендов.

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

  4. Гибкие параметры: Пользователи могут регулировать такие параметры, как период EMA, процент стоп-лосса, использовать ли цену закрытия предыдущей свечи для стоп-лосса, период времени торговли и т. Д., В соответствии со своими потребностями, таким образом оптимизируя эффективность стратегии.

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

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

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

  3. Риск затрат: стратегия может генерировать большое количество сделок, что увеличивает затраты на транзакции.

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

  1. Внедрить больше технических индикаторов: на основе перекрестных сигналов EMA внедрить другие технические индикаторы, такие как RSI и MACD, чтобы сформировать многофакторные торговые сигналы и улучшить точность суждения о тренде.

  2. Динамическая стоп-лосс: динамически корректировать позицию стоп-лосса в соответствии с такими показателями, как волатильность рынка и ATR, контролируя риски и минимизируя по возможности потерю прибыли, вызванную стоп-лосом.

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

  4. Оптимизация машинного обучения: Использование алгоритмов машинного обучения для оптимизации параметров стратегии и автоматического выбора оптимальной комбинации параметров, улучшения результатов стратегии и снижения рисков перенастройки.

Заключение

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


/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("EMA strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close < ma2 and strategy.position_size > 0 //and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)

Больше