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

Система двойной временной динамической поддержки

Автор:Чао Чжан, Дата: 2024-12-05 16:44:56
Тэги:SMAЕМА

img

Обзор

Эта стратегия представляет собой двойную временную систему динамической поддержки, которая сочетает в себе сигналы пересечения SMA и EMA в еженедельные и ежедневные временные рамки.

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

Основной принцип заключается в наблюдении за пересечением скользящей средней и относительными позициями в течение двух временных рамок:

  1. Долгосрочные (недельные) используют 20-недельную SMA и 21-недельную EMA, короткие (ежедневные) используют 50-дневную SMA и 51-дневную EMA
  2. В длинных временных рамках длинные сигналы генерируются, когда EMA пересекает SMA, а позиции закрываются на нисходящих пересечениях.
  3. В короткие сроки длинные сигналы появляются, когда средняя средняя стоимость пересекает SMA, а краткосрочная средняя стоимость пересекает длинную среднюю стоимость.
  4. Все длинные позиции закрываются, когда короткие временные рамки генерируют короткие сигналы или длинные временные рамки показывают нисходящие перекрестки
  5. Стратегия работает в пределах определенных временных интервалов с автоматическим закрытием позиций за пределами этих интервалов

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

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

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

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

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

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

Заключение

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


/*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
strategy("Demo GPT - Bull Market Support Band", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

start_date = input(timestamp("2018-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2069-12-31 00:00 +0000"), title="End Date")

lsmaLength = input.int(20, title="Long SMA Length", minval=1)
lemaLength = input.int(21, title="Long EMA Length", minval=1)
customLongTimeframe = input.timeframe("W", title="Long Timeframe")  // Khung thời gian dài
ssmaLength = input.int(50, title="Short SMA Length", minval=1)
semaLength = input.int(51, title="Short EMA Length", minval=1)
customShortTimeframe = input.timeframe("D", title="Short Timeframe")  // Khung thời gian ngắn

source = close

// Tính toán SMA và EMA cho khung thời gian dài
smaLong = ta.sma(source, lsmaLength)
emaLong = ta.ema(source, lemaLength)
outSmaLong = request.security(syminfo.tickerid, customLongTimeframe, smaLong)
outEmaLong = request.security(syminfo.tickerid, customLongTimeframe, emaLong)

// Tính toán SMA và EMA cho khung thời gian ngắn
smaShort = ta.sma(source, ssmaLength)
emaShort = ta.ema(source, semaLength)
outSmaShort = request.security(syminfo.tickerid, customShortTimeframe, smaShort)
outEmaShort = request.security(syminfo.tickerid, customShortTimeframe, emaShort)

// Plot các chỉ báo trên biểu đồ
smaPlotLong = plot(outSmaLong, color=color.new(color.red, 0), title='20w SMA (Long)')
emaPlotLong = plot(outEmaLong, color=color.new(color.green, 0), title='21w EMA (Long)')
smaPlotShort = plot(outSmaShort, color=color.new(color.red, 0), title='20d SMA (Short)')
emaPlotShort = plot(outEmaShort, color=color.new(color.green, 0), title='21d EMA (Short)')

// Fill vùng giữa các đường SMA và EMA
fill(smaPlotLong, emaPlotLong, color=color.new(color.orange, 75), fillgaps=true)
fill(smaPlotShort, emaPlotShort, color=color.new(color.orange, 75), fillgaps=true)

// Điều kiện long và short cho khung thời gian dài
longConditionLong = ta.crossover(outEmaLong, outSmaLong)
shortConditionLong = ta.crossunder(outEmaLong, outSmaLong)

// Điều kiện long và short cho khung thời gian ngắn
longConditionShort = ta.crossover(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong)
shortConditionShort = ta.crossunder(outEmaShort, outSmaShort) and (outEmaShort > outEmaLong) // Điều kiện short khi EMA ngắn hạn cắt xuống dưới SMA ngắn hạn và EMA ngắn hạn cao hơn EMA dài hạn

// Kiểm tra điều kiện trong khoảng thời gian được chỉ định
inDateRange = true

// Nếu khung ngắn hạn xuất hiện tín hiệu short, ưu tiên đóng tất cả các lệnh Long
if shortConditionShort and inDateRange
    strategy.close_all()

// Nếu khung dài có tín hiệu short, đóng tất cả các lệnh Long
if shortConditionLong and inDateRange
    strategy.close_all()

// Nếu khung ngắn hạn có tín hiệu long và không có tín hiệu short từ khung dài, vào lệnh Long
if longConditionShort and not shortConditionLong and not shortConditionShort and inDateRange
    strategy.entry("Long", strategy.long)

// Đóng tất cả các lệnh khi không trong khoảng thời gian được chọn
if not inDateRange
    strategy.close_all()


Связанные

Больше