Количественная торговая стратегия, сочетающая отслеживание тренда на нескольких таймфреймах и блоки ордеров

EMA SMA OB
Дата создания: 2024-07-29 13:57:12 Последнее изменение: 2024-07-29 13:57:12
Копировать: 0 Количество просмотров: 533
1
Подписаться
1617
Подписчики

Количественная торговая стратегия, сочетающая отслеживание тренда на нескольких таймфреймах и блоки ордеров

Обзор

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

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

  1. Блок заказов (Order Block): Стратегия использует функцию, чтобы вычислить блок заказов, который является важным ценовым уровнем и обычно представляет собой централизованную область заказов крупных учреждений.

  2. Обнаружение изменения тренда: использование пересечения простых движущихся средних (SMA) для выявления потенциальных изменений тренда.

  3. Анализ в несколько временных рамок: вычисляют 50-циклические и 200-циклические индикаторные скользящие средние ((EMA) на 1-часовой временной рамке для определения более крупных рыночных тенденций.

  4. Условия участия:

    • Многоголовый: когда на 5-минутном графике появляется сигнал восходящего тренда, цена прорывает ордерный блок, а на 1-часовом графике 50 ЭМА находится выше 200 ЭМА.
    • Пустой: когда на 5-минутном графике появляется сигнал о снижении тренда, цена проваливается за пределы блока заказов, а на 1-часовом графике 50 ЭМА находится ниже 200 ЭМА.
  5. Выходная стратегия: используйте фиксированные процентные уровни стоп-поста и стоп-лосса для управления рисками и блокировки прибыли.

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

  1. Многомерный анализ: в сочетании с несколькими временными рамками и техническими показателями, обеспечивает более полный рыночный взгляд.

  2. Следить за тенденциями: повышает вероятность получения прибыли, торгуя в направлении больших тенденций.

  3. Точное вхождение: используйте блоки заказов и изменения краткосрочных тенденций для оптимизации времени входа.

  4. Управление рисками: использование заранее установленных стоп-стоп и стоп-лосс процентов для эффективного контроля риска каждой сделки.

  5. Адаптируемость: параметры стратегии могут быть изменены, чтобы адаптироваться к различным рыночным условиям.

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

  1. Чрезмерная торговля: в условиях резкой волатильности рынка может возникать частота торговых сигналов, увеличивающих стоимость сделки.

  2. Риск скольжения: в менее ликвидном рынке фактическая цена исполнения может иметь большое отклонение от идеальной цены.

  3. Риск обратного тренда: вблизи точки обратного тренда стратегия может потерпеть последовательный убыток.

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

  5. В зависимости от рыночной среды: в условиях рыночного кризиса или быстрого колебания рынок может оказаться неэффективным.

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

  1. Динамическая параметровая настройка: рассмотрение автоматической настройки стоп-лосс в зависимости от волатильности рынка.

  2. Добавление фильтров: введение дополнительных технических или рыночных настроений, чтобы уменьшить количество ложных сигналов.

  3. Временная фильтрация: добавление ограничений на время торгового окна, чтобы избежать низкой ликвидности.

  4. Управление позицией: реализация более сложных стратегий управления позицией, таких как корректировка позиции на основе волатильности.

  5. Отслеживание и оптимизация: проведение более широкого отслеживания исторических данных для выявления оптимальных комбинаций параметров.

  6. Повышение осведомленности о рыночной среде: разработка алгоритмов для выявления различных состояний рынка и соответствующей корректировки стратегии.

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

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

Исходный код стратегии
/*backtest
start: 2024-06-28 00:00:00
end: 2024-07-28 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("S&P 500", overlay=true)
// Parámetros
length = input(14, "Longitud")
src = input(close, "Fuente")
profit_percent = input.float(0.08955, "Porcentaje de ganancia", step=0.00001, minval=0)
stop_loss_percent = input.float(0.04477, "Porcentaje de stop loss", step=0.00001, minval=0)
// Función para calcular el Order Block
order_block(src, len) =>
    highest = ta.highest(high, len)
    lowest = ta.lowest(low, len)
    mid = (highest + lowest) / 2
    ob = src > mid ? highest : lowest
    ob
// Cálculo del Order Block
ob = order_block(src, length)
// Función para detectar cambios de tendencia
trend_change(src, len) =>
    up = ta.crossover(src, ta.sma(src, len))
    down = ta.crossunder(src, ta.sma(src, len))
    [up, down]
// Detectar cambios de tendencia
[trend_up, trend_down] = trend_change(src, length)
// Calcular EMA 50 y EMA 200 en timeframe de 1 hora
ema50_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 50))
ema200_1h = request.security(syminfo.tickerid, "60", ta.ema(close, 200))
// Condiciones de EMA
ema_buy_condition = ema50_1h > ema200_1h
ema_sell_condition = ema50_1h < ema200_1h
// Señales de compra y venta
buy_signal = trend_up and close > ob and ema_buy_condition
sell_signal = trend_down and close < ob and ema_sell_condition
// Ejecutar la estrategia
if (buy_signal)
    strategy.entry("Compra", strategy.long)
if (sell_signal)
    strategy.entry("Venta", strategy.short)
// Calcular precios de toma de ganancias y stop loss
if (strategy.position_size != 0)
    entry_price = strategy.position_avg_price
    is_long = strategy.position_size > 0
    take_profit = entry_price * (1 + (is_long ? 1 : -1) * profit_percent / 100)
    stop_loss = entry_price * (1 + (is_long ? -1 : 1) * stop_loss_percent / 100)
    strategy.exit(is_long ? "Long TP/SL" : "Short TP/SL", limit=take_profit, stop=stop_loss)
// Visualización
plot(ob, "Order Block", color.purple, 2)
plot(ta.sma(src, length), "SMA", color.blue)
plot(ema50_1h, "EMA 50 1h", color.yellow)
plot(ema200_1h, "EMA 200 1h", color.white)
bgcolor(buy_signal ? color.new(color.green, 90) : sell_signal ? color.new(color.red, 90) : na)