2025年8月2日 12:53
This commit is contained in:
@@ -26,6 +26,16 @@ xau_dist = input.float(3.5, title='XAUUSD MA200 距离阈值', minval=0.1, step=
|
|||||||
eth_dist = input.float(9.0, title='ETHUSD MA200 距离阈值', minval=0.1, step=0.1, group='Distance')
|
eth_dist = input.float(9.0, title='ETHUSD MA200 距离阈值', minval=0.1, step=0.1, group='Distance')
|
||||||
gbp_dist = input.float(0.3, title='GBPJPY MA200 距离阈值', minval=0.1, step=0.1, group='Distance')
|
gbp_dist = input.float(0.3, title='GBPJPY MA200 距离阈值', minval=0.1, step=0.1, group='Distance')
|
||||||
|
|
||||||
|
// ═════════ Binance加密货币距离阈值 ════════
|
||||||
|
binance_btc_dist = input.float(500.0, title='Binance BTCUSDT MA200 距离阈值', minval=0.1, step=0.1, group='Distance')
|
||||||
|
binance_eth_dist = input.float(15.0, title='Binance ETHUSDT MA200 距离阈值', minval=0.1, step=0.1, group='Distance')
|
||||||
|
binance_bnb_dist = input.float(5.0, title='Binance BNBUSDT MA200 距离阈值', minval=0.1, step=0.1, group='Distance')
|
||||||
|
binance_ada_dist = input.float(0.02, title='Binance ADAUSDT MA200 距离阈值', minval=0.001, step=0.001, group='Distance')
|
||||||
|
binance_sol_dist = input.float(3.0, title='Binance SOLUSDT MA200 距离阈值', minval=0.1, step=0.1, group='Distance')
|
||||||
|
binance_dot_dist = input.float(0.2, title='Binance DOTUSDT MA200 距离阈值', minval=0.01, step=0.01, group='Distance')
|
||||||
|
binance_avax_dist = input.float(0.8, title='Binance AVAXUSDT MA200 距离阈值', minval=0.01, step=0.01, group='Distance')
|
||||||
|
binance_matic_dist = input.float(0.03, title='Binance MATICUSDT MA200 距离阈值', minval=0.001, step=0.001, group='Distance')
|
||||||
|
|
||||||
flatness_period = input.int(20, title='MA200 波动回看周期', minval=1, group='Distance')
|
flatness_period = input.int(20, title='MA200 波动回看周期', minval=1, group='Distance')
|
||||||
flatness_threshold = input.float(0.5, title='MA200 平坦度阈值', minval=0.01, step=0.01, group='Distance')
|
flatness_threshold = input.float(0.5, title='MA200 平坦度阈值', minval=0.01, step=0.01, group='Distance')
|
||||||
oscillation_bars = input.int(10, title='价格波动回看周期', minval=1, group='Distance')
|
oscillation_bars = input.int(10, title='价格波动回看周期', minval=1, group='Distance')
|
||||||
@@ -39,6 +49,16 @@ xau_r1s1_dist = input.float(3.5, title='XAUUSD R1/S1 距离阈值', minval=0.1,
|
|||||||
eth_r1s1_dist = input.float(9.0, title='ETHUSD R1/S1 距离阈值', minval=0.1, step=0.1, group='R1S1Distance')
|
eth_r1s1_dist = input.float(9.0, title='ETHUSD R1/S1 距离阈值', minval=0.1, step=0.1, group='R1S1Distance')
|
||||||
gbp_r1s1_dist = input.float(0.3, title='GBPJPY R1/S1 距离阈值', minval=0.1, step=0.1, group='R1S1Distance')
|
gbp_r1s1_dist = input.float(0.3, title='GBPJPY R1/S1 距离阈值', minval=0.1, step=0.1, group='R1S1Distance')
|
||||||
|
|
||||||
|
// ═════════ Binance加密货币R1/S1距离阈值 ════════
|
||||||
|
binance_btc_r1s1_dist = input.float(500.0, title='Binance BTCUSDT R1/S1 距离阈值', minval=0.1, step=0.1, group='R1S1Distance')
|
||||||
|
binance_eth_r1s1_dist = input.float(15.0, title='Binance ETHUSDT R1/S1 距离阈值', minval=0.1, step=0.1, group='R1S1Distance')
|
||||||
|
binance_bnb_r1s1_dist = input.float(5.0, title='Binance BNBUSDT R1/S1 距离阈值', minval=0.1, step=0.1, group='R1S1Distance')
|
||||||
|
binance_ada_r1s1_dist = input.float(0.02, title='Binance ADAUSDT R1/S1 距离阈值', minval=0.001, step=0.001, group='R1S1Distance')
|
||||||
|
binance_sol_r1s1_dist = input.float(3.0, title='Binance SOLUSDT R1/S1 距离阈值', minval=0.1, step=0.1, group='R1S1Distance')
|
||||||
|
binance_dot_r1s1_dist = input.float(0.2, title='Binance DOTUSDT R1/S1 距离阈值', minval=0.01, step=0.01, group='R1S1Distance')
|
||||||
|
binance_avax_r1s1_dist = input.float(0.8, title='Binance AVAXUSDT R1/S1 距离阈值', minval=0.01, step=0.01, group='R1S1Distance')
|
||||||
|
binance_matic_r1s1_dist = input.float(0.03, title='Binance MATICUSDT R1/S1 距离阈值', minval=0.001, step=0.001, group='R1S1Distance')
|
||||||
|
|
||||||
// ═════════ K线标记配置 ════════
|
// ═════════ K线标记配置 ════════
|
||||||
signalSet = input(false, '═════════ Signal Marks Configuration ════════')
|
signalSet = input(false, '═════════ Signal Marks Configuration ════════')
|
||||||
show_long_marks = input.bool(true, title='显示做多标记', group='Signals')
|
show_long_marks = input.bool(true, title='显示做多标记', group='Signals')
|
||||||
@@ -73,6 +93,11 @@ show_volume_debug = input.bool(true, title='显示成交量调试信息', group=
|
|||||||
srbr_vol_divisor = input.float(2.5, title='SRBR成交量除数', minval=1.0, maxval=5.0, step=0.1, tooltip='参考SRBR源代码的Vol/2.5逻辑', group='VolumeFilter')
|
srbr_vol_divisor = input.float(2.5, title='SRBR成交量除数', minval=1.0, maxval=5.0, step=0.1, tooltip='参考SRBR源代码的Vol/2.5逻辑', group='VolumeFilter')
|
||||||
volume_lookback_period = input.int(25, title='成交量回看周期', minval=5, maxval=50, tooltip='用于计算成交量梯度和阈值', group='VolumeFilter')
|
volume_lookback_period = input.int(25, title='成交量回看周期', minval=5, maxval=50, tooltip='用于计算成交量梯度和阈值', group='VolumeFilter')
|
||||||
|
|
||||||
|
// ═════════ 交易对特定成交量参数 ════════
|
||||||
|
crypto_vol_multiplier = input.float(1.5, title='加密货币成交量倍数', minval=0.5, maxval=3.0, step=0.1, tooltip='加密货币通常需要更高的成交量阈值', group='VolumeFilter')
|
||||||
|
forex_vol_multiplier = input.float(1.0, title='外汇成交量倍数', minval=0.5, maxval=3.0, step=0.1, tooltip='外汇市场的标准成交量倍数', group='VolumeFilter')
|
||||||
|
commodity_vol_multiplier = input.float(1.2, title='商品成交量倍数', minval=0.5, maxval=3.0, step=0.1, tooltip='商品市场的成交量倍数', group='VolumeFilter')
|
||||||
|
|
||||||
// ═════════ 价格标签配置 ════════
|
// ═════════ 价格标签配置 ════════
|
||||||
labelSet = input(false, '═════════ Price Labels Configuration ════════')
|
labelSet = input(false, '═════════ Price Labels Configuration ════════')
|
||||||
show_mean_label = input.bool(true, title='显示MEAN价格标签', group='Labels')
|
show_mean_label = input.bool(true, title='显示MEAN价格标签', group='Labels')
|
||||||
@@ -163,14 +188,18 @@ get_volume_filter() =>
|
|||||||
vol_range = vol_hi - vol_lo
|
vol_range = vol_hi - vol_lo
|
||||||
vol_mid = (vol_hi + vol_lo) / 2
|
vol_mid = (vol_hi + vol_lo) / 2
|
||||||
|
|
||||||
|
// 获取交易对特定的成交量参数
|
||||||
|
symbol_vol_multiplier = get_volume_multiplier()
|
||||||
|
symbol_min_vol_ratio = get_min_volume_ratio()
|
||||||
|
|
||||||
// 根据1-5级过滤等级调整阈值(参考SRBR的分层逻辑)
|
// 根据1-5级过滤等级调整阈值(参考SRBR的分层逻辑)
|
||||||
threshold_multiplier = switch volume_filter_level
|
threshold_multiplier = switch volume_filter_level
|
||||||
1 => vol_multiplier * 0.6 // 1级:最温和,只过滤极明显的假信号
|
1 => symbol_vol_multiplier * 0.6 // 1级:最温和,只过滤极明显的假信号
|
||||||
2 => vol_multiplier * 0.8 // 2级:温和,过滤明显假信号
|
2 => symbol_vol_multiplier * 0.8 // 2级:温和,过滤明显假信号
|
||||||
3 => vol_multiplier * 1.0 // 3级:中等,标准过滤
|
3 => symbol_vol_multiplier * 1.0 // 3级:中等,标准过滤
|
||||||
4 => vol_multiplier * 1.3 // 4级:严格,较强过滤
|
4 => symbol_vol_multiplier * 1.3 // 4级:严格,较强过滤
|
||||||
5 => vol_multiplier * 1.6 // 5级:最严格,最强过滤
|
5 => symbol_vol_multiplier * 1.6 // 5级:最严格,最强过滤
|
||||||
=> vol_multiplier
|
=> symbol_vol_multiplier
|
||||||
|
|
||||||
vol_threshold = vol_avg * threshold_multiplier
|
vol_threshold = vol_avg * threshold_multiplier
|
||||||
|
|
||||||
@@ -180,7 +209,7 @@ get_volume_filter() =>
|
|||||||
|
|
||||||
if volume_filter_level == 1
|
if volume_filter_level == 1
|
||||||
// 1级:最温和过滤,只要成交量方向正确且不是极低成交量
|
// 1级:最温和过滤,只要成交量方向正确且不是极低成交量
|
||||||
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
|
long_volume_ok := Vol > 0 and vol_abs > min_volume_threshold
|
||||||
short_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_level == 2
|
else if volume_filter_level == 2
|
||||||
@@ -270,26 +299,65 @@ volume_trend_confirmation(signal_type) =>
|
|||||||
else
|
else
|
||||||
volume_strength and (vol_adjusted > vol_hi * 0.7 or vol_adjusted < vol_lo * 1.3)
|
volume_strength and (vol_adjusted > vol_hi * 0.7 or vol_adjusted < vol_lo * 1.3)
|
||||||
|
|
||||||
// ═════════ 距离阈值切换(参考原MA200代码) ════════
|
// ═════════ 距离阈值切换(参考原MA200代码,新增Binance支持) ════════
|
||||||
get_distance_threshold() =>
|
get_distance_threshold() =>
|
||||||
sym = ticker.standard(syminfo.tickerid)
|
sym = ticker.standard(syminfo.tickerid)
|
||||||
switch sym
|
switch sym
|
||||||
|
// TICKMILL 交易对
|
||||||
'TICKMILL:BTCUSD' => btc_dist
|
'TICKMILL:BTCUSD' => btc_dist
|
||||||
'TICKMILL:XAUUSD' => xau_dist
|
'TICKMILL:XAUUSD' => xau_dist
|
||||||
'TICKMILL:ETHUSD' => eth_dist
|
'TICKMILL:ETHUSD' => eth_dist
|
||||||
'TICKMILL:GBPJPY' => gbp_dist
|
'TICKMILL:GBPJPY' => gbp_dist
|
||||||
|
// Binance 加密货币交易对
|
||||||
|
'BINANCE:BTCUSDT' => binance_btc_dist
|
||||||
|
'BINANCE:ETHUSDT' => binance_eth_dist
|
||||||
|
'BINANCE:BNBUSDT' => binance_bnb_dist
|
||||||
|
'BINANCE:ADAUSDT' => binance_ada_dist
|
||||||
|
'BINANCE:SOLUSDT' => binance_sol_dist
|
||||||
|
'BINANCE:DOTUSDT' => binance_dot_dist
|
||||||
|
'BINANCE:AVAXUSDT' => binance_avax_dist
|
||||||
|
'BINANCE:MATICUSDT' => binance_matic_dist
|
||||||
=> default_dist
|
=> default_dist
|
||||||
|
|
||||||
// ═════════ R1/S1距离阈值切换 ════════
|
// ═════════ R1/S1距离阈值切换(新增Binance支持) ════════
|
||||||
get_r1s1_distance_threshold() =>
|
get_r1s1_distance_threshold() =>
|
||||||
sym = ticker.standard(syminfo.tickerid)
|
sym = ticker.standard(syminfo.tickerid)
|
||||||
switch sym
|
switch sym
|
||||||
|
// TICKMILL 交易对
|
||||||
'TICKMILL:BTCUSD' => btc_r1s1_dist
|
'TICKMILL:BTCUSD' => btc_r1s1_dist
|
||||||
'TICKMILL:XAUUSD' => xau_r1s1_dist
|
'TICKMILL:XAUUSD' => xau_r1s1_dist
|
||||||
'TICKMILL:ETHUSD' => eth_r1s1_dist
|
'TICKMILL:ETHUSD' => eth_r1s1_dist
|
||||||
'TICKMILL:GBPJPY' => gbp_r1s1_dist
|
'TICKMILL:GBPJPY' => gbp_r1s1_dist
|
||||||
|
// Binance 加密货币交易对
|
||||||
|
'BINANCE:BTCUSDT' => binance_btc_r1s1_dist
|
||||||
|
'BINANCE:ETHUSDT' => binance_eth_r1s1_dist
|
||||||
|
'BINANCE:BNBUSDT' => binance_bnb_r1s1_dist
|
||||||
|
'BINANCE:ADAUSDT' => binance_ada_r1s1_dist
|
||||||
|
'BINANCE:SOLUSDT' => binance_sol_r1s1_dist
|
||||||
|
'BINANCE:DOTUSDT' => binance_dot_r1s1_dist
|
||||||
|
'BINANCE:AVAXUSDT' => binance_avax_r1s1_dist
|
||||||
|
'BINANCE:MATICUSDT' => binance_matic_r1s1_dist
|
||||||
=> default_r1s1_dist
|
=> default_r1s1_dist
|
||||||
|
|
||||||
|
// ═════════ 交易对特定成交量参数获取函数 ════════
|
||||||
|
get_volume_multiplier() =>
|
||||||
|
sym = ticker.standard(syminfo.tickerid)
|
||||||
|
if str.contains(sym, "BINANCE:")
|
||||||
|
crypto_vol_multiplier // Binance 加密货币使用加密货币倍数
|
||||||
|
else if str.contains(sym, "XAUUSD") or str.contains(sym, "XAGUSD")
|
||||||
|
commodity_vol_multiplier // 贵金属使用商品倍数
|
||||||
|
else
|
||||||
|
forex_vol_multiplier // 其他使用外汇倍数
|
||||||
|
|
||||||
|
get_min_volume_ratio() =>
|
||||||
|
sym = ticker.standard(syminfo.tickerid)
|
||||||
|
if str.contains(sym, "BINANCE:")
|
||||||
|
0.4 // 加密货币使用较高的最小比率
|
||||||
|
else if str.contains(sym, "XAUUSD") or str.contains(sym, "XAGUSD")
|
||||||
|
0.35 // 贵金属使用中等比率
|
||||||
|
else
|
||||||
|
0.3 // 外汇使用标准比率
|
||||||
|
|
||||||
// ═════════ 表格文字大小转换 ════════
|
// ═════════ 表格文字大小转换 ════════
|
||||||
get_text_size() =>
|
get_text_size() =>
|
||||||
switch table_text_size
|
switch table_text_size
|
||||||
@@ -2208,4 +2276,8 @@ if barstate.islast
|
|||||||
// - 2级:温和,过滤明显假信号
|
// - 2级:温和,过滤明显假信号
|
||||||
// - 3级:中等,标准过滤强度
|
// - 3级:中等,标准过滤强度
|
||||||
// - 4级:严格,较强过滤
|
// - 4级:严格,较强过滤
|
||||||
// - 5级:最严格,参考SRBR高低成交量阈值
|
// - 5级:最严格,参考SRBR高低成交量阈值
|
||||||
|
// ✓ 多交易所支持系统
|
||||||
|
// - TICKMILL: BTCUSD, XAUUSD, ETHUSD, GBPJPY
|
||||||
|
// - BINANCE: BTCUSDT, ETHUSDT, BNBUSDT, ADAUSDT, SOLUSDT, DOTUSDT, AVAXUSDT, MATICUSDT
|
||||||
|
// - 自动识别交易对类型并应用相应的成交量和距离参数
|
||||||
Reference in New Issue
Block a user