Hatalar, hatalar, sorular - sayfa 1988

 
Andrey Dik :


Evet, evet, işte bunlar:

2017.09.05
2017.09.05 11:42:04 Kaydedici günlüğü temizlendi
2017.09.05 00:00:00.000 Sunucu MetaTester 5 durduruldu

Orada başka bir şey yok.

Öyleyse neden test cihazı günlüklerinde Print() işlevi hakkında tam bilgi yok?

Disk alanını boşaltın. Diskte 500 meg'den az kaldıysa günlükler temizlenir
 
Slava :
Disk alanını boşaltın. Diskte 500 megabayttan az kaldıysa günlükler temizlenir

Nasıl temizlenirler? Temizleme algoritmasını nereden öğrenebilirim? Günlüklerin temizlendiğine dair mesaj nerede?

Kendisinden bekleneni yapmazsa programla nasıl çalışılır? - sadece danışmandan değil, MT5'ten bahsediyoruz.

Benim özel örneğimde, günlüklerde işaretlerin atlandığını görüyoruz. Kullanıcı bu durumda ne düşünmelidir? Kirli bir dil tarafından bulutlanmayan hangi parlak saf düşünceler ortaya çıkabilir?

 

Test cihazının görsel modunda, hız kaydırıcısının konumu hatırlanır. Bir kez maksimuma ayarlayın. Sonra ağır bir EA başlatıyorum - görselleştiriciyi takıyorum.

Sahte bir Uzman Danışman yapmanız, onu görselleştiricide çalıştırmanız ve kaydırıcıyı biraz geriye hareket ettirmeniz gerekir. Bu tür bir manipülasyondan sonra, ağır Expert Advisor donmaya neden olmaz.

Kaydırıcının konumunu önceden ayarlamak mümkün müdür (MT4'te olduğu gibi)?

 

Görselleştirme olmadan tek bir çalıştırma sırasında, birçok alım satım işlemi gerçekleştiren, günlüğü uygun mesajlarla tıkayan bir Uzman Danışman başlatıyorum (test cihazının kendisi bunları görüntülemeyi sever). Geri testten sonra (veya Durdur'a tıkladıktan hemen sonra) Günlük sekmesine geçiyorum ve günlüklerin nasıl görüntülenmeye devam ettiğini görüyorum. Bu ilk saçmalık, çünkü geriye dönük test bitti, neden günlüklerin sonunu göstermiyorsunuz?

Günlüklerle ilgilenmiyorum ve "Günlükleri sil"i tıklayın. Ondan sonra günlük temizlenir ve... eski kayıtlarla doldurulmaya devam eder!

 
Andrey Dik :

Nasıl temizlenirler? Temizleme algoritmasını nereden öğrenebilirim? Günlüklerin temizlendiğine dair mesaj nerede?

Kendisinden bekleneni yapmazsa programla nasıl çalışılır? - sadece danışmandan değil, MT5'ten bahsediyoruz.

Benim özel örneğimde, günlüklerde işaretlerin atlandığını görüyoruz. Kullanıcı bu durumda ne düşünmelidir? Kirli bir dil tarafından bulutlanmayan hangi parlak saf düşünceler ortaya çıkabilir?

Daha önce bir test aracısının günlüklerine hiç bakmadınız.

Günlüğü temizlemeyle ilgili mesajı kendiniz gösterdiniz.

Test cihazının günlüklerini analiz ederseniz, önceden nitelikli bir kullanıcı olarak kabul edilirsiniz. Usta her zaman aletine bakmalıdır. Windows Gezgini, üzerinde çok az boş alan bulunan diski her zaman kırmızı olarak gösterir

BTW, gösterge panelinizde bir lastik basıncı göstergesi olsa bile, bu hiçbir şekilde yolculuktan önce aracın görsel incelemesini iptal etmez

 
fxsaber :

Görselleştirme olmadan tek bir çalıştırma sırasında, birçok alım satım işlemi gerçekleştiren, günlüğü uygun mesajlarla tıkayan bir Uzman Danışman başlatıyorum (test cihazının kendisi bunları görüntülemeyi sever). Geri testten sonra (veya Durdur'a tıkladıktan hemen sonra) Günlük sekmesine geçiyorum ve günlüklerin nasıl görüntülenmeye devam ettiğini görüyorum. Bu ilk saçmalık, çünkü geriye dönük test bitti, neden günlüklerin sonunu göstermiyorsunuz?

Günlüklerle ilgilenmiyorum ve "Günlükleri sil"i tıklayın. Ondan sonra günlük temizlenir ve... eski kayıtlarla doldurulmaya devam eder!

Evet, oluşturulmamış bir test sırasında günlüğe kaydetmeyi devre dışı bırakmak güzel olurdu. Daha sıklıkla, en sonunda görüntülenen nihai sonucu (kar, test süresi vb.) görmeniz yeterlidir.

Test sırasındaki ayrıntılar, görselleştirme modunda görüntülenebilir. Görselleştirme olmadan bu "yığın" reaktif olarak boşaltılmasının bir anlamı yoktur.

 
Alexey Kozitsyn :

Eğer ilgileniyorsanız, test kodu burada.

Sanırım bu sorunun nedenini ve geçici bir çözümünü buldum. Bunun nasıl olduğunu açıklamak benim için zor ama görünüşe göre renk tamponu araya giriyor ve her şeyi mahvediyor.


İşte kaynak kodda değiştirdiğim şey ve sorun ortadan kalktı

 #property indicator_separate_window
#property indicator_plots 3
#property indicator_buffers 4
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
input bool inpUseArrows= false ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double bufGisto[];
double bufGistoColor[];
double bufArrowUp[];
double bufArrowDn[];
//---
const double EMPTY = EMPTY_VALUE ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Размечаем массив цветов
   color colors[ 2 ];
   colors[ 0 ]= clrLime ;
   colors[ 1 ] = clrRed ;
//--- Устанавливаем параметры графических серий
//   SetPlotParametersColorHistogram(0,0,bufGisto,bufGistoColor,false,"test gisto",colors,EMPTY,2);
   SetPlotParametersColorHistogram( 2 , 2 ,bufGisto,bufGistoColor, false , "test gisto" ,colors, EMPTY , 2 );
//--- Проверяем, нужно ли отображать объемы
//   if (inpUseArrows) // Если отображать нужно
//     {
//      SetPlotParametersArrow(1,2,bufArrowUp,false,"test up",EMPTY,clrLime,233,10);
//      SetPlotParametersArrow(2,3,bufArrowDn,false,"test dn",EMPTY,clrRed,234,-10);
      SetPlotParametersArrow( 0 , 0 ,bufArrowUp, false , "test up" , EMPTY , clrLime , 233 , 10 );
      SetPlotParametersArrow( 1 , 1 ,bufArrowDn, false , "test dn" , EMPTY , clrRed , 234 ,- 10 );
//     }
//---
   IndicatorSetInteger ( INDICATOR_DIGITS , 0 );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   if (inpUseArrows)
     {
       ArrayInitialize (bufArrowUp, EMPTY );
       ArrayInitialize (bufArrowDn, EMPTY );
     }
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   if (prev_calculated== 0 )
     {
       ArrayInitialize (bufGisto, EMPTY );
       //---
       if (inpUseArrows)
        {
         ArrayInitialize (bufArrowUp, EMPTY );
         ArrayInitialize (bufArrowDn, EMPTY );
        }
       //---
       for ( int i= 0 ; i<rates_total; i++)
        {
         bufGisto[i]=(open[i]-close[i])/ _Point ;
         bufGistoColor[i]=(bufGisto[i]< 0 ) ? 1 : 0 ;
         //---
/*         if(inpUseArrows)
           {
            if(bufGisto[i]>20)
               bufArrowDn[i]=bufGisto[i];
            else if(bufGisto[i]<-20)
               bufArrowUp[i]=bufGisto[i];
           }
*/
         if (inpUseArrows)
           {
             if (bufGisto[i]> 20 )
               bufArrowDn[i]=bufGisto[i];
             else bufArrowDn[i] = EMPTY ;
             
             if (bufGisto[i]<- 20 )
               bufArrowUp[i]=bufGisto[i];
             else bufArrowUp[i] = EMPTY ;
           }
        }
     }
   else if (rates_total>prev_calculated)
     {
      bufGisto[rates_total- 1 ]= EMPTY ;
       //---
       if (inpUseArrows)
        {
         bufArrowUp[ rates_total- 1 ] = EMPTY ;
         bufArrowDn[ rates_total- 1 ] = EMPTY ;
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//| Параметры графического построения: цветная гист-а от 0 линии                |
//+------------------------------------------------------------------+
void SetPlotParametersColorHistogram( const int plotIndex, // Индекс графической серии
                                     const int bufferNum, // Номер первого буфера серии
                                     double & value[],                               // Буфер значений
                                     double & clr[],                                 // Буфер цветов
                                     const bool asSeries,                           // Флаг нумерации как в таймсерии
                                     const string label,                           // Имя серии
                                     const color & colors[],                         // Цвета линии
                                     const double emptyValue = EMPTY_VALUE ,         // Пустые значения серии
                                     const int width = 0 ,                           // Толщина линии
                                     const ENUM_LINE_STYLE style = STYLE_SOLID ,       // Стиль линии
                                     const int drawBegin = 0 ,                         // Количество баров без отрисовки
                                     const int shift= 0                            // Сдвиг построения в барах
                                     )
  {
//--- Привязываем буферы
   SetIndexBuffer (bufferNum,value, INDICATOR_DATA );
   SetIndexBuffer (bufferNum+ 1 ,clr, INDICATOR_COLOR_INDEX );
//--- Устанавливаем порядок нумерации в массивах-буферах
   ArraySetAsSeries (value,asSeries);
   ArraySetAsSeries (clr,asSeries);
//--- Устанавливаем тип графического построения
   PlotIndexSetInteger (plotIndex, PLOT_DRAW_TYPE , DRAW_COLOR_HISTOGRAM );
//--- Устанавливаем имя графической серии
   PlotIndexSetString (plotIndex, PLOT_LABEL ,label);
//--- Устанавливаем пустые значения в буферах
   PlotIndexSetDouble (plotIndex, PLOT_EMPTY_VALUE ,emptyValue);
//--- Устанавливаем количество цветов индикатора
   const int size= ArraySize (colors);
   PlotIndexSetInteger (plotIndex, PLOT_COLOR_INDEXES ,size);
//--- Устанавливаем цвета индикатора
   for ( int i= 0 ; i<size; i++)
       PlotIndexSetInteger (plotIndex, PLOT_LINE_COLOR ,i,colors[i]);
//--- Устанавливаем толщину линии
   PlotIndexSetInteger (plotIndex, PLOT_LINE_WIDTH ,width);
//--- Устанавливаем стиль линии
   PlotIndexSetInteger (plotIndex, PLOT_LINE_STYLE ,style);
//--- Устанавливаем количество баров без отрисовки и значений в DataWindow
   PlotIndexSetInteger (plotIndex, PLOT_DRAW_BEGIN ,drawBegin);
//--- Устанавливаем сдвиг графического построения по оси времени в барах
   PlotIndexSetInteger (plotIndex, PLOT_SHIFT ,shift);
  }
//+------------------------------------------------------------------+
//| Параметры графического построения: стрелки                                                          |
//+------------------------------------------------------------------+
void SetPlotParametersArrow( const int plotIndex, // Индекс графической серии
                             const int bufferNum, // Номер первого буфера серии
                             double &value[], // Буфер значений
                             const bool asSeries, // Флаг нумерации как в таймсерии
                             const string label, // Имя серии
                             const double emptyValue= EMPTY_VALUE , // Пустые значения серии
                             const color clr= clrRed , // Цвет стрелок
                             const int arrowCode= 159 , // Код стрелок
                             const int arrowShift = 0 , // Сдвиг стрелок по вертикали
                             const int width= 0 , // Толщина стрелок
                             const int drawBegin= 0 , // Количество баров без отрисовки
                             const int shift= 0                      // Сдвиг построения в барах
                            )
  {
//--- Привязываем буферы
   SetIndexBuffer (bufferNum,value, INDICATOR_DATA );
//--- Устанавливаем порядок нумерации в массивах-буферах
   ArraySetAsSeries (value,asSeries);
//--- Устанавливаем тип графического построения
   PlotIndexSetInteger (plotIndex, PLOT_DRAW_TYPE , DRAW_ARROW );
//--- Устанавливаем имя графической серии
   PlotIndexSetString (plotIndex, PLOT_LABEL ,label);
//--- Устанавливаем пустые значения в буферах
   PlotIndexSetDouble (plotIndex, PLOT_EMPTY_VALUE ,emptyValue);
//--- Устанавливаем цвет индикатора
   PlotIndexSetInteger (plotIndex, PLOT_LINE_COLOR , 0 ,clr);
//--- Устанавливаем код стрелок
   PlotIndexSetInteger (plotIndex, PLOT_ARROW ,arrowCode);
//--- Устанавливаем смещение стрелок по вертикали
   PlotIndexSetInteger (plotIndex, PLOT_ARROW_SHIFT ,arrowShift);
//--- Устанавливаем толщину стрелок
   PlotIndexSetInteger (plotIndex, PLOT_LINE_WIDTH ,width);
//--- Устанавливаем количество баров без отрисовки и значений в DataWindow
   PlotIndexSetInteger (plotIndex, PLOT_DRAW_BEGIN ,drawBegin);
//--- Устанавливаем сдвиг графического построения по оси времени в барах
   PlotIndexSetInteger (plotIndex, PLOT_SHIFT ,shift);
  }
//+------------------------------------------------------------------+
  1. INDICATOR_COLOR_INDEX'in sonuncusu olacağı beklentisiyle DRAW_COLOR_HISTOGRAM dizinini "sonuna" koyun.
  2. Ara belleğe bir değer girmeniz gerekmiyorsa, PLOT_EMPTY_VALUE değeriyle doldurulmalıdır.
 

Test cihazı bunu neden yapıyor?

 2017.09 . 05 10 : 42 : 53.349 Tester  Experts\fxsaber\TesterBenchmark_Example.ex5 on EURUSD,M1 from 2017.08 . 01 00 : 00 to 2017.09 . 05 00 : 00
2017.09 . 05 10 : 42 : 53.349 Tester  EURUSD: history data begins from 1981.01 . 02 00 : 00
2017.09 . 05 10 : 42 : 53.349 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2017.09 . 05 10 : 42 : 53.349 Tester  EURUSD: "bases\MetaQuotes-Demo\ticks\EURUSD\201709.tkc" download
2017.09 . 05 10 : 42 : 59.389 Tester  EURUSD: "bases\MetaQuotes-Demo\ticks\EURUSD\201708.tkc" download ( 370.48 Kb/sec)
2017.09 . 05 10 : 43 : 12.450 Tester  EURUSD: 71 % ticks downloaded ( 356.63 Kb/sec)
2017.09 . 05 10 : 43 : 20.488 Tester  EURUSD: 94 % ticks downloaded ( 338.89 Kb/sec)
2017.09 . 05 10 : 43 : 22.491 Tester  EURUSD: preliminary downloading of history ticks completed, 10.01 Mb in 0 : 29.141 ( 351.80 Kb/sec)
2017.09 . 05 10 : 43 : 22.491 Tester   EURUSD: ticks data begins from 2017.08 . 01 00 : 00
2017.09 . 05 10 : 43 : 22.491 Tester  complete optimization started
2017.09 . 05 10 : 43 : 22.491 Tester  size of initial task batch is 6
2017.09 . 05 10 : 43 : 22.521 Core 1   agent process started
2017.09 . 05 10 : 43 : 23.094 Core 1   connecting to 127.0 . 0.1 : 3000
2017.09 . 05 10 : 43 : 23.094 Core 1   connected
2017.09 . 05 10 : 43 : 23.103 Core 1   authorized (agent build 1653 )
2017.09 . 05 10 : 43 : 23.114 Core 1   common synchronization completed
2017.09 . 05 10 : 43 : 23.388 Core 1    EURUSD: history for 2016 year synchronized
2017.09 . 05 10 : 43 : 23.388 Core 1   EURUSD: history for 2017 year synchronized
2017.09 . 05 10 : 43 : 23.388 Core 1   EURUSD: history synchronization completed [ 54 Kb]
2017.09 . 05 10 : 43 : 23.388 Core 1   EURUSD: 54.96 Kb of history processed in 0 : 00.234
2017.09 . 05 10 : 43 : 23.402 Core 1   pass 0 tested with error " cannot synchronize history (EURUSD) " in 0 : 00 : 00.047
2017.09 . 05 10 : 43 : 23.404 Core 1   pass 1 tested with error "task rejected by tester agent" in 0 : 00 : 00.000
 
Slava :

1. Daha önce hiç bir test aracısının günlüklerine bakmadınız.

Günlüğü temizlemeyle ilgili mesajı kendiniz gösterdiniz.

2. Test cihazının günlüklerini analiz ederseniz, önceden nitelikli bir kullanıcı olarak kabul edilirsiniz. Usta her zaman enstrümanına bakmalıdır. Windows Gezgini, üzerinde çok az boş alan bulunan diski her zaman kırmızı olarak gösterir

BTW, gösterge panelinizde bir lastik basıncı göstergesi olsa bile, bu hiçbir şekilde yolculuktan önce aracın görsel incelemesini iptal etmez

1. Bunu yapmak zorunda değildim çünkü gerekli değildi - test cihazı günlüklerinde her zaman beklenen şey vardı.

2. Windows Gezgini'nin ne gösterdiğini asla bilmiyor musunuz? MT5'te çalışıyoruz ve kullanıcıya yeterli bellek olmadığını (veya düzgün çalışmasına izin vermeyen başka bir neden) bildirmekle yükümlüyüz.

Evet, bunun nedeni 500 MB'den daha az boş alan olmasıydı ve günlükler yalnızca boşluklar olmadan tamamen görünmekle kalmadı, aynı zamanda çalışma sırasında frenlerin de kaybolmasıydı (günlüklerin hala görüntülenip görüntülenmemesine rağmen frenlerin nereden geldiği açık değil). testin). Ancak kullanıcı en az 500MB'ye ihtiyaç duyduğunu nereden biliyor? Neden 2Mb, 100Mb, 100500 Gb olmasın? - Normal çalışmayı engelleyen sorunlar hakkında temsilci / test eden kişi tarafından mesajlar görüntülenmelidir.

Ve sadece günlüğe neyin çıktı alınacağını seçme yeteneğine ihtiyacınız var.

 
Alexey Viktorov :

Sanırım bu sorunun nedenini ve geçici bir çözümünü buldum. Bunun nasıl olduğunu açıklamak benim için zor ama görünüşe göre renk tamponu araya giriyor ve her şeyi mahvediyor.


İşte kaynak kodda değiştirdiğim şey ve sorun ortadan kalktı

  1. INDICATOR_COLOR_INDEX'in sonuncusu olacağı beklentisiyle DRAW_COLOR_HISTOGRAM dizinini "sona" koyun.
  2. Ara belleğe bir değer girmeniz gerekmiyorsa, PLOT_EMPTY_VALUE değeriyle doldurulmalıdır.
Yardımcı olmadı :) Tamam, neden tahmin et, SD'den bir cevap alman gerekiyor. Yine de, bu tür koltuk değnekleri kabul edilemez!