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

 

Hepsi bir hata buldu. Bazılarının daha sonra ne kadar yanıldığını anlamak için sorularını dile getirmesi gerekiyor.

Maalesef ben de o karakterlerden biriyim. ((((

 
Konstantin Nikitin :

SiparişGönder
SiparişSeç

Bilet numarasından mı bahsediyorsun?

"Tuzaklar" var mı?

 
Decromor :

Selamlar!


Bir siparişe numarasına göre OrderSelect komutunu kullanarak ulaşabilirsiniz.

Soru şu ki, hepsini sıralamamak için mevcut siparişlerin sayısını önceden bilmek mümkün müdür? Örneğin, yeni bir sipariş açarken bu numarayı unutmayın.

Anladığım kadarıyla bu numara 1'den başlayarak sıralanıyor. Nüanslar nelerdir?

Şimdiden teşekkürler.

  1. Siparişler listesindeki indeksi (bir döngüde yinelenirken) veya bileti (önceden biliniyorsa) ile iletişime geçebilirsiniz.
  2. İstenmez - herhangi bir arıza durumunda (EA yeniden başlatma, terminal yeniden başlatma, sistem çökmesi vb.), kaydedilen biletler kaybolabilir. Bu nedenle, bunları ya terminalin global değişkenlerinde ya da mümkün olan, ancak her tıklamada yapılmayan, yalnızca gerektiği gibi yapılan olağan numaralandırmadan daha karmaşık olan bir dosyada saklamanız gerekir.
  3. Numara. 1 numaradan başlayarak ve artan sırada - yalnızca test cihazında.
  4. Rica ederim.
 
Artyom Trishkin :
  1. Siparişler listesindeki indeksi (bir döngüde yinelenirken) veya bileti (önceden biliniyorsa) ile iletişime geçebilirsiniz.
  2. İstenmez - herhangi bir arıza durumunda (EA yeniden başlatma, terminal yeniden başlatma, sistem çökmesi vb.), kaydedilen biletler kaybolabilir. Bu nedenle, bunları ya terminalin global değişkenlerinde ya da mümkün olan, ancak her tıklamada yapılmayan, yalnızca gerektiği gibi yapılan olağan numaralandırmadan daha karmaşık olan bir dosyada saklamanız gerekir.
  3. Numara. 1 numaradan başlayarak ve artan sırada - yalnızca test cihazında.
  4. Rica ederim.

Programı başlatırken OnInit() gövdesinde OrdersTotal() döngüsünü çalıştırmak ve açık siparişler, özellikle OrderTicket() olmak üzere tüm bilgileri toplamak mümkün müdür?

 string orders[][3];

int OnInit () {
   for ( int n = OrdersTotal () + 1 ; n >= 0 ; n--) {              
       if ( OrderSelect (n, SELECT_BY_POS , MODE_TRADES )) {
         int i = ( ArraySize (orders) / 3 );
         ArrayResize (orders, i + 1 );
         orders[i][ 0 ] = IntegerToString ( OrderTicket ());
         orders[i][ 1 ] = IntegerToString ( OrderType ());
         orders[i][ 2 ] = DoubleToString ( OrderOpenPrice (), Digits );   
      } 
   }
   return ( INIT_SUCCEEDED );
}


TP veya SP ile bir siparişi otomatik olarak kapatırken bu siparişin verilerini alabilir miyim?

 
Decromor :

Programı başlatırken OnInit() gövdesinde OrdersTotal() döngüsünü çalıştırmak ve açık siparişler, özellikle OrderTicket() olmak üzere tüm bilgileri toplamak mümkün müdür?


TP veya SP ile bir siparişi otomatik olarak kapatırken bu siparişin verilerini alabilir miyim?

  1. Yapabilir. Ve sonra ne? Siparişler zamanla değişebilir ve başlatma sırasında toplanan bilgiler güncelliğini yitirecektir.
  2. Son kapatılan siparişi bulmanız ve bununla ilgili ihtiyacınız olan tüm bilgileri almanız gerekir.
 
Artyom Trishkin :
  1. Yapabilir. Ve sonra ne? Siparişler zamanla değişebilir ve başlatma sırasında toplanan bilgiler güncelliğini yitirecektir.
  2. Son kapatılan siparişi bulmanız ve bununla ilgili ihtiyacınız olan tüm bilgileri almanız gerekir.

ALIŞ, SAT, gerekli verileri bir diziye kaydederim, sonra bu diziyi bir tik işaretiyle çeviririm ve fiyata bağlı olarak benim için gerekli değişiklikleri yaparım (SL'yi başabaşa taşımak, bir iptalden sonra bir siparişi kapatmak, vb.) .) Bilet üzerinde istenilen sıraya atıfta bulunarak.

Ama TP ve SL ile bilgim dışında kapatılabilen siparişlerim var. Her tikte son kapatılan sırayı izleme ve dizimde arama seçeneği, bu diziyi ayarlamaktan hoşlanmıyorum.

" Siparişler zamanla değişebilir ve başlatma sırasında bunlarla ilgili toplanan bilgiler güncelliğini yitirecektir." Sanırım kastedilen bu - siparişi kapatmak mı?

Yalnızca bir seçenek görüyorum - kene başına 2 döngü döndürmek, siparişlerle ve OrdersTotal() ile benim yapmak ve ben de bundan hoşlanmıyorum.

" ancak her onayda yapılmayan, yalnızca gerektiği gibi yapılan olağan numaralandırmadan daha karmaşıktır." Lütfen bu algoritmayı paylaşın.

 
Decromor :

Programı başlatırken OnInit() gövdesinde OrdersTotal() döngüsünü çalıştırmak ve açık siparişler, özellikle OrderTicket() olmak üzere tüm bilgileri toplamak mümkün müdür?


TP veya SP ile bir siparişi otomatik olarak kapatırken bu siparişin verilerini alabilir miyim?

Ve tüm bunların bir satırda tercüme edilmesi için ne ??? dize türü ?

 
Decromor :

Programı başlatırken OnInit() gövdesinde OrdersTotal() döngüsünü çalıştırmak ve açık siparişler, özellikle OrderTicket() olmak üzere tüm bilgileri toplamak mümkün müdür?


TP veya SP ile bir siparişi otomatik olarak kapatırken bu siparişin verilerini alabilir miyim?

 struct SOrders
{
     int ticket,
         type;
     double price;
} orders[];

int OnInit () {
   for ( int n = 0 ; n < OrdersTotal (); n++)
   {              
       if (! OrderSelect (n, SELECT_BY_POS , MODE_TRADES )) continue ;
       int i = ArraySize (orders);
       if ( ArrayResize (orders, i+ 1 ) < i+ 1 ) continue ;
      orders[i].ticket = OrderTicket ();
      orders[i].type   = OrderType ();
      orders[i].price  = OrderOpenPrice ();
   }
   return ( INIT_SUCCEEDED );
}
 
Konstantin Nikitin :
Bilgi için çok teşekkür ederim, bu benim için yeni bir şey.
 
Alexey Viktorov :

Ve tüm bunların bir satırda tercüme edilmesi için ne ??? dize türü ?

çünkü Örneğin, bir bilet Int türündedir, fiyat Double'dir ve bir dizi yalnızca bir türde olabilir.