MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 337

 
Artyom Trishkin :

Garip bir hissin var. Gereksiz değişkenler olmadan ne kadar basit olduğunu gösterdim.


Bu yüzden yorgunum ve dinlenme vaktim geldi - uyumak, evet.

 

Tünaydın! Expert Advisor'daki hangi işlevler bir gösterge penceresine dönüştürülebilir?

 
Nauris Zukas :

Tünaydın! Expert Advisor'daki hangi işlevler bir gösterge penceresine dönüştürülebilir?


EA'dan boş bir gösterge arayın.

 
Alekseu Fedotov :

EA'dan boş bir gösterge arayın.

Teşekkür ederim!

 
Vitaly Muzichenko :

İhtiyacınız olan kodu burada bulun


Merhaba! Son açık satış emrinin fiyatını belirleme işlevini üstlendim.

PriceS( string sy= "0" , int op= OP_SELL , int mn=- 1 ) {             //Цена последнего открытого Селл ордера
   datetime t;
   double    r= 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 (t< OrderOpenTime ()) {
                t= OrderOpenTime ();
                r= OrderOpenPrice ();
              }
            }
          }
        }
      }
    }
  }
   return (r);
}

ancak onu danışmana eklediğimde, 'sy' - beklenmedik belirteç işlevi koşulunda derleme hataları alıyorum

'=' - beklenmeyen belirteç 252 on sekiz

l değeri gerekli 1 1

'dize'den 'sayıya' örtük dönüştürme 252 on dokuz

'=' - l değeri gerekli 252 on sekiz

'=' - 'void' tipinin ifadesi yasa dışı 252 on sekiz

'op' - beklenmedik belirteç 252 28

'=' - beklenmeyen belirteç 252 otuz

l değeri gerekli 1 1

'OP_SELL' - yasadışı işlem kullanımı 252 31

tür dönüştürme nedeniyle olası veri kaybı 252 otuz

'=' - l değeri gerekli 252 otuz

'=' - 'void' tipinin ifadesi yasa dışı 252 otuz

'mn' - beklenmedik belirteç 252 44

'=' - beklenmeyen belirteç 252 46

l değeri gerekli 1 1

'1' - yasadışı işlem kullanımı 252 48


Görünüşe göre her şey yolunda olmalı!??Lütfen söyle, kopyaladım ve hiçbir şeyi değiştirmedim.


 
vikzip :

Merhaba! Son açık satış emrinin fiyatını belirleme işlevini üstlendim.

ancak onu danışmana eklediğimde, 'sy' - beklenmedik belirteç işlevi koşulunda derleme hataları alıyorum

'=' - beklenmeyen belirteç 252 on sekiz

l değeri gerekli 1 1

'dize'den 'sayıya' örtük dönüştürme 252 on dokuz

'=' - l değeri gerekli 252 on sekiz

'=' - 'void' tipinin ifadesi yasa dışı 252 on sekiz

'op' - beklenmedik belirteç 252 28

'=' - beklenmeyen belirteç 252 otuz

l değeri gerekli 1 1

'OP_SELL' - yasadışı işlem kullanımı 252 31

tür dönüştürme nedeniyle olası veri kaybı 252 otuz

'=' - l değeri gerekli 252 otuz

'=' - 'void' tipinin ifadesi yasa dışı 252 otuz

'mn' - beklenmedik belirteç 252 44

'=' - beklenmeyen belirteç 252 46

l değeri gerekli 1 1

'1' - yasadışı işlem kullanımı 252 48


Görünüşe göre her şey yolunda olmalı!??Lütfen söyle, kopyaladım ve hiçbir şeyi değiştirmedim.


İşlev türünü döndürmeniz gerekiyor

 PriceS( string sy= "0" , int op= OP_SELL , int mn=- 1 ) {
double PriceS( string sy= "0" , int op= OP_SELL , int mn=- 1 ) {
 
vikzip :


Görünüşe göre her şey yolunda olmalı!??Lütfen söyle, kopyaladım ve hiçbir şeyi değiştirmedim .



Bir işlev üstbilgisi ve işlev türünü kopyalamadı


Başlangıçta, işlev şöyle görünür:

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает цену открытия последней открытой позиций.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double PriceOpenLastPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t= 0 ;
   double    r= 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 (t< OrderOpenTime ()) {
                t= OrderOpenTime ();
                r= OrderOpenPrice ();
              }
            }
          }
        }
      }
    }
  }
   return (r);
}
 
'op' - unexpected token Армата.mq4 248 28 'OP_SELL' - illegal operation use Армата.mq4 248 31 'mn' - unexpected token Армата.mq4 248 44
 double PriceS( string sy= "" , int op= OP_SELL , int mn=- 1 ) {             //Цена последнего открытого Селл ордера
   datetime t;
   double    r= 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 (t< OrderOpenTime ()) {
                t= OrderOpenTime ();
                r= OrderOpenPrice ();
              }
            }
          }
        }
      }
    }
  }
   return (r);
}
Alekseu Fedotov:

Bir işlev üstbilgisi ve işlev türünü kopyalamadı


Başlangıçta, işlev şöyle görünür:


Alekseu Fedotov :

Bir işlev üstbilgisi ve işlev türünü kopyalamadı


Başlangıçta, işlev şöyle görünür:


Bu doğru, hala örnekte yazılmıştır. Doğru anladıysam, yaptığım sipariş türünü seçebilirsiniz.

  • 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.
Sonra başlamadan önce koyarak işlevi global yaptım. Ve fonksiyonun adından hemen önce double tipini döndürürsem bir hata çıkıyor.Nedenini söyleyin lütfen!

'PriceS' - işlev yalnızca genel kapsamda bildirilebilir 252 on

İşlevin küresel olması gerektiğini anlıyorum ?!

çevrilmiş bir hata çevirmen yazıyor

 bir fonksiyon sadece global kapsamda bildirilebilir ve eğer bu kelimelerin anlamlarını doğru anlarsam global olarak bildirilmelidir ve bu nedenle ondan önce bir double gelmemelidir. Sadece kopyalasanız bile neden sy'de bir hata yazdığı açık değil.
örneklem

'sy' - beklenmeyen belirteç 248 17 '=' - beklenmeyen belirteç 248 19 l değeri gerekli 1 1

sy küresel hale getirilebilir mi? ve işlevdeki diğer bildirilen değişkenlerle aynı hata.

'op' - beklenmeyen belirteç 248 28 'OP_SELL' - yasadışı işlem kullanımı 248 31 'mn' - beklenmeyen belirteç 248 44

 
vikzip :


Bu doğru, hala örnekte yazılmıştır. Doğru anladıysam, yaptığım sipariş türünü seçebilirsiniz.

  • 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.
Sonra başlamadan önce koyarak işlevi global yaptım. Ve fonksiyonun adından hemen önce double tipini döndürürsem bir hata çıkıyor.Nedenini söyleyin lütfen!

'PriceS' - işlev yalnızca genel kapsamda bildirilebilir 252 on

İşlevin küresel olması gerektiğini anlıyorum ?!

çevrilmiş bir hata çevirmen yazıyor


Fonksiyonu başlatma fonksiyonunun dışına yerleştirin

Ve start fonksiyonunun gövdesinde buna şöyle diyoruz:

PriceOpenLastPos(); //текущий символ  любая последняя поз.


PriceOpenLastPos( Symbol (), OP_SELL ); //текущий символ  OP_SELL   без магика


PriceOpenLastPos( Symbol (), OP_BUY ); //текущий символ   OP_BUY  без магика

Virgülle ayrılmış 3 sihirli parametre, kendinizinkini veya 0'ı koyun

 
Alekseu Fedotov :

Fonksiyonu başlatma fonksiyonunun dışına yerleştirin

Ve start fonksiyonunun gövdesinde buna şöyle diyoruz:

Virgülle ayrılmış 3 sihirli parametre, kendinizinkini veya 0'ı koyun


Çok teşekkürler!! Fonksiyonu başlangıcın dışına taşıdığım anda tüm hatalar kayboldu!!