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

SMA EMA MA
Дата создания: 2024-12-13 10:40:30 Последнее изменение: 2024-12-13 10:40:30
Копировать: 0 Количество просмотров: 475
1
Подписаться
1617
Подписчики

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

Обзор

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

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

Основная логика стратегии включает в себя следующие ключевые элементы:

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

Стратегические преимущества

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

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

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

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

  1. Динамическое управление позициями: рекомендуется динамично корректировать количество торговых контрактов в зависимости от чистой стоимости счетов и рыночной волатильности.
  2. Фильтрация на рыночных условиях: увеличение показателей интенсивности тренда (например, ADX) и снижение частоты торговли на волатильных рынках.
  3. Оптимизация стоп-лора: можно рассмотреть возможность использования ATR для динамической корректировки стоп-дистанции для повышения адаптации стратегии к различным рыночным условиям.
  4. Подтверждение сигнала: увеличение количества сделок, движения и других вспомогательных показателей, повышение надежности торгового сигнала.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tobiashartemink2

//@version=5
strategy("High 5 Trading Technique", overlay=true)

// --- Input parameters ---
sma89Length = input.int(title="SMA 89 Length", defval=89)
sma21Length = input.int(title="SMA 21 Length", defval=21)
ema5HighLength = input.int(title="EMA 5 High Length", defval=5)
ema5LowLength = input.int(title="EMA 5 Low Length", defval=5)
contracts = input.int(title="Aantal Contracten", defval=1)
stopLossPoints = input.int(title="Stop Loss Points per Contract", defval=25)
takeProfitPoints = input.int(title="Take Profit Points per Contract", defval=25)

// --- Calculate moving averages ---
sma89 = ta.sma(close, sma89Length)
sma21 = ta.sma(close, sma21Length)
ema5High = ta.ema(high, ema5HighLength)
ema5Low = ta.ema(low, ema5LowLength)

// --- Identify trend and order of moving averages ---
longSetup = close > sma89 and close > sma21 and ema5High > sma21 and sma21 > sma89
shortSetup = close < sma89 and close < sma21 and ema5Low < sma21 and sma21 < sma89

// --- Entry signals ---
longTrigger = longSetup and close <= ema5Low
shortTrigger = shortSetup and close >= ema5High

// --- Entry orders ---
if (longTrigger)
    strategy.entry("Long 1", strategy.long, qty=contracts)
    strategy.entry("Long 2", strategy.long, qty=contracts)

if (shortTrigger)
    strategy.entry("Short 1", strategy.short, qty=contracts)
    strategy.entry("Short 2", strategy.short, qty=contracts)

// --- Stop-loss and take-profit for long positions ---
if (strategy.position_size > 0)
    strategy.exit("Exit Long 1", "Long 1", stop=strategy.position_avg_price - stopLossPoints, limit=strategy.position_avg_price + takeProfitPoints)
    strategy.exit("Exit Long 2", "Long 2", stop=strategy.position_avg_price - stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Stop-loss and take-profit for short positions ---
if (strategy.position_size < 0)
    strategy.exit("Exit Short 1", "Short 1", stop=strategy.position_avg_price + stopLossPoints, limit=strategy.position_avg_price - takeProfitPoints)
    strategy.exit("Exit Short 2", "Short 2", stop=strategy.position_avg_price + stopLossPoints, trail_offset=takeProfitPoints, trail_points=takeProfitPoints)

// --- Plot moving averages ---
plot(sma89, color=color.blue, linewidth=2)
plot(sma21, color=color.red, linewidth=2)
plot(ema5High, color=color.green, linewidth=2)
plot(ema5Low, color=color.orange, linewidth=2)