实用脚本统计倒三角回敲次数多少?

wen 实用脚本 2

倒三角回敲”的统计脚本,我需要先确认一下您所指的具体场景,因为在不同的领域(如体育战术、游戏操作、金融交易或打谱软件),“倒三角回敲”含义完全不同。

实用脚本统计倒三角回敲次数多少?

为了给您最精准的脚本,请您先确认是以下哪种情况:

乒乓球/网球(体育战术) 指对方回球形成“倒三角”落点(通常指对方回球到您正手位小三角或反手位小三角),然后您进行“回敲”(即主动发力拍击)的次数统计。

台球/斯诺克(库边反弹) 指母球吃一库或两库后,通过“倒三角”路径回敲目标球的次数。

金融交易(K线形态) 指行情走出“倒三角形”收敛形态后,价格向下或向上突破(回敲)的次数。

围棋/象棋(AI复盘) 指某特定棋形(倒三角形状)落子后,对方“回敲”(应对)的频次。


如果您是指“金融交易K线形态”(最常用),请看以下实用脚本(Python):

这个脚本用于统计在“倒三角收敛形态”形成期间,价格触及上下两条趋势线的回敲次数(即假突破或试探次数)。

import pandas as pd
import numpy as np
def count_triangle_whipsaw(df, lookback=30, touch_tolerance=0.002):
    """
    统计倒三角(收敛)形态中的回敲次数。
    参数:
    df: 包含 'high', 'low', 'close' 的DataFrame(按时间升序)
    lookback: 回看周期(用于确定三角形态范围)
    touch_tolerance: 价格触及趋势线的容差(如0.002代表0.2%)
    返回:
    whipsaw_count: 回敲次数
    breakdown_count: 向下破位次数
    breakdown_flag: 是否已破位(True表示三角已失效)
    """
    if len(df) < lookback:
        return 0, 0, False
    # 取最近lookback根K线
    window = df.iloc[-lookback:].reset_index(drop=True)
    highs = window['high'].values
    lows = window['low'].values
    closes = window['close'].values
    n = len(window)
    # 1. 识别倒三角(上趋势线下降,下趋势线上升)
    # 上趋势线:连接第一个高点和最后一个高点(或回归斜率)
    # 简单方法:线性回归斜率
    x = np.arange(n)
    # 上轨斜率(应<0,即下降)
    slope_upper = np.polyfit(x, highs, 1)[0]
    # 下轨斜率(应>0,即上升)
    slope_lower = np.polyfit(x, lows, 1)[0]
    # 判断是否为倒三角(上轨向下,下轨向上)
    if slope_upper >= 0 or slope_lower <= 0:
        # 不是倒三角,直接返回
        return 0, 0, False
    # 2. 计算上下轨在每根K线的理论值
    upper_line = np.polyval(np.polyfit(x, highs, 1), x)
    lower_line = np.polyval(np.polyfit(x, lows, 1), x)
    # 3. 统计回敲次数
    whipsaw_count = 0      # 触及上轨后又回到内部(向下回敲),或触及下轨后又回到内部(向上回敲)
    breakdown_count = 0    # 向下突破下轨(收盘价跌破)
    # 从第二根K线开始判断(第一根是起点)
    for i in range(1, n-1):  # 不判断最后一根,因为需要看后续
        # 判断是否突破下轨(破位)
        if closes[i] < lower_line[i] * (1 - touch_tolerance):
            breakdown_count += 1
            # 出现破位,三角形态终结
            if breakdown_count == 1:
                return whipsaw_count, breakdown_count, True
        # 判断是否触及上轨(向上试探)
        touched_upper = highs[i] >= upper_line[i] * (1 - touch_tolerance)
        # 判断是否触及下轨(向下试探)
        touched_lower = lows[i] <= lower_line[i] * (1 + touch_tolerance)
        # 如果是向上触及上轨,且之前没有连续多次触及,且之后价格回落(没收在上轨上方),记一次向上回敲
        if touched_upper:
            # 简化:只要触及且没有突破前高,就算一次向上回敲
            whipsaw_count += 1
        # 如果是向下触及下轨,且之后价格反弹(没收在下轨下方),记一次向下回敲
        if touched_lower and not (closes[i] < lower_line[i] * (1 - touch_tolerance)):
            whipsaw_count += 1
    return whipsaw_count, breakdown_count, False
# ========== 使用示例 ==========
if __name__ == "__main__":
    # 模拟数据(实际使用时替换为您的行情数据)
    # 这里生成一个典型的倒三角形态
    np.random.seed(42)
    n = 30
    # 制造收敛:高点逐渐降低,低点逐渐抬高
    highs = np.linspace(105, 100, n) + np.random.normal(0, 0.3, n)
    lows = np.linspace(95, 99, n) + np.random.normal(0, 0.3, n)
    closes = (highs + lows) / 2 + np.random.normal(0, 0.5, n)
    df = pd.DataFrame({
        'high': highs,
        'low': lows,
        'close': closes
    })
    whipsaw, breakdown, ended = count_triangle_whipsaw(df, lookback=n)
    print(f"倒三角形态统计结果:")
    print(f"回敲次数(上下轨触碰且收复): {whipsaw} 次")
    print(f"向下破位次数: {breakdown} 次")
    print(f"是否已破位: {'是' if ended else '否'}")
    # 更进一步:统计最后一次回敲后到破位的时间间隔
    # 这个需要根据您的需求继续扩展

如果您是指“乒乓球/网球战术统计”(视频分析),用这个简化版:

假设您有一份记录每次回球落点的表格(列:击球方、落点区域),统计“倒三角”落点后我方主动发力(回敲)的次数:

import pandas as pd
def count_backhand_triangle_attack(df):
    """
    df: 包含 columns=['击球方', '落点区域', '是否主动发力']
    落点区域: 1-反手小三角, 2-反手底线, 3-中路, 4-正手小三角, 5-正手底线
    """
    # 倒三角落点:反手小三角(1) 或 正手小三角(4)
    triangle_zones = [1, 4]
    # 我方(假设我方为A,对方为B)
    # 对方回球到小三角,我方下一拍是否主动发力
    count = 0
    for i in range(len(df)-1):
        current_row = df.iloc[i]
        next_row = df.iloc[i+1]
        # 对方(B)回球到倒三角区域
        if current_row['击球方'] == 'B' and current_row['落点区域'] in triangle_zones:
            # 我方(A)下一拍是否主动发力(回敲)
            if next_row['击球方'] == 'A' and next_row['是否主动发力'] == True:
                count += 1
    return count

请告诉我您的具体场景(体育/游戏/金融/棋类),以及您手中数据的形式(是K线数据、比赛视频标记、还是游戏日志),我可以立刻为您量身定制最精准的统计脚本,回复个关键词或描述下背景即可。

抱歉,评论功能暂时关闭!