[アーカイブ】お金になる村人の作り方を学ぼう! - ページ 721

 
Slovyn:

どなたか、エラーの内容を教えてください。



貿易の流れは忙しい。

また、このような構造をinit covの最初に置くこともできます。

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

このエラーは、注文が成立しなかった場合に、例えば次のように処理されます。

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


貿易の流れは忙しい。

このエラーは、注文が成立しなかった場合に、例えば次のように処理されます。


11秒待つのはちょっと長くないですか? サーバーの問題ではなく、純粋に1つのターミナルにEAが密集していることが原因です
 
sergeev:

11秒待つのは長すぎませんか? サーバーの問題ではなく、1端末のEA数に依存します


そうですね、わりと長いので、オープニング機能で持っているのですが...。

正しくて、お願い...自分でも訂正しておきます...。

実は、私の別のクエストにも同じ図があるんです。

例えば

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


むしろそうですね、ちょっとやりすぎですね、冒頭のフィーでこれだけ点数つけてますから...。

正しくて、お願い...私のところでも訂正しておきます...。


あなたのデザインは本質的に間違っている...

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

逆でなければならない

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


というスタイルで、イデオロギーを

i<NumberOfTries

プロらしくないと思う。

 
sergeev:

あなたのデザインは本質的に間違っている

を反転させる必要があります。


なるほど~、訂正しておきます。ありがとうございます。
 
Roman.:


貿易の流れは忙しい。

また、このような構造をiniit covの先頭に置くことも可能です。

このエラーは、注文が成立しなかった場合に、例えば次のように処理されます。

リクエストが連続して来ない限り、1秒あれば大丈夫です。
 
Slovyn:

どなたか、エラーの内容を教えてください。

貿易の流れは忙しい。ということかもしれません。

1)貿易の流れが実際に忙しい

2)全く忙しくない流れで、「誰か」が忙しいふりをしている。

3)STPに問い合わせることで解決できる技術的な問題。


ちなみにこのエラーは、1つの取引注文を 送信する際に発生することもあります。端末でストップ高をトレースしても発生することが多い。

 

私なんかは、これ...。100%が操作を行う)

while(IsTradeContextBusy()) Sleep(100);

while(!error)
{
   error=OrderCloseBy(pos1,pos2);
   Sleep(1000);
}
 
OnGoing:
要求が連続しない限り、2番目で十分です。


なるほど、そうだったのか-アバランチからオープンオーダーへのコード部分-私はリアルで取引した-質問はなかった。

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

テスターによると、これがマイクロリアル!(セント・アカウント)