Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 206

 
a.lxrn :

bir acemiden böyle bir soru) bir örnek için koddaki koşul, lütfen yardım edin.

Mesajın gerçek koşul altında, yani fiyat>ma, bir mesajın görüntülenmesi (ve çarpılmaması) altında bir kez görüntülenmesi için nasıl yapılır, ne demek istediğimi anladığınızı düşünüyorum.

Sayaç nasıl doğru şekilde kaydedilir?

 if (Work== false ) // Критическая ошибка
     {
       if (AlertWork== false )   // Если Алерта еще не было
        {   Alert ( "Критическая ошибка. Эксперт не работает." ); AlertWork= true ; }
       return ;
     }                        

Bunun gibi bir şey, ancak bir uyarıyı bir kereden fazla görüntülemeniz gerekiyor, bu nedenle bayrağın sıfırlanması gerekecek.

 

Merhaba, gösterge tabloya eklendiğinde fazladan satırların (tampon) görüntülenmemesi için özel bir göstergeyi nasıl programlayacağımı söyle?


 
Alexey Kazmin :

Merhaba, gösterge tabloya eklendiğinde fazladan satırların (tampon) görüntülenmemesi için özel bir göstergeyi nasıl programlayacağımı söyle?


bu özellikleri kullan

 #property indicator_buffers 5
#property indicator_plots    1
 
Vitaly Muzichenko :


Tuhaf şeyler. Dün ve bugün gönderme işe yaramadı, sadece kazandı ve bir mektup gönderdi. Aynı zamanda, hiçbir şeyi değiştirmedim veya yeniden inşa etmedim.

 
Igor Makanu :

bu özellikleri kullan

Teşekkürler, deneyeceğim

 
Grafik nesnelerle karıştırdığım bir şey, Yüksek[0] XY koordinatlarını CORNER_RIGHT_UPPER'dan piksel cinsinden nasıl alacağımı anlayamıyorum? int X ve int Y'yi hesaplamak için fonksiyonlar ne olacak?
 
Valeriy Yastremskiy :

Bunun gibi bir şey, ancak bir uyarıyı bir kereden fazla görüntülemeniz gerekiyor, bu nedenle bayrağın sıfırlanması gerekecek.

   if (sizeBar && maxmin)
     {
      
                   while ( true )
                   {
                         int ticket = OrderSend ( Symbol (), OP_BUY, 0.01 , Ask, 5 , sl, tp);
                         if (ticket> 0 ) break ;                        
                   }      
             
     }

anlamadım

Burada bir pozisyon açmanın belli bir şartı var diyelim, diyelim ki fiyat elden yüksek olmalı ve bir alış emri açıldı.

bu koşul uzun süre geçerli olacak ve her yinelemede bu kod kullanılarak siparişler açılacak

bu koşula göre bir siparişin açılması için nasıl yapılır ve bu kadar mı?

 
a.lxrn :

anlamadım

Burada bir pozisyon açmak için belirli bir koşul var diyelim, diyelim ki fiyat elden yüksek olmalı ve bir alış emri açıldı.

bu koşul uzun süre geçerli olacak ve her yinelemede bu kod kullanılarak siparişler açılacak

bu koşula göre bir siparişin açılması için nasıl yapılır ve bu kadar mı?

Sipariş açma koşulu doğruysa VE sipariş açma bayrağı yanlışsa, siparişi açın ve sipariş açma bayrağını doğru olarak ayarlayın.
 
a.lxrn :

anlamadım

Burada bir pozisyon açmanın belli bir şartı var diyelim, diyelim ki fiyat elden yüksek olmalı ve bir alış emri açıldı.

bu koşul uzun süre geçerli olacak ve her yinelemede bu kod kullanılarak siparişler açılacak

bu koşula göre bir siparişin açılması için nasıl yapılır ve bu kadar mı?

Sipariş açma koşulu doğruysa VE sipariş açma bayrağı yanlışsa, siparişi açın ve sipariş açma bayrağını doğru olarak ayarlayın.
 

SiparişSil

Lütfen koddaki hatayı bulmama yardım edin. Ne derleyici ne de test eden hata veriyor ama limitler kaldırılmıyor...

 void OnTick ()
            
       if (Low[ 1 ] < val2 && BUY() == 0 && BUYLIMIT1() == 0 && BUYLIMIT2() == 0 )

      {
      
      SL = NormalizeDouble (Ask - StopLoss* Point , 5 );
      TP = NormalizeDouble (Ask + TakeProfit* Point , 5 ); 
          
      ticket = OrderSend ( Symbol (), OP_BUY, Lots, price, 3 , SL, TP, "EU buy" , Magic, 0 , Red);
      
       if (ticket< 0 )
         Print ( "Не удалось открыть ордер" );
      }
            
      {
       if (BUY() == 1 && BUYLIMIT1() == 0 && BUYLIMIT2() == 0 )
      {
      
      SL = NormalizeDouble (price1 - StopLoss1* Point , 5 );
      TP = NormalizeDouble (price1 + TakeProfit1* Point , 5 ); 
     
      ticket1 = OrderSend ( Symbol (), OP_BUYLIMIT, Lots1, price1, 3 , SL, TP, "EU buy" , Magic1, 0 , Red);
      

            {
             if (BUY() == 0 && BUYLIMIT1() == 1 )
            {
             for ( int i= OrdersTotal ()- 1 ; i>=X; i--)
             if ( OrderSelect (i,SELECT_BY_TICKET,MODE_TRADES)&&
               OrderType() == OP_BUYLIMIT &&
               OrderMagicNumber()==Magic1)
               {
            res=OrderDelete(OrderTicket(), clrWhite );
               Print ( "OrderDelete error " , GetLastError ());
               }
               return ;}
      } } }
      
      {
       if (BUYLIMIT1() == 1 && BUYLIMIT2() == 0 )
      {
      
      SL = NormalizeDouble (price2 - StopLoss2* Point , 5 );
      TP = NormalizeDouble (price2 + TakeProfit2* Point , 5 ); 

      ticket2 = OrderSend ( Symbol (), OP_BUYLIMIT, Lots2, price2, 3 , SL, TP, "GU buy" , Magic2, 0 , Red);
      

            {
             if (BUY1() == 0 && BUYLIMIT2() == 1 )
            {
             for ( int i= OrdersTotal ()- 1 ; i>=X; i--)
             if ( OrderSelect (i,SELECT_BY_TICKET,MODE_TRADES)&&
               OrderType() == OP_BUYLIMIT &&
               OrderMagicNumber()==Magic2)
               {
            res=OrderDelete(OrderTicket(), clrWhite );
               Print ( "OrderDelete error " , GetLastError ());
               }
               return ;}
      } } }     
      
                               
}


//+------------------------------------------------------------------+
int BUY()
{
   int count = 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>=X; i--)
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic &&
         OrderType() == OP_BUY)
         {
         count++;
         }

     }
     return (count);
}

//+------------------------------------------------------------------+
int BUYLIMIT1()
{
   int count = 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>=X; i--)
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic1 &&
         OrderType() == OP_BUYLIMIT)
         {
         count++;
         } 
     }
     return (count);
}

//+------------------------------------------------------------------+
int BUY1()
{
   int count = 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>=X; i--)
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic1 &&
         OrderType() != OP_BUYLIMIT)
         {
         count++;
         } 
     }
     return (count);
}

//+------------------------------------------------------------------+
int BUYLIMIT2()
{
   int count = 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>=X; i--)
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic2 &&
         OrderType() == OP_BUYLIMIT)
         {
         count++;
         }
     }
     return (count);
}

//+------------------------------------------------------------------+
int BUY2()
{
   int count = 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>=X; i--)
   {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic2 &&
         OrderType() != OP_BUYLIMIT)
         {
         count++;
         }
     }
     return (count);
}
Neden: