MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1747

 
Andrey Sokolov # :

감사해요.

같은 이름을 가진 다른 기능이 나타납니다. 그리고 다른 수의 매개 변수를 전송하지 않도록 할 수 있습니까?

가능하지만 생각보다 적지만 파라미터 버튼의 예는 많지만
 //+------------------------------------------------------------------+ 
//| Создает кнопку                                                   | 
//+------------------------------------------------------------------+ 
bool ButtonCreate( const long               chart_ID= 0 ,               // ID графика 
                   const string             name= "Button" ,             // имя кнопки 
                   const int                sub_window= 0 ,             // номер подокна 
                   const int                x= 0 ,                       // координата по оси X 
                   const int                y= 0 ,                       // координата по оси Y 
                   const int                width= 50 ,                 // ширина кнопки 
                   const int                height= 18 ,                 // высота кнопки 
                   const ENUM_BASE_CORNER   corner= CORNER_LEFT_UPPER , // угол графика для привязки 
                   const string             text= "Button" ,             // текст 
                   const string             font= "Arial" ,             // шрифт 
                   const int                font_size= 10 ,             // размер шрифта 
                   const color              clr= clrBlack ,             // цвет текста 
                   const color              back_clr= C'236,233,216' ,   // цвет фона 
                   const color              border_clr= clrNONE ,       // цвет границы 
                   const bool               state= false ,               // нажата/отжата 
                   const bool               back= false ,               // на заднем плане 
                   const bool               selection= false ,           // выделить для перемещений 
                   const bool               hidden= true ,               // скрыт в списке объектов 
                   const long               z_order= 0 )                 // приоритет на нажатие мышью 

최소한의 매개변수로도 그립니다.

ButtonCreate( 0 ,InpName, 0 ,x,y,x_size,y_size,InpCorner);
 
Andrey Sokolov # :

인사말. 할 수 있는지와 가능하다면 방법을 알려주세요.

작성된 함수에 다른 수의 매개변수를 전달할 수 있는 방식으로 고유한 함수를 작성할 수 있습니까?

예를 들어 이 함수에서 4개 또는 5개의 매개변수를 전달할 수 있습니다.


 /********************Script program start function*******************/
void OnStart ()
 {
   double a = 2.87 ,
         b = 3.62 ,
         c = 0 ;
   Print ( "Fu(a, b) " , Fu(a, b));
  Fu(a, b, c);
   Print ( "Fu(a, b, c) " , c);
 } /******************************************************************/
double Fu( double x, double y)
 {
   return x*y;
 } /******************************************************************/
void Fu( double x, double y, double & z)
 {
  z = x+y;
 } /******************************************************************/
/*****************************End program****************************/

결과

 2021.11 . 15 00 : 01 : 54.629 00 USDJPY,M15: Fu(a, b, c) 6.49
2021.11 . 15 00 : 01 : 54.629 00 USDJPY,M15: Fu(a, b) 10.3894
 

도와주세요 뭐가 잘못된건지 모르겠네요

   for (i=limit;i>= 0 ;i--)
     {
       if (up)
        {
         if (Label1Buffer[i+ 1 ]<Input1){a+= 1 ;}
         else {up= false ;}
        }
       if (!up)
        {
         if (Label1Buffer[i+ 1 ]> 0 ){a-= 1 ;}
         else {up= true ;}
        }
      Label1Buffer[i]=a;

균일한 웨이브를 원했는데 어째서인지 '0'이 두 번 간다


 

NormalizeDouble 이 때때로 실패하는 이유는 무엇입니까?

배열을 저널에 인쇄하면 거의 모든 이중 값이 지정된 소수점 이하 1자리까지 표시되고 일부 3-4개 값(100개 중 15개)이 15자로 표시됩니다.

...

2021.11.15 04:01:07.821   Sov2   EURUSD,M1: 9.9
2021.11.15 04:01:07.724 Sov2 EURUSD,M1: 9.800000000000001
2021.11.15 04:01:07.675 Sov2 EURUSD,M1: 9.9
2021.11.15 04:01:07.626 Sov2 EURUSD,M1: 9.6
2021.11.15 04:01:07.577 Sov2 EURUSD,M1: 9.1

...

 
MakarFX # :

도와주세요 뭐가 잘못된건지 모르겠네요

균일한 웨이브를 원했는데 어째서인지 '0'이 두 번 간다


조건이 혼란스럽기 때문에 루프를 한 번 반복할 때 하나의 상태에만 up 플래그가 있어야 하며 루프의 동일한 반복에서 true 및 false가 될 수 있습니다.

나는 다음과 같이 썼을 것이다:

   int y = 0 , shift = 1 ;
   const int max_value = 100 ;
   const int min_value = 0 ;
   for ( int i = rates_total - 1 ; i >= 0 ; i--)
   {
      Label1Buffer[i] = y; 
      y += shift;
       if (y >= max_value || y <= min_value) shift *= - 1 ;
   }
 
Igor Makanu # :

조건이 혼란스럽기 때문에 루프를 한 번 반복할 때 하나의 상태에만 up 플래그가 있어야 하며 루프의 동일한 반복에서 true 및 false가 될 수 있습니다.

나는 다음과 같이 썼을 것이다:

이고르 감사합니다.
 

제대로 하는 방법좀 알려주세요

   for (i=limit;i>= 0 ;i--)
     {
      Label1Buffer[i] = MathRand (); 
      Label2Buffer[i] = Label1Buffer[i+ 1 ]+Label1Buffer[i+ 2 ]+Label1Buffer[i+ 3 ]+Label1Buffer[i+ 4 ]+Label1Buffer[i+ 5 ]; 
     }

추가하려는 모든 요소를 입력하지 않고 5개의 요소를 지정하기만 하면 됩니다.

 
Sergey Zhukov # :

이름을 *.mq4로 바꾸면 모든 것이 정상입니다.

이렇게 컴파일하면 오류가 발생합니다.

나는 실수가 없다


 
MakarFX # :

나는 실수가 없다


나에게는 다음과 같이 보입니다.

이자형

일반적으로 중요하지 않습니다. 도와 주셔서 감사합니다.