//-------------------------------------------------------------------- // Inform.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. //-------------------------------------------------------------------- #propertyindicator_separate_window// Отдельное окно индикатора //-------------------------------------------------------------------- intstart()// Специальная функция start() { } //--------------------------------------------------------------------
int start() // Спец. функция start
{
Terminal(); // Функция учёта ордеров
Events(); // Информация о событиях
Trade(Criterion()); // Торговая функция
Inform(0); // Для перекрашивания объектов
return; // Выход из start()
}
基本的にはチュートリアルと同じです。すべての呼び出しは、インクルードファイルから行われます。
以下はその一例です。
//--------------------------------------------------------------------// 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 --
私たち初心者は1週間が期限のようですが、その後、プロに会いに行きます))))
ここ数回の書き込みから結論づけると...。
は、文脈を述べよ。
文脈?単純に...
記事 教科書から普通のプログラム(https://book.mql4.com/ru/build/index) を作る。
そこでは、<Inform.mqh>というファイルがプログラムに含まれています。
""""""
適切な設定のカスタムインジケータを使用して、別の出力サブウィンドウが作成されます。このインジケータは、サブウィンドウを作成することだけが目的であり、したがって、インジケータ内で計算を行うことはなく、また、インジケータラインを作成する目的もない。Inform.mq4という インジケーターのコードは、以下のようになります。
一般に、プログラマーは必要なコードをインジケーターに追加することで、インジケーターに追加のプロパティを持たせることができます。例えば、インジケーターサブウィンドウの一部に、インジケーターラインを表示させることができます。この例では、グラフィカルなオブジェクトを表示するウィンドウのインジケーターの簡単なコードを示しています。
""""
以下は、Informファイルのコードです。チャート上でのシグナルの出し方がよくわからない。プログラム上では動作し、チャート上でコマンドを出すようですが、何も出ません...。Informのインジケータを添付して、何か書き込む必要があるのですが?それとも別の方法?
どうしたらいいか教えてください(((・・;)
どうしたらいいか教えてください((.
まず、少し理論的な話をします。MQLプログラムとは...のプログラムを使用しています。つまり、指示されていない操作は行えないのです。プログラムの実行」ヘルプには、Expert Advisor/Indicatorに新しいティックが来ると、start()関数が実行されることが書かれています。Inform()関数がstart()関数から呼び出されていない場合は、実行されない。Inform()関数は、次のメッセージを表示する必要があるプログラム内の任意の場所から呼び出すことができます。つまり、メッセージを表示する必要がある関数 start() では、次のように記述します。
説明ありがとうございます、もちろんですが、プログラムから頻繁に呼び出され、本体にはありませんが、他のicludeではいたるところにあり、メッセージを送ることで呼び出されますが、それらは出力されません(
Close_All.mqhの一例です。
基本的にはチュートリアルと同じです。すべての呼び出しは、インクルードファイルから行われます。
以下はその一例です。
基本的にはチュートリアルと同じです。すべての呼び出しは、インクルードファイルから行われます。
以下はその一例です。
Informはクソほど呼ばれてるけど、どう表示されてるのかわかりにくい...メッセージもどこに行くのか...(