2025年8月2日 06:05
This commit is contained in:
123
3in1 copy.pine
123
3in1 copy.pine
@@ -566,6 +566,92 @@ mtf_rsi_segment_count(long_threshold, short_threshold) =>
|
||||
get_mtf_rsi_crossover_count(tf, long_threshold, short_threshold) =>
|
||||
request.security(syminfo.tickerid, tf, mtf_rsi_segment_count(long_threshold, short_threshold), lookahead=barmerge.lookahead_off)
|
||||
|
||||
// ═════════ SRBR核心计算函数(完整保留原始逻辑) ════════
|
||||
// Function to identify support and resistance boxes - 完全按照原始SRBR逻辑
|
||||
calcSupportResistance(src, lookbackPeriod) =>
|
||||
// Volume - 使用SRBR专用成交量函数
|
||||
Vol = srbr_upAndDownVolume()
|
||||
vol_hi = ta.highest(Vol/2.5, srbr_vol_len)
|
||||
vol_lo = ta.lowest(Vol/2.5, srbr_vol_len)
|
||||
|
||||
var float supportLevel = na
|
||||
var float supportLevel_1 = na
|
||||
var float resistanceLevel = na
|
||||
var float resistanceLevel_1 = na
|
||||
// 注释掉绘图相关变量,但保留计算逻辑
|
||||
// var box sup = na
|
||||
// var box res = na
|
||||
// var color res_color = na
|
||||
// var color sup_color = na
|
||||
var float multi = na
|
||||
|
||||
var bool brekout_res = na
|
||||
var bool brekout_sup = na
|
||||
var bool res_holds = na
|
||||
var bool sup_holds = na
|
||||
|
||||
// Find pivot points
|
||||
pivotHigh = ta.pivothigh(src, lookbackPeriod, lookbackPeriod)
|
||||
pivotLow = ta.pivotlow (src, lookbackPeriod, lookbackPeriod)
|
||||
// Box width
|
||||
atr = ta.atr(200)
|
||||
withd = atr * srbr_box_width
|
||||
|
||||
// Find support levels with Positive Volume
|
||||
if (not na(pivotLow)) and Vol > vol_hi
|
||||
supportLevel := pivotLow
|
||||
supportLevel_1 := supportLevel-withd
|
||||
|
||||
// 注释掉绘图部分,保留计算逻辑
|
||||
// topLeft = chart.point.from_index(bar_index-lookbackPeriod, supportLevel)
|
||||
// bottomRight = chart.point.from_index(bar_index, supportLevel_1)
|
||||
// sup_color := color.from_gradient(Vol, 0, ta.highest(Vol, 25), color(na), color.new(color.green, 30))
|
||||
// sup := box.new(...)
|
||||
|
||||
// Find resistance levels with Negative Volume
|
||||
if (not na(pivotHigh)) and Vol < vol_lo
|
||||
resistanceLevel := pivotHigh
|
||||
resistanceLevel_1 := resistanceLevel+withd
|
||||
|
||||
// 注释掉绘图部分,保留计算逻辑
|
||||
// topLeft = chart.point.from_index(bar_index-lookbackPeriod, resistanceLevel)
|
||||
// bottomRight = chart.point.from_index(bar_index, resistanceLevel_1)
|
||||
// res_color := color.from_gradient(Vol, ta.lowest(Vol, 25), 0, color.new(color.red, 30), color(na))
|
||||
// res := box.new(...)
|
||||
|
||||
// 注释掉绘图相关的box操作
|
||||
// Adaptive Box Len
|
||||
// sup.set_right(bar_index+1)
|
||||
// res.set_right(bar_index+1)
|
||||
|
||||
// Break of support or resistance conditions - 保留完整计算逻辑
|
||||
brekout_res := ta.crossover(low, resistanceLevel_1)
|
||||
res_holds := ta.crossunder(high, resistanceLevel)
|
||||
|
||||
sup_holds := ta.crossover(low, supportLevel)
|
||||
brekout_sup := ta.crossunder(high, supportLevel_1)
|
||||
|
||||
// 注释掉颜色变化逻辑,但保留状态计算
|
||||
// Change Color of Support to red if it was break, change color of resistance to green if it was break
|
||||
// if brekout_sup
|
||||
// sup.set_bgcolor(color.new(color.red, 80))
|
||||
// sup.set_border_color(color.red)
|
||||
// sup.set_border_style(line.style_dashed)
|
||||
// if sup_holds
|
||||
// sup.set_bgcolor(sup_color)
|
||||
// sup.set_border_color(color.green)
|
||||
// sup.set_border_style(line.style_solid)
|
||||
// if brekout_res
|
||||
// res.set_bgcolor(color.new(color.green, 80))
|
||||
// res.set_border_color(color.new(color.green, 0))
|
||||
// res.set_border_style(line.style_dashed)
|
||||
// if res_holds
|
||||
// res.set_bgcolor(res_color)
|
||||
// res.set_border_color(color.new(color.red, 0))
|
||||
// res.set_border_style(line.style_solid)
|
||||
|
||||
[supportLevel, resistanceLevel, brekout_res, res_holds, sup_holds, brekout_sup, Vol, vol_hi, vol_lo]
|
||||
|
||||
//************************************************************************************************************
|
||||
// 多时间框架计算函数
|
||||
//************************************************************************************************************
|
||||
@@ -607,6 +693,43 @@ rsi = ta.rsi(rsi_src, rsiLength)
|
||||
if smooth
|
||||
rsi := ma(rsi, smoothP, maType, sig)
|
||||
|
||||
// ═════════ SRBR 计算 ═════════
|
||||
// Calculate support and resistance levels and their breakouts - 完全按照原始SRBR逻辑
|
||||
[srbr_supportLevel,
|
||||
srbr_resistanceLevel,
|
||||
srbr_brekout_res,
|
||||
srbr_res_holds,
|
||||
srbr_sup_holds,
|
||||
srbr_brekout_sup,
|
||||
srbr_vol,
|
||||
srbr_vol_hi,
|
||||
srbr_vol_lo] = calcSupportResistance(close, srbr_lookback_period)
|
||||
|
||||
// Check if Resistance become Support or Support Become Resistance - 完全按照原始SRBR逻辑
|
||||
var bool srbr_res_is_sup = na
|
||||
var bool srbr_sup_is_res = na
|
||||
|
||||
switch
|
||||
srbr_brekout_res => srbr_res_is_sup := true
|
||||
srbr_res_holds => srbr_res_is_sup := false
|
||||
|
||||
switch
|
||||
srbr_brekout_sup => srbr_sup_is_res := true
|
||||
srbr_sup_holds => srbr_sup_is_res := false
|
||||
|
||||
// SRBR状态分析
|
||||
srbr_resistance_holds = srbr_res_holds
|
||||
srbr_support_holds = srbr_sup_holds
|
||||
srbr_resistance_as_support_holds = srbr_brekout_res and srbr_res_is_sup[1]
|
||||
srbr_support_as_resistance_holds = srbr_brekout_sup and srbr_sup_is_res[1]
|
||||
srbr_break_support = srbr_brekout_sup and not srbr_sup_is_res[1]
|
||||
srbr_break_resistance = srbr_brekout_res and not srbr_res_is_sup[1]
|
||||
|
||||
// SRBR过滤条件(用于高级警报)
|
||||
srbr_bullish_signal = srbr_break_resistance or srbr_resistance_as_support_holds or srbr_support_holds
|
||||
srbr_bearish_signal = srbr_break_support or srbr_support_as_resistance_holds or srbr_resistance_holds
|
||||
srbr_neutral_signal = not srbr_bullish_signal and not srbr_bearish_signal
|
||||
|
||||
// RSI 机器学习阈值计算(简化版)
|
||||
var rsi_values = array.new_float(0)
|
||||
if last_bar_index - bar_index <= 1000
|
||||
|
||||
Reference in New Issue
Block a user