
Количественная стратегия “Многопоказательная объединенная торговая система в стиле POMDP” - это метод торговли, основанный на техническом анализе и частично наблюдаемом процессе принятия решений Маркофова (POMDP). Стратегия хитро сочетает в себе случайные относительно сильные и слабые индикаторы (Stochastic RSI), показатели денежных потоков (MFI), полосы буринга (Bollinger Bands) и движущиеся средние линии (MACD) для создания сигналов покупки и продажи. Основная идея разработки стратегии заключается в том, чтобы создать рамки для принятия решений в классе POMDP с помощью многомерного наблюдения за состоянием рынка, чтобы ответить на неопределенность и частичную наблюдаемость финансовых рынков.
Основные принципы этой стратегии основаны на идее частично наблюдаемого марковского процесса принятия решений (POMDP), рассматривая рынок как систему, состояние которой частично видно. Состояние рынка наблюдается с помощью следующих ключевых технических показателей:
Bollinger Bands (Боллинджерские полосы): использование простой скользящей средней за 20 циклов в качестве средней орбиты, стандартная дифференциация в размере 2,0, формирование восходящей и нисходящей орбиты, используется для идентификации диапазона колебаний цен.
Рандомный относительно слабый индикатор (Stochastic RSI): использует преимущества RSI и случайных индикаторов, устанавливает 14 циклов длины и 3 циклов сглаживания параметров для идентификации состояния перепродажи.
Показатель денежных потоков (МФИ)MFI ниже 40 считается сигналом о перепродаже, а выше 60 - сигналом о перекупке.
Индекс MACD: с использованием параметров 12/26/9, отношение MACD-линий к сигнальным линиям используется для определения направления тренда.
Правила принятия решений в стратегии:
Стратегия также реализует механизм автоматического выхода, основанный на времени, с установкой автоматического ликвидации после 5 циклов удержания позиции, который эффективно контролирует риск времени удержания позиции.
Подтверждение многомерного сигналаС помощью сочетания нескольких технических показателей (стохастический RSI, MFI, MACD) стратегия может рассматривать состояние рынка с разных точек зрения, снижая риск вводящих в заблуждение сигналов, которые могут быть вызваны одним показателем.
Адаптация к структуре POMDPВнедрение идей POMDP позволяет стратегии принимать относительно оптимизированные решения в условиях неопределенности и частичной наблюдаемости, более соответствующие реальным рыночным условиям.
Ясный контроль риска: С помощью фиксированного цикла выхода ((5 циклов), стратегия позволяет контролировать риски во времени и избежать увеличения убытков, вызванных длительными неблагоприятными тенденциями.
Дополнительность технических показателей:Stochastic RSI отражает в основном динамику цен, MFI объединяет информацию о ценах и объемах торгов, MACD улавливает изменения тенденции, Брин-полоса определяет диапазон колебаний. Эти показатели дополняют друг друга, повышая надежность сигнала.
Устойчивость реализации кода: Стратегия использует math.sum вместо ta.sum при расчете MFI, исправляя возможные вычислительные ошибки и повышая стабильность стратегии.
Автоматизация исполненияВнедрение Pine Script на основе TradingView позволяет стратегии автоматически генерировать и выполнять торговые сигналы, сокращая человеческое вмешательство и эмоциональное воздействие.
Ограничения перепродажиСтратегия: использование фиксированных перекупных и перепродажных порогов (30⁄70 для стохастического RSI и 40⁄60 для MFI), которые могут быть не всегда оптимальными в разных рыночных условиях и для разных продуктов, что может привести к снижению качества сигнала.
Время выхода из механизма является обоюдоострым мечом: фиксированный механизм выхода из 5 циклов, хотя и контролирует риски, но также может преждевременно выйти из выгодного тренда, ограничивая потенциальную прибыль.
Риск избыточного использования нескольких показателейХотя несколько индикаторов обеспечивают многомерное подтверждение, между ними могут быть определенные взаимосвязи и избыточности, которые при определенных рыночных условиях могут привести к отклонению в усилении сигнала.
Недостаточная адаптивность рынкаЭта стратегия основана на перекупке, перепродаже и обратных сигналах, которые могут создавать слишком много ошибочных сигналов на рынке с сильной тенденцией, что приводит к частым сделкам и ненужным затратам.
Параметр оптимизации зависимостиЭффективность стратегии в значительной степени зависит от настроек параметров индикаторов. Различные рыночные условия могут требовать различных комбинаций параметров, что увеличивает сложность поддержания и корректировки стратегии.
Отсутствие механизмов адаптации к колебаниямПри этом, в условиях повышенной волатильности рынка может быть создано больше ложных сигналов.
Механизм коррекции динамических параметровВнедрение механизмов самостоятельной адаптации параметров, основанных на состоянии рынка, например, адаптация стандартной дифференциации по Берин-полосе в зависимости от волатильности или адаптация находящихся на грани перекупа и перепродажи порогов в зависимости от силы рыночных тенденций, повышение адаптивности стратегии в различных рыночных условиях.
Идеальный механизм стоп-лоссаВ дополнение к механизму выхода с временным измерением, добавлены механизмы остановки убытков, основанные на изменениях цен, например, установка точки остановки убытков на основе ATR, повышение всесторонности управления рисками.
Рыночные фильтрыДобавление модулей идентификации рыночных условий, таких как индикаторы интенсивности тренда или индикаторы волатильности, уменьшение или приостановка торговли в рыночных условиях, не подходящих для стратегии, чтобы избежать чрезмерной торговли в неблагоприятных условиях.
Система оценки качества сигналаРазработать механизм оценки качества сигнала, который оценивает сигнал в зависимости от множества факторов, таких как степень согласованности, рыночная среда, историческая успеваемость сигнала и т. Д. Используйте только высококачественные сигналы, чтобы повысить эффективность стратегии.
Машинное обучениеВключение в POMDP-фреймворк методов машинного обучения для оптимизации стратегии принятия решений с помощью обучения историческим данным, что позволяет системам учиться и совершенствоваться на основе прошлых сделок.
Оптимизация стратегии управления капиталомВнедрение механизма управления динамическими позициями, регулирующего масштабы сделок в зависимости от силы сигналов, состояния рынка и риска счетов, для более научного управления средствами.
“Многоиндикаторная объединенная POMDP-образовательная торговая система” - это количественная торговая стратегия, которая объединяет в себе несколько технических индикаторов и рамки принятия решений по POMDP. Эта стратегия в некоторой степени решает проблему частичной наблюдаемости рынка, обеспечивая многомерное подтверждение сигналов для принятия торговых решений посредством синхронного действия таких индикаторов, как Stochastic RSI, MFI, MACD и Брин-Бенд.
Основные преимущества стратегии заключаются в ее многосторонней способности наблюдать за рынком и четких механизмах управления рисками, но в то же время она также сталкивается с проблемой зависимости от оптимизации параметров и недостаточной адаптации к некоторым рыночным условиям. Благодаря введению оптимизации, такой как динамическая корректировка параметров, усовершенствование механизмов хранения убытков и добавление фильтров рыночной среды, стратегия имеет потенциал для дальнейшего повышения ее устойчивости и адаптации.
В целом, это количественная торговая система, разработанная с разумной, логической ясностью, особенно подходящая для трейдеров, которые имеют некоторую предсказуемость рынка, но хотят контролировать риск. Благодаря постоянной оптимизации и адаптации к различным рыночным условиям, стратегия может стать эффективным инструментом в инструментарии трейдера.
/*backtest
start: 2024-07-22 00:00:00
end: 2025-07-20 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/
//@version=6
strategy("Debit Spread POMDP‑Inspired Strategy", overlay=true, margin_long=100, margin_short=100)
// ——— Constants
const int K_OVERSOLD = 30
const int K_OVERBOUGHT = 70
const int MFI_OVERSOLD = 40
const int MFI_OVERBOUGHT = 60
const int EXIT_BARS = 5
// ——— User inputs
stochLength = input.int(14, "Stochastic RSI length")
stochSmooth = input.int(3, "Stochastic smoothing")
mfiLength = input.int(14, "MFI length")
bbLength = input.int(20, "Bollinger length")
bbStdDev = input.float(2.0, "Bollinger std dev")
macdFast = input.int(12, "MACD fast length")
macdSlow = input.int(26, "MACD slow length")
macdSignal = input.int(9, "MACD signal length")
// ——— Bar index tracking for exits
var int callEntryBar = na
var int putEntryBar = na
// ——— Bollinger Bands
basis = ta.sma(close, bbLength)
upper = basis + bbStdDev * ta.stdev(close, bbLength)
lower = basis - bbStdDev * ta.stdev(close, bbLength)
// ——— Stochastic RSI
rsi = ta.rsi(close, stochLength)
k = ta.sma(ta.stoch(rsi, rsi, rsi, stochLength), stochSmooth)
d = ta.sma(k, stochSmooth)
// ——— Manual MFI calculation (FIXED: using math.sum)
tp = (high + low + close) / 3.0
rawMF = tp * volume
posFlow = (tp > tp[1] ? rawMF : 0.0)
negFlow = (tp < tp[1] ? rawMF : 0.0)
posMF = math.sum(posFlow, mfiLength) // FIXED: math.sum instead of ta.sum
negMF = math.sum(negFlow, mfiLength) // FIXED: math.sum instead of ta.sum
moneyRatio = negMF != 0 ? posMF / negMF : 0.0
mfi = negMF != 0 ? 100 - 100 / (1 + moneyRatio) : 0.0
// ——— Manual MACD calculation
fastMA = ta.ema(close, macdFast)
slowMA = ta.ema(close, macdSlow)
macdLine = fastMA - slowMA
signalLine = ta.ema(macdLine, macdSignal)
// ——— POMDP‑inspired decision rules
bullCondition = ((k < K_OVERSOLD) or (mfi < MFI_OVERSOLD)) and (macdLine > signalLine)
bearCondition = ((k > K_OVERBOUGHT) or (mfi > MFI_OVERBOUGHT)) and (macdLine < signalLine)
if bullCondition
strategy.entry("CallDebit", strategy.long)
callEntryBar := bar_index // Track entry bar
if bearCondition
strategy.entry("PutDebit", strategy.short)
putEntryBar := bar_index // Track entry bar
// FIXED: Manual time-based exits using bar_index
if not na(callEntryBar) and bar_index >= callEntryBar + EXIT_BARS
strategy.close("CallDebit")
callEntryBar := na
if not na(putEntryBar) and bar_index >= putEntryBar + EXIT_BARS
strategy.close("PutDebit")
putEntryBar := na
// ——— Plots
plot(basis, color=color.gray, linewidth=1, title="BB Basis")
plot(upper, color=color.orange, linewidth=1, title="BB Upper")
plot(lower, color=color.orange, linewidth=1, title="BB Lower")
plot(k, title="%K", color=color.blue)
plot(d, title="%D", color=color.purple)
plot(mfi, title="MFI", color=color.green)
plot(macdLine - signalLine, title="MACD Histogram", color=color.red, style=plot.style_columns)