Hangi tasarım doğru? - sayfa 6

 
valenok2003 :
while kodunda sadece iş parçacığı meşgulken geciktirmek için.

Ardından oranları güncellemeniz gerekir: RefreshRates(). Aksi takdirde eski talep ve teklif değerlerini kullanırsınız. Veya MarketInfo'dan bir talep/teklif isteyin.
 
VladislavVG :

Ardından oranları güncellemeniz gerekir: RefreshRates(). Aksi takdirde eski talep ve teklif değerlerini kullanırsınız. Veya MarketInfo'dan talep edin.

Demek köpeğin ortalığı karıştırdığı yer orası.

Bu yapı çalıştı:

 //+------------------------------------------------------------------+
//|                                           CloseThisSymbolAll.mq4 |
//+------------------------------------------------------------------+
int start()
{
//----
  for ( int trade = OrdersTotal ()- 1 ; trade >= 0 ; trade--) 
  {
    OrderSelect (trade, SELECT_BY_POS, MODE_TRADES);
    if (OrderSymbol() == Symbol ()) 
    { 
      while (!IsTradeAllowed()) Sleep ( 1000 );
      RefreshRates();
      if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), 5 , CLR_NONE );
      if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), 5 , CLR_NONE );
    }
  }
//----
   return ( 0 );
}
//+------------------------------------------------------------------+

Her neyse, ilk seferinde doğru çalıştı.

Sayesinde!

 
VladislavVG :

Ardından oranları güncellemeniz gerekir: RefreshRates(). Aksi takdirde eski talep ve teklif değerlerini kullanırsınız. Veya MarketInfo'dan bir talep/teklif isteyin.

Teşekkür ederim!

Danışmanımda da düzelteceğim..

 
valenok2003 :



Demek köpeğin ortalığı karıştırdığı yer orası.

Tasarım böyle çalıştı.

Her neyse, ilk seferinde doğru çalıştı.


Neredeyse - bir koşulun daha düzeltilmesi gerekiyor:


  for ( int trade = OrdersTotal ()- 1 ; trade >= 0 ; trade--) 
  {
    if (! OrderSelect (trade, SELECT_BY_POS, MODE_TRADES)) break ;
    ...........................
Emir çıkmazsa yapacak bir şey yok.

İyi şanlar.

 
VladislavVG :


Neredeyse - bir koşulun daha düzeltilmesi gerekiyor:

Emir çıkmazsa yapacak bir şey yok.

Evet, mantıklı. Bu döngüden çıkmış bir gözetim
 while ( OrdersTotal ()> 0 )
 
valenok2003 :
beş
Orada kayma = 5 oldu ve bu beş basamaklı alıntılar için yeterli değil.
 

Yani sonunda:


 //+------------------------------------------------------------------+
//|                                           CloseThisSymbolAll.mq4 |
//+------------------------------------------------------------------+
int start()
{
//----
  for ( int trade = OrdersTotal ()- 1 ; trade >= 0 ; trade--) 
  {
    if (! OrderSelect (trade, SELECT_BY_POS, MODE_TRADES)) break ;
    if (OrderSymbol() == Symbol ()) 
    { 
      while (!IsTradeAllowed()) Sleep ( 1000 );
      RefreshRates();
      if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), slippage, CLR_NONE );
      if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), slippage, CLR_NONE );
    }
  }
//----
   return ( 0 );
}
//+------------------------------------------------------------------+

Yoksa başka yorumlar var mı?

 
khorosh :
Orada kayma = 5 oldu ve bu beş basamaklı alıntılar için yeterli değil.
Nispeten sakin bir pazarla, 5 oldukça yeterli IMHO.
 
Kod tabanında bir keresinde farklı türleri kapatmak için setimi yayınladım.
Dosyalar:
 
https://www.mql5.com/ru/code/mt4