diff --git a/3in11.pine b/3in11.pine index 82b69ae..66548fd 100644 --- a/3in11.pine +++ b/3in11.pine @@ -596,12 +596,14 @@ osc_5m = rsi_neutral_5m or price_in_channel_5m or ma200_near_5m rsi_overbought_5m = mtf_5m and not na(rsi_5m) ? (rsi_5m > long_S) : false price_above_r1_5m = mtf_5m and not na(close_5m) and not na(upband1_5m) ? (close_5m > upband1_5m) : false +price_above_mean_5m = mtf_5m and not na(close_5m) and not na(meanline_5m) ? (close_5m >= meanline_5m or math.abs(close_5m - meanline_5m) <= get_r1s1_distance_threshold()) : false ma200_far_5m = mtf_5m and not na(distance_5m) ? (distance_5m > distance_threshold_1m) : false ma50_above_mean_5m = mtf_5m and not na(ma50_5m) and not na(meanline_5m) ? (ma50_5m > meanline_5m) : false long_5m = rsi_overbought_5m and price_above_r1_5m and ma200_far_5m and ma50_above_mean_5m rsi_oversold_5m = mtf_5m and not na(rsi_5m) ? (rsi_5m < short_S) : false price_below_s1_5m = mtf_5m and not na(close_5m) and not na(loband1_5m) ? (close_5m < loband1_5m) : false +price_below_mean_5m = mtf_5m and not na(close_5m) and not na(meanline_5m) ? (close_5m <= meanline_5m or math.abs(close_5m - meanline_5m) <= get_r1s1_distance_threshold()) : false 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 @@ -909,13 +911,27 @@ check_long_conditions() => if not enable_advanced_alerts false else - // 条件2(时间窗口,启动前后5分钟),1分钟时间周期下 + // 条件2(1分钟时间框架确认,5分钟时间窗口):快速技术指标验证 + // - 时间窗口:启动信号后5分钟内必须满足所有子条件 + // - RSI超买确认:1分钟RSI > 超买阈值,确认短期多头动能 + // - 价格突破确认:1分钟价格突破R1阻力线,确认突破有效性 + // - MA200距离确认:1分钟价格距离MA200足够远,避免长期均线阻力 + // - MA50趋势确认:1分钟MA50在MEAN线上方,确认短期趋势一致性 condition2_1m = in_time_window(long_trigger_time, time_window_5min) and rsi_overbought_1m and price_above_r1_1m and ma200_far_1m and ma50_above_mean_1m - // 条件3(时间窗口,启动前后15分钟),5分钟时间周期下(MA50关系使用1分钟数据) - condition3_5m = in_time_window(long_trigger_time, time_window_15min) and rsi_overbought_5m and price_above_r1_5m and ma200_far_5m and ma50_above_mean_1m + // 条件3(5分钟时间框架确认,15分钟时间窗口):多重技术指标综合验证 + // - 时间窗口:启动信号后15分钟内必须满足所有子条件 + // - RSI超买确认:5分钟RSI > 超买阈值,确认多头动能充足 + // - 价格位置确认:5分钟价格在MEAN线上方或附近,确认趋势方向 + // - MA200距离确认:5分钟价格距离MA200足够远,避免长期均线阻力 + // - MA50趋势确认:1分钟MA50在MEAN线上方,确认短期趋势向上 + condition3_5m = in_time_window(long_trigger_time, time_window_15min) and rsi_overbought_5m and price_above_mean_5m and ma200_far_5m and ma50_above_mean_1m - // 条件4(时间窗口,启动前后10分钟),15分钟时间周期下:S1和价格的距离> 阈值 + // 条件4(15分钟时间框架确认,10分钟时间窗口):长期趋势距离验证 + // - 时间窗口:启动信号后10分钟内必须满足距离条件 + // - 距离确认:15分钟价格与S1支撑线距离 > 品种特定阈值 + // - 目的:确保价格远离重要支撑位,避免假突破风险 + // - 意义:长期时间框架的距离验证,提高信号可靠性 condition4_15m = in_time_window(long_trigger_time, time_window_10min) and distance_to_s1_15m > get_r1s1_distance_threshold() // 根据配置决定是否需要所有条件都满足 @@ -931,13 +947,27 @@ check_short_conditions() => if not enable_advanced_alerts false else - // 条件2(时间窗口,启动前后5分钟),1分钟时间周期下 + // 条件2(1分钟时间框架确认,5分钟时间窗口):快速技术指标验证 + // - 时间窗口:启动信号后5分钟内必须满足所有子条件 + // - RSI超卖确认:1分钟RSI < 超卖阈值,确认短期空头动能 + // - 价格突破确认:1分钟价格跌破S1支撑线,确认突破有效性 + // - MA200距离确认:1分钟价格距离MA200足够远,避免长期均线支撑 + // - MA50趋势确认:1分钟MA50在MEAN线下方,确认短期趋势一致性 condition2_1m = in_time_window(short_trigger_time, time_window_5min) and rsi_oversold_1m and price_below_s1_1m and ma200_far_1m and ma50_below_mean_1m - // 条件3(时间窗口,启动前后15分钟),5分钟时间周期下(MA50关系使用1分钟数据) - condition3_5m = in_time_window(short_trigger_time, time_window_15min) and rsi_oversold_5m and price_below_s1_5m and ma200_far_5m and ma50_below_mean_1m + // 条件3(5分钟时间框架确认,15分钟时间窗口):多重技术指标综合验证 + // - 时间窗口:启动信号后15分钟内必须满足所有子条件 + // - RSI超卖确认:5分钟RSI < 超卖阈值,确认空头动能充足 + // - 价格位置确认:5分钟价格在MEAN线下方或附近,确认趋势方向 + // - MA200距离确认:5分钟价格距离MA200足够远,避免长期均线支撑 + // - MA50趋势确认:1分钟MA50在MEAN线下方,确认短期趋势向下 + condition3_5m = in_time_window(short_trigger_time, time_window_15min) and rsi_oversold_5m and price_below_mean_5m and ma200_far_5m and ma50_below_mean_1m - // 条件4(时间窗口,启动前后10分钟),15分钟时间周期下:R1和价格的距离> 阈值 + // 条件4(15分钟时间框架确认,10分钟时间窗口):长期趋势距离验证 + // - 时间窗口:启动信号后10分钟内必须满足距离条件 + // - 距离确认:15分钟价格与R1阻力线距离 > 品种特定阈值 + // - 目的:确保价格远离重要阻力位,避免假突破风险 + // - 意义:长期时间框架的距离验证,提高信号可靠性 condition4_15m = in_time_window(short_trigger_time, time_window_10min) and distance_to_r1_15m > get_r1s1_distance_threshold() // 根据配置决定是否需要所有条件都满足 @@ -1136,11 +1166,11 @@ if show_info_table and barstate.islast // 高级警报条件状态计算 condition2_1m_long = not na(long_trigger_time) and in_time_window(long_trigger_time, time_window_5min) and rsi_overbought_1m and price_above_r1_1m and ma200_far_1m and ma50_above_mean_1m - condition3_5m_long = not na(long_trigger_time) and in_time_window(long_trigger_time, time_window_15min) and rsi_overbought_5m and price_above_r1_5m and ma200_far_5m and ma50_above_mean_1m + condition3_5m_long = not na(long_trigger_time) and in_time_window(long_trigger_time, time_window_15min) and rsi_overbought_5m and price_above_mean_5m and ma200_far_5m and ma50_above_mean_1m condition4_15m_long = not na(long_trigger_time) and in_time_window(long_trigger_time, time_window_10min) and distance_to_s1_15m > get_r1s1_distance_threshold() condition2_1m_short = not na(short_trigger_time) and in_time_window(short_trigger_time, time_window_5min) and rsi_oversold_1m and price_below_s1_1m and ma200_far_1m and ma50_below_mean_1m - condition3_5m_short = not na(short_trigger_time) and in_time_window(short_trigger_time, time_window_15min) and rsi_oversold_5m and price_below_s1_5m and ma200_far_5m and ma50_below_mean_1m + condition3_5m_short = not na(short_trigger_time) and in_time_window(short_trigger_time, time_window_15min) and rsi_oversold_5m and price_below_mean_5m and ma200_far_5m and ma50_below_mean_1m condition4_15m_short = not na(short_trigger_time) and in_time_window(short_trigger_time, time_window_10min) and distance_to_r1_15m > get_r1s1_distance_threshold() // 高级警报颜色计算 @@ -1558,11 +1588,11 @@ if false // 禁用独立的高级警报表格 // 条件状态检查 condition2_1m_long = not na(long_trigger_time) and in_time_window(long_trigger_time, time_window_5min) and rsi_overbought_1m and price_above_r1_1m and ma200_far_1m and ma50_above_mean_1m - condition3_5m_long = not na(long_trigger_time) and in_time_window(long_trigger_time, time_window_15min) and rsi_overbought_5m and price_above_r1_5m and ma200_far_5m and ma50_above_mean_1m + condition3_5m_long = not na(long_trigger_time) and in_time_window(long_trigger_time, time_window_15min) and rsi_overbought_5m and price_above_mean_5m and ma200_far_5m and ma50_above_mean_1m condition4_15m_long = not na(long_trigger_time) and in_time_window(long_trigger_time, time_window_10min) and distance_to_s1_15m > get_r1s1_distance_threshold() condition2_1m_short = not na(short_trigger_time) and in_time_window(short_trigger_time, time_window_5min) and rsi_oversold_1m and price_below_s1_1m and ma200_far_1m and ma50_below_mean_1m - condition3_5m_short = not na(short_trigger_time) and in_time_window(short_trigger_time, time_window_15min) and rsi_oversold_5m and price_below_s1_5m and ma200_far_5m and ma50_below_mean_1m + condition3_5m_short = not na(short_trigger_time) and in_time_window(short_trigger_time, time_window_15min) and rsi_oversold_5m and price_below_mean_5m and ma200_far_5m and ma50_below_mean_1m condition4_15m_short = not na(short_trigger_time) and in_time_window(short_trigger_time, time_window_10min) and distance_to_r1_15m > get_r1s1_distance_threshold() // 条件状态显示