Hatalar, hatalar, sorular - sayfa 1697

 
Karputov Vladimir :
Print(MQLInfoString(MQL_PROGRAM_NAME)); göstergenin kısa adını döndürür. Kısa ad verilmezse, tam ad döndürülür.
Teşekkür ederim.
 
Vladimir Pastushak :

Teşekkür ederim.

Aleksey, örneğiniz işe yaramıyor, aynı şekilde, mirasçılarda düşmemesi gereken ebeveyn yöntemleri düşüyor.


Böyle olmamalı, kodu atabilir misin?

Üst öğede ve genelde korunan veriler, korumalı-devralma olduğunda korunacaktır .

	          
 
  1. Göstergeyi NAKED grafiğine ellerimizle kuruyoruz
     #property indicator_separate_window
    #property indicator_buffers 1
    #property indicator_plots    1
    
    double Buffer[];
    
    int handle = INVALID_HANDLE ;
    
    void OnInit ()
    {
      :: SetIndexBuffer ( 0 , Buffer, INDICATOR_DATA );
      
      handle = ChartIndicatorGet ( 0 , 1 , ChartIndicatorName ( 0 , 1 , 0 ));  
    }
    
    #define TOSTRING(A) #A + " = " + ( string )A + "\n"
    
    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[] )
    {
       if (handle != INVALID_HANDLE )
      {
        Buffer[rates_total - 1 ] = MathRand ();
        
         double BufferCopy[];
        
         if ( CopyBuffer (handle, 0 , 0 , 1 , BufferCopy) > 0 )
           Print (TOSTRING(BufferCopy[ 0 ]) + TOSTRING(Buffer[rates_total - 1 ]));
      }
      
       return (rates_total);
    }
  2. Göstergeyi tablodan elle kaldırıyoruz.
  3. Günlükte, göstergenin çalışmaya devam ettiğini görüyoruz. Terminaldeki tüm çizelgeleri kapatabilirsiniz, ancak yine de çalışacaktır. Ve elbette yardımcı olmayacak
     void OnDeinit ( const int Reason )
    {
       if (handle != INVALID_HANDLE )  
         IndicatorRelease (handle);
      
       return ;
    }
  4. Terminalin yeniden başlatılması, göstergenin ilerlemesini durdurur.
  5. Boşta bu şekilde kaç gösterge yapılabilir ve bizde bunlarla ilgili ne bir söylenti ne de bir ruhumuz var?! Hiç kontrol yok.
 
fxsaber :
  1. Göstergeyi NAKED grafiğine ellerimizle kuruyoruz
  2. Göstergeyi tablodan elle kaldırıyoruz.
  3. Günlükte, göstergenin çalışmaya devam ettiğini görüyoruz. Terminaldeki tüm çizelgeleri kapatabilirsiniz, ancak yine de çalışacaktır.
  4. Terminalin yeniden başlatılması, göstergenin ilerlemesini durdurur.
  5. Bu kadar boş yere bu kadar gösterge yapılabilir de bizde bunlara dair ne bir söylenti, ne de bir ruh yok?! Hiç kontrol yok.

#define ve :: ile kodlar okunamıyor ve görüntülenemiyor

 

Lütfen kodları genel kabul görmüş MQL5 tarzında yeniden yazın.

 
fxsaber :
  1. Göstergeyi NAKED grafiğine ellerimizle kuruyoruz
  2. Göstergeyi tablodan elle kaldırıyoruz.
  3. Günlükte, göstergenin çalışmaya devam ettiğini görüyoruz. Terminaldeki tüm çizelgeleri kapatabilirsiniz, ancak yine de çalışacaktır.
  4. Terminalin yeniden başlatılması, göstergenin ilerlemesini durdurur.
  5. Boşta bu şekilde kaç gösterge yapılabilir ve bizde bunlarla ilgili ne bir söylenti ne de bir ruhumuz var?! Hiç kontrol yok.
_StopFlag bayrak kontrolü eklemek yardımcı olmaz mı?
 
Karputov Vladimir :

#define ve :: ile kodlar okunamıyor ve görüntülenemiyor

 

Lütfen kodları genel kabul görmüş MQL5 tarzında yeniden yazın.

Bu, MQL5'in tarzıdır. Lütfen #define nedir ve :: nedir öğrenin.
 
Alexey Kozitsyn :
_StopFlag bayrak kontrolü eklemek yardımcı olmaz mı?
Ve nereye ekleneceği ve en azından teorik olarak nasıl yardımcı olabileceği. Bu bir terminal hatasıdır. Ve ciddi bir böcek. Çünkü şanslıydım - günlükte göstergenin çalıştığını görüyorum. Ve günlüklere çıktısı olmayan bu tür kaç gösterge terminalde sürülür ve onlar hakkında hiçbir şey bilmiyorsunuz. Ancak konular gündeme geldi, ancak CPU'm neden boş bir terminale bu kadar yüklendi?
 
fxsaber :
Bu, MQL5'in tarzıdır. Lütfen #define nedir ve :: nedir öğrenin.
Bundan bahsetmiyorum. "::" örneklerinizde hiç gerekli değil - belki bu sizin alışkanlığınızdır, ancak orada hiç gerekli değildir. Ve #defane olmadan kod normal şekilde yazılır. Sadece yeniden yazmayı deneyin - kod temiz olacak - belki bir şey hemen görünür hale gelecektir.
 
Karputov Vladimir :
Bundan bahsetmiyorum. "::" örneklerinizde hiç gerekli değil - belki bu sizin alışkanlığınızdır, ancak orada hiç gerekli değildir. Ve #defane olmadan kod normal şekilde yazılır. Sadece yeniden yazmayı deneyin - kod temiz olacak - belki bir şey hemen görünür hale gelecektir.

Sadece bir yerde "::" vardı. Ve sıfırdan kod yazmıyorum. Kural olarak, kodlarımdan bir şeyler çıkarırım. Burada :: biri kopyala-yapıştır yoluyla yoluna devam etti. Hiç dikkat etmem ama senin için daha kolay olduğu için kaldırdım.

Ama #define kaldır - temelde hayır. Kodun %99'u onsuz yazılabilir. Bu onu kaldırmak için bir sebep değil.

Ve #define olmadan İMKANSIZ olduğunda %1 (koşullu) vardır!

 
fxsaber :

Sadece bir yerde "::" vardı. Ve sıfırdan kod yazmıyorum. Kural olarak, kodlarımdan bir şeyler çıkarırım. Burada :: biri kopyala-yapıştır yoluyla yolunu kaybetti. Hiç dikkat etmem ama senin için daha kolay olduğu için kaldırdım.

Ama #define kaldır - temelde hayır. Kodun %99'u onsuz yazılabilir. Bu onu kaldırmak için bir sebep değil.

Ve #define olmadan İMKANSIZ olduğunda %1 (koşullu) vardır!

Arabelleği kopyalamayı reddederseniz:

 //+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots    1

double Buffer[];

int handle= INVALID_HANDLE ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit ()
  {
   SetIndexBuffer ( 0 ,Buffer, INDICATOR_DATA );

   handle= ChartIndicatorGet ( 0 , 1 , ChartIndicatorName ( 0 , 1 , 0 ));
  }

#define TOSTRING(A) #A + " = " + ( string )A + "\n"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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[])
  {
   if (handle!= INVALID_HANDLE )
     {
      Buffer[rates_total- 1 ]= MathRand ();

       double BufferCopy[];
       Print ( __FUNCTION__ );
       //if(CopyBuffer(handle,0,0,1,BufferCopy)>0)
       //   Print(TOSTRING(BufferCopy[0])+TOSTRING(Buffer[rates_total-1]));
     }

   return (rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int Reason)
  {
   Print ( "#1 OnDeinit" );
   if (handle!= INVALID_HANDLE )
     {
       Print ( "#2 OnDeinit" );
       IndicatorRelease (handle);
       Print ( "#3 OnDeinit" );
     }
   Print ( "#4 OnDeinit" );
   return ;
  }
//+------------------------------------------------------------------+

daha sonra gösterge işini başarıyla tamamlar

 2016.09 . 23 12 : 11 : 12.655 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 12.737 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 12.737 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 12.737 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 12.747 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 13.406 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 13.406 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 13.406 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 14.794 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 15.747 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 16.936 2 (SBRF- 12.16 ,M1)       OnCalculate
2016.09 . 23 12 : 11 : 19.339 2 (SBRF- 12.16 ,M1)       # 1 OnDeinit
2016.09 . 23 12 : 11 : 19.339 2 (SBRF- 12.16 ,M1)       # 2 OnDeinit
2016.09 . 23 12 : 11 : 19.339 2 (SBRF- 12.16 ,M1)       # 3 OnDeinit
2016.09 . 23 12 : 11 : 19.339 2 (SBRF- 12.16 ,M1)       # 4 OnDeinit