Hatalar, hatalar, sorular - sayfa 1550

 

Günlerce çalışan karmaşık mantıklar var ama bir anda donuyor. Ancak bu bazen kaynak kodu düzenlenemeyen EX5'te olur. Göstergenin veya danışmanın donmuş olduğunu yandan programlı olarak belirlemek mümkün müdür? Bu veya bu göstergenin hesaplanan kısmının istatistiklerini toplayın?

Göstergelerle, mümkün görünüyor, çünkü grafik güncellemelerini askıya alınmış bir durumda sembolleriyle öldürüyorlar. Bu, hangi göstergelerin donmaya neden olduğunu belirtmeden bile bir Uzman Danışman tarafından izlenebilir.

 
Ban rekorları kırdım. Yasaklar sırasında forumda bana cevap veriyorlar ama ben sadece okuyabiliyorum. Ve bir sonraki yasağın kaldırılmasından sonra, devam etmek için kimin ve nerede cevap verdiğini hatırlamak çok zor. Bu sorunu bir şekilde çözmek mümkün mü (artık banyoya girmeme önerisi olmadan)? Ve genel olarak, bazen okursunuz, ancak şu anda cevap verecek zaman yok. "Daha sonra cevap ver" diye kendime bir çeşit bayrak hatırlatması yapmak mümkün mü?
 
comp :
Ban rekorları kırdım. Yasaklar sırasında forumda bana cevap veriyorlar ama ben sadece okuyabiliyorum. Ve bir sonraki yasağın kaldırılmasından sonra, devam etmek için kimin ve nerede cevap verdiğini hatırlamak çok zor. Bu sorunu bir şekilde çözmek mümkün mü (artık banyoya girmeme önerisi olmadan)? Ve genel olarak, bazen okursunuz, ancak şu anda cevap verecek zaman yok. "Daha sonra cevap ver" diye kendime bir çeşit bayrak hatırlatması yapmak mümkün mü?
Önce düşünmelisin, sonra yapmalısın. Ve tersi değil. O zaman hafıza ile ilgili herhangi bir sorun olmayacak.
 
Karputov Vladimir :
Önce düşünmelisin, sonra yapmalısın. Ve tersi değil. O zaman hafıza ile ilgili herhangi bir sorun olmayacak.
Altın sözler !!!
 
Vladimir Pastushak :
Altın sözler !!!
tamamen destekliyorum!!! soruyu cevaplamak mümkün mü
kompozisyon :
bazen okursun, ama şu anda cevap verecek zaman yok. "Daha sonra cevap ver" diye kendime bir çeşit bayrak hatırlatması yapmak mümkün mü?
 
comp :
"Daha sonra cevap ver" diye kendime bir çeşit bayrak hatırlatması yapmak mümkün mü?
Seni biraz anlıyorum. Herkes acil sorunlarına çözüm istiyor. Senin durumunda, aşırıya kaçıyor. Banyoda otururken bile geliştiriciler oluşturmaya çalışıyorsunuz.
 

MQL4'te "belirtilen sayısal değerin en yakın tam sayısına yuvarlanan değeri döndüren" MathRound() hakkında soru.

kod:

 #property strict
void OnStart ()
  {
   Print ( "1) MathRound(10.50001) = " , MathRound ( 10.50001 ));   // 11.0
   Print ( "2) MathRound(10.49999) = " , MathRound ( 10.49999 ));   // 10.0
  }

Sonuç:


Nazik insanlar neden böyle olduğunu açıklıyor mu? Böyle olması gerekiyorsa, o zaman yönetime bir talep - sadece noktadan sonraki ilk hanenin dikkate alındığını belgelere ekleyin.

MathRound - Математические функции - Справочник MQL4
MathRound - Математические функции - Справочник MQL4
  • docs.mql4.com
MathRound - Математические функции - Справочник MQL4
 

Arkadaşlar lütfen yardım edin. Beyniniz kayıp.

Limit emirleri veren robotun, açık bir pozisyonu kapatırken (durdurma veya kâr yoluyla olsun), kalan bekleyeni kaldırması gerekir, ancak herhangi birini değil, sihirli sayısı kapalının biletine eşit olanı kaldırmalıdır. konum. O. silme için tetikleyicinin tam olarak bir pozisyonu kapatma olayı olması gerekir. Benim için, bu durumda, bu pozisyonun nasıl kapatıldığı önemli değil (sadece, eğer kapanış SL'de ise, silinmesi gereken herhangi bir limit kalmaması şartıyla). Ama detaylandırır ve her şeyi doğru yaparsanız, tetikleyici TP'dir.

Görünüşe göre robot gecikmeyi kaldırıyor, ancak pozisyon kapatıldıktan sonra değil, yerleştirildikten hemen sonra. Ve sürekli bekleyen emirler vererek ve silerek kendi kendisiyle savaşmaya başlar. Lütfen neyin yanlış olduğunu görün.

 input double    lot                  = 0.2 ;
input double    TakeProfitPips       = 50 ;
input double    StopLossPips         = 200 ;

int                bar= 0 ;
int                shift= 1 ;
int                tiket;
int                otkt;
double             price;
int                cnt;
double             TPp,SLp;
int                tkt;
int                n;
int                type;

     int _OrdersTotal = 0 ;
     // кол-во позиций, соответствующих критериям (текущий инструмент и заданный MagicNumber),
     // состоянием на текущий тик
     int now_OrdersTotal = 0 ;
     // кол-во позиций, соответствующих критериям (текущий инструмент и заданный MagicNumber),
     // состоянием на предыдущий тик
     static int pre_OrdersTotal = 0 ;
     // массив открытых позиций состоянием на текущий тик
     int now_OrdersArray[][ 2 ]; // [№ в списке][№ тикета, тип позиции]
     // текущий номер позиции в массиве now_OrdersArray (для перебора)
     int now_CurOrder = 0 ;
     // текущий номер позиции в массиве pre_OrdersArray (для перебора)
     int pre_CurOrder = 0 ;
     // массив для хранения количества закрытых позиций каждого типа
     int now_ClosedOrdersArray[ 6 ][ 3 ]; // [тип ордера][тип закрытия] 
 
     // временные флаги
     bool OrderClosed = true , PendingOrderOpened = false ;
     // временные переменные
   

     int pre_OrdersArray[][ 2 ]; // [количество позиций][№ тикета, тип позиции]
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }


void OnTick ()

  {

         if ( OrdersTotal ()== 0 && iTime ( Symbol (), PERIOD_M1 , 1 )== D'14.01.16 16:30' )

        {
        
         price= Open [shift];

         tiket= OrderSend ( Symbol (), OP_SELLLIMIT ,lot,price, 3 ,price+StopLossPips* Point ,price-TakeProfitPips* Point );
         if (tiket< 0 )
           {
             Print ( "Ошибка OrderSend № - " , GetLastError ());
           }
        }

     

   if ( OrdersTotal ()!= 0 )
     {
       for (cnt= 0 ; cnt< OrdersTotal (); cnt++)

         OrderSelect (cnt, SELECT_BY_POS ); // Если есть следующий
        {                                     // Анализ ордеров:
         price= OrderOpenPrice ();
         otkt = OrderTicket ();
         n=otkt;
         //--------------------------------------------------------------

 
         if ( OrderType ()== OP_SELL && OrderMagicNumber ()== 0 )

           {
            tiket= OrderSend ( Symbol (), OP_SELLLIMIT ,lot* 3 ,price+ 100 * Point , 1 ,price+StopLossPips* Point ,price-TakeProfitPips* Point , "My order" ,n);
            tiket= OrderSend ( Symbol (), OP_SELLLIMIT ,lot* 9 ,price+ 200 * Point , 1 ,price+StopLossPips* Point ,price-TakeProfitPips* Point , "My order" ,n);
           }
        }

     }

  
        _OrdersTotal = OrdersTotal (); // запоминаем общее количество позиций
         ArrayResize ( now_OrdersArray, _OrdersTotal ); // изменяем размер массива открытых позиций под текущее кол-во
         ArrayInitialize ( now_OrdersArray, 0.0 ); // обнуляем массив
        now_OrdersTotal = 0 ; // обнуляем количество позиций, соответствующих критериям
         ArrayInitialize ( now_ClosedOrdersArray, 0.0 ); // обнуляем массивы закрытых позиций и сработавших ордеров
       
 
         //+------------------------------------------------------------------+
         //| Перебираем все позиции и записываем в массив 
         //+------------------------------------------------------------------+
         for ( int z = _OrdersTotal - 1 ; z >= 0 ; z -- )
        {
             if ( OrderSelect ( z, SELECT_BY_POS ) )
           
            {
                now_OrdersArray[now_OrdersTotal][ 0 ] = OrderTicket ();
                now_OrdersArray[now_OrdersTotal][ 1 ] = OrderType ();
                now_OrdersTotal ++;
            }
        }
        
         ArrayResize ( now_OrdersArray, now_OrdersTotal ); // изменяем размер массива открытых позиций под кол-во позиций, соответствующих критериям
 
         //+------------------------------------------------------------------+
         //| Перебираем список позиций предыдущего тика, и считаем сколько закрылось позиций и
         //| сработало отложенных ордеров
         //+------------------------------------------------------------------+
         for ( pre_CurOrder = 0 ; pre_CurOrder < pre_OrdersTotal; pre_CurOrder ++ )
        {
            tkt = pre_OrdersArray[pre_CurOrder][ 0 ]; // запоминаем тикет и тип ордера
            type   = pre_OrdersArray[pre_CurOrder][ 1 ];
            
            OrderClosed = true ; // предпологаем, что если это позиция, то она закрылась
           
             for ( now_CurOrder = 0 ; now_CurOrder < now_OrdersTotal; now_CurOrder ++ ) // перебираем все позиции из текущего списка открытых позиций
            {
                 if ( tkt == now_OrdersArray[now_CurOrder][ 0 ] ) // если позиция с таким тикетом есть в списке,
                {   OrderClosed = false ; // значит позиция не была закрыта (ордер не был удалён)
                     break ;
                }
            }
           
             if ( OrderClosed )   // если была закрыта позиция (удалён ордер),
            {
                
                 if ( OrderSelect ( tkt, SELECT_BY_TICKET )) // выбиаем ее
               
                    n = tkt; // присваеваем n номер тикета
                
            }   
      }  
     
         //+------------------------------------------------------------------+
         //| Удаляем ордер с магическим номером = тикету закрытой ранее позиции 
         //+------------------------------------------------------------------+
     for ( int z = _OrdersTotal - 1 ; z >= 0 ; z -- )
        {
             if ( OrderSelect ( z, SELECT_BY_POS ) )
            otkt = OrderTicket ();
             if (n == OrderMagicNumber ())
             { OrderDelete ( otkt );}
         }
         
         return ;
      }
Помогите отредактировать код, пожалуйста
Помогите отредактировать код, пожалуйста
  • www.mql5.com
И начинает бороться сам с собой, постоянно выставляя и удаляя отложенные ордера. - - Категория: общее обсуждение
 
Söylesene, bir ticaret robotunun hangi pazarda piyasaya sürüldüğünü belirlemek için yerleşik bir mekanizma var mı, FOREX ve FORTS pazarlarını belirlemeniz gerekiyor.
 

İyi insanlar, yardım edin, Macbook'ta MT4'e Rus dilini koyamıyorum, orada görünüyor, ancak hiyerogliflerde gösteriliyor, ancak meta düzenleyicide her şey yolunda. Her şeyi Play on mac'e koydum,

Şarap sürümü 1.9.4. Yardım için çok minnettar olurum.