我想请些帮助:我想将规则集成到我的EA中,但是我无法正确地创建阵列。规则将是“如果较高TF上RSI的SMA高于/低于blabla。 ..”
这是我的代码:
double MA;
double RSIBuf[];
double MaBuf[];
ArrayResize(RSIBuf,0);
int counted_bars=IndicatorCounted();
int limit = Bars-counted_bars-1;
for(int i=limit; i>=0; i--)
{
RSIBuf[i] = (iRSI(NULL,higherTF,RSIPeriod,0,i));
MaBuf[i] = iMAOnArray(RSIBuf,higherTF,RSI_SMA,0,0,i);
}
MA = MaBuf[0];
...
direction Trend=NEUTRAL;
if(MA>RSI_Up ) Trend=UP;
MT4在RSIBuf []行上表示其错误
我在哪里弄错了?谢谢你的帮助。
wicha
答案 0 :(得分:0)
您说的是EA,但您使用的是指标代码。
在指标中,您希望将缓冲区声明为缓冲区:
IndicatorBuffers(2); //Allocate memory for buffers
double RSIBuf[]; //indicator buffers
double MaBuf[];
// Bind the array and allocated memory to an actual double-array dynamic buffer
SetIndexBuffer(0, RSIBuf);
SetIndexBuffer(1, MaBuf);
int counted_bars=IndicatorCounted();
int limit = Bars-counted_bars-1;
for(int i=limit; i>=0; i--)
{
RSIBuf[i] = iRSI(NULL,higherTF,RSIPeriod,0,i);
MaBuf[i] = iMAOnArray(RSIBuf,higherTF,RSI_SMA,0,0,i);
}
MA = MaBuf[0];
如果它在EA中,则必须提前分配足够的内存,如下所示:
int maxBars = TerminalInfoInteger(TERMINAL_MAXBARS);
double RSIBuf[maxBars];
double MaBuf[maxBar];
然后您照常进行。