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

 
Igor Makanu:

このコードが機能するように、類推してやってください。

最小限の変更 - OrderMagicNumber()解析を削除し、3つのログを追加しました。
結果は、残念ながら同じです。prをご覧ください。- 最初のスクリーンショットでは、始まりがあり(なぜ0から始まらないのか不明)、2枚目のスクリーンショットでは、124から99で始まっているところです。

int NumberOfOrders()
{
int i,res=0,k=OrdersTotal(); string sy=Symbol();

for(i=0;i<k; i++)
{
log("k = " + k +"; ");
log("i = " + i +"; ");
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))の場合
{
if((OrderSymbol()==sy)) res++; //if((OrderMagicNumber()==magic_))のようになります。&& (OrderSymbol()==sy)) res++;
log("res = " + res +"; ");

}
}
return(res);
}.

ファイル:
test_1.png  6 kb
test_2.png  6 kb
 
Alexey Viktorov:
このコードは本当にエラーなくコンパイルできるのでしょうか?信じられない...
なぜ、疑うのですか?いずれにせよ、MQL4ではエラーは発生しません。
 
Algotrader18:

(0から始まらない理由は不明)、124から99になる2箇所目について。

Print()の一部を端末が「食べた」ため、MQLの出力は最も低い優先度になっています。Print()の 前にSlepp(123)を追加すれば、スキップは発生しません。

ログによると、ループカウンターを表示しているだけですが

 
Igor Makanu:

Print()のターミナルが「食べた」部分なので、MQLでは出力の優先順位が最も低く、Print()の前にSlepp(123)を追加すればスキップは発生しません。

ログによると、ループカウンターを表示しているだけですが

とても興味深いのですが、もう少し具体的に教えてください。この「食べる」という作業は、どのように行われるのでしょうか?

ご返信からは、私が「食べた」印象を受けます。それは単にもっと重要なことがあったのでログに入れなかっただけですが、私の本当の仕事はすべての注文を調べて特定のものを削除することで、EAがその一部をスキップしている(これは最も低い優先度で情報を出力して いない)ことに気付きました。私は理由を理解するためにタスクを簡素化し、その結果、我々はログに出力のみを持っていますが、私はまだ省略された順序、すなわち、Expert Advisorは、いくつかの順序を飛び越える参照してください。 最低注文優先度は0からではない開始出力をよく説明しますが、それは、例えば、124から99にジャンプすると矛盾した出力を説明できる方法を示します。

もし、"食べた "というのが別の意味だとしたら、何を意味するのか理解したい。
ファイル:
test_2.png  6 kb
 
neverness:

すごいなー。

ローマン!

例えば私は、20年の経験を持つトレーダーとして成功しています。

なぜ「エントリーしたペアの終値と その移動平均の 差」が必要なのか理解できません。

さらに、この差分を移動平均にする方法をご存知でしょうか?- ファンタスティック!

単純に相場の移動平均を描けばいいのか?- また、違うのか?

で、何が問題なんだ?

終値平均の差は終値平均の差にあらず、嗚呼、嗚呼

 
Algotrader18:
疑問点とは?とにかく、MQL4でエラーは出ない。

1.コードの挿入 方法について説明します。

アルゴトレーダー18

OrderMagicNumber()の解析を削除し、3つのログを追加するなど、最小限の変更を加えました。
結果は、残念ながら、同じです。- 1枚目のスクリーンショットでは冒頭(なぜ0から始まらないのかわからない)、2枚目では-124から99で始まるところです。

int NumberOfOrders()
  {
   int i,res=0,k=OrdersTotal(); string sy=Symbol();
  
   for(i=0; i<k; i++)
     {
      log("k = " + k +"; ");
      log("i = " + i +"; ");
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy)) res++;  //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
         log("res = " + res +"; ");
        
        }
     }
   return(res);
  }

2.logとは対数のこと?

備考

MathLog()代わりに log() を使用することができます。

MathLog - Математические функции - Справочник MQL4
MathLog - Математические функции - Справочник MQL4
  • docs.mql4.com
MathLog - Математические функции - Справочник MQL4
 
Roman Sharanov:

また、CopyClose()の呼び出しが 多すぎるという重大な欠点も発見しました。

通貨ペアの配列からループで気配値をコピーする方法を教えてください。

それはダブル配列の ように見えますが、MQLはそれをサポートしていません、%のように。

ダブルアレイとはどういう意味ですか?

 
Alexey Viktorov:

ダブル配列」とはどういう意味ですか?

まあ、二次元ですね。

 
Roman Sharanov:

まあ二次元。

CopyCloseが 2次元配列にデータをコピーすることはどこに書いてあるのですか?そもそも、なぜ2Dアレイの話が出たのでしょうか?

 
Alexey Viktorov:

CopyCloseが2次元配列にデータをコピーすることはどこに書いてあるのですか?なぜ2次元配列と言われたのですか?

引用符を配列で格納する必要があるため

ループ内で一旦コピーして、ArrayCopyで 計算を行うため、CloseCopyではなく