[Archive] Apprenez à gagner de l'argent avec les villageois ! - page 721

 
Slovyn:

Qui peut me dire quelle est l'erreur ?



Le flux commercial est occupé.

Vous pouvez aussi mettre une telle construction au début de la cov init :

int init()
{     
   IsExpertStopped = false;
   if (!IsTradeAllowed())  {Comment("Необходимо разрешить советнику торговать");IsExpertStopped = true; return (0);}      
   if (!IsTesting()) 
      { 
        if (IsExpertEnabled()) {  Comment("Советник запустится следующим тиком"); }
        else   { Comment("Отжата кнопка \"Разрешить запуск советников\""); }
      }

Il est traité en gérant cette erreur lorsqu'une commande n'est pas passée, par exemple comme ceci :

if (error == ERR_TRADE_CONTEXT_BUSY) 
      {
         while (IsTradeContextBusy()) 
         {
            Sleep(1000*11);
         }
      }
 
Roman.:


Le flux commercial est occupé.

Il est traité en gérant cette erreur lorsqu'une commande n'est pas passée, par exemple comme ceci :


Ce n'est pas un problème de serveur, mais simplement le fait d'avoir une foule d'EA dans un terminal.
 
sergeev:

Ce n'est pas un problème de serveur, cela dépend du nombre d'EAs dans un terminal.


Oui, c'est assez long, je l'ai dans ma fonction d'ouverture...

Correct, s'il vous plaît... Je vais faire des corrections dans le mien aussi...

En fait, j'ai le même chiffre dans mon autre quête :

par exemple :

 case 0:
      if (BuySell==1)// || LongTrade)
      {
      for (c = 0; c < NumberOfTries; c++) {
         RefreshRates();
         ticket = OrderSend(Symbol(), OP_BUY, pLots, Ask, sp, StopLong(Bid, sl), TakeLong(Ask, tp), pComment, pMagic, pDatetime, pColor);
         err = GetLastError();
         if (err == 0/* NO_ERROR */) break;
         if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break;
         Sleep(5000);
      }
      }
      break;
 
Roman.:


Plutôt oui, c'est un peu beaucoup, je l'ai tellement marqué dans mon fi...

Correct, s'il vous plaît... Je vais faire des corrections dans le mien aussi...


votre conception est essentiellement erronée...

if (error == ERR_TRADE_CONTEXT_BUSY) 
      {
         while (IsTradeContextBusy()) 

il faut l'inverser

if (IsTradeContextBusy()) 
{
 // здесь выдать предупреждение и не делать торговых операций


et l'idéologie dans le style

i<NumberOfTries

Je trouve ça non professionnel.

 
sergeev:

votre conception est essentiellement erronée

vous devez inverser


Je vois - je vais faire les corrections. Merci.
 
Roman.:


Le flux commercial est occupé.

Vous pouvez également placer une telle construction au début de l'iniit cov :

Il est traité en gérant cette erreur lorsqu'une commande n'est pas passée, par exemple comme ceci :

Il suffit d'une seconde, tant que les demandes ne se suivent pas.
 
Slovyn:

Qui peut me dire quelle est l'erreur ?

Le flux commercial est occupé. Cela pourrait signifier que :

1) le flux commercial est réellement occupé

2) le flux n'est pas occupé du tout et "quelqu'un" fait semblant d'être occupé.

3) Les problèmes techniques qui peuvent être résolus en contactant STP.


Et d'ailleurs, cette erreur peut se produire lors de l'envoi d'un seul ordre de transaction. Se produit souvent même lorsqu'un arrêt est trafiqué par le terminal.

 

Moi, par exemple, j'ai ce... 100% fera l'opération)

while(IsTradeContextBusy()) Sleep(100);

while(!error)
{
   error=OrderCloseBy(pos1,pos2);
   Sleep(1000);
}
 
OnGoing:
La seconde est tout à fait suffisante, pour autant que les demandes ne soient pas consécutives.


Je vois, je l'ai fait - la section de code d'Avalanche pour ouvrir des ordres - j'ai négocié sur le réel - il n'y avait pas de questions.

for (int try = 1; try <= NumberOfTry; try++)
   {
      if (!IsTesting() && (!IsExpertEnabled() || IsStopped()))
      {
         break;
      }
   
      while (!IsTradeAllowed()) 
      {
         Sleep(5000);
      }
    
      RefreshRates();
      opentime = TimeCurrent();
      ticket = OrderSend(symbol, cmd, volume, price, SlipPips, stoploss, takeprofit, comment, magic, expiration, clr);
      if (ticket > 0)
      {
         if (UseSound) 
         {
            PlaySound("ok.wav"); 
            break;
         }
      } 
      else
      {
         error = GetLastError();
         if (error == ERR_TRADE_TIMEOUT)
         {
            Sleep(1000*66);
            if (ExistOrders(symbol, cmd, magic, opentime))
            {
               if (UseSound) 
               {
                  PlaySound("ok.wav"); 
                  break;
               }
            }
         }
        
         Print("Error(", error, ") set order: ", ErrorDescription(error), ", try ", try);
         continue;
      }
      
      Print("Error(", error, ") set order: ", ErrorDescription(error), ", try ", try);
      Print("Ask=", Ask, "  Bid=", Bid, "  symbol=", symbol, "  volume=", volume, "  cmd=", GetNameOP(cmd), "  price=", price, "  stoploss=", stoploss, "  takeprofit=", stoploss, "  magic=", magic);
      if ((error == ERR_COMMON_ERROR) || (error == ERR_ACCOUNT_DISABLED) || (error == ERR_INVALID_ACCOUNT) || (error == ERR_TRADE_DISABLED))
      {
         IsExpertFailed = true;
         break;
      }
      
      if ((error == ERR_SERVER_BUSY) || (ERR_INVALID_TRADE_VOLUME) || (error == ERR_MARKET_CLOSED))
      {
         Sleep(1000*300); 
         break;
      }
      
      if ((error == ERR_TOO_FREQUENT_REQUESTS) || (error == ERR_TOO_MANY_REQUESTS)) 
      {
         Sleep(1000*100);
      }
      
      if ((error == ERR_ORDER_LOCKED) || (error == ERR_LONG_POSITIONS_ONLY_ALLOWED) || (error == ERR_TRADE_TOO_MANY_ORDERS)) 
      {
         break;
      }
      
      if (error == ERR_TRADE_CONTEXT_BUSY) 
      {
         if (IsTradeContextBusy()) 
         {
            Sleep(1000*1);
         }
      }
      
      if (error == ERR_TRADE_EXPIRATION_DENIED )
      {
         expiration = 0; 
         continue;
      }
      
      if ((error != ERR_PRICE_CHANGED) && (error != ERR_REQUOTE)) 
      {
         Sleep(1000*7.7);
      }
   }      
}
 

C'est ce que dit le testeur dans le micro réel ! (compte cent)

Raison: