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

 
Vitaly Muzichenko :

Bunları yazmaktan bıkana kadar

Gerçekten?))
 
multiplicator :
Gerçekten?))

Evet. Ancak kural olarak, üçten fazla yazmazlar, çünkü bu tür bir kodun okunması zordur, özellikle de yazılmasından bu yana çok zaman geçtiyse. Bu iç içe geçmiş birçok if'yi ayrı işlevlere bölmek daha iyidir. Veya bir switch ... case ifadesi kullanın

 
Artyom Trishkin :
Mesaj Kutusu()

Yeni bir tick geldikten sonra tıklarsam yeni bir pencere görünmeyecek, ancak ilk pencerenin değerleri kullanılacak şekilde yapmak mümkün müdür?

 void OnTick ()
  {
 if (Orders()< 1 && ( 1 ==message || !use_MessageBox)){
   ticket= OrderSend ( Symbol (), OP_SELL , lot, Bid , slippage, Ask +stopLoss* Point , Bid -takeProfit* Point , "" , magic, 0 , Red); message= 0 ; 
 } 
 if (Orders()< 1 && (message== 0 || message== 2 ) && use_MessageBox){
 if (use_PlaySound) PlaySound ( "tick" );
 message=- 2 ;
 message = MessageBox ( "Текст, содержащий сообщение для отображения" , "Необязательный текст для отображения в заголовке" , IDOK );
   }
if (Orders()< 1 && ( 1 ==message || !use_MessageBox)){
   ticket= OrderSend ( Symbol (), OP_SELL , lot, Bid , slippage, Ask +stopLoss* Point , Bid -takeProfit* Point , "" , magic, 0 , Red); message= 0 ; 
 }

}
 
void Trailing()
{
   for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
   {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
      {
         if ( OrderMagicNumber () == MagicNumber && OrderSymbol () == Symbol ())
         {
             if ( OrderType () == OP_BUY )
            {
               if ( Bid - OrderOpenPrice () > TrailingStop* Point )
               {
                   if ( OrderStopLoss () < Bid - Point *(TrailingStop+TrailingStep) || OrderStopLoss () == 0 )
                  {
                     if (! OrderModify ( OrderTicket (), OrderOpenPrice (), NormalizeDouble ( Bid - Point *TrailingStop, Digits ), OrderTakeProfit (), 0 ,Blue))
                         Print ( "error order modify" );
                  }
               }
            }
         }
      }
   }
   
   if ( OrderType () == OP_SELL )
   {
       if ( OrderOpenPrice () - Ask > TrailingStop* Point )
      {
         if ( OrderStopLoss () > Ask + Point * (TrailingStop+TrailingStep) || OrderStopLoss () == 0 )
         {
             if (! OrderModify ( OrderTicket (), OrderOpenPrice (), NormalizeDouble ( Ask + Point *TrailingStop, Digits ), OrderTakeProfit (), 0 ,Red))
               Print ( "error order modify" );
         }
      }
   }
}
//--------------------------------------------------------

İyi günler, testler sırasında, takip istendiği gibi çalışıyor, ancak gerçek hayatta çalışmıyor veya her zaman, düzenli aralıklarla OrderModify 4108 hatasıyla spam yapıyor, neyin yanlış olduğunu anlamıyorum, lütfen beni düzeltin, anladığım kadarıyla danışman, değişikliksiparişlerini doğru şekilde seçmez .

Danışmanı tanımlayın:

İki MA kesiştiğinde, sihirli bir şekilde biri kısa, biri uzun olmak üzere 2 pozisyon açın. Kısa olan, MA'nın alınması veya ters geçişi ile kapatılır, uzun olanı takip edilmelidir. Takip için uzun bir pozisyon seçimi sihirle gerçekleşir.

Belki de pozları açma kodunun bir kısmında bir hatam var. elimden geldiğince yazdım...

 //BUY
   if (fast1>slow1&&fast2<slow2)
     {
       if (StopLoss_1> 0 )   sl= NormalizeDouble ( Bid -StopLoss_1* Point , Digits );   else sl= 0 ;
       if (TakeProfit_1> 0 ) tp= NormalizeDouble ( Ask +TakeProfit_1* Point , Digits ); else tp= 0 ;
      closeshrts();
       OrderSend ( Symbol (), OP_BUY ,Lts, NormalizeDouble ( Ask , Digits ), 5 ,sl,tp, NULL , 0 , 0 ,Blue);
     }
   //BUY_2
   if (fast1>slow1&&fast2<slow2)  
     {
       if (StopLoss_2> 0 )   sl= NormalizeDouble ( Bid -StopLoss_2* Point , Digits );   else sl= 0 ;
       if (TakeProfit_2> 0 ) tp= NormalizeDouble ( Ask +TakeProfit_2* Point , Digits ); else tp= 0 ; 
      closeshrts();
       OrderSend ( Symbol (), OP_BUY ,Lts, NormalizeDouble ( Ask , Digits ), 5 ,sl,tp, NULL ,MagicNumber, 0 ,Blue);
     }  
     
   //SELL
   if (fast1<slow1&&fast2>slow2)
     {
       if (TakeProfit_1> 0 ) sl= NormalizeDouble ( Ask +StopLoss_1* Point , Digits );   else sl= 0 ;
       if (StopLoss_1> 0 )   tp= NormalizeDouble ( Bid -TakeProfit_1* Point , Digits ); else tp= 0 ;
      closelongs();
       OrderSend ( Symbol (), OP_SELL ,Lts, NormalizeDouble ( Bid , Digits ), 5 ,sl,tp, NULL , 0 , 0 ,Red);
     }
   //SELL_2
   if (fast1<slow1&&fast2>slow2)
     {
       if (TakeProfit_2> 0 ) sl= NormalizeDouble ( Ask +StopLoss_2* Point , Digits );   else sl= 0 ;
       if (StopLoss_2> 0 )   tp= NormalizeDouble ( Bid -TakeProfit_2* Point , Digits ); else tp= 0 ;
      closelongs();
       OrderSend ( Symbol (), OP_SELL ,Lts, NormalizeDouble ( Bid , Digits ), 5 ,sl,tp, NULL ,MagicNumber, 0 ,Red);
     } 

Bilmiyorum, belki bir döngü boyunca siparişleri açmak için buraya yazmaya değer mi? Ve doğru duraklar ve kar elde etmek için nasıl doğru yazılır? yazdığım gibi - sadece satmak için çalışır, satın almak için 0'da durur

Lütfen beni doğru yola iletin :)

 
Merhaba Bir arkadaşım MQL 4 alfabesi hakkında bir soru sormamı istedi:
Yani Kiril - Rus harfleri alfabenin bir parçası mı?
Ve bir soru işareti daha???? alfabetik karakter kümesine dahildir?????
ve ters eğik çizgi \\\\\\\ girse de girmese de
 
içerir.
 
Alexander Zhmurenko :
içerir.

Neyin dahil olduğunu detaylandırabilir misiniz? Yazdıklarım bir arkadaşımdan alıntıdır. Hemen kopyalayıp yapıştırdım. Bana MQL zihnini öğretmeye çalışıyor. Pekala, beyin yıkıyorum. yani tam olarak neyin dahil olduğunu yazar mısınız?

bir soru işareti ( ? )

b) ters eğik çizgi ( \\ )

 
Zvezdochet :

Neyin dahil olduğunu detaylandırabilir misiniz? Yazdıklarım bir arkadaşımdan alıntıdır. Hemen kopyalayıp yapıştırdım. Bana MQL zihnini öğretmeye çalışıyor. Pekala, beyin yıkıyorum. yani tam olarak neyin dahil olduğunu yazar mısınız?

bir soru işareti ( ? )

b) ters eğik çizgi ( \\ )

Kiril kullanımı hala belgelenmemiş bir özelliktir

Bir tanımlayıcı yazarken geçerli karakterler: 0-9 arasındaki sayılar, Latince büyük ve küçük harfler a-z ve A-Z, farklı karakterler olarak tanınır, alt çizgi karakteri (_). İlk karakter bir sayı olamaz.

sözdizimi.

 
int OnInit ()
  {
//---
   color желтый = clrAqua ;
//---
   return ( INIT_SUCCEEDED );
  }
değişkenler olabilir
 

Merhaba, lütfen yorumda neden ZigD[0] gösterilmediğini söyleyin

   for (ww = 0 ; ww <= Bars - 1 ; ww++)
  {
      zzz = iCustom ( NULL , 0 , "ZigZag" , ExtDepth, ExtDeviation, ExtBackstep, 0 , ww);
      
           if (zzz > 0.0 )   
           {
           ZigM[kk]=zzz;
            kk++; 
           ZigD[dd]=ww;
            dd++;  
            }
   }