//------------------------------------------------------------------------
Params
Numeric FastLengthMA(20);// 短期指数平均线参数
//Numeric SlowLengthMA(20);// 长期指数平均线参数
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
Series<Numeric> MACDDiff;
Series<Numeric> AvgMACD;
Series<Numeric> MACDValue;
Series<Numeric> Fast_ma;
Series<Numeric> Slow_ma;
Plot pen1;
Plot pen2;
Events
OnReady()
{
SetBackBarMaxCount(1+Max(FastLength,SlowLength));
Range[0:DataSourceSize() - 1]
{
setPlotOption("MA1", "begin-bar", FastLengthMA);
//setPlotOption("MA2", "begin-bar", SlowLengthMA);
setPlotOption("MACDDiff", "begin-bar", SlowLength);
setPlotOption("MACDDEA", "begin-bar", SlowLength + MACDLength);
setPlotOption("MACD", "begin-bar", SlowLength + MACDLength);
}
pen2.figure(0); //开个副图
}
OnBar(ArrayRef<Integer> indexs)
{
AvgValue1 = AverageFC(Close,FastLengthMA);
// AvgValue2 = AverageFC(Close,SlowLengthMA);
PlotNumeric("MA1",AvgValue1);
// PlotNumeric("MA2",AvgValue2);
{
If(CurrentBar==0)
{Fast_ma=Close;
Slow_ma=Close;
MACDDiff=Fast_ma-Slow_ma;
AvgMACD=MACDDiff;
} Else
{
Fast_ma=Fast_ma[1]+(Close-Fast_ma[1])*2/(FastLength+1);
Slow_ma=Slow_ma[1]+(Close-Slow_ma[1])*2/(SlowLength+1);
MACDDiff=Fast_ma-Slow_ma;
AvgMACD=AvgMACD[1]+(MACDDiff-AvgMACD[1])*2/(MACDLength+1);
AvgMACD=AvgMACD[1]+(Fast_ma-Slow_ma-AvgMACD[1])*2/(MACDLength+1);
}
pen2.line("MACDDiff",date+time,MACDDiff);//画出MACD的两条均线
pen2.Line("macddea",date+time,AvgMACD);
Numeric X;
X=((FastLength+1)*(SlowLength+1)*((AvgMACD[1]*(MACDLength+1)-2*(AvgMACD[1]))/(MACDLength-1)-Fast_ma[1]+Slow_ma[1])/2+(SlowLength+1)*Fast_ma[1]-(FastLength+1)*Slow_ma[1])/(SlowLength-FastLength);
pen1.line("X",X);
MACDValue = MACDDiff - AvgMACD;
pen1.line("X",X);
既然你画的是X,那么就验算X的值
这两个参数你确定对的么?
分开的,一个是用来计算均线的,一个是用来计算MACD的
你是不是想反算macd指标的金叉死叉点?
老师有搞过公式 你可以看看跟你有什么不一样
楼主代码我没看懂
正在学习中
如果是你说的反算
其实换个思路
没必要的
自己弄个序列变量正算非常简单
老刘只是举个栗子
其实方案有正反两个
啊?正反两个是什么意思?
反算的意思是 算当close价格在什么点位的时候,计算出的macd柱==0
直接的思路就是把公式写出来,用代数的方式做
还有其他思路,对吗?
当然
你琢磨一下
你的意思是实时用boll判断macd==0?
那在图表交易中 buy sell 命令 就不能用到固定的价格了哦
好像也可以 ,macd==0的 时候, 把价格取出来
是这个意思吗
第一,你给的代码不全,没办法复现。
第二,你觉得图中白线画的不对是吧?那为什么不自己演算一下呢?线上每一个点的值都是可以显示或者commentary输出的,看看你的计算表达式到底哪一步算错了