求macd 金叉 和死叉 之间的 时间 天数 ,怎么计算 怎么 从macd上显示出来
Numeric i;
i= NthCon( CrossOver(diff,dea),1);
Commentary("金叉:" +Text(i));
这样不显示
显示呀 我试了 没问题呀
能给个 显示的截图吗
有点问题 ,是从金叉到死叉的 时间间隔 刚按个写法 是第二次金叉的时间 当中包含了一个 死叉的时间
眼睛看毛了
你是说 上一个金叉到上一个死叉之间的时间哈?不论哪个在前是吗?
Numeric i;
Numeric ;
i= NthCon( CrossOver(diff,dea),1); //上一个金叉到现在k线数
j= NthCon( CrossUnder(diff,dea),1);//上一个死叉到现在k线数
Numeric k;
k=abs(i-j); //这应该就是你要的,如果你要区分金叉死叉的先后,就if判断一下i和j的大小再算👍
// 增强版:记录所有金叉死叉之间的Bar数目
Params
Numeric FastLength(5);
Numeric SlowLength(20);
Numeric MACDLength(60);
Vars
Series<Numeric> DIF;
Series<Numeric> DEA;
Series<Numeric> MACD;
Series<Numeric> CrossStatus;
Series<Numeric> LastCrossBar;
Series<Numeric> BarsSinceLastCross;
Array<Numeric> CrossBars; // 存储交叉发生的Bar索引
Array<Numeric> CrossTypes; // 存储交叉类型:1-金叉,-1-死叉
Numeric CrossCount; // 交叉计数
Events
OnBar(ArrayRef<Integer> indexs)
{
// 初始化数组
If (CurrentBar == 0)
{
CrossCount = 0;
}
// 计算MACD
DIF = XAverage(Close, FastLength) - XAverage(Close, SlowLength);
DEA = XAverage(DIF, MACDLength);
MACD = DIF + DEA;
// 绘制指标
PlotNumeric("DIF", DIF);
PlotNumeric("DEA", DEA);
PlotNumeric("MACD", MACD);
// 检测交叉
Bool IsGoldenCross = (DIF > DEA && DIF[1] <= DEA[1]);
Bool IsDeadCross = (DIF < DEA && DIF[1] >= DEA[1]);
If (IsGoldenCross)
{
CrossStatus = 1;
LastCrossBar = CurrentBar;
BarsSinceLastCross = 0;
// 记录交叉信息
CrossCount = CrossCount + 1;
CrossBars[CrossCount] = CurrentBar;
CrossTypes[CrossCount] = 1;
Numeric i;
i= NthCon( CrossOver(DIF,DEA),1); //上一个金叉到现在k线数
Commentary("金叉 #" + Text(i) + " 出现在Bar: " + Text(i));
// 计算与上次交叉之间的Bar数
If (CrossCount > 1)
{
Numeric BarsBetween = CurrentBar - CrossBars[CrossCount-1];
Commentary("与上次交叉相隔 " + Text(BarsBetween) + " 个Bar");
}
}
Else If (IsDeadCross)
{
CrossStatus = -1;
LastCrossBar = CurrentBar;
BarsSinceLastCross = 0;
// 记录交叉信息
CrossCount = CrossCount + 1;
CrossBars[CrossCount] = CurrentBar;
CrossTypes[CrossCount] = -1;
Numeric j ;
j= NthCon( CrossUnder(DIF,DEA),1);//上一个死叉到现在k线数
Commentary("死叉 #" + Text(CrossCount) + " 出现在Bar: " + Text(CurrentBar));
// 计算与上次交叉之间的Bar数
If (CrossCount > 1)
{
Numeric BarsBetween = CurrentBar - CrossBars[CrossCount-1];
Commentary("与上次交叉相隔 " + Text(BarsBetween) + " 个Bar");
}
}
Else
{
CrossStatus = 0;
BarsSinceLastCross = CurrentBar - LastCrossBar;
}
Return;
}
全部的代码 显示不出来 commentary的 内容来
j那个 还是用的原来写 也不出 commentary 的显示
写这是啥.....
基础课都没学 别用AI了 全是bug
而且你自个AI比一般的AI更智障 从来没见过MACD = DIF + DEA;
看AI不好使 ,还是来 这里 请教了呢
帮我改下 那个macd 怎么计算 不重要 重要的是 commentary 不显示
大神 !基础课 从哪里学?给个网址 或者 课程学习流程吧