Это сложная количественная торговая стратегия, которая сочетает в себе несколько технических индикаторов и торговых концепций. Стратегия в основном основана на блоке ордеров, обнаружении изменений тренда, скользящих средних кроссоверов и многочасовом анализе для генерации торговых сигналов.
Блок заказов: стратегия использует пользовательскую функцию для расчета блока заказов, который представляет собой значительный уровень цены, обычно представляющий области концентрированных институциональных заказов.
Выявление изменений тренда: использует перекрестки простой скользящей средней (SMA) для выявления потенциальных изменений тренда.
Многочасовой анализ: рассчитывает 50-периодные и 200-периодные экспоненциальные скользящие средние значения (EMA) на 1-часовом временном отрезке для определения более широкой тенденции рынка.
Условия въезда:
Стратегия выхода: использует фиксированные процентные уровни получения прибыли и стоп-лосса для управления рисками и закрепления прибыли.
Многомерный анализ: объединяет несколько временных рамок и технических индикаторов, обеспечивая более полную перспективу рынка.
Следование тенденции: торгуя в направлении более широкой тенденции, он увеличивает вероятность прибыльных сделок.
Точные записи: использует блоки заказов и краткосрочные изменения тренда для оптимизации времени входа.
Управление рисками: использует заранее установленные проценты прибыли и стоп-лосса, эффективно контролируя риск для каждой сделки.
Приспособимость: параметры стратегии могут быть адаптированы к различным рыночным условиям.
Переоценка: может генерировать частые торговые сигналы на сильно волатильных рынках, увеличивая затраты на транзакции.
Риск скольжения: на менее ликвидных рынках фактические цены исполнения могут значительно отклоняться от идеальных цен.
Риск переворота тренда: стратегия может понести последовательные убытки вблизи поворотных моментов тренда.
Чувствительность параметров: производительность стратегии может быть очень чувствительной к параметрам, требуя постоянной оптимизации.
Зависимость от рыночной среды: стратегия может плохо работать на рынках с колебаниями или быстро колеблющимися.
Динамическая корректировка параметров: рассмотреть возможность автоматической корректировки процентов прибыли и стоп-лосса на основе волатильности рынка.
Дополнительные фильтры: ввести дополнительные технические или рыночные индикаторы настроения, чтобы уменьшить ложные сигналы.
Временное фильтрация: Добавить ограничения торгового окна времени, чтобы избежать периодов низкой ликвидности.
Управление позициями: внедрять более сложные стратегии управления позициями, такие как размещение позиций на основе волатильности.
Обратное тестирование и оптимизация: проведение более обширного обратного тестирования исторических данных для поиска оптимальных комбинаций параметров.
Признание рыночной среды: Разработка алгоритмов для выявления различных состояний рынка и соответствующей корректировки стратегии.
Это всеобъемлющая и логически сложная количественная стратегия торговли, которая сочетает в себе многочасовой анализ, теорию блоков ордеров и методы следования трендам. Ищу точные точки входа в направлении более широкой тенденции, стратегия направлена на улучшение уровня успеха сделок. Однако из-за своей сложности стратегия также сталкивается с такими проблемами, как перенапряжение и чувствительность параметров. Будущие оптимизации должны сосредоточиться на улучшении адаптируемости и надежности стратегии, включая динамическую корректировку параметров, дополнительные фильтры и более сложные методы управления позициями. В целом, эта стратегия обеспечивает отличную основу для высокочасточной торговли, но требует тщательного осуществления и непрерывного мониторинга и корректировки.
/*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)