2025年8月2日 06:12

This commit is contained in:
2025-08-02 06:12:29 +00:00
parent 0436a4135c
commit a163306ff3

View File

@@ -816,6 +816,8 @@ meanline_15m = mtf_15m ? request.security(syminfo.tickerid, "15", supersmoother(
meanrange_15m = mtf_15m ? request.security(syminfo.tickerid, "15", supersmoother(ta.tr, length), lookahead=barmerge.lookahead_off) : na
upband1_15m = mtf_15m and not na(meanline_15m) and not na(meanrange_15m) ? meanline_15m + meanrange_15m * (2 * math.asin(1) * innermult) : na
loband1_15m = mtf_15m and not na(meanline_15m) and not na(meanrange_15m) ? meanline_15m - meanrange_15m * (2 * math.asin(1) * innermult) : na
// SRBR 15分钟数据
[srbr_supportLevel_15m, srbr_resistanceLevel_15m, srbr_brekout_res_15m, srbr_res_holds_15m, srbr_sup_holds_15m, srbr_brekout_sup_15m, srbr_vol_15m, srbr_vol_hi_15m, srbr_vol_lo_15m] = mtf_15m ? get_mtf_srbr("15") : [na, na, na, na, na, na, na, na, na]
// 30分钟数据
rsi_30m = mtf_30m ? get_mtf_rsi("30") : na
@@ -826,6 +828,8 @@ meanline_30m = mtf_30m ? request.security(syminfo.tickerid, "30", supersmoother(
meanrange_30m = mtf_30m ? request.security(syminfo.tickerid, "30", supersmoother(ta.tr, length), lookahead=barmerge.lookahead_off) : na
upband1_30m = mtf_30m and not na(meanline_30m) and not na(meanrange_30m) ? meanline_30m + meanrange_30m * (2 * math.asin(1) * innermult) : na
loband1_30m = mtf_30m and not na(meanline_30m) and not na(meanrange_30m) ? meanline_30m - meanrange_30m * (2 * math.asin(1) * innermult) : na
// SRBR 30分钟数据
[srbr_supportLevel_30m, srbr_resistanceLevel_30m, srbr_brekout_res_30m, srbr_res_holds_30m, srbr_sup_holds_30m, srbr_brekout_sup_30m, srbr_vol_30m, srbr_vol_hi_30m, srbr_vol_lo_30m] = mtf_30m ? get_mtf_srbr("30") : [na, na, na, na, na, na, na, na, na]
// 45分钟数据
rsi_45m = mtf_45m ? get_mtf_rsi("45") : na
@@ -836,6 +840,8 @@ meanline_45m = mtf_45m ? request.security(syminfo.tickerid, "45", supersmoother(
meanrange_45m = mtf_45m ? request.security(syminfo.tickerid, "45", supersmoother(ta.tr, length), lookahead=barmerge.lookahead_off) : na
upband1_45m = mtf_45m and not na(meanline_45m) and not na(meanrange_45m) ? meanline_45m + meanrange_45m * (2 * math.asin(1) * innermult) : na
loband1_45m = mtf_45m and not na(meanline_45m) and not na(meanrange_45m) ? meanline_45m - meanrange_45m * (2 * math.asin(1) * innermult) : na
// SRBR 45分钟数据
[srbr_supportLevel_45m, srbr_resistanceLevel_45m, srbr_brekout_res_45m, srbr_res_holds_45m, srbr_sup_holds_45m, srbr_brekout_sup_45m, srbr_vol_45m, srbr_vol_hi_45m, srbr_vol_lo_45m] = mtf_45m ? get_mtf_srbr("45") : [na, na, na, na, na, na, na, na, na]
// 1小时数据
rsi_1h = mtf_1h ? get_mtf_rsi("60") : na
@@ -846,6 +852,8 @@ meanline_1h = mtf_1h ? request.security(syminfo.tickerid, "60", supersmoother(so
meanrange_1h = mtf_1h ? request.security(syminfo.tickerid, "60", supersmoother(ta.tr, length), lookahead=barmerge.lookahead_off) : na
upband1_1h = mtf_1h and not na(meanline_1h) and not na(meanrange_1h) ? meanline_1h + meanrange_1h * (2 * math.asin(1) * innermult) : na
loband1_1h = mtf_1h and not na(meanline_1h) and not na(meanrange_1h) ? meanline_1h - meanrange_1h * (2 * math.asin(1) * innermult) : na
// SRBR 1小时数据
[srbr_supportLevel_1h, srbr_resistanceLevel_1h, srbr_brekout_res_1h, srbr_res_holds_1h, srbr_sup_holds_1h, srbr_brekout_sup_1h, srbr_vol_1h, srbr_vol_hi_1h, srbr_vol_lo_1h] = mtf_1h ? get_mtf_srbr("60") : [na, na, na, na, na, na, na, na, na]
// 4小时数据
rsi_4h = mtf_4h ? get_mtf_rsi("240") : na
@@ -856,6 +864,8 @@ meanline_4h = mtf_4h ? request.security(syminfo.tickerid, "240", supersmoother(s
meanrange_4h = mtf_4h ? request.security(syminfo.tickerid, "240", supersmoother(ta.tr, length), lookahead=barmerge.lookahead_off) : na
upband1_4h = mtf_4h and not na(meanline_4h) and not na(meanrange_4h) ? meanline_4h + meanrange_4h * (2 * math.asin(1) * innermult) : na
loband1_4h = mtf_4h and not na(meanline_4h) and not na(meanrange_4h) ? meanline_4h - meanrange_4h * (2 * math.asin(1) * innermult) : na
// SRBR 4小时数据
[srbr_supportLevel_4h, srbr_resistanceLevel_4h, srbr_brekout_res_4h, srbr_res_holds_4h, srbr_sup_holds_4h, srbr_brekout_sup_4h, srbr_vol_4h, srbr_vol_hi_4h, srbr_vol_lo_4h] = mtf_4h ? get_mtf_srbr("240") : [na, na, na, na, na, na, na, na, na]
// 计算多时间框架信号(修正版本,与原指标逻辑一致)
// 1分钟信号
@@ -884,6 +894,11 @@ price_below_s1_1m = mtf_1m and not na(close_1m) and not na(loband1_1m) ? (close_
ma50_below_mean_1m = mtf_1m and not na(ma50_1m) and not na(meanline_1m) ? (ma50_1m < meanline_1m) : false
short_1m = rsi_oversold_1m and price_below_s1_1m and ma200_far_1m and ma50_below_mean_1m
// 1分钟SRBR信号计算
srbr_bullish_1m = mtf_1m ? (srbr_brekout_res_1m or (srbr_brekout_res_1m and srbr_res_holds_1m[1]) or srbr_sup_holds_1m) : false
srbr_bearish_1m = mtf_1m ? (srbr_brekout_sup_1m or (srbr_brekout_sup_1m and srbr_sup_holds_1m[1]) or srbr_res_holds_1m) : false
srbr_neutral_1m = mtf_1m ? (not srbr_bullish_1m and not srbr_bearish_1m) : false
// 5分钟信号
distance_5m = mtf_5m and not na(close_5m) and not na(ma200_5m) ? math.abs(close_5m - ma200_5m) : na
@@ -910,6 +925,11 @@ price_below_mean_5m = mtf_5m and not na(close_5m) and not na(meanline_5m) ? (clo
ma50_below_mean_5m = mtf_5m and not na(ma50_5m) and not na(meanline_5m) ? (ma50_5m < meanline_5m) : false
short_5m = rsi_oversold_5m and price_below_s1_5m and ma200_far_5m and ma50_below_mean_5m
// 5分钟SRBR信号计算
srbr_bullish_5m = mtf_5m ? (srbr_brekout_res_5m or (srbr_brekout_res_5m and srbr_res_holds_5m[1]) or srbr_sup_holds_5m) : false
srbr_bearish_5m = mtf_5m ? (srbr_brekout_sup_5m or (srbr_brekout_sup_5m and srbr_sup_holds_5m[1]) or srbr_res_holds_5m) : false
srbr_neutral_5m = mtf_5m ? (not srbr_bullish_5m and not srbr_bearish_5m) : false
// 15分钟信号
distance_15m = mtf_15m and not na(close_15m) and not na(ma200_15m) ? math.abs(close_15m - ma200_15m) : na
@@ -934,6 +954,11 @@ price_below_s1_15m = mtf_15m and not na(close_15m) and not na(loband1_15m) ? (cl
ma50_below_mean_15m = mtf_15m and not na(ma50_15m) and not na(meanline_15m) ? (ma50_15m < meanline_15m) : false
short_15m = rsi_oversold_15m and price_below_s1_15m and ma200_far_15m and ma50_below_mean_15m
// 15分钟SRBR信号计算
srbr_bullish_15m = mtf_15m ? (srbr_brekout_res_15m or (srbr_brekout_res_15m and srbr_res_holds_15m[1]) or srbr_sup_holds_15m) : false
srbr_bearish_15m = mtf_15m ? (srbr_brekout_sup_15m or (srbr_brekout_sup_15m and srbr_sup_holds_15m[1]) or srbr_res_holds_15m) : false
srbr_neutral_15m = mtf_15m ? (not srbr_bullish_15m and not srbr_bearish_15m) : false
// 30分钟信号
distance_30m = mtf_30m and not na(close_30m) and not na(ma200_30m) ? math.abs(close_30m - ma200_30m) : na
@@ -1677,8 +1702,12 @@ if show_mtf_table and barstate.islast
table.cell(mtf_table, 8, 1, na(distance_to_mean_1m) ? "N/A" : str.tostring(distance_to_mean_1m, '#.##'), text_color=color.black, bgcolor=mean_bg_color_1m, text_size=text_size)
table.cell(mtf_table, 9, 1, na(distance_to_r1_1m) ? "N/A" : str.tostring(distance_to_r1_1m, '#.##'), text_color=color.black, bgcolor=r1_bg_color_1m, text_size=text_size)
table.cell(mtf_table, 10, 1, na(distance_to_s1_1m) ? "N/A" : str.tostring(distance_to_s1_1m, '#.##'), text_color=color.black, bgcolor=s1_bg_color_1m, text_size=text_size)
table.cell(mtf_table, 11, 1, get_signal_text(osc_1m, long_1m, short_1m), text_color=color.black, bgcolor=signal_color_1m, text_size=text_size)
table.cell(mtf_table, 12, 1, get_final_judgment(osc_1m, long_1m, short_1m), text_color=color.black, bgcolor=signal_color_1m, text_size=text_size)
// SRBR状态
srbr_status_1m = srbr_bullish_1m ? "看涨" : srbr_bearish_1m ? "看跌" : "中性"
srbr_color_1m = srbr_bullish_1m ? color.new(color.green, 40) : srbr_bearish_1m ? color.new(color.red, 40) : color.new(color.gray, 60)
table.cell(mtf_table, 11, 1, srbr_status_1m, text_color=color.black, bgcolor=srbr_color_1m, text_size=text_size)
table.cell(mtf_table, 12, 1, get_signal_text(osc_1m, long_1m, short_1m), text_color=color.black, bgcolor=signal_color_1m, text_size=text_size)
table.cell(mtf_table, 13, 1, get_final_judgment(osc_1m, long_1m, short_1m), text_color=color.black, bgcolor=signal_color_1m, text_size=text_size)
// ═════════ 5分钟时间框架数据 ═════════
if mtf_5m and not na(rsi_5m)