どのデザインが正しいのでしょうか? - ページ 6

 
valenok2003:
while コードでは、スレッドがビジー状態である間だけ遅延させる。

そして、RefreshRates()というレート更新が必要です。そうでなければ、古いascとbidの値を使用することになります。または、MarketInfoでascanthusbidを尋ねてください。
 
VladislavVG:

そして、RefreshRates()というレート更新が必要です。そうでない場合は、古いAskとBidの値を使用することになります。または、MarketInfoでお尋ねください。

そこで、犬が活躍するわけです。

この設計が功を奏した。

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

少なくとも、1回目はちゃんと動いたんですよ。

ありがとうございました。

 
VladislavVG:

そして、RefreshRates()というレート更新が必要です。そうでなければ、古いascとbidの値を使用することになります。またはMarketInfoでascanthusbidを尋ねてください。

ありがとうございました。

私のEAでも修正します。

 
valenok2003:



そこで、犬の出番です。

これを実現するのが、このデザインです。

少なくとも、1回目はちゃんと動いたんですよ。


あと一歩のところで、もう一つの条件を修正する必要があります。


  for (int trade = OrdersTotal()-1; trade >= 0; trade--) 
  {
    if(!OrderSelect(trade, SELECT_BY_POS, MODE_TRADES)) break;
    ...........................
オーダーが出なければ、どうしようもない。

頑張ってください。

 
VladislavVG:


あと一歩のところで、もう一つの条件を修正する必要があります。

令状が出なければ、何もできない。

そうですね、納得です。ループからの見落としがあります
while(OrdersTotal()>0)
 
valenok2003:
5
そこではスリッページ=5で、5桁の相場では物足りないということでしたね。
 

というわけで、まとめると。


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

または、他にコメントはありませんか?

 
khorosh:
そこではスリッページ=5で、5桁の相場では物足りないということでしたね。
比較的落ち着いた市場であれば、5台で十分だと思います。
 
一時期、コードベースは異なるタイプを閉じるために独自のセットを発行していました。
ファイル:
 
https://www.mql5.com/ru/code/mt4