Эта стратегия представляет собой количественную торговую систему, основанную на техническом анализе свечей, в первую очередь выявляющую потенциальные торговые возможности путем анализа общей длины верхних и нижних ветвей свечей. Основной механизм сравнивает в реальном времени рассчитанную общую длину ветчи с скорректированной скользящей средней, генерируя длинные сигналы, когда длина ветчи проходит через скользящую среднюю. Стратегия объединяет несколько типов скользящих средних, включая Простую скользящую среднюю (SMA), Экспоненциальную скользящую среднюю (EMA), Весовую скользящую среднюю (WMA) и Объемную весовую скользящую среднюю (VWMA), предоставляя трейдерам гибкие варианты выбора параметров.
Основная логика включает следующие ключевые шаги:
Эта стратегия сочетает в себе классические технические индикаторы анализа свечей с современными количественными методами торговли, создавая торговую систему с четкой логикой и сильной практичностью. Основные преимущества заключаются в гибкости параметров и всеобъемлющем контроле рисков, хотя ограничения включают сильную зависимость от рыночной среды и чувствительность параметров. Существенный потенциал улучшения существует благодаря многомерной интеграции индикаторов и оптимизации управления позициями. В целом, это представляет собой фундаментально надежную и логически согласованную количественную торговую стратегию, подходящую для дальнейшего развития и оптимизации.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("Daytrading ES Wick Length Strategy", overlay=true) // Input parameters ma_length = input.int(20, title="Moving Average Length", minval=1) ma_type = input.string("VWMA", title="Type of Moving Average", options=["SMA", "EMA", "WMA", "VWMA"]) ma_offset = input.float(10, title="MA Offset (Points)", step=1) hold_periods = input.int(18, title="Holding Period (Bars)", minval=1) // Calculating upper and lower wick lengths upper_wick_length = high - math.max(close, open) lower_wick_length = math.min(close, open) - low // Total wick length (upper + lower) total_wick_length = upper_wick_length + lower_wick_length // Calculate the moving average based on the selected method ma = switch ma_type "SMA" => ta.sma(total_wick_length, ma_length) "EMA" => ta.ema(total_wick_length, ma_length) "WMA" => ta.wma(total_wick_length, ma_length) "VWMA" => ta.vwma(total_wick_length, ma_length) // Add the offset to the moving average ma_with_offset = ma + ma_offset // Entry condition: wick length exceeds MA with offset long_entry_condition = total_wick_length > ma_with_offset // Long entry if (long_entry_condition) strategy.entry("Long", strategy.long) // Automatic exit after holding period if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) >= hold_periods strategy.close("Long") // Plot the total wick length as a histogram plot(total_wick_length, color=color.blue, style=plot.style_histogram, linewidth=2, title="Total Wick Length") // Plot the moving average with offset plot(ma_with_offset, color=color.yellow, linewidth=2, title="MA of Wick Length (Offset)")