В процессе загрузки ресурсов... загрузка...

Экспоненциальная скользящая средняя кроссоверная количественная стратегия торговли

Автор:Чао Чжан, Дата: 2024-03-29 10:59:57
Тэги:

img

Обзор

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

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

  1. Вычислить два EMA с разными периодами, с периодами дефолта 5 и 10.
  2. Если краткосрочная EMA пересекает длинную EMA снизу, она генерирует сигнал покупки; если краткосрочная EMA пересекает длинную EMA сверху, она генерирует сигнал продажи.
  3. При появлении сигнала перекрестка определяется, является ли текущая точка перекрестка самой высокой или самой низкой ценой за последние 10 торговых периодов. Если это самая высокая цена, то восходящая тенденция считается сильной; если это самая низкая цена, то нисходящая тенденция считается сильной.
  4. Если сигнал покупки сформирован, но текущая позиция отсутствует, открыть длинную позицию; если сигнал продажи сформирован, но текущая позиция отсутствует, открыть короткую позицию.
  5. Если удерживается длинная позиция и краткосрочная EMA пересекается ниже долгосрочной EMA сверху, закрыть длинную позицию; если удерживается короткая позиция и краткосрочная EMA пересекается выше долгосрочной EMA снизу, закрыть короткую позицию.

Преимущества стратегии

  1. Экспоненциальные скользящие средние реагируют быстрее на изменения цен по сравнению с простыми скользящими средними, тем самым генерируя более своевременные торговые сигналы.
  2. Определив, является ли точка перекрестка последней самой высокой или самой низкой ценой, он может отфильтровать торговые возможности с большей силой тренда и улучшить прибыльность стратегии.
  3. Маркировка цены кроссоверной точки на графике дает трейдерам более интуитивные торговые ссылки.
  4. Логика кода ясна и легко понять и реализовать.

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

  1. Сигналы, генерируемые перекрестниками EMA, могут иметь задержку, что приводит к тому, что лучшие торговые возможности упускаются.
  2. На колеблющемся рынке перекрестки EMA могут происходить часто, что приводит к чрезмерной частоте торгов и увеличению затрат на торговлю.
  3. В стратегии отсутствуют меры по прекращению потерь, поэтому, если суждение ошибочно, она может столкнуться с большим риском вывода.

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

  1. Внедрить больше технических индикаторов, таких как RSI, MACD и т. д., чтобы помочь оценить силу и направление тренда и улучшить точность сигнала.
  2. Установление разумных уровней стоп-лосса и прибыли для контроля риска одной сделки.
  3. Оптимизировать торговые параметры, такие как периоды EMA и временные окна перекрестного подтверждения, чтобы улучшить адаптивность стратегии.
  4. Сочетание индикаторов настроения на рынке, таких как VIX, для фильтрации торговых сигналов и снижения ложных сигналов.
  5. Подумайте о добавлении модулей управления позициями и управления капиталом для динамической корректировки суммы средств для каждой сделки и повышения эффективности использования капитала.

Резюме

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


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
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
// @version=5
strategy("ema giao nhau", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Get user input
emaLength1 = input.int(title="EMA #1 Length", defval=5)
emaLength2 = input.int(title="EMA #2 Length", defval=10)

// Get MAs
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)

// Draw MAs
plot(ema1, color=color.blue, title="EMA 1")
plot(ema2, color=color.red, title="EMA 2")

// Detect crossovers
bool crossOver = ta.crossover(ema1, ema2)
bool crossUnder = ta.crossunder(ema1, ema2)
bool cross = crossOver or crossUnder
//float crossPrice = ta.valuewhen(cross, close, 0)
float crossPrice = cross ? close : na

// Check if the crossover price is the highest price over the past 10 bars
bool highestPrice = crossOver
for i = 1 to 10
    if crossPrice <= close[i]
        highestPrice := false
        break

// Check if the crossover price is the lowest price over the past 10 bars
bool lowestPrice = crossUnder
for i = 1 to 10
    if crossPrice >= close[i]
        lowestPrice := false
        break

// Flag the bar if it is a high/low close
bgcolor(highestPrice ? color.new(color.green, 50) : na)
bgcolor(lowestPrice ? color.new(color.red, 50) : na)

// Display crossover price
if cross
    highestEmaPrice = ema1 > ema2 ? ema1 : ema2
    label myLabel = label.new(bar_index, highestEmaPrice, "CrossPrice=" + str.tostring(crossPrice), color=color.white)
    if highestPrice and strategy.position_size == 0
        strategy.entry(id="Buy", direction=strategy.long)
    if lowestPrice and strategy.position_size == 0
        strategy.entry(id="Sell", direction=strategy.short)

// Exit trades when short-term EMA is breached
if strategy.position_size > 0 and crossUnder
    strategy.close("Buy")
if strategy.position_size < 0 and crossOver
    strategy.close("Sell")

Больше