정보를 표시하기 위한 별도의 하위 창은 적절한 설정이 있는 사용자 지정 표시기를 사용하여 생성됩니다. 이 표시기의 유일한 목적은 하위 창을 만드는 것이므로 표시기에서 계산이 수행되지 않으며 표시기 선을 그리는 목적도 설정되지 않습니다. Inform.mq4 표시기 코드는 다음과 같습니다.
//-------------------------------------------------------------------- // Inform.mq4 // Предназначен для использования в качестве примера в учебнике MQL4. //-------------------------------------------------------------------- #propertyindicator_separate_window// Отдельное окно индикатора //-------------------------------------------------------------------- intstart()// Специальная функция start() { } //--------------------------------------------------------------------
일반적인 경우 프로그래머는 재량에 따라 필요한 코드를 표시기에 추가하여 추가 속성을 부여할 수 있습니다. 예를 들어, 표시줄은 표시기 하위 창의 일부에 표시될 수 있습니다. 이 예에서는 그래픽 개체가 표시될 창에 표시기의 간단한 코드가 제안됩니다.
""""
그렇다면 Inform 파일의 코드입니다. 그리고 평생 동안 차트에서 신호를 얻는 방법을 이해하지 못합니다 ??? 프로그램은 차트에서 명령을 실행하는 것처럼 작동하지만 비어 있습니다... 정보 표시기를 첨부하고 무언가를 기록해야 합니까? 아니면 어떻게 든 다르게?
약간의 이론부터 시작하겠습니다. MQL 프로그램은 ... 프로그램입니다. 즉, 수행하라는 지시를 받지 않은 작업을 수행할 수 없습니다. 도움말 섹션 "프로그램 실행"에서 Expert/Indicator에 새 틱이 도착하면 start() 함수가 실행된다는 것을 읽을 수 있습니다. Inform() 함수가 start() 함수에서 호출되지 않으면 실행되지 않습니다. 이제 우리는 당신이 언급한 섹션에서 기사를 더 읽었습니다. Inform() 함수는 다음 메시지를 표시해야 하는 프로그램의 모든 위치에서 호출할 수 있습니다. 저것들. 메시지를 표시해야 하는 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 --
예에서 Criterion() 함수도 가지고 있다는 것을 알고 있습니까? 그런 다음 교과서에 명시된 전략에 따라 포지션을 여는 기준이 트리거될 때까지 기다리십시오. 그러면 즉시 Inform() 함수가 작동하는 것을 볼 수 있습니다. 글쎄, 또는 터미널의 해당 버튼으로 수동으로 열면 작동해야합니다 ...
아니요, 내 기준을 설정했습니다) 그런 다음 이 모든 것을 시작하는 것이 합리적이었지만 원래 기준으로도 작동하지 않는 것 같았습니다(이미 모든 것을 다시 작성하는 것은 어렵지만 기준은 제대로 열리도록 명령을 보내고 거래를 열었습니다. , 이벤트가 발생하고 출력은 0 메시지입니다 ... .
초보자를위한 일주일은 우리가 당신에게 프로로가는 마감일 인 것 같습니다)))
최근 포스팅을 바탕으로...
알아내자 :) 컨텍스트를 명시하십시오.
문맥? 단순한...
기사 튜토리얼에서 일반 프로그램 만들기( https://book.mql4.com/en/build/index ).
프로그램에는 <Inform.mqh> 파일이 포함됩니다.
""""""
정보를 표시하기 위한 별도의 하위 창은 적절한 설정이 있는 사용자 지정 표시기를 사용하여 생성됩니다. 이 표시기의 유일한 목적은 하위 창을 만드는 것이므로 표시기에서 계산이 수행되지 않으며 표시기 선을 그리는 목적도 설정되지 않습니다. Inform.mq4 표시기 코드는 다음과 같습니다.
일반적인 경우 프로그래머는 재량에 따라 필요한 코드를 표시기에 추가하여 추가 속성을 부여할 수 있습니다. 예를 들어, 표시줄은 표시기 하위 창의 일부에 표시될 수 있습니다. 이 예에서는 그래픽 개체가 표시될 창에 표시기의 간단한 코드가 제안됩니다.
""""
그렇다면 Inform 파일의 코드입니다. 그리고 평생 동안 차트에서 신호를 얻는 방법을 이해하지 못합니다 ??? 프로그램은 차트에서 명령을 실행하는 것처럼 작동하지만 비어 있습니다... 정보 표시기를 첨부하고 무언가를 기록해야 합니까? 아니면 어떻게 든 다르게?
방법을 알려주세요
방법을 알려주세요
약간의 이론부터 시작하겠습니다. MQL 프로그램은 ... 프로그램입니다. 즉, 수행하라는 지시를 받지 않은 작업을 수행할 수 없습니다. 도움말 섹션 "프로그램 실행"에서 Expert/Indicator에 새 틱이 도착하면 start() 함수가 실행된다는 것을 읽을 수 있습니다. Inform() 함수가 start() 함수에서 호출되지 않으면 실행되지 않습니다. 이제 우리는 당신이 언급한 섹션에서 기사를 더 읽었습니다. Inform() 함수는 다음 메시지를 표시해야 하는 프로그램의 모든 위치에서 호출할 수 있습니다. 저것들. 메시지를 표시해야 하는 start() 함수에서 다음을 작성합니다.
물론 설명 감사합니다만, 프로그램에서 자주 호출되고, 본체에는 없지만, 다른 인클루드에서는 어디에나 포함되어 있고, 메시지를 보내서 호출하지만 표시되지 않습니다(
예를 들어 Close_All.mqh의 한 줄
if (팁==1) Price_Cls=묻기; // 매도 주문의 경우
알리기(12, 티켓); // 닫기 시도에 대한 메시지입니다.
int start() // Спец. функция start { Terminal(); // Функция учёта ордеров Events(); // Информация о событиях Trade(Criterion()); // Торговая функция Inform(0); // Для перекрашивания объектов return; // Выход из start() }기본적으로 교과서에 나오는 내용과 동일합니다. 모든 호출은 포함 파일에서 나옵니다.
여기 예를 들어
기본적으로 교과서에 나오는 내용과 동일합니다. 모든 호출은 포함 파일에서 발생합니다.
여기 예를 들어
여기에서 Inform은 시대에 뒤떨어진 것이라고 하지만 화면에 표시하는 방법이 명확하지 않습니다. 메시지도 어디로 가는지(