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

 
Vitaly Muzichenko :

Teşekkürler, nedense bu işe yaramıyor.

double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) {
double    r=- 1 ;
   if (sy== "0" ) sy= Symbol ();
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()> 1 && OrderType ()< 6 ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (r> OrderLots () || r==- 1 ) {
                r= OrderLots ();
  }}}}}}}
   return (r);
}

Resimdeki on dördüncü satış durağının lotu nasıl döndürülür lot = 0.03?

 
Marina Korotkih :

Teşekkürler, nedense bu işe yaramıyor.

double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) {
   if (sy== "0" ) sy= Symbol ();
   double r= MarketInfo (sy, MODE_MINLOT );
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()> 1 && OrderType ()< 6 ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (r> OrderLots ()) {
                r= OrderLots ();
  }}}}}}}
   return (r);
}
Bu minimum, en son siparişe ihtiyacınız varsa, şimdi yapacağım
 
Vitaly Muzichenko :

Bu minimum, en son siparişe ihtiyacınız varsa, şimdi yapacağım

İşte fiyattan en uzak olanı arıyor

double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) {
datetime t= 0 ;
double r=- 1 ,l= 0 ;
if (sy== "0" ) sy= Symbol ();
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()> 1 && OrderType ()< 6 ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (r> OrderOpenPrice () || r==- 1 ) {
                r= OrderOpenPrice ();
                l= OrderLots ();
  }}}}}}}
   return (l);
}
 
Marina Korotkih :

Teşekkürler, nedense bu işe yaramıyor.

double GetLotLastOrder( string sy= "" , int op=- 1 , int mn=- 1 ) {
double    r=- 1 ;
   if (sy== "0" ) sy= Symbol ();
   for ( int i= 0 ; i< OrdersTotal (); i++) {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) {
       if ( OrderSymbol ()==sy || sy== "" ) {
         if ( OrderType ()> 1 && OrderType ()< 6 ) {
           if (op< 0 || OrderType ()==op) {
             if (mn< 0 || OrderMagicNumber ()==mn) {
               if (r> OrderLots () || r==- 1 ) {
                r= OrderLots ();
  }}}}}}}
   return (r);
}

Resimdeki on dördüncü satış durağının lotu nasıl döndürülür lot = 0.03?



Hayır, fonksiyon düzgün çalışıyor, neden dönüş değeri 1 ve 14 sipariş değil de 2?

bu bir testçi mi?

Benim için doğru çalışıyor.

 
Vitaly Muzichenko :

İşte fiyattan en uzak olanı arıyor


Teşekkürler, bu çok açık. Bulduk, şimdi bu konuda ihtiyacınız olan her şeyi öğrenebilirsiniz)

 
Alekseu Fedotov :

Hayır, fonksiyon doğru çalışıyor, döndürülen değer neden 1 ve 14 sipariş değil de 2?

bu bir testçi mi?

Benim için doğru çalışıyor.

Fiyata göre sıralamanız gerekir, çünkü boyuta göre arama yapamazsınız, ızgara çok partili olabilir ve en büyüğü veya en küçüğünü bulacaksınız, ancak ilk ve son değil
 
Marina Korotkih :

Teşekkürler, bu çok açık. Bulduk, şimdi bu konuda ihtiyacınız olan her şeyi öğrenebilirsiniz)

Bir sipariş veya pozisyonla ilgili tüm bilgileri öğrenmek için, bunu biletle yapmak daha iyidir.

if ( OrderSelect (i, SELECT_BY_TICKET )) {
   // всё что угодно
}
 
Alekseu Fedotov :

...neden iade edilen değer 1 ve 14 sipariş değil de 2?


Çünkü ben böyle çağırırım

GetOrderOpenPrice( Symbol (), OP_SELLSTOP ,_Magic)
 
Vitaly Muzichenko :

Bir sipariş veya pozisyonla ilgili tüm bilgileri öğrenmek için, bunu biletle yapmak daha iyidir.

if ( OrderSelect (i, SELECT_BY_TICKET )) {
   // всё что угодно
}

Ancak bunun için önce son siparişin biletini bulmanız gerekiyor 14

Bu nedenle, ilk fonksiyonda olduğu gibi, sıranın hala aranması gerekiyor mu?

Veya basitçe SELECT_BY_POS'u SELECT_BY_TICKET ile değiştirin

 
Marina Korotkih :

Ancak bunun için önce son siparişin biletini bulmanız gerekiyor 14

Bu nedenle, ilk fonksiyonda olduğu gibi, sıranın hala aranması gerekiyor mu?

Veya basitçe SELECT_BY_POS'u SELECT_BY_TICKET ile değiştirin

Bilmeniz gerekenleri görün. Aslında, burada her şeyi öğrenebilir, fiyata görebir sipariş seçebilir ve ardından bunun için gerekli parametreleri yazabilir ve her şeyi iade edebilirsiniz.

Döngüleri bir kez daha kullanmak iyi bir fikir değildir, bu nedenle her şeyi tek bir döngüde uygulamak daha iyidir, gerçek ticarette bu fark edilmez, ancak test cihazında testler uzun zaman alacaktır. Her şey göreve bağlı olsa da, biri testçi için programlar ve biri ticaret için programlar yazar, böylece bir döngü değil birkaç tane kullanabilirsiniz.

PS, elbette, bir danışman-pipser ise, tek bir döngü kullanmamak daha iyidir)