MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1747

 
Andrey Sokolov # :

Teşekkürler.

Aynı isimlerle farklı işlevler ortaya çıkıyor. Ve böylece yapmamak için farklı sayıda parametreyi aktarmak mümkün oldu mu?

Mümkün, ancak belirtildiğinden daha az, parametre düğmesinin bir örneği çoktur, ancak
 //+------------------------------------------------------------------+ 
//| Создает кнопку                                                   | 
//+------------------------------------------------------------------+ 
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 )                 // приоритет на нажатие мышью 

Minimum parametre ile bile çizer

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

Selamlar. Lütfen yapılıp yapılamayacağını ve yapılabiliyorsa nasıl olduğunu bana bildirin.

Yazılan fonksiyonlara farklı sayıda parametre iletebileceğiniz şekilde kendi fonksiyonlarınızı yazmak mümkün müdür?

Örneğin bu fonksiyonda olduğu gibi 4 veya 5 parametre iletebilirsiniz.


 /********************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****************************/

Sonuç

 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
 

Lütfen yardım edin, neyin yanlış olduğunu anlayamıyorum

   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;

Tek tip bir dalga istedim, ama nedense "0" iki kez gidiyor


 

NormalizeDouble neden bazen başarısız oluyor?

Diziyi dergiye yazdırıyorum, belirtilen 1 ondalık basamağa kadar neredeyse tüm çift değerler ve 15 karakterli 3-4 değer (yüz üzerinden) gösteriliyor.

...

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 # :

Lütfen yardım edin, neyin yanlış olduğunu anlayamıyorum

Tek tip bir dalga istedim, ama nedense "0" iki kez gidiyor


koşullar kafa karıştırıcı olduğundan, döngünün bir yinelemesinde yukarı bayrağı yalnızca bir durumda olmalıdır ve döngünün aynı yinelemesinde doğru olabilir ve yanlış olabilirsiniz

Ben şöyle yazardım:

   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 # :

koşullar kafa karıştırıcı olduğundan, döngünün bir yinelemesinde yukarı bayrağı yalnızca bir durumda olmalıdır ve döngünün aynı yinelemesinde doğru olabilir ve yanlış olabilirsiniz

Ben şöyle yazardım:

Çok teşekkürler İgor.
 

Lütfen bana nasıl doğru yapacağımı söyle

   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 ]; 
     }

eklemek istediğim tüm öğeleri girmeyin, sadece 5 öğe belirtin

 
Sergey Zhukov # :

*.mq4 olarak yeniden adlandırırsanız, her şey yolunda demektir.

Bu şekilde derlemek hatalara neden olacaktır.

hiç hatam yok


 
MakarFX # :

hiç hatam yok


Benim için şöyle görünüyor:

e

Genel olarak, tamam, kritik değil. Yardım için teşekkürler.