Адаптивная стратегия распределения BBP


Дата создания: 2025-11-13 15:13:21 Последнее изменение: 2025-11-13 17:51:06
Копировать: 9 Количество просмотров: 133
2
Подписаться
413
Подписчики

Адаптивная стратегия распределения BBP Адаптивная стратегия распределения BBP

Обзор

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

Стратегический принцип

Основные элементы стратегии включают в себя:

  1. Расчет ВВППоложительное значение означает преобладание плюсовых, отрицательное значение - преобладание пустых.

  2. Анализ распределённых характеристикПрименение метода вычисления высококлассных матриц для статистического анализа последовательности BBP, вывод средних значений, стандартных отклонений, отклонений ((трехклассный центральный матриц) и сверхпиков ((четырехклассный центральный матриц уменьшение 3) четырех ключевых статистических величин, полностью изображающих распределение рыночных данных. Отклонения отражают несимметричность распределения, пики отражают толщину хвоста и частоту экстремальных событий.

  3. Адаптированное создание порога

    • Стандартная нормальная дифференциация, рассчитанная на уровне значимости, используется в качестве базового значения Z
    • При использовании приблизительной коррекции t-распределения, когда избыточный пик превышает пороговую величину, отражается свобода и расширяется допустимый диапазон в соответствии с пиком
    • Корниш-Фишер расширяет формулу для коррекции асимметрии, когда отклонение превышает порог
    • В конечном итоге образуется линейка понижения и повышения, скорректированная в соответствии с динамикой рыночных реальных распределений
  4. Оценка состояния рынка

    • Размер объема сделок: измерение участия в рынке на трех уровнях: высокий, средний и низкий, с помощью кратного отношения текущих сделок к среднециклическому значению
    • Расположение цены: относительная позиция цены в историческом диапазоне с помощью алгоритма процентного ранжирования
    • Комплексный механизм оценки: среднее значение оценки в двух измерениях, формирующее коэффициент корректировки тормозной остановки
  5. Динамическая тормозная система

    • Трехступенчатая конструкция с множителями, основанными на золотистом сечение ((1.618, 2.382, 3.618))
    • Расстояние от остановки на каждом уровне = ATR × фиксированный кратный × коэффициент динамической корректировки
    • Расширять цель сдерживания при высокой загрузке, высоком процентном соотношении силы, ужесточить дистанцию сдерживания при низкой загрузке
  6. Генерация и исполнение сигнала

    • Многоголовый сигнал: BBP вверх через адаптацию к повышению
    • Сигнал пустоты: BBP проходит вниз, чтобы адаптироваться к пониженному значению
    • Выходный сигнал: BBP возвращается к среднему значению, когда равновесная позиция, следуя принципу среднему значению

Стратегические преимущества

  1. Прочные теоретические основы статистики: избавление от фиксированных предположений о нормальном распределении в традиционных стратегиях, адаптация критериев принятия решений к динамике реальных распределенных характеристик рынка, перестройка логики генерирования сигналов с статистического уровня с строгой теоретической поддержкой.

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

  3. Комплексная многомерная оценкаСоздание целостной системы оценки состояния рынка, объединяющей три измерения: динамику цен, активность объема сделок и относительную позицию цен, избегая одностороннего суждения о одном измерении.

  4. Динамическое управление рискамиТрехступенчатая система остановок с механизмом динамической корректировки позволяет оптимизировать остановочные расстояния в зависимости от температуры рынка. Полностью захватывает пространство для прибыли в трендовых ситуациях и быстро получает прибыль в слабых ситуациях.

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

  6. Визуализация интуиции: Процесс адаптации стратегии, легко понимаемый и контролируемый с помощью динамических отклонений, отклонений от стандарта и маркировки сигналов

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

  1. Оптимизация параметров высокой сложностиСтратегия включает в себя несколько параметров (высокий уровень значимости, отклонение, пик, стоп-множественность и т. д.), оптимальные комбинации параметров в различных рыночных условиях отличаются, требуют систематической оптимизации параметров и обратной проверки.

  2. Отсутствие четких механизмов по ликвидации убытковСтратегия основывается на выходе из средней стоимости, отсутствие жестких остановок на основе цены или ATR. В крайних односторонних ситуациях, если BBP продолжает отклоняться от средней стоимости и не возвращается, это может привести к значительным потерям и занятию капитала.

  3. Низкая адаптируемость рынкаВ условиях длительных узких колебаний, стоимость BBP колеблется вблизи средней стоимости, что затрудняет достижение адаптивной пониженной стоимости, что приводит к редкости возможностей для торговли и ограничивает эффективность стратегии.

  4. Сильная зависимость от данных: Анализ распределённых характеристик требует достаточного количества исторических данных для получения стабильных и надежных статистических результатов. Новые выпущенные монеты или показатели с недостаточными данными могут быть нестабильными в раннем использовании, что может повлиять на эффективность стратегии.

  5. Высокая сложность вычисленийВ реальном времени вычисление высоких степеней, процентного ранжирования и динамического понижения требует прохождения через исторические данные, что может привести к сбоям в производительности в среде с ограниченными ресурсами.

  6. Риски экстремальных ситуацийВ экстремально быстрых односторонних ситуациях, таких как вспышка или буря, BBP может мгновенно преодолеть порог и быстро вернуться назад, что приводит к нежелательному вхождению в точку или упущению оптимального времени.

Направление оптимизации

  1. Введение динамического механизма остановки убытков

    • Трекерная остановка на основе ATR, остановка расстояния динамически корректируется в зависимости от времени удержания позиции и прибыли
    • Технические потери в сочетании с поддерживающими устойчивыми точками
    • Адаптационная остановка на основе максимального неблагоприятного отклонения (MAE)
  2. Повышение осведомленности о рыночной ситуации

    • Внедрение фильтров интенсивности тренда (например, ADX), приостановка торговли при отсутствии четкой тенденции
    • Добавление классификации состояний колебаний, выявление и предотвращение экстремальных периодов колебаний
    • Раннее выявление состояния истощения ликвидности в сочетании с микроструктурными показателями рынка
  3. Параметры адаптируются и оптимизируются

    • Применение отслеживания прокрутки, длительность цикла динамического регулирования анализа
    • Внедрение методов машинного обучения (например, генетические алгоритмы, оптимизация групп частиц) для оптимизации параметров
    • Реализация механизма переключения параметров на основе состояния рынка
  4. Повышение качества сигнала

    • Увеличение условий подтверждения объема сдачи, требующих увеличения объема сдачи при запусках сигнала
    • Многократное подтверждение в сочетании с ключевыми техническими позициями (например, предыдущие высокие, предыдущие низкие, фибоначевые обратные позиции)
    • Внедрение системы оценки силы сигнала, регулирующей размер позиции в зависимости от оценки
  5. Оптимизация управления позициями

    • Динамическое распределение позиций по формуле Келли
    • Корректировка коэффициента открытия позиций в зависимости от силы сигнала и оценки состояния рынка
    • Стратегия по повышению и снижению позиций в пирамиде
  6. Интеграция многовременных рамок

    • В более высоких временных циклах, чтобы определить направление большого тренда, торгуйте только по прогрессу
    • Поиск точных точек входа в более короткие периоды времени
    • Строительство многоциклического механизма подтверждения резонанса

Подвести итог

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

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

Для тех, кто стремится к теоретической глубине и желает углубиться в исследования, эта стратегия предоставляет отличную основу для обучения и совершенствования.

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

В целом, это инновационная стратегия с прочной теоретической основой, строгой логикой дизайна и высокой исследовательской и прикладной ценностью, которая заслуживает глубокого изучения и постоянной оптимизации количественными трейдерами.

Исходный код стратегии
//@version=5
strategy("BBP Adaptive Distribution Strategy [presentTrading]")

//========================================
// BBP策略参数设置
//========================================
lengthInput = input.int(20, "EMA Length");//EMA周期长度
zLength = input.int(150, "Distribution Analysis Period");//分布分析周期

//自适应分布参数组
dist_group = "Distribution Fitting";
//统计显著性水平,0.05表示95%置信度
significance_level = input.float(0.05, "Significance Level", minval=0.01, maxval=0.1, step=0.01, 
    group=dist_group, tooltip="统计显著性水平,0.05=95%置信度");
//是否启用自适应分布拟合,禁用则使用传统Z-score
auto_fit = input.bool(true, "Auto Fit Distribution", group=dist_group, 
    tooltip="启用自适应分布拟合,禁用则使用传统Z-score");
//偏度阈值,超过此值考虑使用偏态分布
skew_threshold = input.float(0.5, "Skewness Threshold", minval=0.1, maxval=2.0, group=dist_group, 
    tooltip="超过此值考虑偏态分布");
//峰度阈值,超过此值考虑使用厚尾分布
kurt_threshold = input.float(1.0, "Kurtosis Threshold", minval=0.3, maxval=3.0, group=dist_group, 
    tooltip="超过此值考虑厚尾分布");

//========================================
// 止盈参数设置
//========================================
tp_group = "Take Profit Settings";//止盈参数组
useTP = input.bool(true, "Use Take Profit", group=tp_group);//是否启用止盈
baseAtrLength = input.int(20, "ATR Period", minval=1, group=tp_group);//ATR计算周期
atrMult1 = input.float(1.618, "TP1 ATR Multiplier", minval=0.1, step=0.1, group=tp_group);//第一止盈位ATR倍数
atrMult2 = input.float(2.382, "TP2 ATR Multiplier", minval=0.1, step=0.1, group=tp_group);//第二止盈位ATR倍数
atrMult3 = input.float(3.618, "TP3 ATR Multiplier", minval=0.1, step=0.1, group=tp_group);//第三止盈位ATR倍数
tp1_size = input.float(13, "TP1 Position %", minval=1, maxval=100, group=tp_group);//第一止盈位仓位百分比
tp2_size = input.float(13, "TP2 Position %", minval=1, maxval=100, group=tp_group);//第二止盈位仓位百分比
tp3_size = input.float(13, "TP3 Position %", minval=1, maxval=100, group=tp_group);//第三止盈位仓位百分比

//========================================
// 成交量分析参数设置
//========================================
vol_group = "Volume Analysis Settings";//成交量分析参数组
vol_period = input.int(100, "Volume MA Period", minval=1, group=vol_group);//成交量均线周期
vol_high = input.float(2.0, "High Volume Multiplier", minval=1.0, step=0.1, group=vol_group);//高成交量倍数
vol_med = input.float(1.5, "Medium Volume Multiplier", minval=1.0, step=0.1, group=vol_group);//中成交量倍数
vol_low = input.float(1.0, "Low Volume Multiplier", minval=0.5, step=0.1, group=vol_group);//低成交量倍数
vol_high_mult = input.float(1.5, "High Volume Factor", minval=0.1, step=0.1, group=vol_group);//高成交量系数
vol_med_mult = input.float(1.3, "Medium Volume Factor", minval=0.1, step=0.1, group=vol_group);//中成交量系数
vol_low_mult = input.float(1.0, "Low Volume Factor", minval=0.1, step=0.1, group=vol_group);//低成交量系数

//========================================
// 百分位分析参数设置
//========================================
perc_group = "Percentile Analysis Settings";//百分位分析参数组
perc_period = input.int(100, "Percentile Period", minval=20, group=perc_group);//百分位计算周期
perc_high = input.float(90, "High Percentile", minval=50, maxval=100, group=perc_group);//高百分位阈值
perc_med = input.float(80, "Medium Percentile", minval=50, maxval=100, group=perc_group);//中百分位阈值
perc_low = input.float(70, "Low Percentile", minval=0, maxval=100, group=perc_group);//低百分位阈值
perc_high_mult = input.float(1.5, "High Percentile Factor", minval=0.1, step=0.1, group=perc_group);//高百分位系数
perc_med_mult = input.float(1.3, "Medium Percentile Factor", minval=0.1, step=0.1, group=perc_group);//中百分位系数
perc_low_mult = input.float(1.0, "Low Percentile Factor", minval=0.1, step=0.1, group=perc_group);//低百分位系数

//========================================
// 核心多空力量计算
//========================================
//计算价格的指数移动平均
emaClose = ta.ema(close, lengthInput);
//多头力量:最高价与EMA的差值
bullPower = high - emaClose;
//空头力量:最低价与EMA的差值
bearPower = low - emaClose;
//多空力量平衡:多头力量加上空头力量
bbp = bullPower + bearPower;

//计算分布的高阶矩:均值、标准差、偏度、峰度
calcDistributionMoments(src, length) =>
    mean = ta.sma(src, length);//计算均值
    variance = ta.variance(src, length);//计算方差
    stddev = math.sqrt(variance);//计算标准差
    
    //初始化偏度和峰度累加变量
    skew_sum = 0.0;
    kurt_sum = 0.0;
    
    //当标准差大于0时,计算偏度和峰度
    if stddev > 0
        for i = 0 to math.min(length - 1, 100)
            z = (src[i] - mean) / stddev;//计算标准化值
            z2 = z * z;//计算Z的平方
            skew_sum += z * z2;//累加偏度项
            kurt_sum += z2 * z2;//累加峰度项
    
    n = math.min(length, 100);//取样本数
    skewness = skew_sum / n;//计算偏度
    excess_kurtosis = kurt_sum / n - 3.0;//计算超额峰度
    
    [mean, stddev, skewness, excess_kurtosis];//返回四个统计量

//自适应阈值计算:根据分布特征动态调整阈值
calcAdaptiveThreshold(mu, sigma, skew, kurt, alpha, use_adaptive) =>
    //计算标准正态分位数(基础Z值)
    z_base = math.sqrt(-2.0 * math.log(alpha / 2.0));
    
    z_adjusted = z_base;//初始化调整后的Z值
    
    //如果启用自适应拟合,则进行分布修正
    if use_adaptive
        //厚尾修正:使用t分布近似,当峰度超过阈值时调整
        if math.abs(kurt) > kurt_threshold
            df = math.max(6.0 / math.abs(kurt) + 4.0, 5.0);//计算自由度
            z_adjusted := z_adjusted * math.sqrt(df / (df - 2.0));//调整Z值
        
        //偏度修正:使用Cornish-Fisher展开式,当偏度超过阈值时调整
        if math.abs(skew) > skew_threshold
            z_adjusted := z_adjusted + skew * (z_adjusted * z_adjusted - 1.0) / 6.0;//应用偏度修正
    
    //计算上下阈值
    upper_threshold = mu + sigma * z_adjusted;
    lower_threshold = mu - sigma * z_adjusted;
    
    [upper_threshold, lower_threshold];//返回上下阈值

//执行分布分析:计算BBP的均值、标准差、偏度和峰度
[mu, sigma, skewness, kurtosis] = calcDistributionMoments(bbp, zLength);

//计算自适应阈值:基于统计特征动态确定交易阈值
[upper_threshold, lower_threshold] = calcAdaptiveThreshold(mu, sigma, skewness, kurtosis, 
    significance_level, auto_fit);

//========================================
// 成交量与百分位分析
//========================================
vol_sma = ta.sma(volume, vol_period);//计算成交量简单移动平均
vol_mult = volume / vol_sma;//计算当前成交量相对于均值的倍数

//计算百分位排名:返回当前值在历史数据中的百分位位置
calcPercentile(src) =>
    var values = array.new_float(0);//初始化数组
    array.unshift(values, src);//将新值插入数组头部
    if array.size(values) > perc_period
        array.pop(values);//超过周期长度时删除尾部元素
    //计算百分位排名
    array.size(values) > 0 ? array.percentrank(values, array.size(values)-1) * 100 : 50;

price_perc = calcPercentile(close);//计算价格百分位
vol_perc = calcPercentile(volume);//计算成交量百分位

//计算止盈系数:综合成交量和价格百分位评分
getTpFactor() =>
    //根据成交量倍数评分
    vol_score = vol_mult > vol_high ? vol_high_mult : vol_mult > vol_med ? vol_med_mult : vol_mult > vol_low ? vol_low_mult : 0.8;
    
    //根据价格百分位评分
    price_score = price_perc > perc_high ? perc_high_mult : price_perc > perc_med ? perc_med_mult : price_perc > perc_low ? perc_low_mult : 0.8;
    
    math.avg(vol_score, price_score);//返回两个评分的平均值

//========================================
// 入场出场逻辑
//========================================
//多头入场条件:BBP向上突破上阈值
longCondition = ta.crossover(bbp, upper_threshold);
//空头入场条件:BBP向下跌破下阈值
shortCondition = ta.crossunder(bbp, lower_threshold);
//多头出场条件:BBP向下跌破均值
exitLongCondition = ta.crossunder(bbp, mu);
//空头出场条件:BBP向上突破均值
exitShortCondition = ta.crossover(bbp, mu);

//========================================
// 交易执行逻辑
//========================================
//在K线确认后执行交易
if (barstate.isconfirmed)
    if longCondition
        strategy.entry("Long", strategy.long);//开多头仓位
    if shortCondition
        strategy.entry("Short", strategy.short);//开空头仓位
    if exitLongCondition
        strategy.close("Long");//平多头仓位
    if exitShortCondition
        strategy.close("Short");//平空头仓位

//========================================
// 止盈执行逻辑
//========================================
//当启用止盈且持有仓位时执行止盈逻辑
if useTP and strategy.position_size != 0
    base_move = ta.atr(baseAtrLength);//计算基础ATR值
    tp_factor = getTpFactor();//获取止盈系数
    is_long = strategy.position_size > 0;//判断是否为多头仓位
    entry_price = strategy.position_avg_price;//获取入场均价
    
    //多头止盈设置
    if is_long
        tp1_price = entry_price + (base_move * atrMult1 * tp_factor);//计算第一止盈价
        tp2_price = entry_price + (base_move * atrMult2 * tp_factor);//计算第二止盈价
        tp3_price = entry_price + (base_move * atrMult3 * tp_factor);//计算第三止盈价
        
        strategy.exit("TP1", "Long", qty_percent=tp1_size, limit=tp1_price);//设置第一止盈
        strategy.exit("TP2", "Long", qty_percent=tp2_size, limit=tp2_price);//设置第二止盈
        strategy.exit("TP3", "Long", qty_percent=tp3_size, limit=tp3_price);//设置第三止盈
    else
        //空头止盈设置
        tp1_price = entry_price - (base_move * atrMult1 * tp_factor);//计算第一止盈价
        tp2_price = entry_price - (base_move * atrMult2 * tp_factor);//计算第二止盈价
        tp3_price = entry_price - (base_move * atrMult3 * tp_factor);//计算第三止盈价
        
        strategy.exit("TP1", "Short", qty_percent=tp1_size, limit=tp1_price);//设置第一止盈
        strategy.exit("TP2", "Short", qty_percent=tp2_size, limit=tp2_price);//设置第二止盈
        strategy.exit("TP3", "Short", qty_percent=tp3_size, limit=tp3_price);//设置第三止盈

//========================================
// 图表绘制
//========================================
//绘制BBP柱状图:多头力量为绿色,空头力量为红色
plot(bbp, color=bbp >= mu ? color.new(color.green, 0) : color.new(color.red, 0), 
     title="BBPower", style=plot.style_columns);

//绘制均值线
plot(mu, "Mean", color=color.gray, linewidth=1, style=plot.style_line);
//绘制上阈值线
plot(upper_threshold, "Upper Threshold", color=color.orange, linewidth=2);
//绘制下阈值线
plot(lower_threshold, "Lower Threshold", color=color.orange, linewidth=2);

//绘制参考线:正负1倍标准差
plot(mu + sigma, "+1σ", color=color.new(color.blue, 70), linewidth=1, style=plot.style_circles);
plot(mu - sigma, "-1σ", color=color.new(color.blue, 70), linewidth=1, style=plot.style_circles);
//绘制参考线:正负2倍标准差
plot(mu + 2*sigma, "+2σ", color=color.new(color.purple, 70), linewidth=1, style=plot.style_cross);
plot(mu - 2*sigma, "-2σ", color=color.new(color.purple, 70), linewidth=1, style=plot.style_cross);

//========================================
// 信号标记
//========================================
//绘制多头信号标记
plotshape(longCondition, title="Long Signal", location=location.bottom, 
    color=color.new(color.green, 0), style=shape.labelup, text="LONG", 
    textcolor=color.white, size=size.small);

//绘制空头信号标记
plotshape(shortCondition, title="Short Signal", location=location.top, 
    color=color.new(color.red, 0), style=shape.labeldown, text="SHORT", 
    textcolor=color.white, size=size.small);