Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 467

 
Dürüst olmak gerekirse, terminaldeki kütüphaneyi arama ve sıralama yapmadan normalde nasıl kullanacağımı hiç anlamıyorum ... Sadece aptalca yüzlerce satır arasında gezinmek mi?!!!
 
Alena000 :
Dürüst olmak gerekirse, terminaldeki kütüphaneyi arama ve sıralama yapmadan normalde nasıl kullanacağımı hiç anlamıyorum ... Sadece aptalca yüzlerce satır arasında gezinmek mi?!!!

Arama, MetaEditor'da yerleşiktir (sağ üst köşe). Girişleri şu şekilde arayabilirsiniz:

  • belgeyi aç
  • tüm dosyalar için
  • MQL4/MQL5.community
Arama, terminalin içine yerleştirilmiştir (sağ üst köşe). Terminalden yapılan arama, tüm MQL5.community (Makaleler, Ürünler, Kitaplık, Sinyaller, Forum, Bloglar, Belgeler) üzerinden yapılır.

 
konu hakkında fikri olan var mı? ))
 
Maxim Dobrovolskii :
konu hakkında fikri olan var mı? ))

Belki yardımcı olur

Dosyalar:
Fractal.mq4  4 kb
 
Victor Nikolaev :

Belki yardımcı olur

teşekkürler, ancak seçeneğimin neden çalışmadığını anlamak ve bilmek istiyorum. Ayrı bir gösterge olması gerektiği gibi kendini nasıl gösterir. ve bana öyle geliyor ki mesele danışman + gösterge kombinasyonunda. ama meselenin tam olarak ne olduğu belli değil.
 
Maxim Dobrovolskii :
teşekkürler, ancak seçeneğimin neden çalışmadığını anlamak ve bilmek istiyorum. Ayrı bir gösterge olması gerektiği gibi kendini nasıl gösterir. ve bana öyle geliyor ki mesele danışman + gösterge kombinasyonunda. ama meselenin tam olarak ne olduğu belli değil.
Ya da belki gerçek şu ki, OnTick()'te yalnızca sıfır arabelleğini ve OnDeinit()'de hem sıfırı hem de birinciyi okuyorsunuz?
 
Maxim Dobrovolskii :
teşekkürler, ancak seçeneğimin neden çalışmadığını anlamak ve bilmek istiyorum. Ayrı bir gösterge olması gerektiği gibi kendini nasıl gösterir. ve bana öyle geliyor ki mesele danışman + gösterge kombinasyonunda. ama meselenin tam olarak ne olduğu belli değil.

Özel bir problem olmadığını kanıtlamak istiyorum.

Yalnızca gösterge kodu gereklidir. kopya çekmeyi sevmiyorum

Belki göstergenizdeki bir şeyi değiştiririm (ve ne olduğunu bile biliyorum).

 
Alexey Viktorov :
Ya da belki gerçek şu ki, OnTick()'te yalnızca sıfır arabelleğini ve OnDeinit()'de hem sıfırı hem de birinciyi okuyorsunuz?
Bir arabellekte bir değer olduğunu göstermek için Deinit'i getirdim. ekran görüntüsü ve yukarıdaki giriş.
 
Victor Nikolaev :

Özel bir problem olmadığını kanıtlamak istiyorum.

Yalnızca gösterge kodu gereklidir. kopya çekmeyi sevmiyorum

Belki göstergenizdeki bir şeyi değiştiririm (ve ne olduğunu bile biliyorum).

 //+------------------------------------------------------------------+
//|                                               modify_Fractal.mq4 |
//|          MoneyRobotics Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MoneyRobotics Copyright 2015, 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_label1   "Up"
#property indicator_label2   "Down"
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_style1   STYLE_SOLID
#property indicator_style2   STYLE_SOLID
#property indicator_width1   1
#property indicator_width2   1
#property indicator_color1 Red
#property indicator_color2 Blue


//--- indicator buffers

double ExtUpFractalsBuffer[];
double ExtDownFractalsBuffer[];

//+-----------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---- indicator buffers mapping  
     SetIndexBuffer ( 0 ,ExtUpFractalsBuffer);
     SetIndexBuffer ( 1 ,ExtDownFractalsBuffer);  
//---- drawing settings
    SetIndexStyle( 0 , DRAW_ARROW );
    SetIndexArrow( 0 , 217 );
    SetIndexStyle( 1 , DRAW_ARROW );
    SetIndexArrow( 1 , 218 );
//----
    SetIndexEmptyValue( 0 , 0.0 );
    SetIndexEmptyValue( 1 , 0.0 );
//---- name for DataWindow
    SetIndexLabel( 0 , "Modify_Fractal Up" );
    SetIndexLabel( 1 , "Modify_Fractal Down" );
//---- initialization done  
   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     i, nCountedBars;
   double dCurrent;
   nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted    
   
   if (nCountedBars<= 8 ) i= Bars -nCountedBars- 4 ;
   if (nCountedBars> 8 )
     {
      nCountedBars--;
      i= Bars -nCountedBars- 4 ;
     }
//----Up and Down Fractals
   while ( i >= 4 )
     {
       //----Fractals up bFound=false;
      dCurrent=High[i];
       if (dCurrent>High[i+ 1 ] && dCurrent>High[i+ 2 ] && dCurrent>High[i+ 3 ] &&
         dCurrent>High[i- 1 ] && dCurrent>High[i- 2 ] && dCurrent>High[i- 3 ] && 
         dCurrent>High[i- 4 ] )
        {
         ExtUpFractalsBuffer[i]= NormalizeDouble (dCurrent + 1 * Point , Digits );
        }
                           
       //----Fractals down
      dCurrent=Low[i];
       if (dCurrent<Low[i+ 1 ] && dCurrent<Low[i+ 2 ] && dCurrent<Low[i+ 3 ] && 
         dCurrent<Low[i- 1 ] && dCurrent<Low[i- 2 ] && dCurrent<Low[i- 3 ] && 
         dCurrent<Low[i- 4 ])
        {
         ExtDownFractalsBuffer[i]= NormalizeDouble (dCurrent - 1 * Point , Digits );
        }
      i--;
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+


gösterge kodu.
 
Maxim Dobrovolskii :
Bir arabellekte bir değer olduğunu göstermek için Deinit'i getirdim. ekran görüntüsü ve yukarıdaki giriş.

Hem sıfırda hem de ilk tamponda bir değer var. Artık М15'te 5m ve 21m çubuklarında fraktallar var. Bu komut dosyası

 /********************Script program start function*******************/
void OnStart ()
{
Print ( "******************" , iCustom ( _Symbol , PERIOD_CURRENT , "modify_Fractal" , 1 , 5 ));
Print ( "******************" , iCustom ( _Symbol , PERIOD_CURRENT , "modify_Fractal" , 0 , 21 ));
} /*******************************************************************/

Her şey iyi çalışıyor ve yazdırıyor. Buna göre danışman, iCustom()'un hem komut dosyasında hem de danışmanda aynı şekilde çalıştığını görecektir.

Neden: