Uzman Danışmanlar Topluluğu - sayfa 7

 
Bu, fark == 0 olduğunda özel durum için bir kontroldür.
Bu döngü, sıfır olmayan bir fark bulana kadar satırı geriye doğru tarar.

Bunu yapmamak mümkündür, ancak M1 == M2 olduğunda yanlışlıkla çubuğa çarparsak kavşağı kaçırma şansımız vardır.

if'de < ile <= değiştirebilirsiniz, o zaman bu kesişim durumunu yakalayacağız,
ancak iki sıra kesişmeden birbirine değdiğinde koşul bir kesişim verecektir.

Genel olarak, yazılan metni kullanmak daha doğrudur.
(sadece işte kontrol etmeniz gerekiyor - kontrol etmedim).

Hız aynı olacaktır.
Bu döngü çok nadiren çalışacak,
ve neredeyse her zaman en fazla 1 ek kontrol.
 
Geliştiricilere soru: Meta düzenleyici için bir hata ayıklayıcı olacak mı?

Kaos savaşçıları için bir soru: MQL4 bir tür veri tabanına erişimi destekleyecek mi?
 
Hiç kimse bir Uzman Danışmana Japon şamdanlarını dikmeye çalışmadı mı?
(Teorik olarak, bunun için bir sorun yoktur).
 
Geliştiricilere soru: Meta düzenleyici için bir hata ayıklayıcı olacak mı?

Evet, olacak - planlanıyor. Büyük olasılıkla MQL4 derleyicisinin yeni sürümüyle birlikte olacak.
 
Bilenlere soru:

Diğer programlama dillerine kıyasla MQL4'te derlenmiş kodun yürütme süresi nedir? Örneğin, C++ en hızlısı, Java çok daha yavaş...
 
arşive bakmanız gerekiyor, bir zamanlar Renat övündü ve söylemeliyim ki, boşuna değil. Gerçekten de, uzmanlar çok akıllıca çalışıyor
 
Gerçekten yerleşik bir işleve ihtiyacım var (yöntem)

Satışın tüm anları, satın alma işleminin kapanış anları olarak kabul edilir.

Satın almanın tüm anları, satışın kapanma anları olarak kabul edilir.

Böyle bir şey var mı yok mu? Ve değilse, bana göründüğü gibi (belki yanılıyorum), o zaman geliştiricilerin böyle bir yerleşik işlevi içermesi iyi olurdu.

Ama belki hala öyledir?
 
Bilenlere soru:

Diğer programlama dillerine kıyasla MQL4'te derlenmiş kodun yürütme süresi nedir? Örneğin, C++ en hızlısı, Java çok daha yavaş...

"MQL4, MQL2, EasyLanguage, Wealth-Lab 3.0 ve VC++: hız karşılaştırması"
 
Bu kodu zaten sağladım.
Bu sadece bir örnek, fazlalıkları atın :))

Bir pozisyon açmadan önce tüm zıt pozisyonları kapatıyoruz.
 int _OrderCloseAll(int _type = BOŞ, int Kayma = 5)
{
   int sayı = 1;
   int limit = 5;

   while(sayım > 0 && limit > 0)
   {
      intn = SiparişlerToplam();

      sayı = 0;
      sınır--;

      for(int i = 0; ben < n; i++)
      {
         (OrderSelect(i, SELECT_BY_POS) == false) devam ederse;
         (OrderSymbol() != Symbol()) devam ederse;
         (_Magic != 0 && OrderMagicNumber() != _Magic) devam ederse;
         if (OrderType() == OP_BUY && (_type == BOŞ || _type == OP_BUY)) 
         {
            WaitOrderTimeOut();
            if (Sipariş Seçimi(i, SELECT_BY_POS))
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage);
            say++;
         } başka
         if (OrderType() == OP_SELL && (_type == BOŞ || _type == OP_SELL)) 
         {
            WaitOrderTimeOut();
            if (Sipariş Seçimi(i, SELECT_BY_POS))
               OrderClose(OrderTicket(), OrderLots(), Sor, Slippage);
            say++;
         }
      }
   }
   dönüş(0);
}
 
Bu kodu zaten sağladım.
Bu sadece bir örnek, fazlalıkları atın :))

Bir pozisyon açmadan önce tüm zıt pozisyonları kapatıyoruz.
int _OrderCloseAll(int _type = EMPTY, int Slippage = 5)
{
   int count = 1;
   int limit = 5;

   while(count > 0 && limit > 0)
   {
      int n = OrdersTotal();

      count = 0;
      limit--;

      for(int i = 0; i < n; i++)
      {
      }
   }
   return (0);
}


Zaten tüm pozisyonları kapatmakla ilgili İngilizce forumumuza bir bağlantı verdim. Anlaşılan kimse konuyu sonuna kadar okumamış. tersi daha doğru olur.
      for(int i = n-1; i >= 0; i--)


Sonuçta, bir pozisyonu silersiniz ve listeden kaldırılır. sonraki pozisyon onun yerine geçer ve sayaç arttırılır ve bu pozisyon basitçe atlanır.

Neden: