Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 560

 
Leo59 :
Bir uzmanım var, deinit() dosyasında *.csv dosyasına günlük dosyasına 98496 satır yazıyor
Expert Advisor test cihazında bittiğinde neden farklı şekilde boşaltılıyor:
- test tarihinin sonunda boşaltma durumunda, her şey yolunda (98496 satır)
- "Durdur" düğmesiyle boşaltma durumunda, verilerin yalnızca %10'u.
Sorunun ne olabileceğini kim bilebilir?


Kullanıcının kendisi Expert Advisor'ı boşaltması durumunda Expert Advisor'ın zorunlu olarak feshedilmesi.

verileri doğrudan başlangıçta yazmak daha iyidir.

 
Roman. :

Arkadaşlar bu uyarı nasıl yorumlanır?

Sayesinde.


fonksiyon bir değişkene ayarlanmalıdır

örneğin bool closee=SiparişKapat...........

  • 'OrderSelect' dönüş değeri kontrol edilmelidir
  • 'OrderDelete' dönüş değeri kontrol edilmelidir
  • 'OrderSend' dönüş değeri kontrol edilmelidir
  • 'OrderClose' dönüş değeri kontrol edilmelidir
  • 'OrderModify' dönüş değeri kontrol edilmelidir


bu tür uyarılardan kaçınmak için değişkene dönüşü açıkça belirtmelisiniz
örneğin şöyle:
  • bool select1=SiparişSeç..........
  • bool delete1= SiparişSil ..........
  • bool close1= SiparişKapat ..........
  • bool change1= OrderModify ..........
  • int send1= SiparişGönder ..........
 
Tünaydın. Söyleyin bana, OBJ_TEXT grafik nesnesinin grafiğindeki genişliği / yüksekliği programlı olarak belirlemek veya hesaplamak mümkün mü?
 
alxm :
Tünaydın. Söyleyin bana, OBJ_TEXT grafik nesnesinin grafiğindeki genişliği / yüksekliği programlı olarak belirlemek veya hesaplamak mümkün mü?

karakter sayısı, + yazı tipi boyutu , bunun gibi bir şey mi?
 
cipsi :

Biliniyorsa ilk açık siparişin OrderOpenPrice nasıl bulunur:

1.Sembol

2.BUY siparişi birden çoğa açılabilir

3. Büyü

4. Siparişler arasındaki farklar, muhtemelen bilete göre - en küçük bileti bulun.


 double PriceOpenFirstPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t== 0 ;
   double    r= 0 ;
   int       i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (t> OrderOpenTime () || t== 0 ) {
                t= OrderOpenTime ();
                r= OrderOpenPrice ();
              }
            }
          }
        }
      }
    }
  }
   return (r);
}
 
psdmaster :
Uzman oluşturma hakkında bir makale okudum: https://book.mql4.com/en/samples/expert

Bir çubukta nasıl bir anlaşma açabileceğinizi ve bir sonraki göründüğünde nasıl kapatabileceğinizi söyleyin.


1. Bir anlaşma açarken barın saatini hatırlarsınız

örneğin şöyle:

dış başlangıç:

 int timeopen;

bir anlaşmayı açtığınız başlangıçta:

 timeopen= Time [ 0 ];

Bu şekilde kapanış:

 if (timeopen!= Time [ 0 ]) OrderClose ............
 
Zolotai :
Lütfen bana söyle. Döngüler olmadan belirli bir sembol için açık siparişlerin sayısını nasıl öğrenebilirim ...


bir döngü olmadan.

 

Canım, yardımına ihtiyacım var.

EA'yı gösterge ile optimize ediyorum, gösterge kodu aşağıdadır.

Optimizasyon yavaş, göstergenin yeni bir barda yeniden hesaplanması için EA'da bir kod yaptım, bu pek uygun değil.

Lütfen gösterge koduna bakın, yeniden hesaplamayı daha hızlı hale getirmek için içinde neler yapılabilir.

 #property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Lime
#property indicator_color2 Yellow
#property indicator_color3 Red
#property indicator_color4 Aqua

//--- input parameters
extern int        Period_MA_1= 14 ;
extern int        p2          = 7 ;
extern int        p3          = 5 ;
extern int        p4          = 3 ;
extern int Limit= 70 ;
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle ( 0 , DRAW_NONE );
   SetIndexBuffer ( 0 ,ExtMapBuffer1);
   SetIndexStyle ( 1 , DRAW_LINE );
   SetIndexBuffer ( 1 ,ExtMapBuffer2);
   SetIndexStyle ( 2 , DRAW_LINE );
   SetIndexBuffer ( 2 ,ExtMapBuffer3);
   SetIndexStyle ( 3 , DRAW_LINE );
   SetIndexBuffer ( 3 ,ExtMapBuffer4);
   IndicatorDigits ( Digits + 1 );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars= IndicatorCounted (),
   i,limit1,limit2,limit3,limit4;
   double impuls;
   if (counted_bars< 0 ) return (- 1 );
   if (counted_bars> 0 ) counted_bars--;
 
   limit1= Bars -counted_bars- 1 ;
   if (limit1>Limit && Limit> 0 ) limit1=Limit;
   limit2=limit1;
   limit3=limit2;
   limit4=limit3;
   if (limit1> 0 ) 
     {
      limit1= 500 -Period_MA_1- 1 ;
      limit2=limit1-p2;
      limit3=limit2-p3;
      limit4=limit3-p4;
     }
   for (i=limit1;i>= 0 ;i--) {ExtMapBuffer1[i]= Close [i]- Close [i+Period_MA_1];}
   for (i=limit2;i>= 0 ;i--) {ExtMapBuffer2[i]= iMAOnArray (ExtMapBuffer1, 0 , p2, 0 , MODE_EMA ,i);}
   for (i=limit3;i>= 0 ;i--) {ExtMapBuffer3[i]= iMAOnArray (ExtMapBuffer2, 0 , p3, 0 , MODE_EMA ,i);}
   for (i=limit4;i>= 0 ;i--) {ExtMapBuffer4[i]= iMAOnArray (ExtMapBuffer3, 0 , p4, 0 , MODE_EMA ,i);}

   return ( 0 );
  }
 

bana mt4'teki sınıfları nerede okuyacağımı söyle?

yardımda okuyun, ancak bu satırların ne anlama geldiğini açıklamıyor

CArray::CArray( void ) : m_step_resize( 16 ),
                       m_data_total( 0 ),
                       m_data_max( 0 ),
                       m_sort_mode(- 1 )
  {
  }

değişken başlatma hakkında nerede okunur ...

 
Vladon :


fonksiyon bir değişkene ayarlanmalıdır

örneğin bool closee=SiparişKapat...........

  • 'OrderSelect' dönüş değeri kontrol edilmelidir
  • 'OrderDelete' dönüş değeri kontrol edilmelidir
  • 'OrderSend' dönüş değeri kontrol edilmelidir
  • 'OrderClose' dönüş değeri kontrol edilmelidir
  • 'OrderModify' dönüş değeri kontrol edilmelidir


bu tür uyarılardan kaçınmak için değişkene dönüşü açıkça belirtmelisiniz
örneğin şöyle:
  • bool select1=SiparişSeç..........
  • bool delete1= SiparişSil ..........
  • bool close1= SiparişKapat ..........
  • bool change1= OrderModify ..........
  • int send1= SiparişGönder ..........


Sayesinde. Uyarı olmadan çalıştı:


Referans kitabından bir örnekle yönlendirildim :-)


SiparişSil

Daha önce verilmiş bekleyen bir emrin kaldırılmasını gerçekleştirir.

bool SiparişSil (
int bilet _ // sipariş numarası
renk ok_renk // Renk
);

Seçenekler

bilet

[içinde] Siparişin benzersiz seri numarası.

ok_renk

[içinde] Grafikteki okun rengi. Parametre yoksa veya değeri CLR_NONE'a eşitse, ok grafikte görüntülenmez.

Geri dönüş değeri

Başarı durumunda true, başarısızlık durumunda false döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmalısınız.

Misal:

if ( Sor >var1)
{
OrderDelete (sipariş_bileti);
dönüş (0);
}