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

 
khorosh:

这样说会更准确。



这句话更真实,而且现在还能用。

//--------------------------------------------------------------------
int start() // Спец. функция start
{
if(Fun_New_Bar())//проверка наличия нового бара
return; // Выход из start()
}
//--------------------------------------------------------------------
bool Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. нового бара
static datetime New_Time=0; // Время текущего бара
bool New_Bar=false; // Нового бара нет
if(New_Time!=Time[0]) // Сравниваем время
{
New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
Alert("Сформировался новый бар"); // Вывод на экран
}
}
//--------------------------------------------------------------------

 
顺便问一下,为什么我在写评论的时候把代码高亮显示为代码,而且是同样的颜色?或者我应该把它突出显示为什么,使它看起来像真正的代码的颜色?
 
kolyango:

我在M1上试了一下,在下一个柱状体形成后,信息并没有出现。这是否意味着它不起作用?


而且它不会工作--你没有正确编写程序。那是因为你不知道你自己的代码将如何工作。让我们把它分解一下。专家顾问机构。

int start(){ // Спец. функция start
  if(Fun_New_Bar()){ //проверка наличия нового бара
    Alert("Сформировался новый бар"); // Вывод на экран
  }
  return(0); // Выход из start()
}

一个新的刻度线到来,Fun_New_Bar()函数被调用。如果它向主程序返回真,将弹出一个警报。否则,EA将终止其与返回者的工作,并等待新的勾选。一切都在一个新的刻度上重复。

你说这个代码不工作?现在看看你的子程序里有什么。

bool Fun_New_Bar(){ // Ф-ия обнаружения нового бара
  static datetime New_Time=0; // Время текущего бара
  bool New_Bar=false; // Нового бара нет
  if(New_Time!=Time[0]){ // Сравниваем время
    New_Time=Time[0]; // Теперь время такое
    New_Bar=true; // Поймался новый бар
  }
}

声明了一个布尔函数。由于它是一个函数而不是一个过程,它应该向调用它的主程序返回一些东西。由于该函数是布尔型的,它应该返回一个布尔型的值。你在哪里有一个向主程序返回任何东西的字符串?它没有!这意味着在程序开始时,由于函数没有返回任何东西,if(Fun_New_Bar())表达式的括号将永远是假的,警报永远不会弹出。

让我们更进一步。你为什么要把数据时间New_Time=0;声明为静态?你的理由是什么?你声明了一个变量并立即将其初始化为零。在下一次嘀嗒声中,同样的事情将发生--变量将再次被声明和初始化为零。If(New_Time!=Time[0]){ 这一行检查变量的值是否与当前时间 不相等。嗯,是的,变量有零,但当前时间不是零。条件得到满足,当前的时间值被写入变量,参数New_Bar变为true。在下一次嘀嗒声中 ,New_Time不会 等于Time[0],它将再次成功地检查不等式,接下来的两个操作将被执行。换句话说,当检查条件if(New_Time!=Time[0])时,括号内的表达式将在每个刻度处为真。始终如此。这就引出了一个问题,如果它总是真实的,为什么这个支票要在这里?也许我们应该直接删除它?如果这两个变量不在任何地方使用,我们为什么要指定New_Time=Time[0]和New_Bar=true?我们到底为什么需要这两项任务?你想玩一玩吗?还是你懒得去思考?

 

如何使一个全局变量 对运行在第二个MT4终端上的EA可用?

 
DhP:

如何使一个全局变量对运行在第二个MT4终端上的EA可用?


通过一个api,或通过一个文本文件。
 
drknn:

通过一个api,或通过一个文本文件。

如何?
 
DhP:

如何?

通过api,我不知道怎么做--我读到过,这是有可能的。通过文本文件 - 你需要在MQL4以外的语言上编写一个dll。例如,在Delphi或C++中。dll必须能够访问位于终端之外的文件。这是很容易实现的。再往下看,一切都很清楚了--专家顾问将全局变量的新值 输入到一个文本文件中,而另一个专家顾问则从那里读取它。DLL让两个专家顾问都能访问文本文件。这样的问题以前在这里也被问过。人们曾问过一些问题,如如何使EA在两个不同的渠道中一起工作......。
 
kolyango:

这句话更真实,而且现在还能用。

不,它不会--你的Alert会在每一个滴答声 中向你发出信息,而不是在一个新的蜡烛的第一个滴答声中发出一次。
 
kolyango:



这就更正确了,现在也能用了。

//--------------------------------------------------------------------
int start() // Спец. функция start
{
if(Fun_New_Bar())//проверка наличия нового бара
return; // Выход из start()
}
//--------------------------------------------------------------------
bool Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. нового бара
static datetime New_Time=0; // Время текущего бара
bool New_Bar=false; // Нового бара нет
if(New_Time!=Time[0]) // Сравниваем время
{
New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
Alert("Сформировался новый бар"); // Вывод на экран
}
}
//--------------------------------------------------------------------


这个功能不是我的--我在网上买的,但还没有用过。现在仔细看了一下--少了一个操作员。

这就是正确的方法。

int start() // Спец. функция start
{
 if(Fun_New_Bar())//проверка наличия нового бара
   {
    Alert("Сформировался новый бар"); // Вывод на экран
   }
return(0); // Выход из start()
}
//--------------------------------------------------------------------
bool Fun_New_Bar() // Ф-ия обнаружения ..
{                  // .. нового бара
static datetime New_Time=0; // Время текущего бара
bool New_Bar=false; // Нового бара нет
if(New_Time!=Time[0]) // Сравниваем время
{
New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
}
return(New_Bar);
}
 
drknn:

通过一个api,我不知道怎么做--我读到过,这是有可能的。通过文本文件--你需要用MQL4以外的语言编写一个dll。例如,在Delphi或C++中。dll必须能够访问位于终端之外的文件。这是很容易实现的。再往下看,一切都很清楚了--专家顾问将全局变量的新值输入到一个文本文件中,而另一个专家顾问则从那里读取它。DLL让两个专家顾问都能访问文本文件。这样的问题以前在这里也被问过。人们在问一些问题,比如如何使EA在两个不同的渠道中一起工作......

谢谢,我会去找的...