[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 309

 

请帮助我们!

只显示了两行MAH,尽管所有四行的代码都是相等的。问题出在哪里?

#属性 indicator_separate_window// 指标在一个单独的窗口中绘制。
#property indicator_buffers 4 // 缓冲器的数量
#property indicator_color1 Blue // 第一行的颜色。
#property indicator_color2 Red // 第二行的颜色。
#property indicator_color3 Olive
#property indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; //数组声明(用于指标缓冲区)。
//--------------------------------------------------------------------
int init() // 特殊功能 init()
{
SetIndexBuffer(0,Buf_MA40); // 将一个数组分配给缓冲区。
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//线条风格
SetIndexBuffer(1,Buf_MA20); // 将一个数组分配给缓冲区。
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//线条风格
SetIndexBuffer(3,Buf_ROC_MA40); // 将一个数组分配给缓冲区。
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);//线条风格
SetIndexBuffer(4,Buf_ROC_MA40); // 将一个数组分配给缓冲区。
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,2);//线条样式
return; // 退出特殊的init()函数
}
//--------------------------------------------------------------------
int start() // 特殊函数start()
{
int i, // 条形索引
历史=3000。
counted_bars; // 计算的条数
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // 计算的条数
i=Bars;//Counted_bars-1; //第一个不被计算的索引。
while(i>=0) //在未计算的条形图中循环。
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i)。
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20) 。
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i)。
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40) 。
Alert("ma20=",ma20, " ma20_s=",ma20_s, " ma40_s=",ma40_s, " ma40=",ma40) 。
MA40_s[i]=MA40_s。
MA40[i]=ma40。
MA20[i]=MA20。
MA20_s[i]=MA20_s。
Buf_MA40[i]=ma40。
Buf_MA20[i]=ma20。
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
//计算下一个条形指数
}
//--------------------------------------------------------------------
return; // 退出特殊函数start()
}

 

1.请推荐一个调试器(最好是分步调试,这样你可以看到变量的中间值)。

2.如何显示调试数据,在哪里显示(在哪个窗口),因为使用警报很不方便。

3) 我怎样才能更新MQL版本?

 

请指教!

我怎样才能使我的专家顾问只在欧洲时段进行交易?

 
VNG писал(а)>>

请帮助我们!

只有两行MAshek被输出,尽管所有四行的代码都是相等的。问题是什么?

int init() // Специальная функция init()
{
SetIndexBuffer(0, Buf_MA40); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(1, Buf_MA20); // Назначение массива буферу
SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(2, Buf_ROC_MA40); // Назначение массива буферу
SetIndexStyle (2,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(3, Buf_ROC_MA40); // Назначение массива буферу
SetIndexStyle (3,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
return; // Выход из спец. ф-ии init()
}

我发现了一个错误。缓冲区1之后,立即进入缓冲区3。缓冲区2被跳过。

你只是不应该在一个窗口中输出混杂物和差异。它们有超过一个数量级的差异。

 
KoDi писал(а)>>

请指教!

我如何让我的EA只在欧洲时段交易?

只要把开始放在模块的开头

如果(Hour()<7 || Hour()>15)返回(0)。

 

请再看一下代码。 我已经删除了MAs,因为新收到的值有一个完全不同的刻度。

仍然没有任何显示。

#属性 indicator_separate_window// 指标在一个单独的窗口中绘制。
#property indicator_buffers 2 // 缓冲器的数量
#property indicator_color1 Blue // 第一行的颜色。
#property indicator_color2 Red //第二行的颜色。
//#property indicator_color3 Olive
//#property indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // 声明数组(用于指标缓冲区)。
//--------------------------------------------------------------------
int init() // 特殊功能 init()
{
//SetIndexBuffer(0,Buf_MA40); //分配一个数组到缓冲区。
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//线条风格
//SetIndexBuffer(1,Buf_MA20); //将数组分配到缓冲区。
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//线条风格
SetIndexBuffer(0,Buf_ROC_MA40); // 将一个数组分配给缓冲区。
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//线条风格
SetIndexBuffer(1,Buf_ROC_MA20); // 将一个数组分配给缓冲区。
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//线条风格
return; // 退出特殊的init()函数
}
//--------------------------------------------------------------------
int start() // 特殊函数start()
{
int i, // 条形索引
历史=3000。
counted_bars; // 计算的条数
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // 计算的条数
i=Bars;//Counted_bars-1; //第一个不被计算的索引。
while(i>=0) //在未计算的条形图中循环。
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i)。
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20) 。
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i)。
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40) 。
MA40_s[i]=MA40_s。
MA40[i]=ma40。
MA20[i]=MA20。
MA20_s[i]=MA20_s。
Buf_MA40[i]=ma40。
Buf_MA20[i]=ma20。
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
//计算下一个条形指数
}
//--------------------------------------------------------------------
return; // 退出特殊函数start()
}

 
VNG писал(а)>>

请再看一下代码。 我已经删除了MAs,因为新收到的值有一个完全不同的刻度。

仍然没有任何显示。

#属性 indicator_separate_window // 指标在一个单独的窗口中绘制。
#property indicator_buffers 2 // 缓冲器的数量
#property indicator_color1 Blue // 第一行的颜色。
#property indicator_color2 Red //第二行的颜色。
//#property indicator_color3 Olive
//#property indicator_color4 Teal


double Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // 声明数组(用于指标缓冲区)。
//--------------------------------------------------------------------
int init() // 特殊功能 init()
{
//SetIndexBuffer(0,Buf_MA40); //分配一个数组到缓冲区。
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//线条风格
//SetIndexBuffer(1,Buf_MA20); //将数组分配到缓冲区。
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//线条风格
SetIndexBuffer(0,Buf_ROC_MA40); // 将一个数组分配给缓冲区。
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//线条风格
SetIndexBuffer(1,Buf_ROC_MA20); // 将一个数组分配给缓冲区。
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//线条风格
return; // 退出特殊的init()函数
}
//--------------------------------------------------------------------
int start() // 特殊函数start()
{
int i, // 条形索引
历史=3000。
counted_bars; // 计算的条数
double ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//--------------------------------------------------------------------
// Counted_bars=IndicatorCounted(); // 计算的条数
i=Bars;//Counted_bars-1; //第一个不被计算的索引。
while(i>=0) //在未计算的条形图中循环。
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i)。
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20) 。
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i)。
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40) 。
MA40_s[i]=MA40_s。
MA40[i]=ma40。
MA20[i]=MA20。
MA20_s[i]=MA20_s。
Buf_MA40[i]=ma40。
Buf_MA20[i]=ma20。
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
i--;
//计算下一个条形指数
}
//--------------------------------------------------------------------
return; // 退出特殊函数start()
}

有太多的错误。

主要是在用数组工作时出错。

附加的文件:
proba.mq4  2 kb
 

帮我解决这个问题--有一个买入/卖出信号,EA开了一笔交易,设置了一个利润和一个停止。如果交易在同一蜡烛上停止时被关闭,那么顾问会再次打开交易,而我需要它不打开,即在一个信号上有一个交易被打开。

如何做到这一点?

 
KoDi >> :

如何做到这一点?

最后一个订单的收盘时间必须小于当前条形图的开盘时间。

如果不是这样,就不要进行交易。

 
TheXpert >> :

最后一个订单的收盘时间必须小于当前条形图的开盘时间。

如果不这样做,我们就不打开交易。

>> 我很迷惑。

那么,如果条件是写他在至少有一笔交易之前不进入,他将如何开启第一笔交易?

原因: