KimIV'ten faydalı özellikler - sayfa 28

 

ArrayMax() işlevi.

Bu işlev, bir dizideki maksimum öğenin değerini döndürür.

  • x - Maksimum öğenin değere göre arandığı double türünde bir öğe dizisi.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение максимального элемента массива.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMax ( double & x []) {
   if ( ArraySize ( x ) > 0 ) return ( x [ ArrayMaximum ( x )]) ;
   else {
     Print ( " ArrayMax(): Массив пуст! " ) ;
     return ( 0 ) ;
   }
}
PS Ekli, ArrayMax() işlevini test etmek için bir komut dosyasıdır.
Dosyalar:
 

ArrayMin() işlevi.

Bu işlev, bir dizideki minimum öğenin değerini döndürür.

  • x - Minimum öğenin değere göre arandığı, double türünde bir öğe dizisi.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 17.05.2008                                                     |
//|  Описание : Возвращает значение минимального элемента массива.             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayMin ( double & x []) {
   if ( ArraySize ( x ) > 0 ) return ( x [ ArrayMinimum ( x )]) ;
   else {
     Print ( " ArrayMin(): Массив пуст! " ) ;
     return ( 0 ) ;
   }
}
not. Ekli, ArrayMin() işlevini test etmek için bir komut dosyasıdır.
Dosyalar:
 

Merhaba, forumda ZigZag fonksiyonlarınızdan birkaçını buldum. Bu sadece ihtiyacım olan şey. Bu işlevlerin performansını kontrol etmeye karar verdim, bu yüzden bu işlevin bir yorumda çağrıldığı bir Uzman Danışman yaptım. Zigzag çubuk numarası = çok fazla. Sorun şudur, işlev ZigZag çubuk numarasını yalnızca sıfır çubuğunda değilse gösterir. Zigzag sıfır çubuğunda ise, önceki zikzak çubuğunu gösterir. Ve sadece sıfırda göstermem gerekiyor. Yani, yeni bir zikzak ortaya çıktığında bilmek.

Danışman kodu aşağıda verilmiştir:

 int init ()
  {
//----
   
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit ()
  {
//----
   
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ()
  {
//----
GetExtremumZZBar () ;
 Comment ( " бар зигзага = " , GetExtremumZZBar ()) ;         //Просто проверяю работоспособность функции
//----
   return ( 0 ) ;
  }
//+------------------------------------------------------------------+
int GetExtremumZZBar ( string sym = " EURUSD " , int tf = 0 , int ne = 0 , int dp = 12 , int dv = 5 , int bc = 3 ) {
  if ( sym == "" ) sym = Symbol () ;
  double zz ;
  int    i , k = iBars ( sym , tf ) , ke = 0 ;
 
  for ( i = 1 ; i < k ; i ++ ) {
    zz = iCustom ( sym , tf , " ZigZag " , dp , dv , bc , 0 , i ) ;
    if ( zz != 0 ) {
      ke ++;
      if ( ke > ne ) return ( i ) ;
    }
  }
  Print ( " GetExtremumZZBar(): Экстремум ЗигЗага номер " , ne , " не найден " ) ;
  return ( 0 ) ;
}
 
Climber писал (а) >>

işlev ZigZag çubuk numarasını yalnızca sıfır çubuğunda değilse gösterir.
Zigzag sıfır çubuğunda ise, önceki zikzak çubuğunu gösterir.
Ve sadece sıfırda göstermem gerekiyor. Yani, yeni bir zikzak ortaya çıktığında bilmek.

tamam... sıfır çubuğu için düzeltildi

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает номер бара экстремума ЗигЗага по его номеру.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar ( string sy = "" , int tf = 0 , int ne = 0 , int dp = 12 , int dv = 5 , int bc = 3 ) {
   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   double zz ;
   int      i , k = iBars ( sy , tf ) , ke = 0 ;

   for ( i = 0 ; i < k ; i ++ ) {
     zz = iCustom ( sy , tf , " ZigZag " , dp , dv , bc , 0 , i ) ;
     if ( zz != 0 ) {
       ke ++;
       if ( ke > ne ) return ( i ) ;
     }
   }
   Print ( " GetExtremumZZBar(): Экстремум ЗигЗага номер " , ne , " не найден " ) ;
   return ( - 1 ) ;
}
 
TheXpert писал (а) >>

Yazardan yazdığım için özür dilerim, boşuna yazdım çünkü neyse bu kodu kullanmayacağım çünkü. İhtiyacım olan her şeyle kendi kütüphanem var. Dan beri bu kadar uzun bir süre, açık bir şekilde olumsuz eleştiriler olmadı, bu da yazarın kodunun uygun olduğu anlamına geliyor. Dayanamadım :), üzgünüm.

Zeki insan çoktur ama zeki ve kibar insan azdır. Yani daha iyi kodladığınızı düşünmenize rağmen kitaplığınızı yayınlamıyorsunuz ve Igor neredeyse tüm geliştirmelerini ücretsiz kullanım için yüklüyor.

 
khorosh писал (а) >>

Zeki insan çoktur ama zeki ve kibar insan azdır. Yani daha iyi kodladığınızı düşünmenize rağmen kitaplığınızı yayınlamıyorsunuz ve Igor neredeyse tüm geliştirmelerini ücretsiz kullanım için yüklüyor.

Zaten neden gönderildi. Çünkü kodum tamamen evrensel değil. Gönderecek bir şeyim varsa, bunu yapacağımdan emin olacağım.

 

ArrayAvg() işlevi.

Bu işlev, dizi öğelerinin aritmetik ortalamasını döndürür.

  • x - double türünde bir dizi öğe.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает среднее аримфетическое элементов массива.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayAvg ( double & x []) {
   double s = 0 ;
   int      i , k = ArraySize ( x ) ;

   for ( i = 0 ; i < k ; i ++ ) s += x [ i ] ;
   if ( k > 0 ) s /= k ; else Print ( " ArrayAvg(): Массив пуст! " ) ;

   return ( s ) ;
}
PS Ekli, ArrayAvg() işlevini test etmek için bir komut dosyasıdır.
Dosyalar:
 
KimIV писал (а) >>

tamam... sıfır çubuğu için düzeltildi

Çok teşekkürler. İş yerinde internetle ilgili bir şey vardı, daha önce teşekkür edemedim.

 

ArrayAvGeom() işlevi.

Bu işlev, dizi öğelerinin geometrik ortalamasını döndürür.

  • x - double türünde bir dizi öğe.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.06.2008                                                     |
//|  Описание : Возвращает среднее геометрическое элементов массива.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений числового ряда                                      |
//+----------------------------------------------------------------------------+
double ArrayAvGeom ( double & x []) {
   double s = 1 , k = ArraySize ( x ) ;
   int      i ;

   for ( i = 0 ; i < k ; i ++ ) s *= x [ i ] ;
   if ( k > 0 ) s = MathPow ( s , 1 / k ) ; else Print ( " ArrayAvGeom(): Массив пуст! " ) ;

   return ( s ) ;
}
not. Ekli, ArrayAvGeom() işlevini test etmek için bir komut dosyasıdır.
Dosyalar:
 
KimIV писал (а) >>

ArrayAvGeom() işlevi.

Bu işlev, dizi öğelerinin geometrik ortalamasını döndürür.

  • x - double türünde bir dizi öğe.
not. Ekli, ArrayAvGeom() işlevini test etmek için bir komut dosyasıdır.

Sevgili KimIV , özellikler için teşekkürler!

Modu hesaplamak için aynı türde bir işlevi yazmak gerçekten mümkün mü?