KimIV'ten faydalı özellikler - sayfa 121

 

https://forum.mql4.com/ru/38949/page5#434241 işlevinde bir hata var.

Böyle olmalı

 double PriceOpenNearPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double mi, oop= 0 , p;
   int     i, k= OrdersTotal (), pp= 0 ;

   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) {
             if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
             if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
             if (p== 0 ) if ( StringFind (sy, "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
             if (pp== 0 || pp> MathAbs (OrderOpenPrice()-mi)/p) {
              pp= MathAbs (OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
              if(pp==0) break;
            }
          }
        }
      }
    }
  }
   return (oop); 

}

Lütfen yeniden yükleyin.

 

Hepinize iyi günler!

Uzman Danışmanları düzeltirken (MQL güncellemeleri nedeniyle), Igor Kim'in işlevlerinin çoğunun çalışmayı bıraktığı ortaya çıktı. dahil en çok talep gören Örneğin,

NumberOfPositions - Konum sayısını döndürür.

ExistPositions - Konumların varlığının bayrağını döndürür

Dün başlıkta bahsettiğim başka bir işlev: NumberOfBarCloseLastPos() işlevi.
Bu işlev, son konumun kapatma çubuğunun numarasını döndürür

Test cihazı grafiğinde bir yorum görüntülüyorum ve fırsatların varlığına (mevcut, kapalı) rağmen işlevlerin her zaman sabit değerler (-1 ve/veya 0) döndürdüğü açık. Ve danışman, kodunda bu işlevler tarafından belirlenen koşulları görmüyor gibi görünüyor.

Ayrıca, sözde çalışmayı bıraktılar. "çalıştırılabilir" işlevler, örneğin, pozisyonları kapatmak için bir dizi işlev: ClosePosBySelect (Önceden seçilmiş bir konumu kapatır) ve ilgili:
ClosePositions - Pozisyonları piyasa fiyatından kapatma vb.

Lütfen söyleyin, işlevlerde neyin hatalı olduğunu ve neyin düzeltilmesi gerektiğini, en azından listelenenlerden biri örneğinde - NumberOfPositions - Konum sayısını döndürür ?

 
Rita :

Hepinize iyi günler!

Uzman Danışmanları düzeltirken (MQL güncellemeleri nedeniyle), Igor Kim'in işlevlerinin çoğunun çalışmayı bıraktığı ortaya çıktı. dahil en çok talep gören Örneğin,

NumberOfPositions - Konum sayısını döndürür.

ExistPositions - Konumların varlığının bayrağını döndürür

Dün başlıkta bahsettiğim başka bir fonksiyon: NumberOfBarCloseLastPos() fonksiyonu.
Bu işlev, son konumun kapatma çubuğunun numarasını döndürür

Test cihazı grafiğinde bir yorum görüntülüyorum ve fırsatların varlığına (mevcut, kapalı) rağmen işlevlerin her zaman sabit değerler (-1 ve/veya 0) döndürdüğü açık. Ve danışman, kodunda bu işlevler tarafından belirlenen koşulları görmüyor gibi görünüyor.

Ayrıca, sözde çalışmayı bıraktılar. "çalıştırılabilir" işlevler, örneğin, pozisyonları kapatmak için bir dizi işlev: ClosePosBySelect (Önceden seçilmiş bir konumu kapatır) ve ilgili:
ClosePositions - Pozisyonları piyasa fiyatından kapatma vb.

Lütfen söyleyin, işlevlerde neyin hatalı olduğunu ve neyin düzeltilmesi gerektiğini, en azından listelenenlerden biri örneğinde - NumberOfPositions - Konum sayısını döndürür ?

NumberOfPositions() benim için iyi çalışıyor! Doğru, MQL4 ile herhangi bir avantaj olmadan çalışmaya devam ediyorum! Güncellenmiş bir dilde yazarsanız, muhtemelen her şeyin buna göre ayarlanması veya Freelance ile iletişime geçilmesi gerekir! Şimdi her şey korkunç bir güçle ticarileştirildi! Size içtenlikle sempati duyuyorum!

NumberOfPositions() öğesini bir şekilde ayarlayabilirseniz, ExistPositions() gerekli değildir! Kontrolü şu şekilde yapın:

 if (NumberOfPositions() > 0 ) //вместо if(ExistPositions() == true)
---------------------------- //или
if (NumberOfPositions() == 0 ) //вместо if(ExistPositions() == false)

İyi şanlar!

 
borilunad :

NumberOfPositions() benim için iyi çalışıyor! Doğru, MQL4 ile herhangi bir avantaj olmadan çalışmaya devam ediyorum! Güncellenmiş bir dilde yazarsanız, muhtemelen her şeyin buna göre ayarlanması veya Freelance ile iletişime geçilmesi gerekir! Şimdi her şey korkunç bir güçle ticarileştirildi! !

Buraya sık sık gelmiyorum, bu yüzden bilmiyorum, "artıları olmayan MQL4" anlamına mı geliyor?

Sizce burada cevap verebilecek olanlar , freelance çalışmakla ilgili basit bir sorunun cevabını ziyaretçiyi ödemeye zorlamak için yapmıyorlar mı?

İlginçtir ve yerel programcılar-reklamcılar, I. Kim tarafından güncellenmiş MQL ile MT4'ün en son sürümünde çalışmak için böyle bir işlevin düzeltilmesini ne kadar tahmin eder:

 //|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), kp= 0 ;
   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) kp++;
          }}}}}
   return (kp);
}
Size hatırlatmama izin verin, Comment ( NumberOfPositions(NULL, -1, Magic) ) çıktısını alırken; Açık olsa bile -1'in sürekli döndürüldüğü görülebilir. pozisyon danışmanı
 
Rita :

Buraya sık sık gelmiyorum, bu yüzden bilmiyorum, "artıları olmayan MQL4" anlamına mı geliyor?

Sizce burada cevap verebilecek olanlar , freelance çalışmakla ilgili basit bir sorunun cevabını ziyaretçiyi ödemeye zorlamak için yapmıyorlar mı?

İlginçtir ve yerel programcılar-reklamcılar, I. Kim tarafından güncellenmiş MQL ile MT4'ün en son sürümünde çalışmak için böyle bir işlevin düzeltilmesini ne kadar tahmin eder:

Size hatırlatmama izin verin, Comment( NumberOfPositions(NULL, -1, Magic) ) çıktısını alırken; Açık olsa bile -1'in sürekli döndürüldüğü görülebilir. pozisyon danışmanı

Bir işlev parametresi olarak NULL , parametre olmadığı anlamına gelir.

Böylesi daha iyi) Yorum ( NumberOfPositions( Symbol() , -1, Magic) ) ;

 
Rita :

Buraya sık sık gelmiyorum, bu yüzden bilmiyorum, "artıları olmayan MQL4" anlamına mı geliyor?

Sizce burada cevap verebilecek olanlar , freelance çalışmakla ilgili basit bir sorunun cevabını ziyaretçiyi ödemeye zorlamak için yapmıyorlar mı?

İlginçtir ve programcılar-reklamcılar böyle bir işlevin düzeltilmesini ne kadar tahmin eder:

Size şunu hatırlatmama izin verin, Comment( NumberOfPositions(NULL, -1, Magic) ); görünür, - -1 otkr varlığında bile sürekli döner. pozisyon danışmanı

MQL4++ güncellendi, burada dedikleri gibi!

Aynı işleve sahibim, doğru pozisyon sayısını verir! Ama Comment()'de bir hata var! İşlevin çalıştığından eminim!

Şu şekilde deneyin:

 int start() // или что у Вас там, как в обновлённом MQL4


   int BuyPos = NumberOfPositions( Symbol (),OP_BUY, Magic); //это вызов этой функции, чтобы знать, сколько у Вас баев
   int SellPos = NumberOfPositions( Symbol (),OP_SELL,Magic); //а это для селлов



   Comment ( "Buy " ,BuyPos, " Sell " ,SellPos);

Yani her şeyi tam olarak grafikte göreceksiniz, koşulları kontrol etmek için BuyPos ve SellPos değişkenlerini kullanın! Bakın benimki nasıl:

       if (BuyPos == 0 && SellPos == 0 ) 
      {
// и так далее ...

İyi şanlar!

 

Bahşiş için teşekkürler borilunad ve vadynik !

Gerçekten de, işlev kazandı! İşte size bazı yararlı tavsiyeler için küçük bir hediye: https://www.youtube.com/watch?v=SFJeHI2LVX4&feature=Contact !

 
borilunad :

Şimdi her şey korkunç bir güçle ticarileştirildi! Size içtenlikle sempati duyuyorum!

Boris, bunu söylemekten utanmıyor musun? Size yardımcı olmak için kaç sayfa yazıldığını sayın. Ve bu sana yardım eden herkese minnettarlığın mı? Herkesi hatırlamıyorum, ama Artyom (artmedia70), ruhunun nezaketinden, sorununuzu besledi ve yanıt olarak oraya da geldi ...
 
Rita :

İşte bir alternatif. İşlev, yalnızca sipariş sayısı değiştiyse çağrılır. Ayrıca sipariş tipi değiştiyse çağrılabilir.

 // переменные глобального уровня
int Total[ 6 ];
int ot;

void OnTick ()
{
 if (ot != OrdersTotal ())
  CountTrades();

   Comment ( "Ордеров BUY " , Total[OP_BUY], "\n"
        , "Ордеров SELL " , Total[OP_SELL], "\n"
        , "Ордеров BUYLIMIT " , Total[OP_BUYLIMIT], "\n"
        , "Ордеров SELLLIMIT " , Total[OP_SELLLIMIT], "\n"
        , "Ордеров BUYSTOP " , Total[OP_BUYSTOP], "\n"
        , "Ордеров SELLSTOP " , Total[OP_SELLSTOP], "\n"
}
void CountTrades()
{ /*********************Подсчёт открытых ордеров**********************/
   ArrayInitialize (Total, 0 );
           int type, total = OrdersTotal (); ot = 0 ;
             for ( int i = 0 ; i < total; i++)
             {
               if ( OrderSelect (i, SELECT_BY_POS) && OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
               {
                type = OrderType();
                 Total[type] += 1 ;
                ot++;
               }
             }
} /*******************************************************************/
 
Rita :

Bahşiş için teşekkürler borilunad ve vadynik !

Gerçekten de, işlev kazandı! İşte size bazı faydalı tavsiyeler için mütevazı bir hediye: https://www.youtube.com/watch?v=SFJeHI2LVX4&feature=Contact !

Teşekkür ederim! Sadece size sunulan başka bir işlev sizi başarısızlığa uğratabilir, tk. MQL4++ ile yazılmıştır!