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

 
メタトレーダーで複数のウォッチリスト(相場概観)を持つことは可能ですか?例えば、インデックス用、株式用など
 
Vladimir Makhnin #:
メタトレーダーで複数のウォッチリスト(相場概観)を持つことは可能ですか?例:あるものはインデックス、あるものは株式

自分で作る。MQL5では、これを簡単に実現できます。

 
Mihail Matkovskij #:

角度の計算式が重要なんです。コードを見ると、計算には1つの座標と、目的が不明な何らかの係数が使われているのみ。それは何ですか?どのようなデータで角度を計算しているのか、詳しく教えてください。

私が見る限りでは

double d

ベクトルです。しかし、それでも1つの座標にしか過ぎない。しかし、角度を計算するためには、2つの座標、または2つの座標からなるベクトルが必要です。

 

にしろ返信不可

 
Maxim Kuznetsov #:

にしろは削除されました。

このスレッドの投稿が削除されたものに含まれていないのは、何かおかしいですね。

 
Vladimir Karputov #:

このスレッドの投稿が削除されたものにないのは何かおかしいですね。

私も見ました。見つからなかった。

 

よし、複製してみよう...。に対して、https://www.mql5.com/ru/forum/160683/page1884#comment_27290699

CalcAngleTrendは何の関係もない。coefAngleのカウントが誤っている、またはさらに不正な計算が行われている箇所があります。

ps/と、おそらく「傾き」の概念が一般的に誤解されているのだと思います。度やラジアンでは表現できず(曲率型空間でないと)、atan関数は物理的に正しくない値を返す。

 
Mihail Matkovskij #:

角度の計算式が重要なんです。コードを見ると、計算には1つの座標と、目的が不明な何らかの係数が使われているのみ。それは何ですか?どのようなデータで角度を計算しているのか、詳しく教えてください。



変数coefAngleは2に等しいint型定数です。 関数に入力されるデータはすべて全く同じものであることを確認しました。
 
Maxim Kuznetsov #:

よし、複製してみよう...。に対して、https://www.mql5.com/ru/forum/160683/page1884#comment_27290699

CalcAngleTrendは何の関係もない。coefAngleのカウントが誤っている、またはさらに不正な計算が行われている箇所があります。

ps/と、おそらく「傾き」という概念が一般的に誤解されているのでしょう。度やラジアンでは表現できず(curvature-of-spaceタイプのオーバーシュートなし)、atan関数は物理的に正しくない値を返す。

係数は定数であり、それは変更されません
この関数を除いて計算はありません、関数は1単位の周期で、2xポイントのセグメントへの削減を話す大まかに、いくつかのポイント上のベクトルの値を平均化することによって、デルタ値を取得しました。


技術的には、乗算係数の単純な適用でできるのですが、それだけです。

とにかく、この機能が動作する理由が全くわかりません(

唯一考えられるのは、計算の過程で式自体の型変換に何か問題があることです。

 
Владимир Казаков Expert Advisorを作成 しようとしているのですが、テストすると奇妙なことが起こります。

私は、関数

どういう状況かというと、あるチャートでEAのインスタンスを1つ実行し、同じチャートで2つ目のインスタンスをデバッグモードでMT4
関数の入力データは同じなのに、出力データが違う!!? 何か理解できていないだけみたいです......(

どのように情報を掘ればいいのかアドバイスしてください!!!

追記:ちょうど2.5倍の出力の差を計算しました

表現をアクションに分解してみると...。...そして、なんと、結果はすべて同じ!?

double CalcAngleTrend(double d)
 {
Print("d: ", d, " coefAngle: ", (double) coefAngle);
  double
    a = (double) (d*pow(10,_Digits-2));
Print("(d*pow(10,_Digits-2)): ", a);
    double rad = (double) (180/M_PI);
Print("rad: ", rad);
    a = (double) (atan(a));
Print("(atan(a)): ", a);
    a = (double) (a*rad*(double) coefAngle);
Print("(a*rad*(double) coefAngle): ", a);
  return(NormalizeDouble(a, ANGLE_DIGITS));
 }

だから、型の削減と同じすべては、私が好きなように動作するものではありません

専門家や理解者の誰かが問題だったかを説明することができますか!
エラーは繰り返さないように))))。

追記: 同じ式をこのような形式にすると、同じように動作します。

  double a = (double) ((d*pow(10,_Digits-2))*(180/M_PI)*(double) coefAngle);

排除方法は、intの愚直なまでのダブル。

うまくいったかな?