2025年8月2日 04:41
This commit is contained in:
82
3in1.pine
82
3in1.pine
@@ -61,14 +61,31 @@ alert_cooldown_minutes = input.int(30, title='警报冷却时间(分钟)', m
|
||||
volumeFilterSet = input(false, '═════════ Volume Filter Configuration ════════')
|
||||
enable_volume_filter = input.bool(true, title='启用成交量过滤', group='VolumeFilter')
|
||||
vol_filter_length = input.int(5, title='成交量过滤长度', minval=1, maxval=20, group='VolumeFilter')
|
||||
vol_multiplier = input.float(1.2, title='成交量倍数', minval=0.5, maxval=5.0, step=0.01, group='VolumeFilter')
|
||||
vol_multiplier = input.float(1.2, title='默认成交量倍数', minval=0.5, maxval=5.0, step=0.01, group='VolumeFilter')
|
||||
volume_confirmation_bars = input.int(5, title='成交量确认K线数', minval=1, maxval=20, group='VolumeFilter')
|
||||
volume_strength_multiplier = input.float(1.05, title='成交量强度倍数', minval=1.0, maxval=2.0, step=0.01, group='VolumeFilter')
|
||||
volume_strength_multiplier = input.float(1.05, title='默认成交量强度倍数', minval=1.0, maxval=2.0, step=0.01, group='VolumeFilter')
|
||||
volume_filter_mode = input.string('适中', title='过滤强度', options=['温和', '适中', '中等', '严格'], group='VolumeFilter')
|
||||
apply_volume_to_trigger = input.bool(false, title='启动条件应用成交量过滤', group='VolumeFilter')
|
||||
min_volume_ratio = input.float(0.3, title='最小成交量比率(温和模式)', minval=0.1, maxval=1.0, step=0.01, group='VolumeFilter')
|
||||
min_volume_ratio = input.float(0.3, title='默认最小成交量比率', minval=0.1, maxval=1.0, step=0.01, group='VolumeFilter')
|
||||
show_volume_debug = input.bool(true, title='显示成交量调试信息', group='VolumeFilter')
|
||||
|
||||
// ═════════ 品种特定成交量参数 ════════
|
||||
volumeSymbolSet = input(false, '═════════ Symbol-Specific Volume Parameters ════════')
|
||||
btc_vol_multiplier = input.float(0.8, title='BTCUSD 成交量倍数', minval=0.1, maxval=5.0, step=0.01, group='SymbolVolume')
|
||||
xau_vol_multiplier = input.float(1.5, title='XAUUSD 成交量倍数', minval=0.1, maxval=5.0, step=0.01, group='SymbolVolume')
|
||||
eth_vol_multiplier = input.float(1.0, title='ETHUSD 成交量倍数', minval=0.1, maxval=5.0, step=0.01, group='SymbolVolume')
|
||||
gbp_vol_multiplier = input.float(2.0, title='GBPJPY 成交量倍数', minval=0.1, maxval=5.0, step=0.01, group='SymbolVolume')
|
||||
|
||||
btc_vol_strength = input.float(0.9, title='BTCUSD 成交量强度倍数', minval=0.5, maxval=3.0, step=0.01, group='SymbolVolume')
|
||||
xau_vol_strength = input.float(1.2, title='XAUUSD 成交量强度倍数', minval=0.5, maxval=3.0, step=0.01, group='SymbolVolume')
|
||||
eth_vol_strength = input.float(1.0, title='ETHUSD 成交量强度倍数', minval=0.5, maxval=3.0, step=0.01, group='SymbolVolume')
|
||||
gbp_vol_strength = input.float(1.5, title='GBPJPY 成交量强度倍数', minval=0.5, maxval=3.0, step=0.01, group='SymbolVolume')
|
||||
|
||||
btc_min_vol_ratio = input.float(0.2, title='BTCUSD 最小成交量比率', minval=0.05, maxval=1.0, step=0.01, group='SymbolVolume')
|
||||
xau_min_vol_ratio = input.float(0.4, title='XAUUSD 最小成交量比率', minval=0.05, maxval=1.0, step=0.01, group='SymbolVolume')
|
||||
eth_min_vol_ratio = input.float(0.25, title='ETHUSD 最小成交量比率', minval=0.05, maxval=1.0, step=0.01, group='SymbolVolume')
|
||||
gbp_min_vol_ratio = input.float(0.5, title='GBPJPY 最小成交量比率', minval=0.05, maxval=1.0, step=0.01, group='SymbolVolume')
|
||||
|
||||
// ═════════ 价格标签配置 ════════
|
||||
labelSet = input(false, '═════════ Price Labels Configuration ════════')
|
||||
show_mean_label = input.bool(true, title='显示MEAN价格标签', group='Labels')
|
||||
@@ -146,13 +163,17 @@ get_volume_filter() =>
|
||||
if not enable_volume_filter
|
||||
[true, true] // 如果未启用成交量过滤,返回true
|
||||
else
|
||||
// 获取品种特定的成交量参数
|
||||
symbol_vol_multiplier = get_volume_multiplier()
|
||||
symbol_min_vol_ratio = get_min_volume_ratio()
|
||||
|
||||
// 根据过滤强度调整阈值
|
||||
threshold_multiplier = switch volume_filter_mode
|
||||
'温和' => vol_multiplier * 0.8 // 降低20%,更容易通过
|
||||
'适中' => vol_multiplier * 0.9 // 降低10%,介于温和和中等之间
|
||||
'中等' => vol_multiplier
|
||||
'严格' => vol_multiplier * 1.3 // 提高30%,更难通过
|
||||
=> vol_multiplier
|
||||
'温和' => symbol_vol_multiplier * 0.8 // 降低20%,更容易通过
|
||||
'适中' => symbol_vol_multiplier * 0.9 // 降低10%,介于温和和中等之间
|
||||
'中等' => symbol_vol_multiplier
|
||||
'严格' => symbol_vol_multiplier * 1.3 // 提高30%,更难通过
|
||||
=> symbol_vol_multiplier
|
||||
|
||||
vol_threshold = vol_avg * threshold_multiplier
|
||||
|
||||
@@ -162,12 +183,12 @@ get_volume_filter() =>
|
||||
|
||||
if volume_filter_mode == '温和'
|
||||
// 温和模式:只过滤极低成交量的假突破
|
||||
min_volume_threshold = vol_avg * min_volume_ratio // 用户可配置的最小比率
|
||||
min_volume_threshold = vol_avg * symbol_min_vol_ratio // 使用品种特定的最小比率
|
||||
long_volume_ok := Vol > 0 and vol_abs > min_volume_threshold
|
||||
short_volume_ok := Vol < 0 and vol_abs > min_volume_threshold
|
||||
else if volume_filter_mode == '适中'
|
||||
// 适中模式:介于温和和中等之间,使用稍高的最小成交量要求
|
||||
moderate_volume_threshold = vol_avg * (min_volume_ratio + 0.2) // 比温和模式高20%
|
||||
moderate_volume_threshold = vol_avg * (symbol_min_vol_ratio + 0.2) // 比温和模式高20%
|
||||
long_volume_ok := Vol > 0 and vol_abs > moderate_volume_threshold
|
||||
short_volume_ok := Vol < 0 and vol_abs > moderate_volume_threshold
|
||||
else
|
||||
@@ -186,13 +207,16 @@ volume_trend_confirmation(signal_type) =>
|
||||
volume_avg = ta.sma(math.abs(Vol), volume_confirmation_bars)
|
||||
current_volume = math.abs(Vol)
|
||||
|
||||
// 获取品种特定的成交量强度参数
|
||||
symbol_vol_strength = get_volume_strength_multiplier()
|
||||
|
||||
// 根据过滤强度调整成交量强度要求
|
||||
strength_multiplier = switch volume_filter_mode
|
||||
'温和' => volume_strength_multiplier * 0.9 // 降低10%
|
||||
'适中' => volume_strength_multiplier * 0.95 // 降低5%,介于温和和中等之间
|
||||
'中等' => volume_strength_multiplier
|
||||
'严格' => volume_strength_multiplier * 1.2 // 提高20%
|
||||
=> volume_strength_multiplier
|
||||
'温和' => symbol_vol_strength * 0.9 // 降低10%
|
||||
'适中' => symbol_vol_strength * 0.95 // 降低5%,介于温和和中等之间
|
||||
'中等' => symbol_vol_strength
|
||||
'严格' => symbol_vol_strength * 1.2 // 提高20%
|
||||
=> symbol_vol_strength
|
||||
|
||||
volume_strength = current_volume > volume_avg * strength_multiplier
|
||||
|
||||
@@ -225,6 +249,34 @@ get_r1s1_distance_threshold() =>
|
||||
'TICKMILL:GBPJPY' => gbp_r1s1_dist
|
||||
=> default_r1s1_dist
|
||||
|
||||
// ═════════ 品种特定成交量参数获取 ════════
|
||||
get_volume_multiplier() =>
|
||||
sym = ticker.standard(syminfo.tickerid)
|
||||
switch sym
|
||||
'TICKMILL:BTCUSD' => btc_vol_multiplier
|
||||
'TICKMILL:XAUUSD' => xau_vol_multiplier
|
||||
'TICKMILL:ETHUSD' => eth_vol_multiplier
|
||||
'TICKMILL:GBPJPY' => gbp_vol_multiplier
|
||||
=> vol_multiplier
|
||||
|
||||
get_volume_strength_multiplier() =>
|
||||
sym = ticker.standard(syminfo.tickerid)
|
||||
switch sym
|
||||
'TICKMILL:BTCUSD' => btc_vol_strength
|
||||
'TICKMILL:XAUUSD' => xau_vol_strength
|
||||
'TICKMILL:ETHUSD' => eth_vol_strength
|
||||
'TICKMILL:GBPJPY' => gbp_vol_strength
|
||||
=> volume_strength_multiplier
|
||||
|
||||
get_min_volume_ratio() =>
|
||||
sym = ticker.standard(syminfo.tickerid)
|
||||
switch sym
|
||||
'TICKMILL:BTCUSD' => btc_min_vol_ratio
|
||||
'TICKMILL:XAUUSD' => xau_min_vol_ratio
|
||||
'TICKMILL:ETHUSD' => eth_min_vol_ratio
|
||||
'TICKMILL:GBPJPY' => gbp_min_vol_ratio
|
||||
=> min_volume_ratio
|
||||
|
||||
// ═════════ 表格文字大小转换 ════════
|
||||
get_text_size() =>
|
||||
switch table_text_size
|
||||
|
||||
Reference in New Issue
Block a user