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

Динамическая стратегия пересечения количественных операций EMA

Автор:Чао Чжан, Дата: 2024-11-18 15:53:49
Тэги:ЕМА

Обзор

Эта стратегия представляет собой количественную торговую систему, основанную на скользящих средних кроссоверах в сочетании с динамическими механизмами получения прибыли и остановки потерь. Ядро стратегии использует кроссоверы 10-периодных и 26-периодных экспоненциальных скользящих средних (EMA) для выявления рыночных тенденций и выполнения сделок во время ретраксейнов. Система использует фиксированные уровни получения прибыли и остановки потерь для защиты капитала посредством строгого управления рисками. Эта стратегия особенно подходит для высоковолатильных торговых инструментов, поскольку они часто обеспечивают более четкие сигналы обворота рынка и больший потенциал прибыли.

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

Стратегия использует два EMA с разными периодами в качестве основных индикаторов: краткосрочную 10-периодную EMA и долгосрочную 26-периодную EMA. Сигнал покупки генерируется, когда краткосрочная EMA пересекает длительную EMA, указывая на восходящий тренд; сигнал продажи генерируется, когда краткосрочная EMA пересекает длительную EMA, указывая на нисходящий тренд. Система вступает в сделки во время ретрекширования цен после подтверждения тренда, с 30 пунктами уровень получения прибыли и 15 пунктами уровня остановки потери для контроля риска. Стратегия использует механизм одного сигнала, позволяющий одновременно только одну направленную торговлю, что помогает снизить сложность системы и повысить надежность.

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

  1. Ясные сигналы: использует перекрестки EMA в качестве торговых сигналов, предоставляя простые и ясные правила, которые легко выполняются и контролируются.
  2. Контролируемый риск: использует фиксированные уровни получения прибыли и стоп-лосса для эффективного управления рисками на одну сделку.
  3. Следование тенденциям: сочетает в себе перекрестные действия EMA и ретрассовки цен для эффективного захвата тенденционных рынков
  4. Высокая автоматизация: ясная логика стратегии, которую легко реализовать в автоматизированных торговых системах
  5. Высокая адаптируемость: подходит для различных торговых инструментов, особенно тех, которые имеют высокую волатильность

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

  1. Рыночный риск: может вызывать частые ложные сигналы на рынках с ограниченным диапазоном
  2. Риск сдвига: может возникнуть значительный сдвиг в периоды высокой волатильности
  3. Риск стоп-лосса: фиксированные уровни стоп-лосса могут быть недостаточно гибкими в определенных рыночных условиях.
  4. Отставание сигнала: перекрестные сигналы EMA имеют врожденное отставание, потенциально отсутствующие оптимальные точки входа
  5. Риск управления денежными средствами: требует надлежащего контроля за размером позиций по сделкам

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

  1. Динамическая стоп-лосс: рассмотреть возможность корректировки уровней стоп-лосса на основе волатильности рынка
  2. Фильтрация сигналов: добавление объема, волатильности или других вспомогательных показателей для фильтрации ложных сигналов
  3. Фильтрация времени: внедрить фильтры времени торговли для избежания периодов с высокой волатильностью
  4. Управление позициями: Добавление механизмов частичного получения прибыли, позволяя остальным позициям следовать тенденциям
  5. Управление деньгами: внедрение динамического размещения позиций на основе собственного капитала счета

Заключение

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


/*backtest
start: 2023-11-18 00:00:00
end: 2024-11-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("30 Pips Target & 15 Pips Stop-Loss with One Signal at a Time", overlay=true)

// Define settings for target and stop-loss in pips
target_in_pips = 30
stoploss_in_pips = 10

// Convert pips to price value based on market (for forex, 1 pip = 0.0001 for major pairs like GBP/JPY)
pip_value = syminfo.mintick * 10  // For forex, 1 pip = 0.0001 or 0.01 for JPY pairs
target_value = target_in_pips * pip_value
stoploss_value = stoploss_in_pips * pip_value

// Define EMAs (10-EMA and 26-EMA) for the crossover strategy
ema10 = ta.ema(close, 10)
ema26 = ta.ema(close, 26)

// Buy signal: when 10 EMA crosses above 26 EMA
longCondition = ta.crossover(ema10, ema26)
// Sell signal: when 10 EMA crosses below 26 EMA
shortCondition = ta.crossunder(ema10, ema26)

// Define price levels with explicit type float
var float long_entry_price = na
var float long_take_profit = na
var float long_stop_loss = na
var float short_entry_price = na
var float short_take_profit = na
var float short_stop_loss = na

// Variable to track if a trade is active
var bool inTrade = false

// Check if the trade hit stop loss or take profit
if (inTrade)
    if (not na(long_take_profit) and close >= long_take_profit)
        inTrade := false  // Exit the trade after hitting target
        long_entry_price := na
        long_take_profit := na
        long_stop_loss := na
        strategy.close("Long")

    if (not na(long_stop_loss) and close <= long_stop_loss)
        inTrade := false  // Exit the trade after hitting stoploss
        long_entry_price := na
        long_take_profit := na
        long_stop_loss := na
        strategy.close("Long")

    if (not na(short_take_profit) and close <= short_take_profit)
        inTrade := false  // Exit the trade after hitting target
        short_entry_price := na
        short_take_profit := na
        short_stop_loss := na
        strategy.close("Short")

    if (not na(short_stop_loss) and close >= short_stop_loss)
        inTrade := false  // Exit the trade after hitting stoploss
        short_entry_price := na
        short_take_profit := na
        short_stop_loss := na
        strategy.close("Short")

// Only generate new signals if not already in a trade
if (not inTrade)
    if (longCondition)
        long_entry_price := close
        long_take_profit := close + target_value
        long_stop_loss := close - stoploss_value
        strategy.entry("Long", strategy.long)  // Enter a long trade
        strategy.exit("Take Profit/Stop Loss", "Long", limit=long_take_profit, stop=long_stop_loss)
        inTrade := true  // Mark trade as active

    if (shortCondition)
        short_entry_price := close
        short_take_profit := close - target_value
        short_stop_loss := close + stoploss_value
        strategy.entry("Short", strategy.short)  // Enter a short trade
        strategy.exit("Take Profit/Stop Loss", "Short", limit=short_take_profit, stop=short_stop_loss)
        inTrade := true  // Mark trade as active

// Plot the levels on the chart only when in a trade
plot(inTrade and not na(long_take_profit) ? long_take_profit : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Take Profit (Long)")
plot(inTrade and not na(long_stop_loss) ? long_stop_loss : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Stop Loss (Long)")

plot(inTrade and not na(short_take_profit) ? short_take_profit : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Take Profit (Short)")
plot(inTrade and not na(short_stop_loss) ? short_stop_loss : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Stop Loss (Short)")

plotshape(series=longCondition and not inTrade, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition and not inTrade, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")


Связанные

Больше