[Archiv] Lernen Sie, wie man als Dorfbewohner Geld verdient! - Seite 721

 
Slovyn:

Wer kann mir sagen, wo der Fehler liegt?



Die Handelsströme sind rege.

Sie können eine solche Konstruktion auch an den Anfang der Init-Cov setzen:

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

Er wird behandelt, indem dieser Fehler behandelt wird, wenn eine Bestellung nicht aufgegeben wird, z. B. so:

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


Die Handelsströme sind rege.

Er wird behandelt, indem dieser Fehler behandelt wird, wenn eine Bestellung nicht aufgegeben wird, z. B. so:


Ist es nicht ein bisschen lang, 11 Sekunden zu warten? Das liegt nicht am Server, sondern einfach daran, dass viele EAs in einem Terminal sind.
 
sergeev:

Ist es nicht zu lang, 11 Sekunden zu warten? Das ist keine Server-Sache, sondern hängt von der Anzahl der EAs in einem Terminal ab.


Ja, er ist ziemlich lang, ich habe ihn in meiner Eröffnungsfunktion...

Richtig, bitte... Ich werde auch in meinem Bericht Korrekturen vornehmen...

Tatsächlich habe ich die gleiche Zahl in meiner anderen Suche:

zum Beispiel:

 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.:


Eher ja, es ist ein bisschen viel, ich habe es so in meinem Eröffnungsfilm bewertet...

Richtig, bitte... Ich werde auch in meinem Bericht Korrekturen vornehmen...


Ihr Entwurf ist grundsätzlich falsch...

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

sie muss rückgängig gemacht werden

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


und die Ideologie im Stil

i<NumberOfTries

Ich finde das unprofessionell.

 
sergeev:

Ihr Entwurf ist grundsätzlich falsch

müssen Sie invertieren


Ich verstehe - ich werde die Korrekturen vornehmen. Ich danke Ihnen.
 
Roman.:


Die Handelsströme sind rege.

Sie können eine solche Konstruktion auch an den Anfang der Init-Cov setzen:

Er wird behandelt, indem dieser Fehler behandelt wird, wenn eine Bestellung nicht aufgegeben wird, z. B. so:

Es genügt eine Sekunde, solange die Anfragen nicht hintereinander kommen.
 
Slovyn:

Wer kann mir sagen, wo der Fehler liegt?

Die Handelsströme sind rege. Dies könnte bedeuten, dass:

1) der Handelsfluss ist tatsächlich ausgelastet

2) der Fluss ist überhaupt nicht besetzt und "jemand" tut so, als sei er besetzt.

3) Technische Probleme, die durch Kontaktaufnahme mit STP gelöst werden können.


Dieser Fehler kann übrigens auch beim Senden eines einzelnen Handelsauftrags auftreten. Tritt häufig auch dann auf, wenn eine Haltestelle vom Terminal abgefahren wird.

 

Ich, zum Beispiel, habe dies... 100% werden die Operation durchführen)

while(IsTradeContextBusy()) Sleep(100);

while(!error)
{
   error=OrderCloseBy(pos1,pos2);
   Sleep(1000);
}
 
OnGoing:
Die zweite ist völlig ausreichend, solange die Anfragen nicht aufeinander folgen.


Ich sehe, ich habe so - der Code-Abschnitt von Avalanche, um Aufträge zu öffnen - ich auf der realen gehandelt - es gab keine Fragen.

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);
      }
   }      
}
 

Das sagt der Tester im Micro Real! (Cent-Konto)