//-------------------------------------------------------------------- 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("Сформировался новый бар"); // Вывод на экран } } //--------------------------------------------------------------------
M1을 시도했는데 다음 막대가 형성된 후 메시지가 나타나지 않습니다. 작동하지 않는 것은 무엇입니까?
그러나 작동하지 않습니다. 프로그램을 잘못 작성했습니다. 그리고 모두 자신의 코드가 어떻게 작동할지 모르기 때문입니다. 알아봅시다. 고문 기관:
int start(){ // Спец. функция startif (Fun_New_Bar()){ //проверка наличия нового бараAlert ( "Сформировался новый бар" ); // Вывод на экран
}
return ( 0 ); // Выход из start()
}
새 틱이 도착하고 Fun_New_Bar() 함수가 호출됩니다. 메인 프로그램에 true를 반환하면 Alert가 팝업됩니다. 그렇지 않으면 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()) 표현식은 괄호 안에 항상 false가 되고 경고가 팝업되지 않습니다.
더 가자. 왜 datetime을 선언했습니까? New_Time= 0 ; 정확히 정적? 어떤 이유로? 변수를 선언하고 즉시 0으로 초기화했습니다. 다음 틱에서 동일한 일이 발생합니다. 변수가 다시 선언되고 다시 0으로 초기화됩니다. 아래를 참조하십시오. if (New_Time!=Time[ 0 ]){ 이 줄은 변수 값이 현재 시간 과 다른지 확인합니다. 예, 변수는 0이고 현재 시간은 0이 아닙니다. 조건이 충족되면 현재 시간 값이 변수에 입력되고 New_Bar 매개변수가 true가 됩니다. 즉, 함수는 주 프로그램에 아무 것도 반환하지 않고 작업을 완료했습니다. 다음 틱에서 다시 New_Time은 Time[ 0 ]과 같지 않고 부등식 검사가 성공적으로 수행되고 다시 두 개의 후속 작업이 수행됩니다. 간단히 말해서 if (New_Time!=Time[ 0 ]) 조건이 테스트되면 괄호 안의 표현식은 모든 틱에서 true가 됩니다. 언제나. 문제는 그것이 항상 사실이라면 도대체 왜 이 검사가 여기에 필요한 것입니까? 그냥 제거하면 되나요? 이 두 변수가 모두 사용되지 않는 경우 New_Time=Time[ 0 ] 및 New_Bar= true를 할당하는 이유는 무엇입니까? 도대체 이 두 임무는 무엇을 위한 것일까요? 당신이 연주하고 싶어? 아니면 너무 게으른 생각?
API를 통해 나는 방법을 모릅니다. 가능하다고 읽었습니다. 텍스트 문서를 통해 - MQL4 이외의 언어로 dll-ku를 작성해야 합니다. 예를 들어 델파이에서 C++. dll은 터미널 외부에 있는 파일에 액세스할 수 있어야 합니다. 구현하는 것이 매우 현실적입니다. 그러면 모든 것이 투명해집니다. EA는 전역 변수의 새 값을 텍스트 문서에 입력하고 다른 EA는 이 값을 읽습니다. DLL은 두 조언자 모두에게 이 텍스트 문서에 대한 액세스 권한을 부여합니다. 이러한 질문은 이미 여기에서 제기되었습니다. 사람들은 두 개의 다른 터미널에서 고문의 상호 작업을 설정하는 방법과 같은 것을 질문했습니다.
//-------------------------------------------------------------------- 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);
}
API를 통해 나는 방법을 모릅니다. 가능하다고 읽었습니다. 텍스트 문서를 통해 - MQL4 이외의 언어로 dll-ku를 작성해야 합니다. 예를 들어 델파이에서 C++. dll은 터미널 외부에 있는 파일에 액세스할 수 있어야 합니다. 구현하는 것이 매우 현실적입니다. 그러면 모든 것이 투명해집니다. EA는 전역 변수의 새 값을 텍스트 문서에 입력하고 다른 EA는 이 값을 읽습니다. DLL은 두 조언자 모두에게 이 텍스트 문서에 대한 액세스 권한을 부여합니다. 이러한 질문은 이미 여기에서 제기되었습니다. 사람들은 두 개의 다른 터미널에서 고문의 상호 작업을 설정하는 방법과 같은 것을 질문했습니다.
더 정확하게는 다음과 같을 것입니다.
이것이 훨씬 더 정확하고 이제 작동하는 방법입니다.
//--------------------------------------------------------------------
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("Сформировался новый бар"); // Вывод на экран
}
}
//--------------------------------------------------------------------
M1을 시도했는데 다음 막대가 형성된 후 메시지가 나타나지 않습니다. 작동하지 않는 것은 무엇입니까?
그러나 작동하지 않습니다. 프로그램을 잘못 작성했습니다. 그리고 모두 자신의 코드가 어떻게 작동할지 모르기 때문입니다. 알아봅시다. 고문 기관:
새 틱이 도착하고 Fun_New_Bar() 함수가 호출됩니다. 메인 프로그램에 true를 반환하면 Alert가 팝업됩니다. 그렇지 않으면 EA는 반환으로 작업을 종료하고 새 틱을 기다립니다. 새로운 틱에서 모든 것이 반복됩니다.
코드가 작동하지 않는다는 말씀이신가요? 이제 서브루틴에 무엇이 있는지 살펴보겠습니다.
부울 함수가 선언되었습니다. 이것은 프로시저가 아니라 함수이기 때문에 호출된 주 프로그램에 무언가를 반환해야 합니다. 함수는 부울이므로 부울 값을 반환해야 합니다. 메인 프로그램에 최소한 무언가를 반환하는 라인은 어디에 있습니까? 없기! 즉, 프로그램 시작 시 함수에서 아무 것도 반환되지 않으므로 if (Fun_New_Bar()) 표현식은 괄호 안에 항상 false가 되고 경고가 팝업되지 않습니다.
더 가자. 왜 datetime을 선언했습니까? New_Time= 0 ; 정확히 정적? 어떤 이유로? 변수를 선언하고 즉시 0으로 초기화했습니다. 다음 틱에서 동일한 일이 발생합니다. 변수가 다시 선언되고 다시 0으로 초기화됩니다. 아래를 참조하십시오. if (New_Time!=Time[ 0 ]){ 이 줄은 변수 값이 현재 시간 과 다른지 확인합니다. 예, 변수는 0이고 현재 시간은 0이 아닙니다. 조건이 충족되면 현재 시간 값이 변수에 입력되고 New_Bar 매개변수가 true가 됩니다. 즉, 함수는 주 프로그램에 아무 것도 반환하지 않고 작업을 완료했습니다. 다음 틱에서 다시 New_Time은 Time[ 0 ]과 같지 않고 부등식 검사가 성공적으로 수행되고 다시 두 개의 후속 작업이 수행됩니다. 간단히 말해서 if (New_Time!=Time[ 0 ]) 조건이 테스트되면 괄호 안의 표현식은 모든 틱에서 true가 됩니다. 언제나. 문제는 그것이 항상 사실이라면 도대체 왜 이 검사가 여기에 필요한 것입니까? 그냥 제거하면 되나요? 이 두 변수가 모두 사용되지 않는 경우 New_Time=Time[ 0 ] 및 New_Bar= true를 할당하는 이유는 무엇입니까? 도대체 이 두 임무는 무엇을 위한 것일까요? 당신이 연주하고 싶어? 아니면 너무 게으른 생각?
두 번째로 실행된 MT4 터미널에서 실행되는 Expert Advisor에서 전역 변수 를 사용할 수 있도록 하는 방법은 무엇입니까?
두 번째로 실행된 MT4 터미널에서 실행되는 Expert Advisor에서 전역 변수를 사용할 수 있도록 하는 방법은 무엇입니까?
API를 통해 또는 텍스트 문서를 통해.
API를 통해 또는 텍스트 문서를 통해.
어떻게?
어떻게?
API를 통해 나는 방법을 모릅니다. 가능하다고 읽었습니다. 텍스트 문서를 통해 - MQL4 이외의 언어로 dll-ku를 작성해야 합니다. 예를 들어 델파이에서 C++. dll은 터미널 외부에 있는 파일에 액세스할 수 있어야 합니다. 구현하는 것이 매우 현실적입니다. 그러면 모든 것이 투명해집니다. EA는 전역 변수의 새 값을 텍스트 문서에 입력하고 다른 EA는 이 값을 읽습니다. DLL은 두 조언자 모두에게 이 텍스트 문서에 대한 액세스 권한을 부여합니다. 이러한 질문은 이미 여기에서 제기되었습니다. 사람들은 두 개의 다른 터미널에서 고문의 상호 작업을 설정하는 방법과 같은 것을 질문했습니다.
이것이 훨씬 더 정확하고 이제 작동하는 방법입니다.
이것이 훨씬 더 정확하고 이제 작동하는 방법입니다.
//--------------------------------------------------------------------
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("Сформировался новый бар"); // Вывод на экран
}
}
//--------------------------------------------------------------------
기능은 내 것이 아닙니다. 인터넷에서 집어 들었지만 사용하지 않았습니다. 이제 나는 그것을주의 깊게 보았습니다. 교환원이 거기에 없습니다.
다음과 같이 정확할 것입니다.
API를 통해 나는 방법을 모릅니다. 가능하다고 읽었습니다. 텍스트 문서를 통해 - MQL4 이외의 언어로 dll-ku를 작성해야 합니다. 예를 들어 델파이에서 C++. dll은 터미널 외부에 있는 파일에 액세스할 수 있어야 합니다. 구현하는 것이 매우 현실적입니다. 그러면 모든 것이 투명해집니다. EA는 전역 변수의 새 값을 텍스트 문서에 입력하고 다른 EA는 이 값을 읽습니다. DLL은 두 조언자 모두에게 이 텍스트 문서에 대한 액세스 권한을 부여합니다. 이러한 질문은 이미 여기에서 제기되었습니다. 사람들은 두 개의 다른 터미널에서 고문의 상호 작업을 설정하는 방법과 같은 것을 질문했습니다.
고마워, 내가 볼게...