
Эта стратегия представляет собой гибридный количественный метод торговли, который сочетает в себе измерение расстояния между техническими показателями и обратный сигнал MACD. Он образует комбинированную стратегию, которая позволяет одновременно улавливать динамику тенденции и идентифицировать потенциальный обратный сигнал, рассчитывая расстояние между текущим состоянием рынка и заранее определенным центром быка и медведя, а также сочетает в себе перекрестные сигналы MACD.
Основные принципы этой стратегии основаны на двух основных механизмах:
Механизм измерения расстоянияВ то же время, предусматривается два центральных вектора для бычьего рынка и медвежьего рынка, которые представляют собой идеальное состояние рынка во время восходящего и нисходящего трендов соответственно. С помощью расчета расстояния в несколько еврометров между вектором текущего состояния рынка и этими двумя центральными векторами стратегия может определить, какое состояние рынка ближе к текущему состоянию.
Механизм перекрестного сигнализации MACDВ качестве второго уровня подтверждения, стратегия использует перекрестные сигналы MACD-индикатора для определения динамики рынка. В MACD-линии прохождение сигнальной линии рассматривается как сигнал покупки, а в MACD-линии прохождение сигнальной линии рассматривается как сигнал продажи.
Сочетание этих двух механизмов образует систему двойного подтверждения: с одной стороны, измерение общего тренда рынка с помощью измерения расстояния, с другой стороны, кратковременное изменение динамики с помощью перекрестного MACD. Стратегия может использовать как совместное подтверждение обоих механизмов (установление расстояния и MACD дают одни и те же сигналы одновременно), так и торговать на основе сигналов, генерируемых независимо от любого механизма, увеличивая разнообразие сигналов и частоту возможности захвата.
Оценка состояния многомерного рынкаС помощью комбинирования нескольких технических показателей в характеристические векторы, стратегия позволяет оценивать состояние рынка с нескольких измерений, а не полагаться только на один показатель, что снижает риск ложных сигналов.
Гибкий механизм генерации сигналаСтратегия использует одновременно измерение расстояния и перекрестный механизм MACD для генерирования сигналов, позволяющих одновременно улавливать постоянную динамику в трендовых ситуациях и своевременно обнаруживать потенциальные точки переворота.
Объективность математических моделейЭвклидный расчет дает объективный, математический способ оценки состояния рынка, уменьшая влияние субъективных факторов.
Автоматическая ликвидацияСтратегия автоматически устраняет позиции в противоположном направлении при появлении новых сигналов, что помогает своевременно прекратить убытки и переключить позиции в сторону быстро меняющегося рынка.
Мониторинг производительности: Встроенная функция отслеживания и отображения прибыли и убытка от торгов, позволяющая в режиме реального времени оценивать эффективность стратегии и вносить необходимые коррективы в параметры.
Риск чувствительности параметра: Показатели, такие как EMA, RSI и MACD, используемые в стратегии, зависят от конкретных параметров. Если эти параметры не подходят для текущих рыночных условий, это может привести к появлению ошибочных сигналов. Решение заключается в том, чтобы найти оптимальную комбинацию параметров путем отслеживания и периодически переоценивать эффективность параметров.
Риски чрезмерной торговлиПоскольку стратегия может создавать сигналы независимо на основе двух различных механизмов, в более волатильных рынках может быть создано слишком много торговых сигналов, что увеличивает затраты на торговлю. Можно уменьшить ненужные сделки, добавив механизм фильтрации сигналов или изменив логику генерации сигналов.
Конфликты между тенденциями и обратным суждениемВ некоторых рыночных условиях измерение расстояния и сигналы MACD могут давать противоречивые указания, вызывая несовместимость в действиях стратегии. Рекомендуется создать четкие правила приоритета сигнала или ввести дополнительные механизмы подтверждения.
Статичность центральной точки: Часть параметров центральной точки в текущей стратегии является статической (например, значение RSI), и она может не адаптироваться ко всем рыночным условиям. Можно рассмотреть возможность введения механизма адаптации, который динамически корректирует положение центральной точки в зависимости от исторических данных.
Ограничения единой временной рамки: Стратегия работает только в одном временном раме и может пропустить важные сигналы более крупных или меньших временных рамок. Рассмотрение расширения на многократные временные рамки стратегии может повысить надежность сигнала.
Приспособность к проектированию центральной точкиНапример, можно использовать данные за последние N циклов для определения идеального состояния бычьих и медвежьих рынков, позволяя центральным точкам автоматически адаптироваться к рыночным условиям.
Приоритет сигналов и механизм фильтрацииВнедрение системы приоритета сигналов, основанной на рыночной среде, например, приоритета обратного сигнала в среде высокой волатильности, приоритета дальномерного сигнала в среде с заметной тенденцией низкой волатильности. В то же время, можно добавить фильтры сигналов, основанные на волатильности или количестве сделок, чтобы уменьшить шумные сигналы.
Механизмы сдерживания убытков и прибылиПри отсутствии четкого установления стоп-стоп и прибыльных целей в текущей стратегии можно добавить механизм стоп-стоп на основе ATR или фиксированного процента, а также установление прибыльных целей на основе уровня поддержки/сопротивления или коэффициента возврата риска.
Интеграция многовременного анализаИнтеграция информации о тенденциях более крупных временных рамок в текущую стратегию, например, выполнение торговых сигналов на часовом уровне только в том случае, если тенденция на солнечной линии совпадает, для повышения надежности сигналов.
Динамическая настройка на вес: Динамическое распределение веса для различных показателей в характеристических векторах, автоматическая корректировка их влияния в зависимости от прогнозируемой способности каждого показателя в различных рыночных условиях, повышение точности расчетного расстояния.
Машинное обучениеМожно рассмотреть возможность внедрения простых алгоритмов машинного обучения для оптимизации расположения центральных точек или весовых характеристик, или даже использовать кластерные алгоритмы для автоматического обнаружения центральных точек в нескольких состояниях рынка, а не только в двух состояниях простых быков и медведей.
Стратегия количественного трейдинга с использованием измерения расстояния между техническими индикаторами и MACD-обратным поворотом - это инновационный метод количественного трейдинга, который объединяет несколько обычно используемых технических показателей в единую систему оценки состояния рынка с использованием технологии расстояния между эклитрами, а также в сочетании с перекрестным сигналом MACD в виде механизма двойного подтверждения. Этот метод позволяет зафиксировать динамику в продолжающихся тенденциях и идентифицировать потенциальные рыночные переломы.
Ключевые преимущества этой стратегии заключаются в ее способности к оценке многомерных рынков и объективности математических моделей, но она также подвержена рискам, таким как чувствительность к параметрам, чрезмерная торговля и конфликт сигналов. Существует большой простор для оптимизации и улучшения стратегии путем внедрения адаптивного централизованного дизайна, оптимизации системы приоритета сигналов, увеличения механизмов остановки, интеграции многовременного анализа и применения технологий машинного обучения.
Эта стратегия, объединяющая традиционные методы технического анализа с математическими моделями, представляет собой новое направление, которое стоит изучить для количественных трейдеров, особенно для тех, кто хочет повысить объективность торговых решений, сохраняя при этом объяснимость стратегии.
/*backtest
start: 2024-04-15 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Bysq-Distance Reversal Entry - BTCUSDT (v6)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, margin_long=0, margin_short=0)
// ========== FEATURE ENGINEERING ==========
price = close
priceNorm = ta.ema(price, 5)
volatility = ta.stdev(price, 20)
momentum = ta.ema(close - close[5], 5)
rsi = ta.rsi(close, 14)
macdLine = ta.ema(close, 12) - ta.ema(close, 26)
signalLine = ta.ema(macdLine, 9)
macdHist = macdLine - signalLine
// Fitur sebagai vector
featureVector = array.new_float(6)
array.set(featureVector, 0, priceNorm)
array.set(featureVector, 1, volatility)
array.set(featureVector, 2, momentum)
array.set(featureVector, 3, rsi)
array.set(featureVector, 4, macdLine)
array.set(featureVector, 5, macdHist)
// Centroid bullish
bullishCentroid = array.new_float(6)
array.set(bullishCentroid, 0, price)
array.set(bullishCentroid, 1, volatility)
array.set(bullishCentroid, 2, momentum)
array.set(bullishCentroid, 3, 60.0)
array.set(bullishCentroid, 4, macdLine)
array.set(bullishCentroid, 5, macdHist)
// Centroid bearish
bearishCentroid = array.new_float(6)
array.set(bearishCentroid, 0, price)
array.set(bearishCentroid, 1, volatility)
array.set(bearishCentroid, 2, momentum)
array.set(bearishCentroid, 3, 40.0)
array.set(bearishCentroid, 4, macdLine)
array.set(bearishCentroid, 5, macdHist)
// Fungsi Euclidean Distance
euclideanDistance(arr1, arr2) =>
dist = 0.0
for i = 0 to array.size(arr1) - 1
a = array.get(arr1, i)
b = array.get(arr2, i)
dist += math.pow((a - b), 2)
math.sqrt(dist)
// Hitung jarak ke centroid
distToBullish = euclideanDistance(featureVector, bullishCentroid)
distToBearish = euclideanDistance(featureVector, bearishCentroid)
// ========== SINYAL ==========
// Original distance strategy signals
isDistanceBuySignal = distToBullish < distToBearish and ta.crossover(macdLine, signalLine)
isDistanceSellSignal = distToBearish < distToBullish and ta.crossunder(macdLine, signalLine)
// Reversal strategy signals
isReversalBuySignal = ta.crossover(macdLine, signalLine)
isReversalSellSignal = ta.crossunder(macdLine, signalLine)
// Combined signals - using both strategies
isBuySignal = isDistanceBuySignal or isReversalBuySignal
isSellSignal = isDistanceSellSignal or isReversalSellSignal
// ========== EKSEKUSI ==========
if isBuySignal
strategy.close("Sell") // Close any sell position first (from reversal strategy)
strategy.entry("Buy", strategy.long)
if isSellSignal
strategy.close("Buy") // Close any buy position first (from reversal strategy)
strategy.entry("Sell", strategy.short)
// ========== METRIK KINERJA ==========
float lastOpenTradeProfit = na
if strategy.opentrades > 0
lastOpenTradeProfit := strategy.opentrades.profit(strategy.opentrades - 1)
float lastClosedTradeProfit = na
if strategy.closedtrades > 0
lastClosedTradeProfit := strategy.closedtrades.profit(strategy.closedtrades - 1)
// Plot info
plot(lastOpenTradeProfit, title="Last Open Trade Profit", color=color.blue)
plot(lastClosedTradeProfit, title="Last Closed Trade Profit", color=color.orange)