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

 
PokrovMT5 :

Tünaydın! Lütfen göstergede, iData'da yazılmışsa, grafiğin zaman dilimini belirleyebileceğiniz çubuk verilerine herhangi bir program veya bağlantı önemli olmadığını, diğer zaman dilimlerinden gelen verilerin neden doğru yansıtılmadığını söyleyin. zaman olarak farklı olan, ancak yalnızca belirtilen zaman çerçevesinin grafiğinde bulunan mevcut grafik? Teşekkür ederim.


tam olarak anlamadım

Ama yardımcı olacağını düşünüyorum

Доступ к таймсериям и индикаторам - Справочник MQL4
Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Функции для работы с таймсериями и индикаторами. Таймсерия отличается от обычного массива тем, что индексация элементов таймсерии производится от конца массива к началу (от самых свежих данных к самым старым). Для копирования значений таймсерий и индикаторов рекомендуется использовать только динамические массивы, так как функции копирования...
 

Bağlantı için teşekkürler, tamamen aynı resmi alıyorum, sadece biraz farklı bir algoritma, mesele daha fazla nokta (çizimde) yapmak, onları bir eşik ile göstermek.

 
Alekseu Fedotov :

tam olarak anlamadım

Ama yardımcı olacağını düşünüyorum


Teşekkür ederim mutlaka inceleyeceğim ama örnek olarak sıfır yerine başka bir zaman diliminden veri yazarsanız prensip neden çalışmıyor, neden doğru yansıtılmıyor, önce kopyalayıp sonra çizmeniz mi gerekiyor onlara?

 iClose ( NULL , 0 ,i);
 
Alekseu Fedotov :

Buraya bak


Novaja :

Bağlantı için teşekkürler, tamamen aynı resmi alıyorum, sadece biraz farklı bir algoritma, mesele daha fazla nokta (çizimde) yapmak, onları bir eşik ile göstermek.


Bunu yapabilirsiniz, ancak Renko, yani. m / y köşelerine göre eşit parçalara böler. Aynı zamanda, köşe arama algoritmasının kendisi bozulur, soru, ilk kodu kaydederken bunun nasıl yapılacağıdır, noktalar arasındaki eşik değeri (çizim ile), son ve son arasındaki mesafenin bir katı olmalıdır. tepe noktası (eşikten daha az olacaktır).

 
//+------------------------------------------------------------------+
//|                                                       FastZZ.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yurich"
#property link      "https://login.mql5.com/ru/users/Yurich"
//---
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 DodgerBlue

#property indicator_width3 3
#property indicator_width4 3

//--- input parameters
extern int  Depth    = 10;
//---
double zzH[], zzL[];
double depth;
int last, direction, pbars;
datetime lastbar;

double ArrUp[];
double ArrDn[];
//+------------------------------------------------------------------+
int init()
{
//---- indicators
   SetIndexBuffer(0,zzH);
   SetIndexBuffer(1,zzL);
   SetIndexBuffer(2,ArrUp);
   SetIndexBuffer(3,ArrDn);
   
   SetIndexStyle(0,DRAW_ZIGZAG);
   SetIndexStyle(1,DRAW_ZIGZAG);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexStyle(3,DRAW_ARROW);
   
   SetIndexArrow(2,159);
   SetIndexArrow(3,159);
   
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   IndicatorDigits(Digits);
//----
   depth=Depth*Point;
   direction=1;
   last=0;
   pbars=0;
   lastbar=0;
   return(0);
}
//+------------------------------------------------------------------+
int start()
{
   int limit=Bars-IndicatorCounted()-1;
   if(lastbar!=Time[0])
   {
      lastbar=Time[0];
      last++;
   }
   if(MathAbs(Bars-pbars)>1) { last=Bars-1; limit=last;}
   pbars=Bars;
   //---
   for(int i=limit; i>0; i--)
   {
      bool set=false;
      zzL[i]=0;
      zzH[i]=0;
      ArrUp[i]=EMPTY_VALUE;
      ArrDn[i]=EMPTY_VALUE;
      //---
      if(direction>0)
      { 
         if(High[i]>zzH[last]+depth)
         {
            zzH[last]=0;
            zzH[i]=High[i];
           
            ArrUp[i]=High[i];
            
            if(Low[i]<High[last]-depth)
            {
               if(Open[i]<Close[i])
                {
                  zzH[last]=High[last]; 
                  ArrUp[last]=High[last];
                }else direction=-1;
               zzL[i]=Low[i];
               ArrDn[i]=Low[i];
            }
            last=i;
            set=true;
         }
         if(Low[i]<zzH[last]-depth && (!set || Open[i]>Close[i]))
         {
            zzL[i]=Low[i];
            ArrDn[i]=Low[i];
            
            if(High[i]>zzL[i]+depth && Open[i]<Close[i])
             {
               zzH[i]=High[i];
               ArrUp[i]=High[i]; 
             }else direction=-1;
            last=i;
         }
      } else //direction<0
      {
         if(Low[i]<zzL[last]-depth)
         {
            zzL[last]=0;
            zzL[i]=Low[i];
        
            ArrDn[i]=Low[i];            
            
            if(High[i]>Low[last]+depth)
            {
               if(Open[i]>Close[i])
                {
                  zzL[last]=Low[last]; 
                  ArrDn[last]=Low[last];
                }else direction=1;
               zzH[i]=High[i];
               ArrUp[i]=High[i];
            }
            last=i;
            set=true;
         }
         if(High[i]>zzL[last]+depth && (!set || Open[i]<Close[i]))
         {
            zzH[i]=High[i];
            ArrUp[i]=High[i];
            
            if(Low[i]<zzH[i]-depth && Open[i]>Close[i])
             {
               zzL[i]=Low[i]; 
               ArrDn[i]=Low[i];
             }else direction=1;
            last=i;
         }
      }
   }
//----
   zzH[0]=0;
   zzL[0]=0;
//----
   return(0);
}
//+------------------------------------------------------------------+
 

Nedense kod hemen yorum eklemedi, yeniden yazmak zorunda kaldım.

 
PokrovMT5 :

Teşekkür ederim mutlaka inceleyeceğim ama örnek olarak sıfır yerine başka bir zaman diliminden veri yazarsanız prensip neden çalışmıyor, neden doğru yansıtılmıyor, önce kopyalayıp sonra çizmeniz mi gerekiyor onlara?



CopyClose daha modern bir işlevdir, ancak ah peki, iClose (...) iyi çalışıyor

Peki nasıl düzgün çalışmıyor? Bir resim veya bir kod parçası, daha kesin olabilirsiniz.

 
Alekseu Fedotov :

CopyClose daha modern bir işlevdir, ancak ah peki, iClose(...) iyi çalışıyor

Peki nasıl düzgün çalışmıyor? Bir resim veya bir kod parçası, daha kesin olabilirsiniz.

İşte en basit örnek, kapanış fiyatlarının grafiğe yansımasını istiyorum, zaman çerçevesi bir saate ayarlandı, saatte her şey yolunda, her şey diğerinde farklı. Fikir, eskilerin kapanış fiyatlarını daha küçük bir zaman diliminde görmekti. Resim 30 dk.
 //+------------------------------------------------------------------+
//|                                                   Проверка 2.mq4 |
//|                                                  Bugaev Vladimir |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Bugaev Vladimir"
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrBlue
#property indicator_width1 2
int i,limit;

double C,CC[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
IndicatorBuffers ( 1 );
//----      
   SetIndexBuffer ( 0 ,CC);
  
   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[])
 
 {
if (prev_calculated< 1 ) limit=rates_total- 1 ;
if (prev_calculated> 0 )limit=rates_total-prev_calculated;
for (i=limit; i> 0 ; i--)  
  
  {
 C= iClose ( NULL , 60 ,i);
 CC[i]=C; 



  }
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
PokrovMT5 :
İşte en basit örnek, kapanış fiyatlarının grafiğe yansımasını istiyorum, zaman çerçevesi bir saate ayarlandı, saatte her şey yolunda, her şey diğerinde farklı. Ve fikir, eskilerin kapanış fiyatlarını daha küçük bir zaman diliminde görmekti. Resim 30 dk.

Bunun gibi bir şey


     int shift;
     datetime   T;
  
   for (i=limit; i>= 0 ; i--)
     {
      T = iTime ( NULL , 0 ,i); 
      shift= iBarShift ( NULL , 60 ,T); 
      C= iClose ( NULL , 60 ,shift);
      CC[i]=C;
     }
 
Alekseu Fedotov :

Bunun gibi bir şey



Çok teşekkürler!