Chiến lược phân phối thích ứng BBP


Ngày tạo: 2025-11-13 15:13:21 sửa đổi lần cuối: 2025-11-13 17:51:06
sao chép: 9 Số nhấp chuột: 133
2
tập trung vào
413
Người theo dõi

Chiến lược phân phối thích ứng BBP Chiến lược phân phối thích ứng BBP

Tổng quan

Chiến lược này là một hệ thống giao dịch định lượng sáng tạo dựa trên lý thuyết phân phối thống kê, kết hợp các chỉ số sức mạnh đa chiều truyền thống (Bull Bear Power) với công nghệ phù hợp phân phối thích ứng. Sự đổi mới cốt lõi của chiến lược là thoát khỏi giả định cố định của phân tích kỹ thuật truyền thống về phân phối chính xác, tính toán các đặc điểm thống kê cấp cao của dữ liệu thị trường trong thời gian thực (sự lệch và đỉnh), điều chỉnh các ngưỡng giao dịch động để tạo ra tín hiệu phù hợp với đặc điểm phân phối thực tế của thị trường.

Nguyên tắc chiến lược

Cơ chế hoạt động cốt lõi của chiến lược bao gồm các yếu tố then chốt sau:

  1. Tính toán GDPBằng cách tính tổng số giá cao nhất với chênh lệch của EMA (công suất đa đầu) và giá thấp nhất với chênh lệch của EMA (công suất không đầu), xây dựng các chỉ số cơ bản phản ánh so sánh sức mạnh đa đầu của thị trường.

  2. Phân tích đặc tính phân bố: Sử dụng phương pháp tính toán mô-đun bậc cao, phân tích thống kê chuỗi BBP, đầu ra trung bình, chênh lệch chuẩn, độ lệch ((thứ ba mô-đun bậc trung tâm) và đỉnh vượt quá ((thứ bốn mô-đun bậc trung tâm giảm 3) Bốn số liệu thống kê quan trọng, mô tả toàn diện hình dạng phân bố của dữ liệu thị trường. Sự lệch phản ánh sự phân bố không đối xứng, đỉnh phản ánh độ dày của đuôi và tần số các sự kiện cực đoan.

  3. Tự thích ứng tạo ngưỡng

    • Số phân số chính chuẩn được tính dựa trên mức độ đáng kể như giá trị Z
    • Khi đỉnh vượt quá ngưỡng, áp dụng sửa đổi phân bố t gần gũi, đẩy tự do và mở rộng phạm vi dung nạp theo đỉnh
    • Sử dụng phương trình mở rộng Cornish-Fisher để sửa đổi không đối xứng khi độ lệch vượt quá ngưỡng
    • Cuối cùng, hình thành một đường giảm giá lên xuống được điều chỉnh theo động lực của đặc điểm phân phối thực tế của thị trường
  4. Đánh giá tình trạng thị trường

    • Kích thước giao dịch: Số lượng tham gia thị trường được định lượng thành ba cấp độ cao, trung bình và thấp thông qua tỷ lệ giao dịch hiện tại và trung bình theo chu kỳ
    • Định hướng vị trí giá: định vị vị trí tương đối của giá trong khoảng thời gian lịch sử thông qua thuật toán xếp hạng phần trăm
    • Cơ chế xếp hạng tổng hợp: lấy giá trị trung bình của hai chiều xếp hạng, tạo ra hệ số điều chỉnh dừng
  5. Hệ thống dừng động

    • Sử dụng thiết kế treo treo, nhân treo dựa trên tỷ lệ chia vàng ((1.618, 2.382, 3.618)
    • Khoảng cách dừng mỗi cấp = ATR × số nhân cố định × hệ số điều chỉnh động
    • Mở rộng mục tiêu dừng trong các trường hợp có giao dịch cao, tỷ lệ phần trăm cao, và thắt chặt khoảng cách dừng trong các trường hợp có mức độ tham gia thấp
  6. Tạo và thực thi tín hiệu

    • Tín hiệu đa đầu: BBP tăng lên khi vượt qua để thích nghi với mức tăng giá
    • Tín hiệu đầu trống: BBP đi ngang dưới khi thích nghi với ngưỡng thấp
    • Tín hiệu xuất phát: BBP quay trở lại đường trung bình khi bằng phẳng, theo nguyên tắc quay trở lại trung bình

Lợi thế chiến lược

  1. Nền tảng lý thuyết thống kê vững chắc: thoát khỏi giả định cố định của các chiến lược truyền thống về phân bố chính xác, điều chỉnh tiêu chuẩn quyết định dựa trên tính năng phân bố động của thị trường thực tế, cấu trúc lại logic tạo tín hiệu ở cấp độ thống kê, có sự hỗ trợ lý thuyết nghiêm ngặt.

  2. Khả năng thích ứng nổi bật: Bằng cách giám sát thời gian thực của độ lệch và đỉnh, chiến lược có thể tự động nhận ra sự thay đổi trong đặc điểm phân bố thị trường. Nâng cao giá trị giảm trong thị trường lệch tích cực để tránh tăng, mở rộng phạm vi giảm trong thị trường chót dày để tránh phản ứng quá mức với biến động bình thường, thực sự thực hiện “giúp chiến lược thích nghi với thị trường”.

  3. Đánh giá tổng hợp đa chiềuTạo ra một hệ thống đánh giá toàn diện về tình trạng thị trường, kết hợp động lực giá cả, hoạt động giao dịch và vị trí tương đối của giá cả, tránh một mặt của phán đoán một chiều.

  4. Quản lý rủi ro độngHệ thống dừng ba cấp với cơ chế điều chỉnh động, có thể tự điều chỉnh khoảng cách dừng tối ưu hóa theo nhiệt độ thị trường. Chụp đầy đủ không gian lợi nhuận trong tình huống xu hướng, thu lợi nhuận nhanh chóng trong tình huống yếu.

  5. Chất lượng tín hiệu cao: Bằng cách kiểm tra tính đáng kể thống kê, chỉ kích hoạt giao dịch ở điểm bất thường phân phối thực, giảm hiệu quả tỷ lệ tín hiệu giả và tăng hiệu quả thống kê của giao dịch.

  6. Hình ảnh trực quan: Thông qua đường viền giá trị động, đường viền tham chiếu chênh lệch tiêu chuẩn và dấu hiệu tín hiệu, hiển thị rõ ràng quá trình điều chỉnh thích ứng của chiến lược, dễ hiểu và giám sát.

Rủi ro chiến lược

  1. Các tham số tối ưu hóa phức tạpChiến lược bao gồm nhiều tham số (như mức độ đáng kể, ngưỡng sai lệch, ngưỡng đỉnh, số nhân dừng, v.v.), sự khác biệt lớn trong các tham số tối ưu trong các môi trường thị trường khác nhau, cần phải tối ưu hóa tham số và kiểm tra lại một cách hệ thống.

  2. Thiếu cơ chế ngăn chặn rõ ràngChiến lược này chủ yếu dựa trên sự xuất hiện của giá trị trung bình, thiếu lỗ hổng cứng dựa trên giá hoặc ATR. Trong trường hợp đơn phương cực đoan, nếu BBP tiếp tục lệch khỏi giá trị trung bình và không quay trở lại, có thể gây ra lỗ hổng lớn và chiếm dụng vốn.

  3. Thị trường ngang kém thích ứngTrong tình huống biến động hẹp dài hạn, giá BBP tăng gần mức trung bình, khó chạm được mức giảm thích ứng, dẫn đến cơ hội giao dịch hiếm và hiệu suất chiến lược bị hạn chế.

  4. Dữ liệu phụ thuộc: Phân tích đặc tính phân phối cần có đủ dữ liệu lịch sử để có được kết quả thống kê ổn định và đáng tin cậy. Các đồng tiền mới được đưa ra thị trường hoặc các chỉ số thiếu dữ liệu có thể không ổn định trong số liệu và ảnh hưởng đến hiệu suất chiến lược khi sử dụng ban đầu.

  5. Tính toán phức tạp hơn: Tính toán thời gian thực của mô-tơ bậc cao, xếp hạng phần trăm và giá trị giảm động đòi hỏi phải đi qua dữ liệu lịch sử, có thể gặp trục trặc hiệu suất trong môi trường giao dịch hạn chế về tài nguyên.

  6. Rủi ro của những hành vi cực đoanTrong các trường hợp đơn phương cực kỳ nhanh như flash crash hoặc bão, BBP có thể đột ngột vượt ngưỡng và quay trở lại nhanh chóng, dẫn đến điểm đầu vào không phù hợp hoặc bỏ lỡ thời gian tốt nhất.

Hướng tối ưu hóa

  1. Tiến hành hệ thống dừng lỗ động

    • Theo dõi dừng lỗ dựa trên ATR, khoảng cách dừng lỗ được điều chỉnh theo thời gian giữ vị trí và lợi nhuận
    • Hạn chế kỹ thuật kết hợp với điểm kháng cự hỗ trợ
    • Cứu độ tự điều chỉnh dựa trên độ lệch tối đa bất lợi (MAE)
  2. Tăng cường nhận diện môi trường thị trường

    • Tiến hành bộ lọc cường độ xu hướng (như ADX), tạm dừng giao dịch khi không có xu hướng rõ ràng
    • Thêm phân loại trạng thái tỷ lệ dao động, nhận diện và tránh các giai đoạn dao động cực đoan
    • Kết hợp với các chỉ số cấu trúc vi mô của thị trường, nhận diện sớm tình trạng cạn kiệt thanh khoản
  3. Các tham số tự thích ứng tối ưu hóa

    • Ứng dụng trượt cửa sổ phản hồi, chuyển động điều chỉnh độ dài phân tích chu kỳ
    • Nhập các phương pháp học máy (như thuật toán di truyền, tối ưu hóa nhóm hạt) để tìm tham số
    • Thực hiện cơ chế chuyển đổi tham số dựa trên tình trạng thị trường
  4. Chất lượng tín hiệu được cải thiện

    • Thêm điều kiện xác nhận giao dịch, yêu cầu tăng cường giao dịch khi tín hiệu được kích hoạt
    • Kết hợp với các vị trí kỹ thuật quan trọng (như vị trí trước cao trước thấp, Fibonacci retracement) để xác nhận nhiều lần
    • Tiến hành hệ thống xếp hạng cường độ tín hiệu, điều chỉnh kích thước vị trí theo xếp hạng
  5. Tối ưu hóa quản lý vị trí

    • Phân bổ vị trí động dựa trên công thức Kelly
    • Điều chỉnh tỷ lệ mở vị trí dựa trên tín hiệu và tình trạng thị trường
    • Thực hiện chiến lược tăng và giảm kho bạc kim tự tháp
  6. Tích hợp nhiều khung thời gian

    • Các nhà đầu tư khác cũng có thể sử dụng các giao dịch theo xu hướng lớn trong các chu kỳ cao hơn.
    • Tìm điểm vào chính xác trong chu kỳ thời gian ngắn hơn
    • Xây dựng cơ chế xác nhận cộng hưởng đa chu kỳ

Tóm tắt

Chiến lược phân phối thích ứng của BBP đại diện cho một nỗ lực sáng tạo trong việc kết hợp phân tích kỹ thuật với thống kê hiện đại, giải quyết căn bản vấn đề phụ thuộc của chiến lược truyền thống vào giả định phân phối chính xác thông qua kỹ thuật phù hợp với phân phối thích ứng. Giá trị cốt lõi của chiến lược là tính đổi mới về lý thuyết và tôn trọng các đặc điểm phân phối thực tế của thị trường, có thể duy trì chất lượng tín hiệu hợp lý trong các thị trường với các dạng phân phối khác nhau. Hệ thống dừng động ba cấp tiếp tục tăng cường tính thực tế của chiến lược, đạt được sự cân bằng tốt giữa lợi nhuận và rủi ro.

Tuy nhiên, cũng có không gian cải tiến rõ ràng trong chiến lược. Thiếu cơ chế dừng lỗ rõ ràng là nhược điểm lớn nhất, cần được bổ sung ưu tiên trong ứng dụng thực tế. Sự phức tạp của tối ưu hóa tham số và khả năng thích ứng của thị trường ngang cũng cần được giải quyết bằng cách giới thiệu cơ chế nhận diện môi trường thị trường và tự thích ứng tham số.

Đối với các nhà giao dịch định lượng, những người muốn tìm hiểu sâu về lý thuyết, chiến lược này cung cấp một khuôn khổ học tập và cải tiến tuyệt vời.

  1. Phản hồi lịch sử đầy đủ và tối ưu hóa tham số cho các giao dịch cụ thể
  2. Thêm bảo vệ lỗ cứng dựa trên ATR hoặc phần trăm
  3. Tránh giao dịch trong môi trường thị trường bất lợi với bộ lọc xu hướng
  4. Bắt đầu từ một vị trí nhỏ, từng bước xác minh chiến lược hoạt động trong thị trường thực

Nhìn chung, đây là một chiến lược sáng tạo với nền tảng lý thuyết vững chắc, logic thiết kế nghiêm ngặt, có giá trị nghiên cứu và ứng dụng cao, đáng để các nhà giao dịch định lượng khám phá sâu và tối ưu hóa liên tục.

Mã nguồn chiến lược
//@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);