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

 

Beyler, lütfen TF d1 \ haftasını koddaki herhangi bir başkasıyla değiştirmeme yardım edin.

H1 veya dakika olarak nasıl değiştirileceğini biliyorum.

m30, m15, m5'e nasıl geçileceğiyle ilgileniyor musunuz?

 //|                                               For__red_r2005.mq4 |
//|                                       Copyright © 2010, PapaYozh |
//|                                                                * |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, PapaYozh"
#property link       "*"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Coral
#property indicator_color2 CornflowerBlue
#property indicator_width1 2
#property indicator_width2 2

// ---- buffers ----
double BuffD[];
double BuffM[];
//+------------------------------------------------------------------+
int init()
{
   SetIndexBuffer ( 0 ,BuffD);
   SetIndexEmptyValue( 0 , EMPTY_VALUE );
   SetIndexStyle( 0 , DRAW_SECTION ,EMPTY,EMPTY);

   SetIndexBuffer ( 1 ,BuffM);
   SetIndexEmptyValue( 1 , EMPTY_VALUE );
   SetIndexStyle( 1 , DRAW_SECTION ,EMPTY,EMPTY);
   
   return ( 0 );
} // init()
//+------------------------------------------------------------------+
int deinit()
{
   return ( 0 );
} // deinit()
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
int start()
{
   int     shift;

   shift = Bars - 1 - IndicatorCounted();
   for ( ; shift> 0 ; shift-- )
   {
       if ( TimeDayOfYear(Time[shift]) != TimeDayOfYear(Time[shift- 1 ]) )
      {
         BuffD[shift]   = Close[shift];
         if ( TimeDayOfWeek(Time[shift- 1 ]) == 1 )
            BuffM[shift]   = Close[shift];
         else
            BuffM[shift]   = EMPTY_VALUE ;
      }
       else
      {
         BuffD[shift]   = EMPTY_VALUE ;
         BuffM[shift]   = EMPTY_VALUE ;
      }
   }
   return ( 0 );
} // start()
//+------------------------------------------------------------------+
 
Göstergeyi bir süre duraklatmam gerekiyor, ancak yardımda belirtildiği gibi Sleep() işlevi özel bir göstergeden çağrılamıyor... Başka yollar var mı?
 
Yevhenii Levchenko :
Göstergeyi bir süre duraklatmam gerekiyor, ancak yardımda belirtildiği gibi Sleep() işlevi özel bir göstergeden çağrılamıyor... Başka yollar var mı?

gösterge değerlerini hesaplamadan OnCalculate() içindeki koşula göre çıkın - en basiti bir onay sayacıdır, bir zamanlayıcı kullanmak biraz daha zordur, göstergelerde çalışır

 
Igor Makanu :

gösterge değerlerini hesaplamadan OnCalculate() içindeki koşula göre çıkın - en basiti bir onay sayacıdır, bir zamanlayıcı kullanmak biraz daha zordur, göstergelerde çalışır

Teşekkür ederim!

Zamanlayıcı ile yaptım. Bu bana daha kolay geldi...

 
Yevhenii Levchenko :

Teşekkür ederim!

Zamanlayıcı ile yaptım. Bu bana daha kolay geldi...

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   static int TickCount = 0 ;
   TickCount--;
   if (TickCount> 0 ) return (rates_total);
   TickCount= 10 ;
 
Igor Makanu :

Statik değişkenler hakkında tamamen unuttuğum bir şey ... Teşekkürler :)

Sıradan bir değişkeni global olarak bildirirseniz, aslında, belirli bir anlamda statik bir değişken gibi mi olacak? Yani programdaki her yerden değişim yapılabiliyor mu?

 

Merhaba.

Söyle bana, lütfen, dinamik bir yapı tipi dizisini referans olarak bir fonksiyona geçirmek mümkün müdür?

Burada, örneğin, struct_name_array[] dizisini işlemek ve orada doldurmak için Func()'a iletin:

 struct StructName { int x;
                   int y;} struct_name_array[];

void Func ( int &x[],
           int &y[])
        {
        }

Mümkünse, transfer tam olarak nasıl resmileştirilir? İşlev parametreleri nasıl biçimlendirilir? C ++ kılavuzlarına göre bir şeyler yolunda gitmiyor.

Teşekkür ederim.

 
Mikhail Sobolev :

Burada, örneğin, struct_name_array[] dizisini işlemek ve orada doldurmak için Func()'a iletin:

 //+------------------------------------------------------------------+
struct StructName
  {
   int                x;
   int                y;
  }
struct_name_array[];
//+------------------------------------------------------------------+
void OnStart ()
  {
   ArrayResize (struct_name_array, 5 );
   for ( int i= 0 ;i< 5 ;i++)
     {
      struct_name_array[i].x = i;
      struct_name_array[i].y = i* 100 ;
     }
   Func(struct_name_array);
   for ( int i= 0 ;i< 5 ;i++)
     {
       printf ( "%s : s[%d].x = %d , s[%d].y = %d" , __FUNCTION__ ,i,struct_name_array[i].x,i,struct_name_array[i].y);
     }
  }
//+------------------------------------------------------------------+
void Func(StructName &s[])
  {
   for ( int i= 0 ;i< ArraySize (s);i++)
     {
       printf ( "%s : s[%d].x = %d , s[%d].y = %d" , __FUNCTION__ ,i,s[i].x,i,s[i].y);
      s[i].x*= 33 ;
      s[i].y*= 12 ;
     }
  }
//+------------------------------------------------------------------+
 

Merhaba!

Aptalca sorularım ile burada zaten çok şey olduğunu anlıyorum, lütfen aşağıdakilere hoşgörü ile davranın ve yine de burada neyin yanlış olduğunu açıklayın:

         if ((op1-lo1)> 50 && (cl1-lo1)< 10 )
        {   Alert ( "VertLine" );
         string obj_name= "VertLine" ;
         datetime time=Time[ 0 ];
         color col = clrGreen ; 
         ObjectCreate ( 0 ,obj_name, OBJ_VLINE , 0 ,time, 0 , 0 , 0 );
         ObjectSetInteger ( 0 ,obj_name, OBJPROP_COLOR ,col);
        }

Uyarı verildi, ancak dikey çizgi yok. Sebebi ne?

 
novichok2018 :

Merhaba!

Aptalca sorularım ile burada zaten çok şey olduğunu anlıyorum, lütfen aşağıdakilere hoşgörü ile davranın ve yine de burada neyin yanlış olduğunu açıklayın:

Uyarı verildi, ancak dikey çizgi yok. Sebebi ne?

Yine de, forumun çekiciliği bile şimdiden anlamaya ivme kazandırıyor. Anlaşılmış gibi görünüyor - çizgi çizildi, ancak sadece bir tane. Başkalarını çizmek için bunu silmeniz gerekir.