//-------------------------------------------------------------------- // Inform.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. //-------------------------------------------------------------------- #propertyindicator_separate_window// Отдельное окно индикатора //-------------------------------------------------------------------- intstart()// Специальная функция start() { } //--------------------------------------------------------------------
int start() // Спец. функция start
{
Terminal(); // Функция учёта ордеров
Events(); // Информация о событиях
Trade(Criterion()); // Торговая функция
Inform(0); // Для перекрашивания объектов
return; // Выход из start()
}
它与教程中的内容基本相同。所有的调用都来自于include文件。
下面是一个例子
//--------------------------------------------------------------------// Events.mqh// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --// Функция слежения за событиями.// Глобальные переменные:// Level_new Новое значение минимальной дистанции// Level_old Предыдущее значение минимальной дистанции// Mas_Ord_New[31][9] Массив ордеров последний известный// Mas_Ord_Old[31][9] Массив ордеров предыдущий (старый)//--------------------------------------------------------------- 2 --int Events()// Пользовательская функция{bool Conc_Nom_Ord;// Совпадение ордеров в ..//.. старом и новом массивах//--------------------------------------------------------------- 3 --
Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL);// Последн.известноеif( Level_old!= Level_new)// Новое не равно старому..{// значит изменились условия
Level_old= Level_new;// Новое "старое значение"
Inform(10, Level_new);// Сообщение: новая дистанц.}//--------------------------------------------------------------- 4 --// Поиск пропавших, поменявших тип, частично закрытых и переоткрытыхfor(int old=1; old<= Mas_Ord_Old[0][0]; old++)// По массиву старых{// Исходим из того, что..
Conc_Nom_Ord=false;// ..ордера не совпадают//--------------------------------------------------------- 5 --for(intnew=1;new<= Mas_Ord_New[0][0];new++)//Цикл по массиву ..{//..новых ордеров//------------------------------------------------------ 6 --if( Mas_Ord_Old[ old][4]== Mas_Ord_New[new][4])// Совпал номер {// Тип ордера стал ..if( Mas_Ord_New[new][6]!= Mas_Ord_Old[ old][6])//.. другим
Inform(7, Mas_Ord_New[new][4]);// Сообщение: преобраз.:)
Conc_Nom_Ord=true;// Ордер найден, ..break;// ..значит выходим из ..}// .. внутреннего цикла//------------------------------------------------------ 7 --// Не совпал номер ордераif( Mas_Ord_Old[ old][7]>0&&// MagicNumber есть, совпал
Mas_Ord_Old[ old][7]== Mas_Ord_New[new][7])//.. со старым{//значит он переоткрыт или частично закрыт// Если лоты совпадают,.. if( Mas_Ord_Old[ old][5]== Mas_Ord_New[new][5])
Inform(8, Mas_Ord_Old[ old][4]);// ..то переоткрытиеelse// А иначе это было..
Inform(9, Mas_Ord_Old[ old][4]);// ..частичное закрытие
Conc_Nom_Ord=true;// Ордер найден, ..break;// ..значит выходим из ..}// .. внутреннего цикла}//--------------------------------------------------------- 8 --if( Conc_Nom_Ord==false)// Если мы сюда дошли,..{// ..то ордера нет:(if( Mas_Ord_Old[ old][6]==0)
Inform(1, Mas_Ord_Old[ old][4]);// Ордер Buy закрытif( Mas_Ord_Old[ old][6]==1)
Inform(2, Mas_Ord_Old[ old][4]);// Ордер Sell закрытif( Mas_Ord_Old[ old][6]>1)
Inform(3, Mas_Ord_Old[ old][4]);// Отложен. ордер удалён}}//--------------------------------------------------------------- 9 --// Поиск новых ордеров for(new=1;new<= Mas_Ord_New[0][0];new++)// По массиву новых орд.{if( Mas_Ord_New[new][8]>0)//Это не новый,а переоткрcontinue;//..или частично закрытый
Conc_Nom_Ord=false;// Пока совпадения нетfor( old=1; old<= Mas_Ord_Old[0][0]; old++)// Поищем этот ордерок {// ..в массиве старыхif( Mas_Ord_New[new][4]== Mas_Ord_Old[ old][4])//Совпал номер..{//.. ордера
Conc_Nom_Ord=true;// Ордер найден, ..break;// ..значит выходим из ..}// .. внутреннего цикла}if( Conc_Nom_Ord==false)// Если совпадения нет,..{// ..то ордер новый :)if( Mas_Ord_New[new][6]==0)
Inform(4, Mas_Ord_New[new][4]);// Ордер Buy открытif( Mas_Ord_New[new][6]==1)
Inform(5, Mas_Ord_New[new][4]);// Ордер Sell открытif( Mas_Ord_New[new][6]>1)
Inform(6, Mas_Ord_New[new][4]);// Установлен отлож.ордер}}//-------------------------------------------------------------- 10 --return;}//-------------------------------------------------------------- 11 --
看来,对我们这些新手来说,一个星期是最后期限,之后我们就去找你了))))。
从过去的几个帖子中得出结论....
让我们一探究竟:)说明背景。
语境?"简单...
文章简介:从教科书中创建一个普通的程序(https://book.mql4.com/ru/build/index)。
在那里,程序中包括一个文件<Inform.mqh>。
""""""
使用一个具有适当设置的自定义指标创建一个单独的输出子窗口。这个指标的唯一目的是创建一个子窗口,因此,在指标中没有进行任何计算,也没有创建指标线的目的。指标Inform.mq4 的代码可能 看起来如下。
一般来说,程序员可以向指标添加必要的代码,从而为其提供额外的属性。例如,在指标子窗口的某些部分,你可以显示指标线。这个例子显示了一个指标的简单代码,该指标的窗口将显示图形对象。
""""
以下是Inform文件的代码。我不明白如何在图表上从它那里获得信号。在程序中,它可以工作,似乎在图表上发出了命令,但什么也没有。我需要附加一个Inform指标并在其中写些什么?或另一种方式?
请告诉我如何做((...)
请告诉我们该怎么做()。
首先是一点理论。一个MQL程序是...方案。也就是说,它不能执行没有人告诉它要执行的操作。在 "程序执行 "的帮助部分,你可以看到,当专家顾问/指标中出现一个新的tick时,start()函数被执行。如果Inform()函数没有被start()函数调用,它将不会被执行。现在从你提到的部分继续阅读文章:Inform()函数可以从程序中任何需要显示下一条信息的地方调用。例如,在函数start()中,在我们需要打印信息的地方,我们写道
谢谢你的解释,当然,但它经常从程序中被调用,在主体中它不存在,但在其他iclude中它无处不在,通过发送消息被调用,但它们不被输出(
以Close_All.mqh中的一行为例
它与教程中的内容基本相同。所有的调用都来自于include文件。
下面是一个例子
它与教程中的内容基本相同。所有的调用都来自于include文件。
下面是一个例子
告知书》被叫了很多遍,但很难看出它是如何显示的....,信息也去了哪里(