Система торговли с динамическим уровнем поддержки на двух таймфреймах

SMA EMA
Дата создания: 2024-12-05 16:44:56 Последнее изменение: 2024-12-05 16:44:56
Копировать: 0 Количество просмотров: 111
1
Подписаться
1166
Подписчики

Система торговли с динамическим уровнем поддержки на двух таймфреймах

Обзор

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

Стратегический принцип

Ключевым принципом стратегии является определение торговых сигналов путем мониторинга соотношения пересечения и позиции средней линии в течение двух временных периодов:

  1. Длинный цикл (окружная линия) с 20-недельным SMA и 21-недельной EMA, короткий цикл (дневная линия) с 50-дневным SMA и 51-дневным EMA
  2. В длинных циклах, когда EMA вверх проходит через SMA, она создает сигнал плюс, а когда она проходит вниз - сигнал равновесия.
  3. В коротких циклах полисигнал создается, когда EMA пересекает SMA вверх, а краткосрочная EMA находится над долгосрочной EMA
  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()