用Print检查
想得到如上图中macd最近三次交叉点的k线位置c, b, a ?自己写了一些代码可运行结果是错的。不知道哪里错了,请指教!谢谢
#include <stdlib.mqh>
#include <WinUser32.mqh>
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
int macd[];
double buffer1[];
double buffer2[];
double MacdCurrent,SignalCurrent,MacdPrevious,SignalPrevious;
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,233);
SetIndexBuffer(0,buffer1);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,234);
SetIndexBuffer(1,buffer2);
return(0);
}
int start()
{
int j=0;
int i=0;
MacdCurrent=0.0;
SignalCurrent=0.0;
MacdPrevious=0.0;
SignalPrevious=0.0;
while (j<3)
{
MacdCurrent=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_MAIN,i);
SignalCurrent=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_SIGNAL,i);
MacdPrevious=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_MAIN,i+1);
SignalPrevious=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_SIGNAL,i+1);
if((MacdCurrent > SignalCurrent &&MacdPrevious<SignalPrevious)
||(MacdCurrent < SignalCurrent &&MacdPrevious>SignalPrevious))
{
macd[j]=i;
j=j+1;
}
i++;
}
Comment(macd[0]," : ",macd[2]," : ",macd[3]);
return (0);
}
最后这个怎么改啦,完整代码贴一下呀
#include <stdlib.mqh>
#include <WinUser32.mqh>
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
int macd[4];////原来没有4这里加上指定原来数组宽度,这是原来码子不正确的主要原因
double buffer1[];
double buffer2[];
double MacdCurrent,SignalCurrent,MacdPrevious,SignalPrevious;
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,233);
SetIndexBuffer(0,buffer1);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,234);
SetIndexBuffer(1,buffer2);
return(0);
}
int start()
{
int j=0;
int i=0;
MacdCurrent=0.0;
SignalCurrent=0.0;
MacdPrevious=0.0;
SignalPrevious=0.0;
while (j<4)
{
MacdCurrent=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_MAIN,i);
SignalCurrent=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_SIGNAL,i);
MacdPrevious=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_MAIN,i+1);
SignalPrevious=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_SIGNAL,i+1);
if((MacdCurrent > SignalCurrent &&MacdPrevious<SignalPrevious)
||(MacdCurrent < SignalCurrent &&MacdPrevious>SignalPrevious))
{
macd[j]=i;
j=j+1;
}
i++;
}
Comment(macd[0]," : ",macd[2]," : ",macd[3]);
return (0);
}
////上面就是问题得到解决的完整代码。。。当然这个思路想再怎么用是你的自己的交易思路问题了
想得到如上图中macd最近三次交叉点的k线位置c, b, a ?自己写了一些代码可运行结果是错的。不知道哪里错了,请指教!谢谢
#include <stdlib.mqh>
#include <WinUser32.mqh>
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
int macd[];
double buffer1[];
double buffer2[];
double MacdCurrent,SignalCurrent,MacdPrevious,SignalPrevious;
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,233);
SetIndexBuffer(0,buffer1);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,234);
SetIndexBuffer(1,buffer2);
return(0);
}
int start()
{
int j=0;
int i=0;
MacdCurrent=0.0;
SignalCurrent=0.0;
MacdPrevious=0.0;
SignalPrevious=0.0;
while (j<3)
{
MacdCurrent=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_MAIN,i);
SignalCurrent=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_SIGNAL,i);
MacdPrevious=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_MAIN,i+1);
SignalPrevious=iMACD(NULL,0,8,21,5,PRICE_CLOSE,MODE_SIGNAL,i+1);
if((MacdCurrent > SignalCurrent &&MacdPrevious<SignalPrevious)
||(MacdCurrent < SignalCurrent &&MacdPrevious>SignalPrevious))
{
macd[j]=i;
j=j+1;
}
i++;
}
Comment(macd[0]," : ",macd[2]," : ",macd[3]);
return (0);
}