В процессе загрузки ресурсов... загрузка...

Стратегия перекрестного использования среднедвижимого импульса, взвешенного по ликвидности

Автор:Чао Чжан, Дата: 2025-01-17 15:45:55
Тэги:LWMAЕМАVOLstdevКРОСС

 Liquidity-Weighted Moving Average Momentum Crossover Strategy

Обзор

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

Принципы стратегии

Основной механизм основан на измерении ликвидности рынка через соотношение объема к движению цен. 1. Вычислить показатель ликвидности: объем деленный на абсолютную разницу между ценой закрытия и ценой открытия Установка границы ликвидности: выявление ненормальной ликвидности с использованием EMA и стандартного отклонения 3. Сохранить ценовой массив: записывать цены при нарушении лимита ликвидности 4. Создание скользящих средних: Расчет быстрых и медленных EMA на основе событий ликвидности 5. Создание торговых сигналов: определение пунктов входа и выхода с помощью перекрестных скользящих средних

Преимущества стратегии

  1. Ликвидность: более точно фиксирует рыночную активность путем сочетания объема и движения цен
  2. Отслеживание событий: записывает ключевые уровни цен посредством реализации массива, предотвращая упущенные возможности
  3. Динамическая адаптация: уменьшение веса EMA позволяет лучше адаптироваться рынку
  4. Контроль рисков: обеспечивает четкие сигналы входа и выхода через перекрестки
  5. Настраиваемость: множество регулируемых параметров для различных рыночных условий

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

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

Руководство по оптимизации

  1. Фильтры для применения:
  • Добавить индикаторы подтверждения тренда, такие как ADX
  • Использование индикаторов волатильности для фильтрации ложных сигналов
  1. Улучшить сроки входа:
  • Включить уровни поддержки и сопротивления
  • Рассмотреть подтверждение объема выхода
  1. Оптимизировать выбор параметров:
  • Внедрение адаптивных параметров
  • Динамическое регулирование на основе рыночных условий
  1. Улучшить управление рисками:
  • Добавление механизмов стоп-лосса и получения прибыли
  • Внедрить систему измерения положения

Резюме

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


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/

//Liquidity ignoring price location

//@version=6
strategy("Liquidity Weighted Moving Averages [AlgoAlpha]", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// Inputs
outlierThreshold = input.int(10, "Outlier Threshold Length")
fastMovingAverageLength = input.int(50, "Fast MA Length")
slowMovingAverageLength = input.int(100, "Slow MA Length")
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")

// Define liquidity based on volume and price movement
priceMovementLiquidity = volume / math.abs(close - open)

// Calculate the boundary for liquidity to identify outliers
liquidityBoundary = ta.ema(priceMovementLiquidity, outlierThreshold) + ta.stdev(priceMovementLiquidity, outlierThreshold)

// Initialize an array to store liquidity values when they cross the boundary
var liquidityValues = array.new_float(5)

// Check if the liquidity crosses above the boundary and update the array
if ta.crossover(priceMovementLiquidity, liquidityBoundary)
    array.insert(liquidityValues, 0, close)
    if array.size(liquidityValues) > 5
        array.pop(liquidityValues)

// Calculate the Exponential Moving Averages for the close price at the last liquidity crossover
fastEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, fastMovingAverageLength)
slowEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, slowMovingAverageLength)

// Trading Logic
in_date_range = true
buy_signal = ta.crossover(fastEMA, slowEMA) and in_date_range
sell_signal = ta.crossunder(fastEMA, slowEMA) and in_date_range

// Strategy Entry and Exit
if (buy_signal)
    strategy.entry("Buy", strategy.long)

if (sell_signal)
    strategy.close("Buy")

// Plotting
fastPlot = plot(fastEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Fast EMA")
slowPlot = plot(slowEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Slow EMA")

// Create a fill between the fast and slow EMA plots with appropriate color based on crossover
fill(fastPlot, slowPlot, fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50))


Связанные

Больше