Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 475

 
alph:
Potete dirmi, per favore, un tale rate tester nella vita reale? Ed è un buon o cattivo risultato per l'anno con depo 3000$?

Un tester di strategia mente sempre, anche se la qualità della simulazione è del 99,9%!

L'unica opzione per controllare l'EA è di metterlo su un server VPN in tempo reale su un conto demo... Microsoft Azure dà quasi un server gratuito per un mese, hai bisogno di 1$ per cercarlo su YouTube!... Ci sono altri servizi VPN, ma hanno 10 giorni massimo di utilizzo gratuito.

 

Ragazzi! È possibile vietare programmaticamente il trading manuale in un EA?

 

Potete dirmi perché questo blocco rimuove tutti gli ordini di stop in sospeso su qualsiasi simbolo impostato nel terminale, ignorando magic e _Symbol?

//--------------------------------------------------------------------------------------------------------------
//       Блок удаления отложенников по типу ордера
//--------------------------------------------------------------------------------------------------------------
int dell_ord_by_type(int type_ord, int _magic)
{   
   bool ticketmdf;
   int j;
  
   int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
   {     
         if( OrderGetString(ORDER_SYMBOL) ==Symbol() && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE) ==type_ord)   
         {  
            if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_STOP)
            {       
               for(j=Appempts; j>0; j--) 
               { 
               //----------------------------------------------------------------------
               MqlTradeResult result={0}; 
            MqlTradeRequest request={0};
            request.order=OrderGetTicket(i);
            request.symbol = _Symbol;
            request.magic = _magic;
            request.action=TRADE_ACTION_REMOVE;
            ticketmdf=OrderSend(request,result);
            
                  if(ticketmdf==true)
                  {
                     Print("Успешно удалён ордер");
                     Sleep(2000);
                     break;                    
                  }
                  if(ticketmdf==false)                     
                  {
                     Print("Ошибка при удалении ордера # ",+GetLastError());
                     Sleep(7000);
                  }
               }                            
            }                       
         }                        
   }
   return(true);  
}
 
Aleksandr Prishenko:

Potete dirmi perché questo blocco rimuove tutti gli ordini di stop in sospeso su qualsiasi simbolo impostato nel terminale, ignorando magic e _Symbol?

1. l'ordine deve essere selezionato per primo;

2. Il ciclo dovrebbe essere costruito a partire dall'ultimo ordine, cioè per( i = ordini-1; i >= 0; i-- )

 
Aleksandr Prishenko:

Potete dirmi perché questa unità cancella tutti gli ordini di stop in sospeso su qualsiasi simbolo impostato nel terminale, ignorando la magia e _Symbol?

Ho bisogno di selezionare gli ordini:

...
   int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
     {
      if(OrderSelect(ххх,ххх,хххх)==true)
        {
         if(OrderGetString(ORDER_SYMBOL)==Symbol() && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE)==type_ord)
           {
...
 
Vladimir Tkach:

Ragazzi! È possibile vietare programmaticamente il trading manuale in un EA?

Certo che no.
 
Karputov Vladimir:

Dovete scegliere i vostri ordini:

L'affermazione è corretta. L'implementazione non è corretta. Dove prendete il biglietto per OrderSelect()?
 

È la cosa giusta da fare?

Alexey Kozitsyn eKarputov Vladimir grazie per i consigli!

int dell_ord_by_type(int type_ord, int _magic)
{   
   bool ticketmdf;
   int j;
 int orders=OrdersTotal();
   for(int i=0;i<orders;i++)//--- пробежим по списку ордеров
   { 
   ResetLastError();    
  ulong ticket=OrderGetTicket(i);
      if(ticket!=0)// если ордер успешно скопирован в кэш, работаем с ним  

      {      
         if( OrderGetString(ORDER_SYMBOL) ==_Symbol && OrderGetInteger(ORDER_MAGIC)==_magic && OrderGetInteger(ORDER_TYPE) ==type_ord)   
         {  
            if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_STOP)
            {       
               for(j=Appempts; j>0; j--)
               { 
 

Avete scritto sopra: quando gli ordini vengono cancellati, il ciclo deve essere invertito. Quando un ordine viene cancellato, gli indici degli ordini rimanenti vengono spostati.

int dell_ord_by_type(int type_ord, int _magic)
{
   ulong nOrderTicket = 0;
   
   for(int i = OrdersTotal() - 1; i >= 0; i--)   //--- пробежим по списку ордеров
   {
      nOrderTicket = OrderGetTicket(i);
        
      if(nOrderTicket > 0 && OrderGetString(ORDER_SYMBOL) == Symbol() && OrderGetInteger(ORDER_MAGIC) == _magic && OrderGetInteger(ORDER_TYPE) == type_ord)   
      {  
         if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_STOP)
         {       
            // удаляем
         }
      }
   }
        
   return(0);  
}
 
A proposito, perché dichiarate una funzione come int se restituisce true nella vostra versione, e sempre? )