diff --git a/conbinined2.pine b/conbinined2.pine index c4ac4be..8cba1d3 100644 --- a/conbinined2.pine +++ b/conbinined2.pine @@ -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') 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_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') @@ -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') 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线标记配置 ════════ signalSet = input(false, '═════════ Signal Marks Configuration ════════') 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') 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 ════════') show_mean_label = input.bool(true, title='显示MEAN价格标签', group='Labels') @@ -163,14 +188,18 @@ get_volume_filter() => vol_range = vol_hi - vol_lo vol_mid = (vol_hi + vol_lo) / 2 + // 获取交易对特定的成交量参数 + symbol_vol_multiplier = get_volume_multiplier() + symbol_min_vol_ratio = get_min_volume_ratio() + // 根据1-5级过滤等级调整阈值(参考SRBR的分层逻辑) threshold_multiplier = switch volume_filter_level - 1 => vol_multiplier * 0.6 // 1级:最温和,只过滤极明显的假信号 - 2 => vol_multiplier * 0.8 // 2级:温和,过滤明显假信号 - 3 => vol_multiplier * 1.0 // 3级:中等,标准过滤 - 4 => vol_multiplier * 1.3 // 4级:严格,较强过滤 - 5 => vol_multiplier * 1.6 // 5级:最严格,最强过滤 - => vol_multiplier + 1 => symbol_vol_multiplier * 0.6 // 1级:最温和,只过滤极明显的假信号 + 2 => symbol_vol_multiplier * 0.8 // 2级:温和,过滤明显假信号 + 3 => symbol_vol_multiplier * 1.0 // 3级:中等,标准过滤 + 4 => symbol_vol_multiplier * 1.3 // 4级:严格,较强过滤 + 5 => symbol_vol_multiplier * 1.6 // 5级:最严格,最强过滤 + => symbol_vol_multiplier vol_threshold = vol_avg * threshold_multiplier @@ -180,7 +209,7 @@ get_volume_filter() => if volume_filter_level == 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 short_volume_ok := Vol < 0 and vol_abs > min_volume_threshold else if volume_filter_level == 2 @@ -270,26 +299,65 @@ volume_trend_confirmation(signal_type) => else volume_strength and (vol_adjusted > vol_hi * 0.7 or vol_adjusted < vol_lo * 1.3) -// ═════════ 距离阈值切换(参考原MA200代码) ════════ +// ═════════ 距离阈值切换(参考原MA200代码,新增Binance支持) ════════ get_distance_threshold() => sym = ticker.standard(syminfo.tickerid) switch sym + // TICKMILL 交易对 'TICKMILL:BTCUSD' => btc_dist 'TICKMILL:XAUUSD' => xau_dist 'TICKMILL:ETHUSD' => eth_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 -// ═════════ R1/S1距离阈值切换 ════════ +// ═════════ R1/S1距离阈值切换(新增Binance支持) ════════ get_r1s1_distance_threshold() => sym = ticker.standard(syminfo.tickerid) switch sym + // TICKMILL 交易对 'TICKMILL:BTCUSD' => btc_r1s1_dist 'TICKMILL:XAUUSD' => xau_r1s1_dist 'TICKMILL:ETHUSD' => eth_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 +// ═════════ 交易对特定成交量参数获取函数 ════════ +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() => switch table_text_size @@ -2208,4 +2276,8 @@ if barstate.islast // - 2级:温和,过滤明显假信号 // - 3级:中等,标准过滤强度 // - 4级:严格,较强过滤 -// - 5级:最严格,参考SRBR高低成交量阈值 \ No newline at end of file +// - 5级:最严格,参考SRBR高低成交量阈值 +// ✓ 多交易所支持系统 +// - TICKMILL: BTCUSD, XAUUSD, ETHUSD, GBPJPY +// - BINANCE: BTCUSDT, ETHUSDT, BNBUSDT, ADAUSDT, SOLUSDT, DOTUSDT, AVAXUSDT, MATICUSDT +// - 自动识别交易对类型并应用相应的成交量和距离参数 \ No newline at end of file