KimIV'ten faydalı özellikler - sayfa 17

 

İşlevin kendisi:


 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.05.2008                                                     |
//|  Описание : Возвращает корреляцию двух рядов.                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив значений первого ряда                                        |
//|    y - массив значений второго ряда                                        |
//+----------------------------------------------------------------------------+
double Correlation ( double & x [] , double & y []) {
   double co=0, sa=0, sb=0, sc=0, xs=0, ys=0;
   int      i , k = MathMin ( ArraySize ( x ) , ArraySize ( y )) ;

   if ( k > 0 ) {
     for ( i = 0 ; i < k ; i ++ ) {
       xs += x [ i ] ; ys += y [ i ] ;
     }
     xs /= k ; ys /= k ;
     for ( i = 0 ; i < k ; i ++ ) {
       sa += ( x [ i ] - xs ) * ( y [ i ] - ys ) ;
       sb += ( x [ i ] - xs ) * ( x [ i ] - xs ) ;
       sc += ( y [ i ] - ys ) * ( y [ i ] - ys ) ;
     }
     sb = MathSqrt ( sb * sc ) ;
     if ( sb != 0 ) co = sa / sb ;
   }
   return ( co ) ;
}
not. Fragmanda Correlation() işlevini test etmek için bir komut dosyası var.
Dosyalar:
 

GetIndexLastPos() işlevi.

Bu fonksiyon, son açık pozisyonun indeksini veya -1'i döndürür. Kontrol edilen konumların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • sy - Piyasa aracının adı. Bu parametreyi ayarlarsanız, işlev yalnızca belirtilen takımın konumlarını dikkate alacaktır. Varsayılan değer "" herhangi bir piyasa aracı anlamına gelir. NULL , geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY , OP_SELL veya -1 . Varsayılan değer -1 , herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает индекс последней открытой позиции или -1            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetIndexLastPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime o ;
   int        i , k = OrdersTotal () , r =- 1 ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( o < OrderOpenTime ()) {
                 o = OrderOpenTime () ;
                 r = i ;
               }
             }
           }
         }
       }
     }
   }
   return ( r ) ;
}
not. GetIndexLastPos() işlevini test etmek için bir komut dosyası ektedir.
Dosyalar:
 

GetLotLastPos() işlevi.

Bu işlev, son açık pozisyonun parti boyutunu veya -1'i döndürür. Kontrol edilen konumların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • sy - Piyasa aracının adı. Bu parametreyi ayarlarsanız, işlev yalnızca belirtilen takımın konumlarını dikkate alacaktır. Varsayılan değer "" herhangi bir piyasa aracı anlamına gelir. NULL , geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY , OP_SELL veya -1 . Varsayılan değer -1 , herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает размер лота последней открытой позиции или -1       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetLotLastPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   datetime o ;
   double    l =- 1 ;
   int        i , k = OrdersTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( o < OrderOpenTime ()) {
                 o = OrderOpenTime () ;
                 l = OrderLots () ;
               }
             }
           }
         }
       }
     }
   }
   return ( l ) ;
}
not. GetLotLastPos() işlevini test etmek için bir komut dosyası ektedir.
Dosyalar:
 
KimIV :

GetIndexLastPos() işlevi.

Bu fonksiyon, son açık pozisyonun indeksini veya -1'i döndürür. Kontrol edilen konumların daha doğru seçimi, harici parametreler tarafından belirlenir:

not. GetIndexLastPos() işlevini test etmek için bir komut dosyası ektedir.

Ve indeks, nedir? Bu, son açık pozisyonun çubuk numarası mı? Yoksa farklı bir şey mi?

 
rid писал (а):
Ve indeks, nedir? Bu, son açık pozisyonun bar numarası mı? Yoksa farklı bir şey mi?

Açık pozisyonlar ve verilen emirler listesindeki pozisyon numarasıdır. Numaralandırma sıfırdan başlar ve pozisyonlar ve siparişler için aynıdır.

 

Sevgili Igor! Bana yardım et lütfen. Sorun şu ki, Expert Advisor'da MA'nın CCI'ye veya Stoch'a nasıl ekleneceğine dair kodu hiçbir yerde bulamıyorum. Ayrıca, alım veya satım sinyali bu MA'nın CCİ seviyesi ile kesiştiği noktada olmalıdır, örneğin +100/-100.

Belki de ihtiyacım olan kodun kullanıldığı bir danışman var mı?

 

GetMaxLotFromOpenPos() işlevi.

Bu fonksiyon, açık pozisyon sayısından maksimum lot boyutunu döndürür. Kontrol edilen konumların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • sy - Piyasa aracının adı. Bu parametreyi ayarlarsanız, işlev yalnızca belirtilen takımın konumlarını dikkate alacaktır. Varsayılan değer "" herhangi bir piyasa aracı anlamına gelir. NULL , geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY , OP_SELL veya -1 . Varsayılan değer -1 , herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает максимальный размер лота из открытых позиций        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetMaxLotFromOpenPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   double l = 0 ;
   int      i , k = OrdersTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( l < OrderLots ()) l = OrderLots () ;
             }
           }
         }
       }
     }
   }
   return ( l ) ;
}
not. Fragman, GetMaxLotFromOpenPos() işlevini test etmek için bir komut dosyası içerir.
 

GetMinLotFromOpenPos() işlevi.

Bu fonksiyon, açık pozisyon sayısından minimum lot boyutunu döndürür. Kontrol edilen konumların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • sy - Piyasa aracının adı. Bu parametreyi ayarlarsanız, işlev yalnızca belirtilen takımın konumlarını dikkate alacaktır. Varsayılan değer "" herhangi bir piyasa aracı anlamına gelir. NULL , geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY , OP_SELL veya -1 . Varsayılan değer -1 , herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает минимальный размер лота из открытых позиций         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetMinLotFromOpenPos ( string sy = "" , int op =- 1 , int mn =- 1 ) {
   double l = 0 ;
   int      i , k = OrdersTotal () ;

   if ( sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy || sy == "" ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( l == 0 || l > OrderLots ()) l = OrderLots () ;
             }
           }
         }
       }
     }
   }
   return ( l ) ;
}
not. GetMinLotFromOpenPos() işlevini test etmek için bir komut dosyası ektedir.
 
GYL :

Sevgili Igor! Bana yardım et lütfen. Sorun şu ki, Expert Advisor'da MA'nın CCI'ye veya Stoch'a nasıl ekleneceğine dair kodu hiçbir yerde bulamıyorum. Ayrıca, alım veya satım sinyali bu MA'nın CCİ seviyesi ile kesiştiği noktada olmalıdır, örneğin +100/-100.

Belki de ihtiyacım olan kodun kullanıldığı bir danışman var mı?

Soru açıkça konu dışı. Igor'un önemsiz şeyler üzerinde dikkatini dağıtmamak için böyle bir kod parçasına bir örnek veriyorum.

 double Stochastic_array [ 50 ] ; int j = 0 ; while ( j < 50 ) {
Stochastic_array [ j ] = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 ,
                                     MODE_SMA , 0 , MODE_MAIN , j ) ; j ++; }
ArraySetAsSeries ( Stochastic_array , true ) ;
double MA_0 = iMAOnArray ( Stochastic_array , 0 , MA_period , 1 , MODE_SMA , 0 ) ;
double Stochastic_0 = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , 0 ) ;
double Stochastic_1 = iStochastic ( NULL , 0 , Stochastic_period , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , 1 ) ;

MA. Hızlı. Tam olarak bir gün tutacağım - sonra sileceğim!

 
rid :
Soru açıkça konu dışı. Igor'un önemsiz şeyler üzerinde dikkatini dağıtmamak için böyle bir kod parçasına bir örnek veriyorum.

MA. Hızlı. Tam olarak bir gün tutacağım - sonra sileceğim!

Çok teşekkürler, bana çok yardımcı oldunuz.