KimIV'ten faydalı özellikler - sayfa 20

 

GetTypeLastClosePos() işlevi.

Bu işlev, son kapatılan konumun türünü veya -1'i 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.
  • 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 - текущий символ)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetTypeLastClosePos ( string sy = "" , int mn =- 1 ) {
   datetime t ;
   int        i , k = OrdersHistoryTotal () , r =- 1 ;

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

GetTypeLastOpenPos() işlevi.

Bu işlev, son açık pozisyonun türünü veya -1'i 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.
  • 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 - текущий символ)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetTypeLastOpenPos ( string sy = "" , int mn =- 1 ) {
   datetime t ;
   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 == "" ) && ( mn < 0 || OrderMagicNumber () == mn )) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( t < OrderOpenTime ()) {
             t = OrderOpenTime () ;
             r = OrderType () ;
           }
         }
       }
     }
   }
   return ( r ) ;
}
not. GetTypeLastOpenPos() işlevini test etmek için bir komut dosyası ektedir.
Dosyalar:
 
KimIV :

Çevrimiçi için OpenPosition() işlevi.

      if ( err == 128 || err == 142 || err == 143 ) {
        Sleep ( 1000 * 66.666 ) ;
        if ( ExistPositions ( sy , op , mn , ot )) {
          if ( UseSound ) PlaySound ( NameFileSound ) ; break ;
        }
      

142 ve 143 hata kodları ne anlama geliyor?

Teşekkür ederim.

 
zennon :

142 ve 143 hata kodları ne anlama geliyor?

142 - Sipariş kuyruğa alındı.

143 - Emir, bayi tarafından icra için kabul edildi.

Daha fazlasını buradan okuyun

 

Dock'taki tavsiye, onları hata 128 olarak ele almaktır.

mümkünse, bu konuda sizin bakış açınızdan veya konumunuzdan birkaç kelime ...

 
kombat :

Dock'taki tavsiye, onları hata 128 olarak ele almaktır.

mümkünse, bu konuda sizin bakış açınızdan veya konumunuzdan birkaç kelime ...

Benim bakış açım, Andrey'in yukarıda iki gönderi sağladığı kodda ifade ediliyor.

 

Pardon... Gördüm tabii...

P hakkında t benim anlayışımda biraz anlaşılmaz.

 Sleep ( 1000 * 66.666 ) ;

bunun yanında ve hiç düşünmeden... uyku...

Ama eğer ve eğer daha ileriyse, gerçekten değil.

onlar. uyuruz , pozisyon varsa marş oynarız.

-

Tamam, soru daha topalsa, o zaman beni tekrar bağışla ve cevap vermeden gidebilirsin .

 
kombat писал (а):
Tamam, soru daha topalsa, o zaman beni tekrar bağışla ve cevap vermeden gidebilirsin .

hayır... hadi çözelim... parçalamak anlamayı derinleştirir... ben sadece senin anlamadığın şeyi anlamıyorum. Soruyu basit ve genel kabul görmüş terimlerle formüle edin. Hazırda bekletme aralığı sizi rahatsız ediyor mu? Neden tam olarak 66 saniye?

 
KimIV :
Neden tam olarak 66 saniye?

Hayır, bu değil! bununla o zaman soru yok ... kesinlikle!

Ancak bu parçadaki daha sonraki mantıksal-sıralı eylem çok iyi değil.

Diyelim ki bir hata kodumuz var, uyuyoruz, sonra eğer bir boğanın varlığı için, bu fonksiyon etkinse Shpoen valsi çalıyor ...

-

(Lanet olsun, mesaj kuyrukları kayboluyor, kendimi tekrar etmem gerekiyor :(((

-

Başladığımız şeye nasıl devam edeceğimiz sorularıyla çok daha fazla ilgileniyor!

onlar. daha fazla ticaret hareketi: ya işlev çekiçleyecek

açılana veya kontrolü başka birine aktarana kadar ...

İlk durumda, nasıl "döngü" yapılacağı, "kendisi" olarak adlandırılacağı veya nasıl yapılacağı açık değil?

 

hmm... Hâlâ hiçbir şey anlamadım. Rastgele ateş edeceğim. Aşağıdakilerin tümü 128, 142 ve 143 hataları için geçerli olacaktır.

Hata 128 herhangi bir şekilde ele alınmazsa, bir yerine iki özdeş açık pozisyon alma riski vardır. İki yıl boyunca iki gerçek hesapta işlem yaparken böyle bir vakayı sadece bir kez yaşadım. Pozisyon tekrarı, ticaret sunucusunun herhangi bir nedenle terminale işlem yürütme zaman sınırının sona ermesiyle ilgili bir mesaj göndermesi nedeniyle oluşur. Terminalin hizmeti reddedilmedi. Ve anlaşma hala yürütülebilir. Sadece infazı "izin verilmeyecek kadar" uzun bir süre ertelendi. Böyle bir mesajdan sonra, başka bir yürütme isteği gönderilirse, her iki istek de yürütülebilir: gecikmiş olan ve yenisi. Böyle bir durumdan kaçınmak için, geliştiricilerin tavsiyesi üzerine, en az bir dakika duraklatmak ve ticaret sunucusunun yürütmenin geciktiğine dair bir mesaj gönderdiği talebin yerine getirilip getirilmediğini kontrol etmek gerekir. EVET ise hedefe ulaşılır - pozisyon açıktır, HAYIR ise ticaret talebini tekrarlayabilirsiniz. Kodumun uyguladığı 128, 142 ve 143 hatalarını işleme mantığı budur.

Neden: