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

 

merhaba, vadeli işlemler için son kullanma tarihini almak istiyorum

EXPIRATION=(tarihsaat)SymbolInfoInteger(Symbol(),SYMBOL_EXPIRATION_TIME);

A verir 1970 01 01 00 00

 

Tünaydın! Lütfen birisine söyleyin, grafikte belirli bir noktada fareyi tıkladığınızda bu noktada Expert Advisor'ın nasıl sipariş açmasını sağlayın.Sadece bir script veya Expert Advisor yüklediğinizde bir örnek var, ardından NormalizeDouble(WindowPriceOnDropped) (), Rakamlar); fare işaretçisini tanımlar, . Ancak soru şu ki, herhangi bir zamanda çalışan bir Uzman Danışmandan yapılabilir. Böyle bir olasılık var mı?

ChartGetInteger(0,CHART_EVENT_MOUSE_MOVE,0,1)) işlevini görüyorum, ancak hala nasıl kullanılacağını anlamıyorum, fare işaretçisinin nereye (hangi noktaya) yönlendirildiğini belirlemek mümkün mü?

 
Basicprof :

Tünaydın! Lütfen birisine söyleyin, grafikte belirli bir noktada fareyi tıkladığınızda bu noktada Expert Advisor'ın nasıl sipariş açmasını sağlayın.Sadece bir script veya Expert Advisor yüklediğinizde bir örnek var, ardından NormalizeDouble(WindowPriceOnDropped) (), Rakamlar); fare işaretçisini tanımlar, . Ancak soru şu ki, herhangi bir zamanda çalışan bir Uzman Danışmandan yapılabilir. Böyle bir olasılık var mı?

ChartGetInteger(0,CHART_EVENT_MOUSE_MOVE,0,1)) işlevini görüyorum, ancak hala nasıl kullanılacağını anlamıyorum, fare işaretçisinin nereye (hangi noktaya) yönlendirildiğini belirlemek mümkün mü?

"CHARTEVENT_CLICK" tıklama etkinliğini kullanın

Kod parçaları buradan alınabilir

 
Vitaly Muzichenko :

"CHARTEVENT_CLICK" tıklama etkinliğini kullanın

Kod parçaları buradan alınabilir


Çok teşekkürler !!!

 

Başka bir soru: Danışman başlatıldığında fonksiyonları danışmandan kütüphaneye aktardım, hemen çöküyor ve mesajlarda terminalin kütüphaneyi yükleyemediğini gösteriyor 'ATP_funkcii.mq4::DrawLABEL' çağrılamıyor, 'ATP_funkcii.mq4' yüklü değil

Sorun nasıl çözülür?

Bir şeyi fark ettim! Program düzenleyicide danışman ve kitaplık dosyaları görünür, ancak nedense bilgisayardaki program dosyalarında yoktur. Yalnızca danışman dosyası.

 
Merhaba! Lütfen bana bir dizi öğesinin indeksini bilerek, bir sonraki dizi öğesinin indeksini nasıl bulacağını söyle?
 
vikzip :
Merhaba! Lütfen bana bir dizi öğesinin indeksini bilerek, bir sonraki dizi öğesinin indeksini nasıl bulacağını söyle?

Herhangi bir dizinin dizini her zaman sıfırdan başlar. Yani, dizi boyutu 1 ise, bu hücrenin dizini 0 olacaktır.

5 sayısını bilmek, 6 sayısını nasıl bulabilir?

6 sayısını bilmek, sadece 8 rakam olduğunu bilerek 7 sayısını nasıl buluyor?

7 dizinini bilmek, dizinin boyutunun = 8 olduğunu bilerek bir sonraki dizini nasıl bulabilir?

 

Merhaba, yardım istiyorum. Gösterge okumaları güncellenmiyor, her tikte güncellenmesini istiyorum.


 //+------------------------------------------------------------------+
//|                                             alx_RSI_BANDS_MA.mq4 |
//|                                                       alx_Babon |
//+------------------------------------------------------------------+
#property copyright "alx_Babon"
#property link        "babon82@gmail.com"

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Yellow
#property indicator_color2 DarkBlue
#property indicator_color3 White
#property indicator_color4 White
#property indicator_color5 White
//---- input parameters
extern int        RSI_Per= 8 ;
extern int        MA_Per= 8 ;
extern int        Bands_Per= 20 ;
extern int        SmoothType= 0 ;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double Sostoyanie;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   string type;
   switch (SmoothType)
   {
   case MODE_EMA : type= "EMA" ; break ;
   case MODE_SMMA : type= "SMMA" ; break ;
   case MODE_LWMA : type= "LWMA" ; break ;
   default : type= "LWMA" ;SmoothType= 0 ; break ; // если ни один вариант не подошел
   }

   SetIndexStyle ( 0 , DRAW_LINE , 0 , 1 );
   SetIndexBuffer ( 0 ,ExtMapBuffer1); //Свойства RSI
   SetIndexLabel ( 0 , "RSI(" +RSI_Per+ ")" );
   SetIndexStyle ( 1 , DRAW_LINE , 0 , 2 );
   SetIndexBuffer ( 1 ,ExtMapBuffer2); //Свойства MA
   SetIndexLabel ( 1 , "MA (" +MA_Per+ "), " +type);
   SetIndexStyle ( 2 , DRAW_LINE , 2 , 1 );
   SetIndexBuffer ( 2 ,ExtMapBuffer3); //Свойства Bands
   SetIndexLabel ( 2 , "Bands (" +Bands_Per+ ")" );
   SetIndexStyle ( 3 , DRAW_LINE , 2 , 1 );
   SetIndexBuffer ( 3 ,ExtMapBuffer4); //Свойства Bands
   SetIndexLabel ( 3 , "Bands (" +Bands_Per+ ")" );
   SetIndexStyle ( 4 , DRAW_LINE , 2 , 1 );
   SetIndexBuffer ( 4 ,ExtMapBuffer5); //Свойства Bands
   SetIndexLabel ( 4 , "Bands (" +Bands_Per+ ")" );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int     counted_bars= IndicatorCounted ();
   int limit,cnt;
   int cnt_rsi,cnt_bb,cnt_ma;
   if (counted_bars== 0 ) 
      {
      limit= Bars -RSI_Per- 1 ;
       for (cnt=limit;cnt>= 0 ;cnt--)
         {
          ExtMapBuffer1[cnt]= iRSI ( NULL , 0 ,RSI_Per, PRICE_CLOSE ,cnt);
         }
       for (cnt= 1 ;cnt<= Bars ;cnt++)
         {
          ExtMapBuffer6[cnt]= iMA ( NULL , 0 ,MA_Per, 0 ,SmoothType, PRICE_CLOSE ,cnt);
                
         }
       for (cnt=limit-MA_Per;cnt>= 0 ;cnt--)
         {
          ExtMapBuffer2[cnt]= iMAOnArray (ExtMapBuffer1, 0 ,MA_Per, 0 ,SmoothType,cnt);
         }          
       for (cnt=limit-Bands_Per;cnt>= 0 ;cnt--)
         {
          ExtMapBuffer3[cnt]= iBandsOnArray (ExtMapBuffer1, 0 ,Bands_Per, 2 , 0 , MODE_LOWER ,cnt);
         }
       for (cnt=limit-Bands_Per;cnt>= 0 ;cnt--)
         {
          ExtMapBuffer4[cnt]= iBandsOnArray (ExtMapBuffer1, 0 ,Bands_Per, 2 , 0 , MODE_UPPER ,cnt);
         }  
       for (cnt=limit-Bands_Per;cnt>= 0 ;cnt--)
         {
          ExtMapBuffer5[cnt]= iBandsOnArray (ExtMapBuffer1, 0 ,Bands_Per, 2 , 0 , MODE_MAIN ,cnt);
         } 
         
      }
      cnt_rsi=limit;
      cnt_bb=limit-Bands_Per;
      cnt_ma=limit-MA_Per;
       Comment (
               "RSI (" ,RSI_Per, ")=" ,ExtMapBuffer1[ 1 ], "\n" ,
           "Bolinger (" ,Bands_Per, ")=" ,ExtMapBuffer5[ 1 ], "\n" ,
                 "MA (" ,MA_Per, ")=" ,ExtMapBuffer2[ 1 ], "\n"
                 //,"MA CNT (",MA_Per,")=",ExtMapBuffer6[8],"\n"
                 //,"CNT_MA (",cnt_ma,")"
             );
//----
       //ObjectCreate("Arrow", OBJ_ARROW, 0, 0, 5);
       //ObjectSet("Arrow",OBJPROP_ARROWCODE,OBJ_PERIOD_M15 | OBJ_PERIOD_H1);
       //ObjectSetText("PivotText", "Pivot Point (DJ)", fontsize, "Arial", 
                 //colorPivot);
//----
   return ( 0 );
  }
//+---------------------------------------

 
Artyom Trishkin :

Herhangi bir dizinin dizini her zaman sıfırdan başlar. Yani, dizi boyutu 1 ise, bu hücrenin dizini 0 olacaktır.

5 sayısını bilmek, 6 sayısını nasıl bulabilir?

6 sayısını bilmek, sadece 8 rakam olduğunu bilerek 7 sayısını nasıl buluyor?

7 dizinini bilmek, dizinin boyutunun = 8 olduğunu bilerek bir sonraki dizini nasıl bulabilir?


Detaylı açıklama için teşekkürler)))) Yani şöyle yazmak doğru olur


 double Mas[];                                                                 //массив для упорядочивания всех ордеров
   for ( int i= 0 ; i< OrdersTotal (); i++)                                           // Цикл перебора ордер
   {
     if ( OrderSelect (i, SELECT_BY_POS ))                                           // Если есть следующий
     {
       Price= OrderOpenPrice ();
       ArrayResize (Mas, i+ 1 );                                                 //задан размер массива
       Mas [i] = Price; 
       ArraySort (Mas, WHOLE_ARRAY , 0 , MODE_DESCEND );                           // Теперь цены открытия упорядочены по убыванию
     }
   } 
   if ( ArraySize (Mas)> 1 )                                                         //Если массив не пустой
   
         { 
         int Blizko2= ArrayBsearch (Mas, Ask , WHOLE_ARRAY , 0 , MODE_DESCEND );           //Определен индекс ближайшего большего по значению елемента к текущей цене
             PriceBlizko2 = Mas[Blizko2];                                       // Цена выбранного ордера

       int Blizko1; 

Mas[Blizko1]= Blizko2+ 1 ;      Это верно??

                                                       //Определен индекс ближайшего меньшего по значению елемента к текущей цене         PriceBlizko1=Mas[Blizko1];
Lütfen bana söyle?

 
vikzip :

Detaylı açıklama için teşekkürler)))) Yani şöyle yazmak doğru olur.


Lütfen bana söyle?

Bir dizi öğesinin her eklenmesinden sonra diziyi sıralamaya gerek yoktur. Daha iyi sıralama

 double Mas[];                                                                 //массив для упорядочивания всех ордеров
   for ( int i= 0 ; i< OrdersTotal (); i++)                                           // Цикл перебора ордер
   {
     if ( OrderSelect (i, SELECT_BY_POS ))                                           // Если есть следующий
     {
       Price= OrderOpenPrice ();
       ArrayResize (Mas, i+ 1 );                                                 //задан размер массива
       Mas [i] = Price; 
     }
   } 
   if ( ArraySize (Mas)> 1 )                                                         //Если массив не пустой
   
         { 
       ArraySort (Mas, WHOLE_ARRAY , 0 , MODE_DESCEND );                           // Теперь цены открытия упорядочены по убыванию
         int Blizko2= ArrayBsearch (Mas, Ask , WHOLE_ARRAY , 0 , MODE_DESCEND );           //Определен индекс ближайшего большего по значению елемента к текущей цене
             PriceBlizko2 = Mas[Blizko2];                                       // Цена выбранного ордера

       int Blizko1; 
        Mas[Blizko1]= Blizko2+ 1 ;     Это верно??
                                                       //Определен индекс ближайшего меньшего по значению елемента к текущей цене
        PriceBlizko1=Mas[Blizko1];

yardımdan

Geri dönüş değeri

Bulunan ilk öğenin dizinini döndürür. Aranan değer bulunamazsa, arama değerinin bulunduğu öğelerin en yakın alt değerinin dizinini döndürür .

Mas[Blizko2] dizideki bir sonraki en küçük değerdir.

Neden: