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

 
Dmitry Belov :

Merhaba, lütfen yorumda neden ZigD[0] gösterilmediğini söyleyin

ZigM[0] çıktı veriyor mu?

 
Alexey Viktorov :

ZigM[0] çıktı veriyor mu?

Evet çıkarır...


	          
 
Dmitry Belov :

Evet çıkarır...

Kusura bakmayın koda dikkatli bakmamışım...

zzz>0 olduğunda, değerin çubuğun yüksek veya düşük olabileceği anlamına gelir. Buna göre, bu değer bu değerlerle karşılaştırılmalı ve sonuca bağlı olarak bir veya başka bir diziye yerleştirilmelidir.

 
Alexey Viktorov :

Kusura bakmayın koda dikkatli bakmamışım...

zzz>0 olduğunda, değerin çubuğun yüksek veya düşük olabileceği anlamına gelir. Buna göre, bu değer bu değerlerle karşılaştırılmalı ve sonuca bağlı olarak bir veya başka bir diziye yerleştirilmelidir.

Ben sadece bunu yapıyorum, sadece bir nedenden dolayı ZigD[] çıktısı vermiyor ve ZigD eklerseniz hiç çıktı vermiyor, eğer yorum yaparsanız, her şey görüntüleniyor

 //+------------------------------------------------------------------+
//|                                                           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 2
#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   ww= 0 , kk= 0 ;
int dd= 0 ;
double zz,SredRazmax, zzz;
double HZZ[], ZigM[];
int ZigD[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,HZZ);
   SetIndexBuffer ( 1 ,ZigM);
   SetIndexStyle ( 0 , DRAW_SECTION );
   SetIndexEmptyValue ( 0 , 0.0 );
   SredRazmax= 0.0 ;
//---
   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[])
  {
//---
   int shift,limit;
//--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из истории
   if (prev_calculated== 0 )
     {
      limit=rates_total- 1 ;
      SredRazmax= 0.0 ;
       ArrayInitialize (HZZ, 0.0 );
     }
   else limit=rates_total-prev_calculated+ 1 ;
   for (shift=limit; shift>= 0 ; shift--)
     {
      zz= iCustom ( NULL , 0 , "ZigZag" ,ExtDepth,ExtDeviation,ExtBackstep, 0 ,shift);
       if (zz> 0.0 )
        {
         HZZ[shift]=zz;
        }
     }
     for (ww = 0 ; ww <= Bars - 1 ; ww++)
  {
      zzz = iCustom ( NULL , 0 , "ZigZag" , ExtDepth, ExtDeviation, ExtBackstep, 0 , ww);
      
           if (zzz > 0.0 )   
           {
           ZigM[kk]=zzz;
            kk++; 
           ZigD[dd]=ww;
            dd++;  
            }
   }       
   
   // Расчет средних значений 
     for (kk= 0 ;kk<=nn;kk++)
     {
         if (ZigM[kk]>ZigM[kk+ 1 ]){SredRazmax+=(ZigM[kk]-ZigM[kk+ 1 ]);}
         if (ZigM[kk]<ZigM[kk+ 1 ]){SredRazmax+=(ZigM[kk]-ZigM[kk+ 1 ])*(- 1 );}
     if ( IsStopped ()) 
     break ; 
     }
     Comment ( "Средний размах = " ,SredRazmax/nn, "," ,ZigM[ 0 ], "," ,ZigM[ 1 ]);
     Comment (ZigD[ 0 ]);
   return ( 0 );
  }
   //+-  
 

Merhaba insanlar!

Hazırlıksız, MT4'te bir soru ile dönebileceğiniz daha uygun bir "pencere" bulamadım.

Terminali açarken "durum satırı", "standart", "tablolar", " grafiksel araçlar " ve " grafik periyotları " terminal satırları aniden kaybolmaya başladı. Açıyorum ve bir dahaki sefere açtığımda terminal tekrar boş, sadece mevcut tablo.

Uzun yıllar ilk defa böyle bir kanoyla tanıştım ve ne yapacağımı bilmiyorum. Lütfen söyle bana. Şimdiden teşekkür ederim.

 
Vadens :

Merhaba insanlar!

Hazırlıksız, MT4'te bir soru ile dönebileceğiniz daha uygun bir "pencere" bulamadım.

Terminali açarken terminal satırları "durum satırı", "standart", "tablolar", " grafik araçları " ve " tablo periyotları " aniden kaybolmaya başladı. Açıyorum ve bir dahaki sefere açtığımda terminal tekrar boş, sadece mevcut tablo.

Uzun yıllar ilk defa böyle bir kanoyla tanıştım ve ne yapacağımı bilmiyorum. Lütfen söyle bana. Şimdiden teşekkür ederim.

Terminalin bulunduğu dizine yazma izinleriyle ilgili bir sorununuz var gibi görünüyor. Sınırlı haklara sahip bir kullanıcı olarak çalışıyorsanız, terminali dosya / klasörlerle tam olarak çalışabileceğiniz bir dizine aktarın.

 
Vadens :

Merhaba insanlar!

Hazırlıksız, MT4'te bir soru ile dönebileceğiniz daha uygun bir "pencere" bulamadım.

Terminali açarken terminal satırları "durum satırı", "standart", "tablolar", " grafiksel araçlar " ve " tablo periyotları " aniden kaybolmaya başladı. Açıyorum ve bir dahaki sefere açtığımda terminal tekrar boş, sadece mevcut tablo.

Uzun yıllar ilk defa böyle bir kanoyla tanıştım ve ne yapacağımı bilmiyorum. Lütfen söyle bana. Şimdiden teşekkür ederim.

Sizin için tam ekran modu (F11)
 
Dmitry Belov :

Ben sadece bunu yapıyorum, sadece bir nedenden dolayı ZigD[] çıktısı vermiyor ve ZigD eklerseniz hiç çıktı vermiyor, eğer yorum yaparsanız, her şey görüntüleniyor

Ve yine dikkatsizliğim...

Umarım şimdi farklıdır :)

Ve yorum yanıp sönmüyor??? Böyle yazmak daha iyi

     Comment ( "Средний размах = " ,SredRazmax/nn, "," ,ZigM[ 0 ], "," ,ZigM[ 1 ] , "\n" // Это перенос комментария на следующую строку
           , ZigD[ 0 ]);
 
Alexey Viktorov :

Ve yine dikkatsizliğim...

Umarım şimdi farklıdır :)

Ve yorum yanıp sönmüyor??? Böyle yazmak daha iyi

Teşekkürler, zaten kendim çözebildim, diziyi double olarak başlatmak gerekiyordu ve hepsi işe yaradı. İstiyorsan gösterge kodu burada, ama yine de ham, daha çok fikir var... Söylesene, yorumu sol alt köşede mi yoksa üst ortadaki nasıl göstereceğini biliyor musun???

 //+------------------------------------------------------------------+
//|                                                           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 3
#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   ww= 0 , kk= 0 ;
int dd= 0 ;
double zz,SredRazmax, zzz, SredDlin;
double HZZ[], ZigM[];
double ZigD[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,HZZ);
   SetIndexBuffer ( 1 ,ZigM);
   SetIndexBuffer ( 2 ,ZigD);
   SetIndexStyle ( 0 , DRAW_SECTION );
   SetIndexEmptyValue ( 0 , 0.0 );
   SredRazmax= 0.0 ;
   SredDlin= 0.0 ;
//---
   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[])
  {
//---
   int shift,limit;
//--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из истории
   if (prev_calculated== 0 )
     {
      limit=rates_total- 1 ;
      SredRazmax= 0.0 ;
       ArrayInitialize (HZZ, 0.0 );
     }
   else limit=rates_total-prev_calculated+ 1 ;
   for (shift=limit; shift>= 0 ; shift--)
     {
      zz= iCustom ( NULL , 0 , "ZigZag" ,ExtDepth,ExtDeviation,ExtBackstep, 0 ,shift);
       if (zz> 0.0 )
        {
         HZZ[shift]=zz;
        }
     }
     for (ww = 0 ; ww <= Bars - 1 ; ww++)
  {
      zzz = iCustom ( NULL , 0 , "ZigZag" , ExtDepth, ExtDeviation, ExtBackstep, 0 , ww);
      
           if (zzz > 0.0 )   
           {
           ZigM[kk]=zzz;
            kk++; 
           ZigD[dd]=ww;
            dd++;  
            }
   }       
   
   // Расчет средних значений 
     for (kk= 0 ;kk<=nn;kk++)
     {
         if (ZigM[kk]>ZigM[kk+ 1 ]){SredRazmax+=(ZigM[kk]-ZigM[kk+ 1 ]);}
         if (ZigM[kk]<ZigM[kk+ 1 ]){SredRazmax+=(ZigM[kk]-ZigM[kk+ 1 ])*(- 1 );}
   //  if(IsStopped()) 
   //   break; 
     }
     for (dd= 0 ;dd<=nn;dd++)
     {
         if (ZigD[dd]> 0.0 ){SredDlin+=(ZigD[dd+ 1 ]-ZigD[dd]);}
         if ( IsStopped ()) 
     break ;
     } 
     Comment ( "Средний размах = " ,SredRazmax/nn, "//" , "Средняя продолжительность = " ,SredDlin/nn, "//" ,ZigM[ 0 ], "//" ,ZigM[ 1 ], "//" ,ZigD[ 0 ], "//" ,ZigD[ 1 ]);
     return ( 0 );
  }
   //+-  
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Машинное обучение в трейдинге: теория и практика...
 
Dmitry Belov :

Teşekkürler, zaten kendim çözebildim, diziyi double olarak başlatmak gerekiyordu ve hepsi işe yaradı. İstiyorsan gösterge kodu burada, ama yine de ham, daha çok fikir var... Söylesene, yorumu sol alt köşede mi yoksa üst ortadaki nasıl göstereceğini biliyor musun???

Bu imkansız. Yalnızca OBJ_LABEL grafik nesnesini kullanırsanız