请教老师,我写一个MACD的背离买入法,为什么软件一直识别不出

// 定义参数

Params

   Numeric FastLength(12);    // 快速EMA周期

   Numeric SlowLength(26);    // 慢速EMA周期

   Numeric SignalLength(9);   // 信号线周期

   Numeric BuyLots(1);        // 买入手数

   Numeric SellLots(1);       // 卖出手数

   Numeric StopLossPercent(2); // 止损百分比

End


// 定义变量

Vars

   NumericSeries MACDValue;   // MACD值

   NumericSeries SignalLine;  // 信号线

   NumericSeries MACDDiff;    // MACD与信号线的差值

   NumericSeries PriceLowest; // 最低价

   NumericSeries PriceHighest;// 最高价

   NumericSeries MACDLowest;  // MACD最低值

   NumericSeries MACDHighest; // MACD最高值

   Numeric DivergenceCountBuy(0); // 底背离计数器(用于买入)

   Numeric DivergenceCountSell(0); // 顶背离计数器(用于卖出)

   Bool BuyCondition;         // 买入条件

   Bool SellCondition;        // 卖出条件

   Numeric StopLossPrice;     // 止损价格

End


// 计算MACD和信号线

MACDValue = MACD(Close, FastLength, SlowLength);

SignalLine = EMA(MACDValue, SignalLength);

MACDDiff = MACDValue - SignalLine;


// 计算最低价、最高价和MACD最低值、最高值

PriceLowest = Lowest(Close, SlowLength);

PriceHighest = Highest(Close, SlowLength);

MACDLowest = Lowest(MACDValue, SlowLength);

MACDHighest = Highest(MACDValue, SlowLength);


// 判断MACD底背离条件(买入条件)

BuyCondition = Close < PriceLowest[1] AND MACDValue > MACDLowest[1];


// 判断MACD顶背离条件(卖出条件)

SellCondition = Close > PriceHighest[1] AND MACDValue < MACDHighest[1];


// 底背离计数器(用于买入)

If (BuyCondition) Then

   DivergenceCountBuy = DivergenceCountBuy + 1;


// 顶背离计数器(用于卖出)

If (SellCondition) Then

   DivergenceCountSell = DivergenceCountSell + 1;


// 在第二次底背离时执行买入操作

If (DivergenceCountBuy == 2 AND MarketPosition <> 1) Then

Begin

   Buy(BuyLots, Open);

   StopLossPrice = EntryPrice * (1 - StopLossPercent / 100); // 设置买入后的止损价格

   DivergenceCountBuy = 0; // 重置计数器

End


// 在第一次顶背离时执行平多操作

If (DivergenceCountSell == 1 AND MarketPosition == 1) Then

Begin

   Sell(BuyLots, Open);

   DivergenceCountSell = 0; // 重置计数器

End


// 在第二次顶背离时执行卖出操作

If (DivergenceCountSell == 2 AND MarketPosition <> -1) Then

Begin

   SellShort(SellLots, Open);

   StopLossPrice = EntryPrice * (1 + StopLossPercent / 100); // 设置卖出后的止损价格

   DivergenceCountSell = 0; // 重置计数器

End


// 在第一次底背离时执行平空操作

If (DivergenceCountBuy == 1 AND MarketPosition == -1) Then

Begin

   BuyToCover(SellLots, Open);

   DivergenceCountBuy = 0; // 重置计数器

End


请教识别k线(锤子线)的代码怎么写,为什么语法没有影线函数
请教识别k线(锤子线)的代码怎么写,为什么语法没有影线函数
跪求分时图中MACD双底背离的代码,多谢!
利用MACD顶底背离结合反向区间突破抓住反转点
请教macd背离里面一些语句的理解
请教macd背离里面一些语句的理解
顶背离
能不能助我写一个简单的代码?关于macd的
【智大领峰-K线图-指标】手动MACD背离工具
macd背离指标 为何主图中 这个线条重叠了?

tb没有这种语法。

一般来说,谁写的代码,就问谁。

ai写的,那你应该问ai这写的什么东西,为什么不能用。

社区回答问题主要是回答学习过程中遇到不懂的地方。

像这种完全不知所谓的问题全是瞎写的没法回答啊。

Params

  Numeric FastLength(12);    // 快速EMA周期

  Numeric SlowLength(26);    // 慢速EMA周期

  Numeric SignalLength(9);   // 信号线周期

  Numeric BuyLots(1);        // 买入手数

  Numeric SellLots(1);       // 卖出手数

  Numeric StopLossPercent(2); // 止损百分比



// 定义变量

Vars

  NumericSeries MACDValue;   // MACD值

  NumericSeries SignalLine;  // 信号线

  NumericSeries MACDDiff;    // MACD与信号线的差值

  NumericSeries PriceLowest; // 最低价

  NumericSeries PriceHighest;// 最高价

  NumericSeries MACDLowest;  // MACD最低值

  NumericSeries MACDHighest; // MACD最高值

  Numeric DivergenceCountBuy(0); // 底背离计数器(用于买入)

  Numeric DivergenceCountSell(0); // 顶背离计数器(用于卖出)

  Bool BuyCondition;         // 买入条件

  Bool SellCondition;        // 卖出条件

  Numeric StopLossPrice;     // 止损价格


Events

   OnBar(ArrayRef<Integer> indexs)

{

// 计算MACD和信号线

MACDValue = MACD(Close, FastLength, SlowLength);

SignalLine = EMA(MACDValue, SignalLength);

MACDDiff = MACDValue - SignalLine;


// 计算最低价、最高价和MACD最低值、最高值

PriceLowest = Lowest(Close, SlowLength);

PriceHighest = Highest(Close, SlowLength);

MACDLowest = Lowest(MACDValue, SlowLength);

MACDHighest = Highest(MACDValue, SlowLength);


// 判断MACD底背离条件(买入条件)

BuyCondition = Close < PriceLowest[1] AND MACDValue > MACDLowest[1];


// 判断MACD顶背离条件(卖出条件)

SellCondition = Close > PriceHighest[1] AND MACDValue < MACDHighest[1];


// 底背离计数器(用于买入)

If (BuyCondition)

{

  DivergenceCountBuy = DivergenceCountBuy + 1;

}

// 顶背离计数器(用于卖出)

If (SellCondition)

{

  DivergenceCountSell = DivergenceCountSell + 1;

}

// 在第二次底背离时执行买入操作

If (DivergenceCountBuy == 2 AND MarketPosition <> 1)

{

  Buy(BuyLots, Open);

  StopLossPrice = EntryPrice * (1 - StopLossPercent / 100); // 设置买入后的止损价格

  DivergenceCountBuy = 0; // 重置计数器

}


// 在第一次顶背离时执行平多操作

If (DivergenceCountSell == 1 AND MarketPosition == 1)

{

  Sell(BuyLots, Open);

  DivergenceCountSell = 0; // 重置计数器

}


// 在第二次顶背离时执行卖出操作

If (DivergenceCountSell == 2 AND MarketPosition <> -1)

{

  SellShort(SellLots, Open);

  StopLossPrice = EntryPrice * (1 + StopLossPercent / 100); // 设置卖出后的止损价格

  DivergenceCountSell = 0; // 重置计数器

}


// 在第一次底背离时执行平空操作

If (DivergenceCountBuy == 1 AND MarketPosition == -1)

{

  BuyToCover(SellLots, Open);

  DivergenceCountBuy = 0; // 重置计数器

}

这样修改应该能识别  如果还是无法识别  NumericSeries  就用TBquant升级代码

看样子是AI写的代码

我也用ai写,解决方法是代码里不要用begin  End   用Events

   OnBar(ArrayRef<Integer> indexs)代替 。但是TB平台很变态,信号闪烁问题超多,影响心态

怎么最近个把月全是这类代码

洋洋洒洒一大堆甩脸上

逻辑上没大问题

但是又不符合tbq基本机制


是被坑买来的?

大概率是deepseek给的

begin end一大堆 就是DS的