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

 
MakarFX #:

正しい方法を教えてください

集計したい要素をすべて入力するのではなく、5つの要素だけを指定する。

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
int Label1Buffer[];
int Label2Buffer[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int i=0,
       f=0,
       limit=9;
   ArrayResize(Label1Buffer,limit);
   ArrayResize(Label2Buffer,limit);
   for(i=limit-1; i>=0; i--)
     {
Label1Buffer[i]= 3;
 if(i<=4) f+=Label1Buffer[i];
Label2Buffer[i]= f;
      Print(Label2Buffer[i]);
     }
Print("   !  ",Label2Buffer[0]);
  }
//+------------------------------------------------------------------+
 
Galim_V #:

いいえ、そうではありません。これまで私は、次のようなことを行ってきました。

   for(i=limit;i>=0;i--)
     {
      Label1Buffer[i] = MathRand();
      tmp = 0.0; 
      for(int a=Input1; a>0; a--)
        {
         tmp +=  Label1Buffer[i+a];
        } 
      Label2Buffer[i] = tmp;
     }
 
iHigh(NULL,PERIOD_H1,i) と double H=iHigh(NULL,PERIOD_H1,i); は同じものではないのですか?



iHigh(NULL,PERIOD_H1,i) という長い行を常に書き続けるのではなく、変数に 格納するように最適化したかったのですが、whileループの後になぜか違う結果が出てしまいます。ループ内の変数に変更した、結果が違う。
 
Ivan Butko iHigh(NULL,PERIOD_H1,i) と double H=iHigh(NULL,PERIOD_H1,i); は同じものではないのですか?



iHigh(NULL,PERIOD_H1,i) という長い行を常に書き続けるのではなく、変数に 格納するように最適化したかったのですが、whileループの後になぜか違う結果が出てしまいます。ループ内の変数に変更した、結果が違う

は、どのような文脈で考えるかにもよりますが...

whileループでiを弄ると、iHigh(NULL,PERIOD_H1,i)とHが異なる...。Hは他のiのデータを保存しているので

 
Nikolay Ivanov iHigh(NULL,PERIOD_H1,i)とHが異なる...。Hは他のiのデータを保存しているので

そうですね、iで再生されますね。つまり、ありがとうございます。

 
履歴をカットする方法はありますか?ダウンロードしたときは20年前のものなのに、2-3年前のものが必要になったり......。
 
Ivan Butko #:
履歴をカットする方法はありますか?ダウンロードしたときは20年前のものなのに、2-3年前のものが必要になったり......。

Shift」キーで不要なデータを選択し、削除します

 
MakarFX #:

Shift」キーで不要なデータを選択し、削除します。

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

 
こんにちは。
void CloseAll()
{
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
         {
            if (OrderType() == OP_BUY)
            {
               if (!OrderClose(OrderTicket(),OrderLots(), Bid, Slippage))
               Print (" Не удалось закрыть ордер на покупку!");
            }
            if (OrderType() == OP_SELL) 
            {
               if (!OrderClose(OrderTicket(),OrderLots(), Ask, Slippage))
               Print (" Не удалось закрыть ордер на продажу!");
            }
         }
      }
   }
}
私はこのコードを使って、すべての注文を終了しています。でも、たくさんあると全部が閉まらないことに気づきました。初回でなくとも、全部を閉じるには何を加えればいいのか。可能であれば、その例を教えてください。
 

こんにちは、再び)

2つ目の質問:
注文を部分的に決済したいのですが、どうすればいいですか?ただ、問題があって、部分的にクローズオーダーをする場合、私の理解では、オーダーチケットが変わってしまい、ここから最後が最初になり、私にとっては、オープニングの順番を維持することがメインとなります。最後のものが最後に残るために。前回の注文を追跡する方法。初値は 変わりますか?可能であれば、例を挙げて)
ありがとうございました。