KimIV'ten faydalı özellikler - sayfa 23

 

NumberOfBarCloseLastPos() işlevi.

Bu işlev, son konumun kapatma çubuğunun numarasını veya -1 değerini döndürür. Dikkate alınacak pozisyonların 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 - NULL , mevcut piyasa aracı anlamına gelir.
  • tf - Zaman çerçevesi. Varsayılan değer - 0 , geçerli zaman çerçevesi 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 - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos ( string sy = " 0 " , int tf = 0 , int op =- 1 , int mn =- 1 ) {
   datetime t ;
   int        i , k = OrdersHistoryTotal () ;

   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY )) {
       if ( OrderSymbol () == sy ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( t < OrderCloseTime ()) t = OrderCloseTime () ;
             }
           }
         }
       }
     }
   }
   return ( iBarShift ( sy , tf , t , True )) ;
}
not. Ekli, NumberOfBarCloseLastPos() işlevini test etmek için bir komut dosyasıdır.
 
 
 
KimIV :

DeleteOrders() işlevi. Test sürümü.

DeleteOrders() işlevi BuyLimit, BuyStop, SellLimit ve SellStop bekleyen siparişleri silmek için tasarlanmıştır. op - İşlem tipi, bekleyen emir tipi. Beş değerden biri mümkündür: -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT veya OP_SELLSTOP. Varsayılan değer -1, herhangi bir sipariş anlamına gelir.
mn
- MagicNumber, bekleyen siparişin kimlik numarası. Varsayılan değer -1, herhangi bir sihir anlamına gelir.

Merhaba. Sayfa 10'da bu işlev kullanıma sunulmuştur.

Depozitoları kaldırmak için Uzman Danışmanımda kullandım. Daha doğrusu kullanmak istedim. Fonksiyonu int başlangıç bölümünün dışına yerleştirdi

ve takılı

 if ( isCloseLastPosByTake ( NULL , OP_BUY , My order Buy ))    {
               DeleteOrders ( NULL , - 1 ,   My order Sell) ;   }

Ama derlerken bir hata alıyorum

'clDelete' - değişken tanımlanmadı C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)

Hatayı nasıl düzeltebilirim? clDelete nedir

Ve ClosePositions() işlevini kullandığımda - Pozisyonları piyasa fiyatından kapatıyorum, her şey yolunda - hatasız!

/ DeleteOrders işlevini ekleseniz ve henüz uygulamasanız bile, bu hata hala derleniyor!

 
Rita писал (а):
Ama derlerken bir hata alıyorum
'clDelete' - değişken tanımlanmadı C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)
Hatayı nasıl düzeltebilirim? clDelete nedir

Aynı yerde, ekte 10. sayfada test_DeleteOrders.mq4 dosyası var.

İndirin ve içindeki tüm clDelete sözlerini arayın.

 

İndirildi ve baktı! Böylece? Sadece bu çıkıyor ve sadece kapat simgesinin rengini ayarlamanız gerekiyordu!

Ama şimdi yine her şey yolunda değil. Şimdi bu hata gitti. AMA bir tane daha belirdi - zaten ClosePositions () işlevinde, bir hata - bu daha önce yoktu.

 if ( L_2Sell == true )                  {   
         ClosePositions ( NULL , - 1 , Magic ) ;
                                       }

'ClosePosBySelect' - fonksiyon tanımlı değil C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)
Ve orada bakılacak bir senaryo yok (s. 14)

Hatayı nasıl düzelteceğimi söyler misin?

 
Rita писал (а):
'ClosePosBySelect' - fonksiyon tanımlı değil C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)

Bu hata, ClosePosBySelect() işlevinin tanımlı olmadığı anlamına gelir.

Rita yazdı:
Hatayı nasıl düzelteceğimi söyler misin?
ClosePosBySelect() fonksiyon kodunu bulmanız ve bunu Expert Advisor'ınızın dosyasına yapıştırmanız gerekir. 13. sayfaya bakın.
 

Sizi tekrar rahatsız ettiğim için özür dilerim! ClosePositions()'ın yanına belirttiğiniz ClosePosBySelect() fonksiyonunu koydum ve derlemeden sonra zaten altı hata vardı! Eh, kötülük yeterli değil!

Dört, kendi başıma yaptım. Kayma, renk, kapatma deneme sayısı .... İki hata kaldı, -

ses dosyaları -

'UseSound' - değişken tanımlanmadı C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 13)

'NameFileSound' - değişken tanımlanmadı C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 33)

Onları nereden almalı? Nereye koymak?

Well extern bool UseSound = false;//Switch

PROPERTIES EXPERT ve NameFileSound'u koyacağım - bu nedir? ve nereye götürülür?

******************************************************* ***** *******************************

Bulundu ve küresel olarak yerleştirildi

 extern bool UseSound = false ; //выключатель звука
extern string NameFileSound =" alert . wav ";

Ve sonra derleyici bir hata yerine 4 parça attı:

'GetNameOP' - işlev tanımlı değil

'ErrorDescription' - işlev tanımlı değil

'else' - beklenmeyen belirteç

'GetNameOP' - işlev tanımlı değil

Görünüşe göre bu hatalar süresiz olarak görünmeye devam edecek. Bir ClosePositions() işlevini kullanmak için önce başka bir tane - ClosePosBySelect() koymam gerekiyordu. Ve diğeri, sırayla, bir tür ses gerektirir - ziller. Ve benim için tamamen gereksiz olan bu zil seslerini büyük zorluklarla bulduğumda, tamamen anlaşılmaz bir hata çıkıyor - 'else' - beklenmedik belirteç ve diğer hatalar. Henüz bu özelliği kullanmaya başlamadım bile. Sadece diğerlerinin arasına koyun.!

Bana hataları nasıl düzeltebileceğimi söyler misin? Tüm bu GetNameOP yorumlarını yaptı. Görünüşe göre hatalar gitmiş. Ama işlev onlarsız iyi çalışacak mı?

 
Rita писал (а):
Ve sonra derleyici bir hata yerine 4 parça attı:
'GetNameOP' - işlev tanımlı değil

Ekteki ilk sayfada testrSetOrder.mq4

Rita yazdı:
ErrorDescription' - işlev tanımlı değil

Uzman Danışmanınızın kodunda, satırı girin

#include <stdlib.mqh>

Rita yazdı:
'else' - beklenmeyen belirteç
Yukarıda anlatılanları yaptığınızda bu hata kendiliğinden kaybolacaktır.
 

NumberOfBarOpenLastPos() işlevi.

Bu işlev, son konumun veya -1'in açılmasının çubuk numarasını döndürür. Dikkate alınacak pozisyonların 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 - NULL , mevcut piyasa aracı anlamına gelir.
  • tf - Zaman çerçevesi. Varsayılan değer - 0 , geçerli zaman çerçevesi 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 - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos ( string sy = " 0 " , int tf = 0 , int op =- 1 , int mn =- 1 ) {
   datetime t ;
   int        i , k = OrdersTotal () ;

   if ( sy == "" || sy == " 0 " ) sy = Symbol () ;
   for ( i = 0 ; i < k ; i ++ ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol () == sy ) {
         if ( OrderType () == OP_BUY || OrderType () == OP_SELL ) {
           if ( op < 0 || OrderType () == op ) {
             if ( mn < 0 || OrderMagicNumber () == mn ) {
               if ( t < OrderOpenTime ()) t = OrderOpenTime () ;
             }
           }
         }
       }
     }
   }
   return ( iBarShift ( sy , tf , t , True )) ;
}
not. Ekli, NumberOfBarOpenLastPos() işlevini test etmek için bir komut dosyasıdır.
Neden: