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

 
Vitalie Postolache :


Bakiye ile karşılaştırıldığında, o zaman:

Teşekkür ederim.

 
trader781 :

tamam, o zaman anladığım kadarıyla, istenenin geri dönüşüyle üç farklı özel işlev olacak (üç farklı parametre ararsanız)

DiziSıralama

sonrasında

ArrayBsearch istenilen numaraya göre

ve sonra buna ne dersin?

yani diziden yapı elemanına geçiş

Anlamıyorsun.

Global düzeyde bildirilen diziyi dolduracak ve sıralayacak bir işlev yapmanız gerekir. Dizi, işleve başvuru yoluyla iletilmelidir.

Ve bu diziden ihtiyacınız olan verileri çıkaracak ek işlevlere ihtiyacımız var.

 
Artyom Trishkin :

Anlamıyorsun.

Global düzeyde bildirilen diziyi dolduracak ve sıralayacak bir işlev yapmanız gerekir. Dizi, işleve başvuru yoluyla iletilmelidir.

Ve bu diziden ihtiyacınız olan verileri çıkaracak ek işlevlere ihtiyacımız var.

Tamam, size bir dizi yapıdan bir şeyi nasıl çıkaracağınızı gösterebilir miyim? doldurulmuş ve sıralanmış diyelim

referans ile nasıl geçilir ve yazılır

 

bana durumun nasıl görünmesi gerektiğini söyle. Zararı durdur tetiklenirse, lot 2 ile çarpılır ve bir sonraki siparişte kâr al tetiklenirse lot, zararı durdurmadan önceki orijinal lota döner.

Ben böyle anlıyorum ama daha nasıl ilerleyeceğimi henüz çözemedim..

for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
   {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )
      {
       if ( OrderMagicNumber ()==magic)
         {
         if ( OrderStopLoss ()== OrderClosePrice ())
            {
            lot=lot* 4 ;
            }
         }
      }

   } 

 

başka bir soru, siparişleri silmek için blokta neyi yanlış yazdım? siparişleri her zaman silmez, günlüğe yazar

OrderDelete error 4108
market order # 1 cannot be deleted

if ( Hour ()== 23 && Minute ()== 59 )            
         {
         for ( int n= OrdersTotal ()- 1 ;n>= 0 ;n--)
            {
             if ( OrderSelect (n, SELECT_BY_POS ))
               {
               if ( OrderMagicNumber ()==magic)
                  {
                   bool del= OrderDelete ( OrderTicket ());
                   if (del== true )
                     {
                     otl_b= 0 ; otl_s= 0 ; //обнуляем переменные отложек
                     }
                  
                  }  
               }  
            }
         }
 
wishmast :

başka bir soru, siparişleri silmek için blokta neyi yanlış yazdım? siparişleri her zaman silmez, günlüğe yazar

OrderDelete error 4108
market order # 1 cannot be deleted

if ( Hour ()== 23 && Minute ()== 59 )            
         {
         for ( int n= OrdersTotal ()- 1 ;n>= 0 ;n--)
            {
             if ( OrderSelect (n, SELECT_BY_POS ))
               {
               if ( OrderMagicNumber ()==magic)
                  {
                   bool del= OrderDelete ( OrderTicket ());
                   if (del== true )
                     {
                     otl_b= 0 ; otl_s= 0 ; //обнуляем переменные отложек
                     }
                  
                  }  
               }  
            }
         }


Bir piyasa emrini silmeye çalıştığınızda silinmezler, ancak OrderClose() işlevi tarafından kapatılırlar. Döngünün doğru şekilde silinmesi veya kapanması için çekmeler arasında türe göre ayrım yapmanız gerekir.

if(OrderType()<=OP_SELL) - piyasa emirleri için, if(OrderType()>OP_SELL) - bekleyen emirler için.

 

Öyle bir şey var ki: CHARTEVENT_MOUSE_MOVE

Soru: Farenin olmadığı mobil cihazlarda çalışır mı?

 
wishmast :

bana durumun nasıl görünmesi gerektiğini söyle. Zararı durdur tetiklenirse, lot 2 ile çarpılır ve bir sonraki siparişte kâr al tetiklenirse lot, zararı durdurmadan önceki orijinal lota döner.

Ben böyle anlıyorum ama daha nasıl ilerleyeceğimi henüz çözemedim..

for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
   {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )
      {
       if ( OrderMagicNumber ()==magic)
         {
         if ( OrderStopLoss ()== OrderClosePrice ())
            {
            lot=lot* 4 ;
            }
         }
      }

   } 

çabucak yaptın, sana son kârsız olanı verilecek, onunla ne yapacaksın ve kendin için hangi parametreleri düzelteceksin, sanırım çözeceksin
Dosyalar:
last1.mq4  4 kb
 
wishmast :

bana durumun nasıl görünmesi gerektiğini söyle. Zararı durdur tetiklenirse, lot 2 ile çarpılır ve bir sonraki siparişte kâr al tetiklenirse lot, zararı durdurmadan önceki orijinal lota döner.

Ben böyle anlıyorum ama daha nasıl ilerleyeceğimi henüz çözemedim..

for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--)
   {
   if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )
      {
       if ( OrderMagicNumber ()==magic)
         {
         if ( OrderStopLoss ()== OrderClosePrice ())
            {
            lot=lot* 4 ;
            }
         }
      }

   } 

Bu sorunun çözümü danışmanın tam mantığına bağlıdır, zararı durdur veya kar al işlemi yorumundan takip edilebilir.

   if ( StringFind ( OrderComment (), "sl" )>= 0 ) // сработал стоплосс
   if ( StringFind ( OrderComment (), "tp" )>= 0 ) // сработал тейкпрофит

...

 
Artyom Trishkin :

Anlamıyorsun.

Global düzeyde bildirilen diziyi dolduracak ve sıralayacak bir işlev yapmanız gerekir. Dizi , işleve başvuru yoluyla iletilmelidir.

Ve bu diziden ihtiyacınız olan verileri çıkaracak ek işlevlere ihtiyacımız var.

Artyom, yanılıyorsun. Global düzeyde bildirilen bir dizi, programın tüm bölümlerinde görünür durumdadır ve onu bir yerden bir yere transfer etmek gerekli değildir. Sadece programın bir yerinde doldurulur, başka bir yerde sıralanır ve üçüncüsü okunur, önemli değil.