diff --git a/3in1 copy.pine b/3in1 copy.pine index 28a0486..c7a032d 100644 --- a/3in1 copy.pine +++ b/3in1 copy.pine @@ -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)