文章 "创建一个在若干工具上交易的 EA 交易程序" - 页 2

 
gisip:
在没有计时器的 MQL4 上一切运行正常。
您的说法不太妥当,我们说的是多货币测试。MT4 中没有计时器,但也没有多货币测试器。在 MT4 上工作时,Expert Advisor 在任何情况下都取决于其工作的工具的报价流强度。想象一下这种情况:假设您在欧元兑美元 上有一个多货币智能交易系统,如果在一段时间内该货币对上没有刻度线,您将如何跟踪其他工具上新刻度线的到来?
 
Interesting:

在 MQL4 中不存在结构和类,您打算在这里放弃它们吗?


我认为

使用或不使用标准库是每个人的喜好问题(在最糟糕的情况下,您只能使用自己的代码),但仅仅因为 MT4 中不存在这些库就放弃所有优势,这并不合理.....。

我根本没写这个。

我写的是 MQL5 存在故障,在某些工具组合中会产生错误数据。

例如:如果在欧元兑美元图表 上叠加 EURJPY 或 EURGBP,一切正常。

但如果叠加 EURCAD,图表上的数据就会出错,而在 MQL4 中则不会出现这种错误。

[删除]  
gisip:

我根本没写这个问题。

我写的是 MQL5 在使用某些工具组合时会出现故障并产生错误数据。

例如:如果在欧元兑美元图表上叠加 EURJPY 或 EURGBP,则一切正常。

但如果叠加 EURCAD,图表上的数据就会出错,而在 MQL4 中情况并非如此,没有错误。

我明白这一点,但Kos 是正确的(尤其是来自 2010.07.02 14:57 的漂亮帖子 。我不明白为什么所有开发人员(包括 MQ 都一直忽视计时器。如果我们考虑到没有关于多币种交易者的官方示例,那么 MQ 在这个问题上就一切都清楚了,但为什么其他人总是忽略OnTimer(),这对我个人来说仍然是一个巨大的谜团....。
 
gisip:

我根本没写这个问题。

我写的是 MQL5 在使用某些工具组合时会出现故障并产生错误数据。

例如:如果在欧元兑美元图表上叠加 EURJPY 或 EURGBP,则一切正常。

但如果覆盖 EURCAD,图表上的数据就会出错,而在 MQL4 中情况并非如此,没有错误。

请提供一个有错误的示例。
 
Renat:
请给我一个有错误的例子。
好吧,我就不在这里写了,看起来已经很清楚了。
//--------- 使用 MQL4 的选项 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
SetIndexBuffer(0,Buffer); // Assign array to buffer
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Line style

while(i > = 0){//-- Moving the indicator_buffer。= 0){//-- 从右向左移动(即从最高杆到仍在形成的 0 杆) --
Buffer[i] = (iHigh(InstrumentName,0,i) +iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- 下一个 Bar
}/next (while)



//----------- 现在几乎与 MQL5 中的变量相同 --------
#property indicator_separate_window // Indic.在单独窗口中绘制
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int handle1;

copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);

//--Now we throw on EURUSD.

//--无论我们将指标放在哪个工具上,图表都不应该改变。
 
请正确粘贴代码,这样更容易理解。
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Rosh:
请正确插入代码,这样更容易理解。

//--------- 使用 MQL4 的选项 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
int init()
{
SetIndexBuffer(0,Buffer); // Assign array to buffer
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Line style
}
int start()
{
while(i >= 0){
Buffer[i] = (iHigh(InstrumentName,0,i) +iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- 下一个 Bar
}//next (while)
}


//----------- 现在几乎与 MQL5 中的变量相同 --------
#property indicator_separate_window // Indic.在单独窗口中绘制
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1Aqua

输入字符串 InstrumentName = "EURCAD";
double Buffer[];
int OnInit()
{
{ IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,Buffer,INDICATOR_DATA);
}

int OnCalculate(......)
{
copied=CopyClose(InstrumentName,0,0,0,CountBars,Buffer);
}
//--Now we throw it on EURUSD.

//--It doesn't matter on which instrument we place the indicator, the chart should not change.
[删除]  
Gisip,您应该使用 "SRC "按钮插入代码...
 

请制作一个可重复的示例。也就是说,你需要现成的代码,你可以编译,扔到图表上并得到结果。

没有这些,很少有人会明白我们在说什么。
 

我会帮助那些被剥夺意识的人。

//----------- 现在在 MQL5 中几乎有相同的变体 --------
#property  indicator_separate_window    // 指示器在单独窗口中绘制
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[]; 
int OnInit() 
{
   IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
return(0);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
int copied;
int CountBars=rates_total;
  copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);
  return(copied);
}
//--现在把它抛给欧元兑美元。

//--无论我们将指标放在哪个工具上,图表都不会改变。

理想情况下是不应该的,但我用算法让它吱吱作响,它只出现在 1 个 TF 上,其他的则断然显示出空虚 .....

即使经过一个小时的测试.....

并尝试上传历史记录