초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 356

 

Karputov Vladimir :
Высылайте.

전송된

 
Karputov Vladimir :
보내다.
또한 입력 매개변수를 변경할 때 표시기 가 오류 없이 올바르게 작동한다고 덧붙일 것입니다.
 

Vladimir Karputov의 도움으로 . 문제가 해결되었습니다. OnInit() 함수에서 표시기 핸들을 가져온 다음 OnDeinit()에서 삭제해야 했습니다.

또한 표시기가 전체 기록이 아닌 특정 막대에서 선을 그리도록 하는 방법을 알려주실 수 있습니까?

 

안녕하세요. 그런 문제가 있습니다. MQL을 배우기 시작했고 Expert Advisor를 쓰고 있습니다. EA를 컴파일한 다음 시작할 때 시간당 유로/달러 차트를 얻었지만 어디에서나 열 차트를 지정하지는 않았습니다. 5분간 유로달러 개통을 등록했다. 첫 번째 유로 달러를 1시간 동안 오픈한 다음 5분 동안 오픈합니다. 한 시간 동안 이 일정을 어떻게 제거할 수 있습니까? 다음은 어드바이저 코드입니다. 미리 조언에 감사드립니다.


//+----------------------------------------------- --------------------+
//| 오전4시 |
//| 발레리 빌크스 |
//| https://www.mql5.com |
//+----------------------------------------------- --------------------+
#property copyright "Valery Vilks"
#속성 링크 "https://www.mql5.com"
#속성 버전 "1.00"
#속성엄격
이중 iAlligator();
부울 ObjectSetInteger();
long a=ChartOpen("EURUSD",PERIOD_M5);
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
int OnInit()
{
//--- 타이머 생성
이벤트 세트 타이머(5);

//---
반환(INIT_SUCCESSED);
}
//+----------------------------------------------- --------------------+
//| 전문적인 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
무효 OnDeinit(const int 이유)
{
//--- 타이머 파괴
이벤트킬 타이머();

}
//+----------------------------------------------- --------------------+
//| 전문가 틱 기능 |
//+----------------------------------------------- --------------------+
무효 OnTick()
{


for(int f=3; f++)
{
이중 val=iFractals("EURUSD",15,1,f);
if(값!=0)
{
Alert("프랙탈 구매",val,"왼쪽 막대",f);
부서지다;
}
}
for(int f1=3; f1++)
{
이중 val1=iFractals("EURUSD",15,2,f1);
if(val1!=0)
{
Alert("프랙탈 판매",val1,"왼쪽 막대",f1);
부서지다;
}
경보(입찰);
}


}
//+----------------------------------------------- --------------------+
//| 시간 함수 |
//+----------------------------------------------- --------------------+

무효 OnTimer()
{


}
//+----------------------------------------------- --------------------+
//| 테스트 기능 |
//+----------------------------------------------- --------------------+
더블 OnTester()
{
//---
이중 ret=0.0;
//---

//---
리턴(레트);
}
//+----------------------------------------------- --------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
valeravilks :

안녕하세요. 그런 문제가 있습니다. 저는 MQL을 배우기 시작했고 Expert Advisor를 쓰고 있습니다. EA를 컴파일한 다음 시작할 때 시간당 유로/달러 차트를 얻었지만 어디에서나 열 차트를 지정하지는 않았습니다. 5분간 유로달러 개통을 등록했다. 첫 번째 유로 달러를 1시간 동안 오픈한 다음 5분 동안 오픈합니다. 한 시간 동안 이 일정을 어떻게 제거할 수 있습니까? 다음은 어드바이저 코드입니다. 미리 조언에 감사드립니다.



디버깅을 활성화하면 기본 기호에서 Expert Advisor가 실행됩니다. 메타 편집기 설정에서 원하는 기호와 TF를 지정합니다. (첨부된 사진 참조)

파일:
kagfqct9ki.png  28 kb
 
안녕하세요
 int maxValueIdx= ArraySort (INDEX, WHOLE_ARRAY , ArrayMaximum (INDEX, WHOLE_ARRAY , 0 ),MODE_ASCEND);
int minValueIdx= ArraySort (INDEX, WHOLE_ARRAY , ArrayMinimum (INDEX, WHOLE_ARRAY , 0 ),MODE_DESCEND);  
그것이 무엇을 의미한다고 생각합니까?
 
azfaraon :
안녕하세요
그것이 무엇을 의미한다고 생각합니까?
MQL4 코드입니다. 먼저 배열의 최대값을 검색하고 0 요소부터 시작하여 전체 배열을 확인합니다. 그런 다음 배열은 발견된 최대 인덱스부터 시작하여 정렬 됩니다(첫 번째 예에서는 오름차순, 두 번째 예에서는 내림차순).
 

즉, 이 부분에서 최대값과 최소값을 찾고 있습니까? (내부에서 외부로) 내가 올바르게 이해 했습니까?

그리고 이것에

   int maxValueIdx= ArrayMaximum (INDEX, WHOLE_ARRAY , 0 );
       int minValueIdx= ArrayMinimum (INDEX, WHOLE_ARRAY , 0 );

최소에서 최대로? (외부에서 내부로)

 
azfaraon :


코드는 다음과 같습니다.

 int maxValueIdx= ArrayMaximum (INDEX, WHOLE_ARRAY , 0 );

최대값을 가진 요소의 인덱스를 찾습니다. 검색은 0 요소에서 시작하여 전체 배열에서 수행됩니다.

 
azfaraon :

다음은 코드입니다.

 //+------------------------------------------------------------------+
//|                                                  test_script.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- Инициализация массива
   int INDEX[]={ 2 , 45 , 21 , 8 , 96 , 14 , 32 , 6 , 81 , 46 , 1 , 3 , 31 , 22 , 5 , 78 , 24 , 25 , 66 };

//--- Выведем на печать наш массив
   int size;
   string text;

   size= ArraySize (INDEX);         // размер нашего массива
   text= NULL ;
   for ( int i= 0 ;i<size;i++)
     {
       if (i<size- 1 )
         text=text+ IntegerToString (INDEX[i])+ "," ;
       else
         text=text+ IntegerToString (INDEX[i]);
     }
   Print ( "Старт" );
   Print (text);
//---
   Print ( "---" );
   Print ( "Элемент с индексом " , ArrayMaximum (INDEX, WHOLE_ARRAY , 0 ),
         " имеет максимальное значение равное " ,INDEX[ ArrayMaximum (INDEX, WHOLE_ARRAY , 0 )]);
   int maxValueIdx= ArraySort (INDEX, WHOLE_ARRAY , ArrayMaximum (INDEX, WHOLE_ARRAY , 0 ),MODE_ASCEND);

//--- Выведем на печать наш массив
   size= ArraySize (INDEX);       // размер нашего массива   
   text= NULL ;
   for ( int i= 0 ;i<size;i++)
     {
       if (i<size- 1 )
         text=text+ IntegerToString (INDEX[i])+ "," ;
       else
         text=text+ IntegerToString (INDEX[i]);
     }
   Print (text);

//---
   Print ( "---" );
   Print ( "Элемент с индексом " , ArrayMinimum (INDEX, WHOLE_ARRAY , 0 ),
         " имеет минимальное значение равное " ,INDEX[ ArrayMinimum (INDEX, WHOLE_ARRAY , 0 )]);
   int minValueIdx= ArraySort (INDEX, WHOLE_ARRAY , ArrayMinimum (INDEX, WHOLE_ARRAY , 0 ),MODE_DESCEND);

//--- Выведем на печать наш массив
   size= ArraySize (INDEX);       // размер нашего массива   
   text= NULL ;
   for ( int i= 0 ;i<size;i++)
     {
       if (i<size- 1 )
         text=text+ IntegerToString (INDEX[i])+ "," ;
       else
         text=text+ IntegerToString (INDEX[i]);
     }
   Print (text);
   Print ( "Конец" );
  }
//+------------------------------------------------------------------+

, 그의 작업 결과는 다음과 같습니다.

 2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: Старт
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: 2 , 45 , 21 , 8 , 96 , 14 , 32 , 6 , 81 , 46 , 1 , 3 , 31 , 22 , 5 , 78 , 24 , 25 , 66
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: ---
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: Элемент с индексом 4 имеет максимальное значение равное 96
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: 2 , 45 , 21 , 8 , 1 , 3 , 5 , 6 , 14 , 22 , 24 , 25 , 31 , 32 , 46 , 66 , 78 , 81 , 96
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: ---
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: Элемент с индексом 4 имеет минимальное значение равное 1
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: 2 , 45 , 21 , 8 , 96 , 81 , 78 , 66 , 46 , 32 , 31 , 25 , 24 , 22 , 14 , 6 , 5 , 3 , 1
2015.05 . 03 19 : 20 : 03.917 test_script #CHL,Daily: Конец

공부하세요.

사유: