缠论指标公式

查看 51|回复 6
作者:hwx123   
求TBQuant量化缠论指标公式TB语言代码,非常感谢!

公式, 指标

w20w20   

[Perl] 纯文本查看 复制代码//------------------------------------------------------------------------
// 简称: ChanLun
// 名称: 缠论基本结构识别
// 类别: 技术指标
// 类型: 用户应用
//------------------------------------------------------------------------
Params
    Numeric MinPenLength(4);        // 最小笔长度(K线数)
    Numeric MinFenxingDistance(3);  // 分型最小间隔K线数
    Numeric ZhongshuLevel(3);       // 中枢最小重叠次数
Vars
    Bool isTopFenxing(False);       // 顶分型标记
    Bool isBottomFenxing(False);    // 底分型标记
    NumericArray topFenxingPrices;  // 顶分型价格序列
    NumericArray bottomFenxingPrices; // 底分型价格序列
    NumericArray penHighs;          // 笔高点序列
    NumericArray penLows;           // 笔低点序列
Begin
    // ===== 分型识别 =====
    // 顶分型条件:中间K线高点最高且低点最高
    if(High[1] > High[0] && High[1] > High[2] &&
       Low[1] > Low[0] && Low[1] > Low[2] &&
       BarsSinceLastFenxing >= MinFenxingDistance)
    {
        isTopFenxing = True;
        topFenxingPrices.Insert(0, High[1]);
        PlotText("顶", High[1] + 2*MinMove, Red);
    }
   
    // 底分型条件:中间K线低点最低且高点最低
    if(Low[1] = MinFenxingDistance)
    {
        isBottomFenxing = True;
        bottomFenxingPrices.Insert(0, Low[1]);
        PlotText("底", Low[1] - 2*MinMove, Cyan);
    }
   
    // ===== 笔识别 =====
    if(isTopFenxing && !isBottomFenxing)
    {
        // 寻找前一个底分型
        if(bottomFenxingPrices.Count > 0)
        {
            Numeric lastBottom = bottomFenxingPrices[0];
            if(CurrentBar - LastPenBar > MinPenLength &&
               High[1] - lastBottom > 2*MinMove)
            {
                // 绘制笔
                PlotNumeric("UpPen", lastBottom, High[1], 0, Red);
                penHighs.Insert(0, High[1]);
                penLows.Insert(0, lastBottom);
            }
        }
    }
    else if(isBottomFenxing && !isTopFenxing)
    {
        // 寻找前一个顶分型
        if(topFenxingPrices.Count > 0)
        {
            Numeric lastTop = topFenxingPrices[0];
            if(CurrentBar - LastPenBar > MinPenLength &&
               lastTop - Low[1] > 2*MinMove)
            {
                // 绘制笔
                PlotNumeric("DnPen", lastTop, Low[1], 0, Green);
                penHighs.Insert(0, lastTop);
                penLows.Insert(0, Low[1]);
            }
        }
    }
   
    // ===== 中枢识别 =====
    if(penHighs.Count >= ZhongshuLevel*2)
    {
        Numeric maxLow = Highest(penLows, ZhongshuLevel);
        Numeric minHigh = Lowest(penHighs, ZhongshuLevel);
        
        if(maxLow  ZhongshuLevel)
        {
            // 绘制中枢区域
            PlotRectangle("Zhongshu", maxLow, minHigh, DarkGray);
        }
    }
End
//------------------------------------------------------------------------
// 简称: BarsSinceLastFenxing
// 计算上次分型以来的周期数
//------------------------------------------------------------------------
Function Numeric BarsSinceLastFenxing()
Begin
    static Numeric lastFenxingBar = 0;
    if(isTopFenxing || isBottomFenxing)
    {
        lastFenxingBar = CurrentBar;
    }
    return CurrentBar - lastFenxingBar;
End
//------------------------------------------------------------------------
// 简称: BarsSinceLastZhongshu
// 计算上次中枢以来的周期数
//------------------------------------------------------------------------
Function Numeric BarsSinceLastZhongshu()
Begin
    static Numeric lastZhongshuBar = 0;
    if(maxLow
xliuling   

TBQuant (TradeBlazer) 平台上编写 缠论指标公式 需要基于 TB语言 (TradeBlazer Formula Language, TBL) 进行开发。以下是实现常见的 缠论分型、笔、线段、中枢 的核心逻辑示例代码,你可以根据实际需求进行调整和扩展。
1. 缠论分型(顶分型 & 底分型)
// 参数设置
Params
    Numeric Len(5); // 分型检测长度
End
// 变量声明
Vars
    Bool IsTopFractal;  // 顶分型标志
    Bool IsBottomFractal; // 底分型标志
End
// 顶分型:中间 K 线最高价最高,左右两侧低
IsTopFractal = Highest(High, Len) == High[Len-1] &&
               (High[Len-1] > High[Len] && High[Len-1] > High[Len-2]);
// 底分型:中间 K 线最低价最低,左右两侧高
IsBottomFractal = Lowest(Low, Len) == Low[Len-1] &&
                  (Low[Len-1]
2. 缠论笔(基于分型)
Params
    Numeric MinPips(5); // 笔的最小变动单位
End
Vars
    NumericSeries TrendDirection;  // 当前笔的趋势方向 (1=上涨, -1=下跌)
    Numeric LastTop;  // 上一个顶分型
    Numeric LastBottom; // 上一个底分型
    Bool NewUpPen;  // 新上涨笔
    Bool NewDownPen; // 新下跌笔
End
// 初始化
If (CurrentBar == 0) Then
    TrendDirection = 0;
    LastTop = 0;
    LastBottom = 0;
End
// 检测分型是否有效(最低价差 >= MinPips)
Bool ValidTop = (IsTopFractal && (High[Len-1] - LastBottom >= MinPips));
Bool ValidBottom = (IsBottomFractal && (LastTop - Low[Len-1] >= MinPips));
// 笔生成逻辑
If (TrendDirection == 0) Then  // 初始无趋势
    If (ValidBottom) Then
        TrendDirection = 1; // 初始向上笔
        LastBottom = Low[Len-1];
    Else If (ValidTop) Then
        TrendDirection = -1; // 初始向下笔
        LastTop = High[Len-1];
    End
Else
    If (TrendDirection == 1 && ValidTop) Then  // 上升趋势后出现顶分型
        LastTop = High[Len-1];
        NewDownPen = True;
        TrendDirection = -1;
    Else If (TrendDirection == -1 && ValidBottom) Then  // 下降趋势后出现底分型
        LastBottom = Low[Len-1];
        NewUpPen = True;
        TrendDirection = 1;
    End
End
// 绘制笔
If (NewUpPen) Then
    LinePen("UpPen", Low[Len-1], LastBottom, Blue);
    NewUpPen = False;
End
If (NewDownPen) Then
    LinePen("DownPen", High[Len-1], LastTop, Red);
    NewDownPen = False;
End
3. 缠论中枢(基于线段)
Params
    Numeric WaveDegree(3); // 中枢最小波动次数
End
Vars
    NumericSeries WaveHigh;  // 线段高点
    NumericSeries WaveLow;   // 线段低点
    Bool InsideRange;        // 是否在中枢内
End
// 中枢判断(最近 WaveDegree 次线段重叠)
InsideRange = High >= Lowest(WaveHigh, WaveDegree) &&
              Low
4. 完整示例(分型 + 笔 + 中枢)
// TBQuant缠论指标完整实现(分型->笔->中枢)
Params
    Numeric FractalLen(5);   // 分型检测长度
    Numeric MinPipSize(5);   // 笔最小变动
    Numeric WaveDegree(3);   // 中枢检测线段数
End
Vars
    ... (包含之前的变量逻辑)
End
// 分型检测
IsTopFractal = Highest(High, FractalLen) == High[FractalLen-1] &&
              (High[FractalLen-1] > High[FractalLen] && High[FractalLen-1] > High[FractalLen-2]);
IsBottomFractal = Lowest(Low, FractalLen) == Low[FractalLen-1] &&
                 (Low[FractalLen-1]
使用说明
[ol]
  • 复制代码TBQuant 公式编辑器(F7 打开)
  • 根据需要调整参数(如 FractalLen, MinPipSize)
  • 加载到 图表策略 中使用
    [/ol]
    扩展功能
  • 可添加 背驰检测(MACD/成交量配合)
  • 可增加 自动交易信号(基于中枢突破)

    如果有具体需求(如 添加均线过滤 / 优化中枢算法),可以进一步补充说明! 
  • yibeijiu   

    有两个
    1. https://gitcode.com/open-source-toolkit/71e9c
    2. https://gitcode.com/open-source-toolkit/e8a61
    longmen   

    简直太高了
    hwx123
    OP
      


    w20w20 发表于 2025-3-30 17:40
    [mw_shl_code=perl,true]//------------------------------------------------------------------------
    / ...

    很多报错,用不了哦
    hwx123
    OP
      


    xliuling 发表于 2025-3-30 18:11
    [md]在 **TBQuant (TradeBlazer) 平台**上编写 **缠论指标公式** 需要基于 **TB语言 (TradeBlazer Formula  ...

    也是很多报错,运行不了
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部