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

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

Автор:Чао Чжан, Дата: 2024-12-05 16:22:32
Тэги:ЕМАSMAКРОСС

img

Обзор

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

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

Стратегия использует быструю EMA (9-периодическую) и медленную EMA (21-периодическую) для построения торговой системы. Длинные сигналы генерируются, когда быстрая EMA пересекает более медленной EMA, в то время как короткие сигналы возникают, когда быстрая EMA пересекает ниже медленной EMA. Система автоматически устанавливает уровни стоп-лосса и прибыли на основе заранее установленных процентов для каждой сделки. Размер позиций использует подход, основанный на процентах, по умолчанию до 100% собственного капитала счета.

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

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

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

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

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

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

Резюме

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


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//
//  ██╗         █████╗         ██████╗     ██████╗     ██╗   ██╗    ██╗
//  ██║        ██╔══██╗       ██╔═══██╗    ██╔══██╗    ██║   ██║    ██║
//  ██║        ███████║       ██║   ██║    ██║  ██║    ██║   ██║    ██║
//  ██║        ██╔══██║       ██║   ██║    ██║  ██║    ██║   ██║    ██║
//  ███████╗   ██║  ██║       ╚██████╔╝    ██████╔╝    ╚██████╔╝    ██║
//  ╚══════╝   ╚═╝  ╚═╝        ╚═════╝     ╚═════╝      ╚═════╝     ╚═╝
//
//  BTC-EMA做多策略(5分钟确认版) - 作者:LAODUI
//  版本:2.0
//  最后更新:2024
// ═══════════════════════════════════════════════════════════════════════════

strategy("EMA Cross Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// 添加策略参数设置
var showLabels = input.bool(true, "显示标签", group="显示设置")
var stopLossPercent = input.float(5.0, "止损百分比", minval=0.1, maxval=20.0, step=0.1, group="风险管理")
var takeProfitPercent = input.float(10.0, "止盈百分比", step=0.1, group="风险管理")

// EMA参数设置
var emaFastLength = input.int(9, "快速EMA周期", minval=1, maxval=200, group="EMA设置")
var emaSlowLength = input.int(21, "慢速EMA周期", minval=1, maxval=200, group="EMA设置")

// 计算EMA
ema_fast = ta.ema(close, emaFastLength)
ema_slow = ta.ema(close, emaSlowLength)

// 绘制EMA线
plot(ema_fast, "快速EMA", color=color.blue, linewidth=2)
plot(ema_slow, "慢速EMA", color=color.red, linewidth=2)

// 检测交叉
crossOver = ta.crossover(ema_fast, ema_slow)  
crossUnder = ta.crossunder(ema_fast, ema_slow)

// 格式化时间显示 (UTC+8)
utc8Time = time + 8 * 60 * 60 * 1000
timeStr = str.format("{0,date,MM-dd HH:mm}", utc8Time)

// 计算止损止盈价格
longStopLoss = strategy.position_avg_price * (1 - stopLossPercent / 100)
longTakeProfit = strategy.position_avg_price * (1 + takeProfitPercent / 100)
shortStopLoss = strategy.position_avg_price * (1 + stopLossPercent / 100)
shortTakeProfit = strategy.position_avg_price * (1 - takeProfitPercent / 100)

// 交易逻辑
if crossOver
    if strategy.position_size < 0  
        strategy.close("做空")     
    strategy.entry("做多", strategy.long)  
    if showLabels
        label.new(bar_index, high, text="做多入场\n" + timeStr + "\n入场价: " + str.tostring(close) + "\n止损价: " + str.tostring(longStopLoss) + "\n止盈价: " + str.tostring(longTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, yloc=yloc.abovebar)

if crossUnder
    if strategy.position_size > 0  
        strategy.close("做多")     
    strategy.entry("做空", strategy.short)  
    if showLabels
        label.new(bar_index, low, text="做空入场\n" + timeStr + "\n入场价: " + str.tostring(close) + "\n止损价: " + str.tostring(shortStopLoss) + "\n止盈价: " + str.tostring(shortTakeProfit), color=color.red, textcolor=color.white, style=label.style_label_up, yloc=yloc.belowbar)

// 设置止损止盈
if strategy.position_size > 0  // 多仓止损止盈
    strategy.exit("多仓止损止盈", "做多", stop=longStopLoss, limit=longTakeProfit)
    
if strategy.position_size < 0  // 空仓止损止盈
    strategy.exit("空仓止损止盈", "做空", stop=shortStopLoss, limit=shortTakeProfit) 

Связанные

Больше