MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 133

 
皆さん、こんにちは。このコードを変更する方法を教えてください for(int i=OrdersTotal()-1;i>=0;i--){ このコードを変更する方法について教えてください。
現時点では、最も最近開いたものを閉じています。まず最初のものを閉じてほしい!(笑)。
 
Rustam Bikbulatov:
皆さん、こんにちは。このコードを変更する方法を教えてください for(int i=OrdersTotal()-1;i>=0;i--){ このコードを変更する方法について教えてください。
現時点では、最も最近開いたものを閉じています。まず最初のものを閉じてほしい!(笑)。
for(int i=0; i<OrdersTotal(); i++)
 
Rustam Bikbulatov:
皆さん、こんにちは。このコードを変更する方法を教えてください for(int i=OrdersTotal()-1;i>=0;i--){ このコードを変更する方法を教えてください for(int i=OrdersTotal()-1;i>=0;i--){ このコードを変更する方法を教えてください。
現時点では、最も最近開いたものを閉じています。まず最初のものを閉じてほしい!ということですね。
for( int i = 0; i < OrdersTotal(); i++ )
   {
    if( /*Функция закрытия. Если вернула истину*/ )
       i--;
   }

この方法で試してみてください。コメントではなく、関数を使用して注文をクローズする必要があります。機能の確認はしていません。で、ここで、注文数が減るので、その都度、注文量を計算する関数を呼び出す ことになると思うのです。

そのようなバリエーションも試してみてはいかがでしょうか。

while( OrdersTotal() > 0 )
   /*Функция закрытия ордера*/
 
Vitaly Muzichenko:
for(int i=0; i<OrdersTotal(); i++)
うまく閉じない)
 
Rustam Bikbulatov:
ふところがわるい)
正しい方法は、クローズする必要のあるオーダーを記憶し、必要なリストをソートし、その順番でクローズすることです。

は正しくありませんが、今のところ (あるビルドまでは) 動作します:i-- のクローズに成功すると



 
Rustam Bikbulatov:
皆さん、こんにちは。このコードを変更する方法を教えてください for(int i=OrdersTotal()-1;i>=0;i--){ このコードを変更する方法について教えてください。
現時点では、最も最近開いたものを閉じています。 まず最初のものを閉じて ほしい!(笑)。

//+------------------------------------------------------------------+
//|           Закрыть все позиции начиная с первых                   |
//+------------------------------------------------------------------+

double CloseOrders()

{
  for(int i=0; i<OrdersTotal(); )
  {
    if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
    break;
    
    if (OrderMagicNumber() != mn)
    break;
    
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, CloseColor );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, CloseColor );
                          break;
    }
    
    if(result == false)
    {
      Print("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      i++;
    }  
  }
return (True);
}
// End
 
Rustam Bikbulatov:
不格好な閉じ方をしている)
私が提案した選択肢は、一般的にはクロージングには不釣り合いなものです。
古いものから新しいものへと閉じるということであれば、グリッドを閉じることになります。グリッドを使った経験があるので、確実に言えることは、ポジションの年齢で選ぶのではなく、ロットで選び、大きいロットから小さいロットへ閉じるべきだということです。グリッドがシングルロットの場合、クロージングの順番に違いはありません。閉じるには既成の機能を使用し、既に発明されたものを発明しないこと)
 
皆さん、本当にありがとうございます。もう整理したんだ!!!!
 
Vitaly Muzichenko:
私が提案した選択肢は、一般的にはクロージングには不釣り合いなものです。
古いものから新しいものへと閉じるということであれば、グリッドを閉じることになります。グリッドを使った経験があるので、確実に言えることは、ポジションの年齢で選ぶのではなく、ロットで選び、大きいロットから小さいロットへ閉じるべきだということです。グリッドがシングルロットであれば、クローズする順番に違いはありません。クロージングには既成の機能を使用し、既に発明されたものを発明しないこと)
そうなんです。その通り!
 
開発者の皆さん皆さん、ごきげんよう。Expert Advisor(スクリプト)を作成する際のテンプレート作成について質問させてください。これはどこかで編集できるのでしょうか、どのようにするのでしょうか。