KimIV'ten faydalı özellikler - sayfa 16

 
KimIV :
horosh :
e-TFL_v2 Expert Advisor'da bulunan bool idPriceLevel() işlevinde bir hata var: son durumda gdUpPrice==0 iki kez tekrarlanıyor, muhtemelen ikinci durumda gdDnPrice==0 yazmak istediniz.

Sayesinde! e-TFL_v2 Expert Advisor'ın düzeltilmiş versiyonu siteye yüklenmiştir.


horosh :
Bazı nedenlerden dolayı, bu danışman test cihazımda görsel modda çalışıyor, ancak yorumlarda satış ve satın alma seviyeleri hakkında rapor vermesine rağmen bir demo hesabında pozisyon açmıyor. Belki bana neyin yanlış olduğunu söyleyebilirsin.

Bilmiyorum... Bu Uzman Danışmanı NorthFinance demosunda test etmeyi yeni bitirdim. Dün Moskova'dan bir arkadaş aradı. Aynı danışman hakkında şikayette bulundum. Mesela çizgiden bir pozisyon açar, sonra bir tane daha ve bir tane daha, siz onu durdurana kadar birçok pozisyon açabilir. Bu nedenle, testin amaçları iki idi:

1. Sorunuz üzerine. Genel sağlık kontrolü.

2. Arkadaşımın sorusu üzerine. Bir satırdan sadece bir pozisyondan açma.

Test etmek için e-TFL_v2 Expert Advisor'ı 5 dakikalık TF EURUSD, GBPUSD, USDCHF ve USDJPY'ye koydum. Son 20-30 bar için kanal çizmek için trend çizgileri kullandım. Sonuç olarak, danışman olması gerektiği gibi çalıştı. Euro alt satırdan satın alındı ve yen tepeden satıldı. Pound ve şef için de her şey doğru bir şekilde işlendi. Bu yüzden kendiniz kontrol edin. İşçi danışmanı.

Kim IV :
horosh :
e-TFL_v2 Expert Advisor'da bulunan bool idPriceLevel() işlevinde bir hata var: son durumda gdUpPrice==0 iki kez tekrarlanıyor, muhtemelen ikinci durumda gdDnPrice==0 yazmak istediniz.

Sayesinde! e-TFL_v2 Expert Advisor'ın düzeltilmiş versiyonu siteye yüklenmiştir.


horosh :
Bazı nedenlerden dolayı, bu danışman test cihazımda görsel modda çalışıyor, ancak yorumlarda satış ve satın alma seviyeleri hakkında rapor vermesine rağmen bir demo hesabında pozisyon açmıyor. Belki bana neyin yanlış olduğunu söyleyebilirsin.

Bilmiyorum... Bu Uzman Danışmanı NorthFinance demosunda test etmeyi yeni bitirdim. Dün Moskova'dan bir arkadaş aradı. Aynı danışman hakkında şikayette bulundum. Mesela çizgiden bir pozisyon açar, sonra bir tane daha ve bir tane daha, siz onu durdurana kadar birçok pozisyon açabilir. Bu nedenle, testin amaçları iki idi:

1. Sorunuz üzerine. Genel sağlık kontrolü.

2. Arkadaşımın sorusu üzerine. Bir satırdan sadece bir pozisyondan açma.

Test etmek için e-TFL_v2 Expert Advisor'ı 5 dakikalık TF EURUSD, GBPUSD, USDCHF ve USDJPY'ye koydum. Son 20-30 bar için kanal çizmek için trend çizgileri kullandım. Sonuç olarak, danışman olması gerektiği gibi çalıştı. Euro alt satırdan satın alındı ve yen tepeden satıldı. Pound ve şef için de her şey doğru bir şekilde işlendi. Bu yüzden kendiniz kontrol edin. İşçi danışmanı.

Danışmanın mantığını tam olarak anlayamayabilirim, ancak bana öyle geliyor ki, bir satır kullanılırsa, hatanın olduğu koşul yerine getirilecek ve idPriceLevel() işlevi False değerini alacak ve bu pozisyon açmaya izin vermeyin. Yanlışsam açıklayın.

 
khorosh :

bir satır kullanılırsa, hatanın olduğu koşul yürütülür ve idPriceLevel() işlevi False değerini alır ve bu, bir pozisyon açılmasına izin vermez.

Evet bu doğru. EA'nın normal çalışması için iki satıra ihtiyacı vardır: biri fiyatın üstünde, ikincisi ise mevcut fiyatın altında. Sitedeki açıklamayı düzelttim. Teşekkür ederim!

 
KimIV :
horosh :

bir satır kullanılırsa, hatanın olduğu koşul yürütülür ve idPriceLevel() işlevi False değerini alır ve bu, bir pozisyon açılmasına izin vermez.

Evet bu doğru. EA'nın normal çalışması için iki satıra ihtiyacı vardır: biri fiyatın üstünde, ikincisi ise mevcut fiyatın altında. Sitedeki açıklamayı düzelttim. Teşekkür ederim!

Bu yüzden tek hat ile çalıştığım için pozisyon açmadım. Şimdi her şey netleşti. Özverili çalışmanız için teşekkürler. İşlevleriniz çok açık ve net bir şekilde açıklanmıştır. Muhtemelen şu anda oluşturulmuş Uzman Danışmanların çoğunda, işlevleriniz artık kullanılmaktadır.

 

ExistOPNearMarket() işlevi.

Bu işlev, piyasaya yakın (piyasadan belirli bir mesafede) bir emir veya pozisyonun varlığı için bir bayrak döndürür. Kontrol edilen siparişlerin veya pozisyonların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrüman için emirleri veya pozisyonları kontrol edecektir. "" veya NULL , geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, emir veya pozisyon türü. Geçerli değerler OP_BUY , OP_SELL , OP_BUYLIMIT , OP_SELLLIMIT , OP_BUYSTOP , OP_SELLSTOP veya -1'dir . Varsayılan değer -1 , herhangi bir ticaret işlemi anlamına gelir.
  • mn - Sipariş veya konum kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir tanımlayıcı.
  • ds - Pazardan puan olarak uzaklık. Varsayılan değer 1000000'dir .
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг существования позиции или ордера около рынка   |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    op - торговая операция               (    -1      - любая операция)     |
//|    mn - MagicNumber                     (    -1      - любой магик)        |
//|    ds - расстояние в пунктах от рынка   (  1000000   - по умолчанию)       |
//+----------------------------------------------------------------------------+
bool ExistOPNearMarket ( string sy = "" , int op =- 1 , int mn =- 1 , int ds = 1000000 ) {
   int i , k = OrdersTotal () , ot ;

   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   double p = MarketInfo ( sy , MODE_POINT ) ;
   if ( p == 0 ) if ( StringFind ( sy , " JPY " ) < 0 ) p = 0.0001 ; else p = 0.01 ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       ot = OrderType () ;
       if (( OrderSymbol () == sy ) && ( op < 0 || ot == op )) {
         if ( mn < 0 || OrderMagicNumber () == mn ) {
           if ( ot == OP_BUY || ot == OP_BUYLIMIT || ot == OP_BUYSTOP ) {
             if ( MathAbs ( MarketInfo ( sy , MODE_ASK ) - OrderOpenPrice ()) < ds * p ) return ( True ) ;
           }
           if ( ot == OP_SELL || ot == OP_SELLLIMIT || ot == OP_SELLSTOP ) {
             if ( MathAbs ( OrderOpenPrice () - MarketInfo ( sy , MODE_BID )) < ds * p ) return ( True ) ;
           }
         }
       }
     }
   }
   return ( False ) ;
}
not. Fragmanda, ExistOPNearMarket() işleviyle denemeler yapmak için bir komut dosyası bulunur.
Dosyalar:
 

ExistPosByPrice() işlevi.

Bu işlev, belirtilen açılış fiyatında pozisyon varlığı bayrağını 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, fonksiyon sadece belirtilen enstrümanın pozisyonlarını kontrol edecektir. 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.
  • pp - Pozisyon açılış fiyatı. 0 varsayılan değeri, herhangi bir fiyat anlamına gelir.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг существования позиций по цене открытия         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - торговая операция          (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    pp - цена                       ( 0   - любая цена)                     |
//+----------------------------------------------------------------------------+
bool ExistPosByPrice ( string sy = "" , int op =- 1 , int mn =- 1 , double pp = 0 ) {
   double px , py ;
   int      d , 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 == "" ) && ( op < 0 || OrderType () == op )) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( mn < 0 || OrderMagicNumber () == mn ) {
             d = MarketInfo ( OrderSymbol () , MODE_DIGITS ) ;
             px = NormalizeDouble ( pp , d ) ;
             py = NormalizeDouble ( OrderOpenPrice () , d ) ;
             if ( pp <= 0 || px == py ) return ( True ) ;
           }
         }
       }
     }
   }
   return ( False ) ;
}
not. Fragman, ExistPosByPrice() işlevini test etmek için bir komut dosyası içerir.
Dosyalar:
 

GetAmountLotFromOpenPos() işlevi.

Bu işlev, birçok açık pozisyonun toplamını döndürür. Dikkate alınacak pozisyonları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 GetAmountLotFromOpenPos ( 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 ) {
               l += OrderLots () ;
             }
           }
         }
       }
     }
   }
   return ( l ) ;
}
not. GetAmountLotFromOpenPos() işlevini test etmek için bir komut dosyası ektedir.
 

GetIndexByTicket() işlevi.

Bu fonksiyon, bilete göre siparişin veya pozisyonun indeksini döndürür. Sıralanacak siparişlerin veya pozisyonların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • ti - Sipariş bileti, pozisyonlar. Bu parametrenin değeri boş veya boş olamaz.
  • 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 , emir veya pozisyon türü. Geçerli değerler OP_BUY , OP_SELL , OP_BUYLIMIT , OP_SELLLIMIT , OP_BUYSTOP , OP_SELLSTOP veya -1'dir . 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                                                     |
//|  Описание : Возвращает индекс ордера или позиции по тикету.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    ti - тикет ордера, позиции                                              |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetIndexByTicket ( int ti , string sy = "" , int op =- 1 , int mn =- 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 == "" ) && ( op < 0 || OrderType () == op )) {
         if (( mn < 0 || OrderMagicNumber () == mn ) && OrderTicket () == ti ) return ( i ) ;
       }
     }
   }
   return ( - 1 ) ;
}
not. GetIndexByTicket() işlevini test etmek için bir komut dosyası ektedir.
Dosyalar:
 

Merhaba

Parametre olarak iletilen iki serinin korelasyonunu belirlemek için bir fonksiyonunuz olup olmadığını bilmek istiyorum.

 
scorpionk :

Merhaba

Parametre olarak iletilen iki serinin korelasyonunu belirlemek için bir fonksiyonunuz olup olmadığını bilmek istiyorum.

hayır... ama bu konuya ilgim var. Korelasyonu hesaplamak için formüller sağlarsanız, bir fonksiyon yazacağım.


not. Formülleri kendim aramayacağım. Materyallerin olduğu linkleri de takip etmeyeceğim. Yani, konuyu anlamak gibi bir arzum yok. Sadece hazır formülleri kullanarak bir fonksiyon yazma arzusu vardır.

 
KimIV :
akrep :

Merhaba

Parametre olarak iletilen iki serinin korelasyonunu belirlemek için bir fonksiyonunuz olup olmadığını bilmek istiyorum.

hayır... ama bu konuya ilgim var. Korelasyonu hesaplamak için formüller sağlarsanız, bir fonksiyon yazacağım.


not. Formülleri kendim aramayacağım. Materyallerin olduğu linkleri de takip etmeyeceğim. Yani, konuyu anlamak gibi bir arzum yok. Sadece hazır formülleri kullanarak bir fonksiyon yazma arzusu vardır.


Korelasyon Formülü

Neden: