Danışmanın kazanmasına izin vermeyen şey. - sayfa 4

 
FAQ :

... lütfen :

Hem global hem de yerel değişkenlerin yarısından fazlası başlatılmamış - çalışmalarının belirli bir noktasında içlerinde çok fazla çöp olduğundan eminim.

Siparişin OrderSelect() tarafından seçilip seçilmediğini asla kontrol edemezsiniz, kapanış saatine göre açık/kapalı olup olmadığını kontrol etmeniz söz konusu değildir.

Alım satım fonksiyonlarından önce teklif güncellemeleri, kodda bir şey fark etmedim...

GetLastError açma/kapama işleminden önce sıfırlanmaz, ancak kontrolü kontrol edin - değişkende tekrar çöp vakaları olacaktır.

Fiyatlar kontrol edilmez ve kapanışta normalize edilmez

Devam etmek?

Devam et.

Çok kullanışlı.

 

İşte https://www.mql5.com/en/forum/137651/page3 Kapanış fonksiyonumu yayınladım

GetInfo() print ile değiştirin, Fun_Error() = ErrorDescription()

 
FAQ :

Siparişin OrderSelect() tarafından seçilip seçilmediğini asla kontrol ETMEZSİNİZ,


Dürüst olmak gerekirse, bir sipariş seçerken döndürülen değer yanlışsa ne yapacağımı tam olarak anlamıyorum.

false, MODE_TRADES arasında %100 yokluğu anlamına mı geliyor?

Tavsiyeleriniz doğrultusunda emir açma kodlarını yeniden düzenledim, dürüst olmak gerekirse, danışmanın konfigürasyonuna dokunmuyorum, merak ediyorum, göreceğiz... başka bir karı birleştirecek veya sabitleyecektir.

 
valenok2003 :


Dürüst olmak gerekirse, bir sipariş seçerken döndürülen değer yanlışsa ne yapacağımı tam olarak anlamıyorum.

false, MODE_TRADES arasında %100 yokluğu anlamına mı geliyor?


bu %100, onunla [sipariş] hiçbir şey yapılamayacağı anlamına gelir, çünkü o seçilmedi.
 
PapaYozh :

bu %100, onunla [sipariş] hiçbir şey yapılamayacağı anlamına gelir, çünkü o seçilmedi.



Aynen öyle... Mlyn ... ama seçilmediyse, bu bir tür hata mı? Bir şeyler yapılması gerekiyor...

Örneğin, bu işleve bakın,

 //+-------
//+------------------------------------------------------------------+
//|   valenok2003@mail.ru                                05.07.2011
//+------------------------------------------------------------------+
//| check_open_order() ПРОВЕРКА реального открытия рыночного ордера по тикету
//| Требует:
//| - тикет ордера 
//| Возвращает тикет открытого ордера или -1
//+------------------------------------------------------------------+
int check_open_order( int _Ticket)
{   string _Function = "check_open_order(): " ;
//-----------------
   if (_Ticket > 0 ) {  
       OrderSelect (_Ticket,SELECT_BY_TICKET);             
       if ( OrderType () <= 1 ) {  
         output_mov_string(order_type_in_txt( OrderType ())+ " успешно открыт!" , Clr_Report);
         output_sound(Name_Sound_Open);
         OrderPrint ();
//-----------------         
         for ( int _n = 0 ; _n < MAX_ORDERS; _n++)  {
             // Если место свободно
             if (Arr_Tickets[_n] == 0 )   {
               // Создаём запись об ордере
               Arr_Tickets[_n] = OrderTicket ();
               break ;
            }
         }
      }
       else _Ticket = - 1 ;
   }
//-----------------
   return (_Ticket);
}
//+-------------------------------------------------------------------
//+-------
Sıra seçilmezse teorik olarak -1 döndürmeliyim. Ve başka bir nedenden dolayı seçilmediyse - örneğin bir tür başarısızlık ve sipariş açıksa, ne yapmalı?
 
valenok2003 :


Aynen... Mlyn... ama seçilmemişse bu bir tür hata mı? Bir şeyler yapılması gerekiyor...


Seçilemez:

1) danışmanın kodundaki pervazlar nedeniyle;

2) siparişler arasında sıralama yapılırken danışmanın kontrolü dışındaki koşullar nedeniyle kapatılması nedeniyle (SL / TP çalıştı, manuel olarak kapatıldı, danışman tarafından kapatıldı)

 
valenok2003 :


Aynen... Mlyn... ama seçilmezse bu bir tür hata mı? Bir şeyler yapılması gerekiyor...

şaka mı yapıyorsun yoksa ciddi misin???

Duraklatın ve tekrar seçin. Bu şekilde düzenledim, çevrimiçi çalışıyor:

 // ------------------------------------------------Ищем наш ордер---------------------------------
   int orderType;
   for ( int orderIndex = ( OrdersTotal () - 1 ); orderIndex >= 0 ; orderIndex--)
   {
       if (! OrderSelect (orderIndex, SELECT_BY_POS))     continue ;
       if (( OrderSymbol () != Symbol ()) || ( OrderMagicNumber () != MagicNumber)) continue ;
      orderType = OrderType ();
       if ((orderType != OP_BUY) && (orderType != OP_SELL)) continue ;
          ticket = OrderTicket ( );                         // Номер ордера
          orderLots = OrderLots ();                         // Lots   
          orderProfit = OrderProfit () + OrderSwap ();       // Profit
          Price = OrderOpenPrice ();                         // Цена открытия рыночного ордера
          SL =   OrderStopLoss ();                           // Значение StopLoss ордера
          TP = OrderTakeProfit ();                           // Значение TakeProfit ордера          
           if (ticket> 0 )                                     // Если позиция открылась
              {
                 while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                 Sleep ( 100 );                                 
                 double OpenPrice= OrderOpenPrice ();
       // Print("OrderTicket()=",OrderTicket(),  "OrderOpenTime()=",OrderOpenTime()); 
       // Print("TimeLocal()=",TimeLocal());                                                                    
                     //---------------------Запоминаем значения сл и тп ордера   
...
...
...
                  
 
Roman. :

şaka mı yapıyorsun yoksa ciddi misin???

Duraklatın ve tekrar seçin. Bu şekilde düzenledim, çevrimiçi çalışıyor:

Oradaki mesajımı güncelledim.

Ve kaç kez seçilir?

 
valenok2003 :

Oradaki mesajımı güncelledim.

Ve kaç kez seçilir?

BUNA. Döngüde seçilene kadar:

 if (ticket> 0 )                                     // Если позиция открылась
              {
                 while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                 Sleep ( 100 );                                 
                 double OpenPrice= OrderOpenPrice ();
       // Print("OrderTicket()=",OrderTicket(),  "OrderOpenTime()=",OrderOpenTime()); 
       // Print("TimeLocal()=",TimeLocal());                                                                    
                     //---------------------Запоминаем значения сл и тп ордера                     
                 if (orderType == OP_BUY) 
                   {                
                     
                   }
            
                 if (orderType == OP_SELL) 
                   {        
                   
                   }   
                            
              }
 
PapaYozh :


Seçilemez:

1) danışmanın kodundaki pervazlar nedeniyle;

bununla her şey açık

2) siparişler arasında sıralama yapılırken danışmanın kontrolü dışındaki koşullar nedeniyle kapatılması nedeniyle (SL / TP çalıştı, manuel olarak kapatıldı, danışman tarafından kapatıldı)

Sadece bu iki sebep mi yoksa başka bir şey mi var?