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

 
Sabit Dosaev :
Basit soru. Baykuş derleme yapmaz. Kodun sonunda bir hata var. + __FUNCSIg__
+ ": "+Market_Err_To_Str(errIndex)
+ "; bilet siparişi = " + (string)OrderTicket()
+ "; sipariş tipi = " + (string)OrderType()
+ "; Zarar Durdur emri = " + DoubleToStr(OrderStopLoss(), Digits())
+ "; yeni Kaybı Durdur = " + DoubleToStr(newStopLoss, Digits())
+ "; Teklif = " + DoubleToStr(Teklif, Rakamlar())
+ "; Sor = " + DoubleToStr(Sor, Rakamlar())
);
}
}
lastSetNonlosTryTime = TimeLocal();
}


Derlerken hata veriyor. Zor değilse lütfen yardım edin. Teşekkür ederim!

Kodu doğru yapıştırın:


Ve ... bir kod parçasından hatanızın ne olduğu belli değil. Kod tekrarlanabilir olmalıdır.

 
string LastComm( int a_magic_0)
  {
   int l_hist_total_4 = OrdersHistoryTotal();
   int l_datetime_8 = 0 ;
   int l_datetime_12 = 0 ;
   string ls_ret_16 = "0" ;
   for ( int l_pos_24 = 0 ; l_pos_24 < l_hist_total_4; l_pos_24++)
     {
       OrderSelect (l_pos_24, SELECT_BY_POS, MODE_HISTORY);
      l_datetime_8 = OrderCloseTime();
       if (l_datetime_8 > l_datetime_12 && OrderMagicNumber() == a_magic_0)
        {
         l_datetime_12 = l_datetime_8;
         ls_ret_16 = OrderComment();
        }
     }
   return (ls_ret_16);
  }

@Artyom Trishkin

Bu işlevi MQL4'ten MQL5'e nasıl dönüştürebilirim?

 

Herkese iyi günler.

Bağlantı durumunu belirlemek için IsConnected () işlevini nereye ekleyeceğimi söyler misiniz?

OnTick() işlevinin içine eklersem, o zaman her zaman bir bağlantı vardır (yani bir bağlantı vardır, yani bir bağlantı vardır, tık gelmiyor (bağlantının olmaması veya olmaması nedeniyle) hiçbir giriş olmadığı anlamına gelir. OnTick() ve buna bağlı olarak, belirleme işlevi bağlantı durumuna IsConnected() )) Bu nedenle, OnTick() içine IsConnected() eklemek işe yaramaz (İnternet bağlantısını kaç kez kesmedim, hala dosyaya hakkında yazmıyor bağlantı eksikliği)

Bu soru için, IsConnected() işlevini nereye eklemek doğrudur veya bağlantı durumunu belirlemek için başka hangi yollar vardır (Yalnızca MT4 için)

Teşekkür ederim!

 
Roni Iron :

Herkese iyi günler.

Bağlantı durumunu belirlemek için IsConnected () işlevini nereye ekleyeceğimi söyler misiniz?

OnTick() işlevinin içine eklersem, o zaman her zaman bir bağlantı vardır (yani bir bağlantı vardır, yani bir bağlantı vardır, tık gelmiyor (bağlantının olmaması veya olmaması nedeniyle) hiçbir giriş olmadığı anlamına gelir. OnTick() ve buna bağlı olarak, belirleme işlevi bağlantı durumuna IsConnected() )) Bu nedenle, OnTick() içine IsConnected() eklemek işe yaramaz (İnternet bağlantısını kaç kez kesmedim, hala dosyaya hakkında yazmıyor bağlantı eksikliği)

Bu soru için IsConnected() işlevini nereye eklemek doğru veya bağlantı durumunu belirlemenin başka yolları nelerdir (Yalnızca MT4 için)

Teşekkür ederim!

OnTimer()

Документация по MQL5: Обработка событий / OnTimer
Документация по MQL5: Обработка событий / OnTimer
  • www.mql5.com
//|                                               OnTimer_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Roman Shiredchenko :

değişkenler ve fonksiyonlar hakkında kafanız karıştı, eğer bu bir fonksiyon ise şunu deneyin:

kodu ALT + S ile yapıştırın

teşekkürler

Roman Shiredchenko :

değişkenler ve fonksiyonlar hakkında kafanız karıştı, eğer bu bir fonksiyon ise şunu deneyin:

kodu ALT + S ile yapıştırın

Evet, bu bir fonksiyondur.

teşekkürler ama nedense hata veriyor

'}' - tüm kontrol yolları bir değer döndürmez

parantezler hem kodumda hem de boş bir şablonda her şeyi doğru bir şekilde kontrol etmiş gibi görünse de.

ALT + S - teşekkürler dikkate alacağım

 
wolder1 :

teşekkürler

Evet, bu bir fonksiyondur.

teşekkürler ama nedense hata veriyor

'}' - tüm kontrol yolları bir değer döndürmez

parantezler hem kodumda hem de boş bir şablonda her şeyi doğru bir şekilde kontrol etmiş gibi görünse de.

ALT + S - teşekkürler dikkate alacağım

İyi bir soru bir cevap içerir (C)

 
wolder1 :

teşekkürler

Evet, bu bir fonksiyondur.

teşekkürler ama nedense hata veriyor

'}' - tüm kontrol yolları bir değer döndürmez

parantezler hem kodumda hem de boş bir şablonda her şeyi doğru bir şekilde kontrol etmiş gibi görünse de.

ALT + S - teşekkürler dikkate alacağım

işlev çift - işlev türü geçersizse değer döndürmeli - o zaman hayır.

kodda yukarıda tanımlanmış değişkenleriniz varsa, bunları yorumlayabilirsiniz + burada fazladan boşluklarınız vardı (Teklif > = L8b)) - değişiklikler yapıldı:

 double lot= 0 ; //, Lots;
//   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
double _LOTS()
  {
   double lot= 0 , Lots;
   double L0a3, L2a3, L5a3, L8a3, L0b1, L2b1, L5b1, L8b1, L0a, L2a, L5a, L8a,L0b,L2b,L5b,L8b,L0a1,L2a1,L5a1,L8a1,L0b3,L2b3,L5b3,L8b3;  
   if ((Ask <= L0a3) || (Ask <= L2a3) || (Ask <= L5a3) || (Ask <= L8a3) || (Bid >= L0b1) || (Bid >= L2b1) ||
      (Bid >= L5b1) || (Bid >= L8b1))
      {
       lot=( NormalizeDouble (Lots, 2 ));
       Print ( " lot = " , lot); 
       return (lot);
      }
      
     if ((Ask <= L0a) || (Ask <= L2a) || (Ask <= L5a) || (Ask <= L8a) || (Bid >= L0b) || (Bid >= L2b) ||
      (Bid >= L5b) || (Bid >= L8b))
      {
       lot=( NormalizeDouble ((Lots* 1.5 ), 2 ));
       Print ( " lot = " , lot); 
       return (lot);
      }
     
    

   if ((Ask <= L0a1) || (Ask <= L2a1) || (Ask <= L5a1) || (Ask <= L8a1) || (Bid >= L0b3) ||
      (Bid >= L2b3) || (Bid >= L5b3) || (Bid >= L8b3))      
      {
       lot=( NormalizeDouble ((Lots* 2.5 ), 2 ));
       Print ( " lot = " , lot); 
       return (lot);
      }
     return (lot);  
  } 
 

Günaydın.

Soru. Günlerin kavşağında test cihazında (ertesi günün çizgisi geçtiğinde), program bir gecikme ayarlayarak çalışmak zorunda kaldı. Halihazırda yerinde olan bekleyen bir beklemede ve fiyatı takıldı - açıldı, ancak başka bir bekleyen sipariş açma talimatı bir nedenden dolayı sistem tarafından yok sayıldı :( Neden? Gerçek bir hesapta bu, robotun talimatı olduğunda da olabilir. basitçe göz ardı edildi ve buna göre gerekli eylem gerçekleşmiyor mu?


Ve başka bir soru. Test cihazını sürüyorum, ancak görselleştirmede yaklaşık bir hafta sürmesi ve ardından yazıtın açılması gerçeğiyle çok kafam karıştı.

0:17:42.694 (toplam süre 0:17:48.217) içinde işlenen 177564 onay olayı (447 çubuk, 7888506 çubuk durumu)

0:17:42.694 (0:17:48.217 toplam süre) tarihinde işlenen 177564 onay olayı (447 çubuk, 7888506 çubuk)

Ben bile anlamadım, din neyi daha fazla test etmesine izin vermiyor? Yoksa bilgisayarımın kaynakları hakkında çok mu endişeli ve endişeli? Herhangi bir hata atılmıyor. Sadece işi kendisi tamamlıyor. Belirlediğim tarihler 7 gün değil 7 ay olmasına rağmen. Başlangıç ve bitiş testlerinin tüm yolunu görmek istiyorum.

Ne tür bir din, örneğin bir yıl veya birkaç yıl görsel olarak test etmesine izin vermez? Ardından, örneğin bir önceki yıl boyunca programınızın nasıl işleyeceğini görsel olarak göreceksiniz.


Ve başka bir soru. (Muhtemelen cevapsız kalacak olsa da))) 2 tur için test cihazında test cihazının beklendiği gibi çalıştığı, ancak bu gün yukarıda belirtilen yazıttan hemen önce tüm talimatları görmezden gelmesi nasıl olabilir. Programın birkaç daire için doğru çalışması (siparişleri açtı ve ardından kapattı) ve sonra atlayıp her şeyi görmezden gelmesi nasıl mümkün olabilir. Ne açılır ne de kapanır. Test süresinin bitiminden mi kaynaklanıyor yoksa başka bir nedeni var mı?

 

Tünaydın!!!

Son kapatılan siparişin saatine ihtiyacınız var.

f-yu yazdı ama düzgün çalışmıyor.

//+------------------------------------------- --------------------+

//| Son siparişin kapanış saati |

//+------------------------------------------- --------------------+

double Last_Ticets_Close()

{

last_ticket = 0;

Last_OrClTime = 0;


for(int i=0; i<SiparişToplam(); i++)

{

if( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY ))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber()==sihir)

{

if(Last_Ticet<OrderTicket())

{

Last_Ticet = OrderTicket();

Last_OrClTime = OrderCloseTime();

}

}

}

}

dönüş(son_bilet);

}

Birisi bana neyin yanlış olduğunu söyleyebilir mi?

 
142vs :

Tünaydın!!!

Son kapatılan siparişin saatine ihtiyacınız var.

f-yu yazdı ama düzgün çalışmıyor.

Birisi bana neyin yanlış olduğunu söyleyebilir mi?

daha sonra ararken, biletleri değil , saatleri karşılaştırın