[Arşiv]Köylülerden para kazanmayı öğrenin![Arşiv] - sayfa 721

 
Slovyn :

Kim bana neyin yanlış olduğunu söyleyebilir???



Ticaret akışı yoğun.

Ayrıca, baykuşun başlangıcında böyle bir yapıyı sürdürebilirsiniz:

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

Örneğin, aşağıdaki gibi bir sipariş verilmediğinde bu hata işlenerek giderilir:

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


Ticaret akışı yoğun.

Örneğin, aşağıdaki gibi bir sipariş verilmediğinde bu hata işlenerek giderilir:


Ama 11 saniye beklemek çok fazla değil mi? bu bir sunucu yongası değil, yalnızca bir terminalde bir uzman kalabalığının varlığından
 
sergeev :

Ama 11 saniye beklemek çok fazla değil mi? bu bir sunucu yongası değil, yalnızca bir terminalde bir uzman kalabalığının varlığından


Aksine, evet, biraz fazla, f-ii'mdeki açıklıklarla o kadar doluyum ki...

Doğru, pliz ... Kendimde de değişiklikler yapacağım ...

genel olarak, başka bir baykuşta böyle bir figürüm var:

misal:

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


Aksine, evet, biraz fazla, açılış görevimde o kadar tıkandım ki...

Doğru, pliz ... Kendimde de değişiklikler yapacağım ...


yanlış tasarıma sahipsin

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

çevirmek gerek

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


ve ideolojik tarzda

i<NumberOfTries

profesyonel olmadığını düşünmek

 
sergeev :

yanlış tasarıma sahipsin

çevirmek gerek


Tamam, değişiklik yapacağım. Sayesinde.
 
Roman. :


Ticaret akışı yoğun.

Ayrıca, baykuşun başlangıcında böyle bir yapıyı sürdürebilirsiniz:

Örneğin, aşağıdaki gibi bir sipariş verilmediğinde bu hata işlenerek giderilir:

İstekler art arda gitmediyse bir saniye yeterlidir.
 
Slovyn :

Bana neyin yanlış olduğunu kim söyleyebilir???

Ticaret akışı yoğun. Bu şu anlama gelebilir:

1) ticaret akışı aslında meşgul

2) konu meşgul değil ve "birisi" meşgulmüş gibi yapıyor.

3) STP ile iletişime geçerseniz çözülebilecek teknik sorunlar.


Ve bu arada, tek bir ticaret talebi gönderirken böyle bir hata meydana gelebilir. Durdurma terminal tarafından takip edildiğinde bile sıklıkla oluşur.

 

Mesela bende şu var... İşlemi %100 yapacak)

 while ( IsTradeContextBusy ()) Sleep ( 100 );

while (!error)
{
   error= OrderCloseBy (pos1,pos2);
   Sleep ( 1000 );
}
 
OnGoing :
İstekler art arda gitmediyse bir saniye yeterlidir.


Tabii ki, böyle yaptım - Çığdan gelen emirleri açmak için kodun bir bölümü - gerçek hayatta ticaret yaptım - soru yoktu.

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

bu yüzden test cihazında mikro real ile yazıyor! (yüzde hesabı)