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

 

Benzer nesnelere sahip büyük bir programım var. Birçok türü kastediyorum. Ancak programın çeşitli modüllerinde tekrarlanırlar. Ve loglarda örneğin test tamamlandıktan sonra bana silinmemiş xxx nesne yazıyor. Ve böylece birkaç tür için.

Nesneleri silmediğim yeri nasıl bulabilirim? Bunun için herhangi bir araç var mı?

 
mbjen :

Benzer nesnelere sahip büyük bir programım var. Birçok türü kastediyorum. Ancak programın çeşitli modüllerinde tekrarlanırlar. Ve loglarda örneğin test tamamlandıktan sonra bana silinmemiş xxx nesne yazıyor. Ve böylece birkaç tür için.

Nesneleri silmediğim yeri nasıl bulabilirim? Bunun için herhangi bir araç var mı?

1930 yapı hatası .

 
Test EA bir şekilde fiyatın altında bir SATIN ALMA DURAĞI açtı! Şimdi siparişi manuel olarak bile kapatamıyorum. Bu nasıl mümkün olabilir?
Dosyalar:
 

MQl5'in OpenCL'yi desteklediğini öğrenince şaşırdım.

Gerçekten bu süre zarfında hiç kimse robotlar için bir optimize edici yazmadı, böylece milyonlarca çalıştırma yüzyıllarca değil, en azından yıllarca sürecek mi? :)

 
Igor Makanu :

bu, sunduğunuz kodun her bir işaretine güvendiğiniz ve SredRazmax ve SredRazmin değişkenlerini başlatmadığınız anlamına gelir.

değişkenlerin kullanımdan önce başlatılması iyi bir alışkanlıktır, üniversiteler böyle öğretir, hata arama süresini kısaltır ;)

Onları başlangıçta başlattım ve yorumda, bir eleman-eleman dizisi de görüntüleniyor (0'ın değişip değişmediğini kontrol etmek için formülün çalışması gerekir,) İşte tam kod:

 //+------------------------------------------------------------------+
//|                                                           01.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property indicator_chart_window

#property indicator_buffers 1
//#property indicator_color1 Red
//#property indicator_width1 1

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

extern int ExtDepth= 12 ;
extern int ExtDeviation= 5 ;
extern int ExtBackstep= 3 ;
extern int nn= 30 ;

int shift, ww= 0 ;
double zz, SredRazmax, SredRazmin, Sredn; 
double HZZ[];


int OnInit ()
  {
//--- indicator buffers mapping
     SetIndexBuffer ( 0 , HZZ);
 // SetIndexStyle(0, DRAW_SECTION);
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   for (shift = 0 ; shift <= Bars - 1 ; shift++)
  {
      zz = iCustom ( NULL , 0 , "ZigZag" , ExtDepth, ExtDeviation, ExtBackstep, 0 , shift);
           if (zz > 0.0 )
           {
           HZZ[ww]=zz;
           ww++;          
           }
  }
   
  
       for (ww= 0 ;ww<=nn;ww++)
       {
       if (HZZ[ww]>HZZ[ww+ 1 ]){SredRazmax += HZZ[ww];}     
       if (HZZ[ww]<HZZ[ww+ 1 ]){SredRazmin += HZZ[ww+ 1 ];}
      
       
   Comment ( "Средний размах = " , (SredRazmax-SredRazmin)/nn, "," ,HZZ[ 0 ], "," ,HZZ[ 1 ], "," ,HZZ[ 2 ], "," ,HZZ[ 3 ], "," ,HZZ[ 4 ]); 
        }      
   
//---------------------------------------------+
//расчет среднего значения           
//---------------------------------------------+      

   //    for(ww=0;ww<=nn;ww++){
   //    if(HZZ[ww]>HZZ[ww+1]){Sredn += HZZ[ww]-HZZ[ww+1];}     
   //    if(HZZ[ww]<HZZ[ww+1]){Sredn += HZZ[ww+1]-HZZ[ww];}
       
 // Comment("Средний размах = ", Sredn,",",HZZ[0],",",HZZ[1],",",HZZ[2],",",HZZ[3],",",HZZ[4]); 

            
         
     
       
//--- return value of prev_calculated for next call
     return ( 0 );

  }
 
Artyom Trishkin :

1930 yapı hatası .

Bu ne? MT4'üm var. 1090 oluşturun.

 
mbjen :

Bu ne? MT4'üm var. 1090 oluşturun.

new ile oluşturulan bir nesne, bir dizi nesneye eklenmeli veya OnDeinit() içinde bağımsız olarak kaldırılmalıdır.
 
Dmitry Belov :

Bunları başlangıçta başlattım ve yorumda tek tek bir dizi görüntüleniyor (0'ın değişip değişmediğini kontrol etmek için formülün çalışması gerekir) İşte tam kod:

Onları ne başlangıçta ne de başka bir yerde başlatmadın, sadece ilan ettin

Kullanmadan önce yazdım, yani. SredRazmax, SredRazmin, Sredn değişkenleriniz dizi değerlerinin toplamıysa, toplamı doğru bir şekilde hesaplamak için değişkeni sıfırlamanız ve ardından dizi öğelerini eklemeniz ve bunları bu değişkende saklamanız gerekir.

onlar.

 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[])
  {
//---
    SredRazmax = 0.0 ;
    SredRazmin = 0.0 ;
    Sredn = 0.0 ;
    .....

Peki, hakkında bir sorunuz olacak ikinci şey, göstergede, OnCalculate() her tik olarak adlandırılacaktır , bu da her tikte ZigZag köşelerini sürekli olarak sayacağınız anlamına gelir, yani. saniyede yaklaşık 40-60 kez

 
Artyom Trishkin :
new ile oluşturulan bir nesne, bir dizi nesneye eklenmeli veya OnDeinit() içinde bağımsız olarak kaldırılmalıdır.

Aydınlanma için teşekkürler. Ama en azından sorumu okumalısın.

 
mbjen :

Aydınlanma için teşekkürler. Ama en azından sorumu okumalısın.

Okudum ve cevapladım.