記事"MQL5で3Dモデリング"についてのディスカッション

 

新しい記事 MQL5で3Dモデリング はパブリッシュされました:

時系列は、動的なシステムであり、確率変数の値が継続的または連続に等間隔で受信されます。市場分析の2Dから3Dへの移行は、複雑なプロセスと研究オブジェクトにおいて、新たな展望を与えます。この記事では、2次元データの3D表現をする可視化手法について説明します。3Dモデリングは、複雑なプロセスや現象を分析し、その結果を予測できます。

Z軸は現在のバーにリンクされ、「チャート」の座標システムの「価格」のスケールに対応する軸のスケールです。Z軸の別のスケールを作成する必要がないので非常に便利です。代わりに、「価格」のスケールを使用できますZ = 価格

X軸は左から右、すなわち「チャート」の座標システムの「時間」のスケールの反対側に送られます。この記事に沿ってBar変数の値が表示されます。X軸上の任意のバーの投影は、その値に等しくなります。 (X = Bar)。

Y軸は、一連の 2 次元の XZ データに使用されます。たとえば、オープンクローズ時間シリーズのこの軸線をプロットすることができ、それぞれの行を別の平面上で検索します。YZ平面に平行の行のすべてのポイントを接続することにより、3次元の時間シリーズ オブジェクト (図5参照) すなわちグリッドが表示されます。 

図53次元の座標システムによる3Dオブジェクト。

図53次元の座標システムによる3Dオブジェクト。

作者: Sergey Pavlov

 

簡単な仕事ではないが、当初はトレンド・ライン・オブジェクトを 使ったアプローチが間違っていたようだ。

なぜカスタムリソースのビットマップオブジェクトを使わないのでしょうか?おそらく、mat.libはこの方法で3Dに実装されるだろう。

 
fxsaber:

簡単な仕事ではないが、当初はトレンド・ライン・オブジェクトを 使ったアプローチが間違っていたようだ。

なぜカスタムリソースのビットマップオブジェクトを使わないのでしょうか?おそらく、mat.libはこの方法で3Dに実装されるだろう。

そして、インタラクティブ性(3Dオブジェクトのコントロール)をどのように実現するか?タイムフレームの変更、チャートのスケール、ウィンドウの変更、新しいティック(バー)、その他多くの変更にどのように反応するのでしょうか?

この実装では、ターミナルとMQL5言語の機能がすべてを行い、何もプログラムする必要はありません。つまり、複雑な問題に対するシンプルなソリューションが提供されているのです。

 
Sergey Pavlov:

そして、インタラクティブ性(3Dオブジェクトコントロール)をどのように実現するか?タイムフレームの変更、チャートのスケール、ウィンドウの変更、新しいティック(バー)、その他多くの変更にどのように反応するのでしょうか?

この実装では、ターミナルとMQL5言語機能がすべてを行い、何もプログラムする必要はありません。つまり、複雑な問題に対するシンプルなソリューションが提供されているのです。

カンヴァスを通して。この原理を使ったティックインジケーターをKodobazaに投稿しました。そこではインタラクティブ性が非常に強い。

ちょっとしたインタラクティブ性とmat.biblaは今、それを行う方法を知っている。

取引、自動取引システム、取引戦略のテストに関するフォーラム。

"MQL5における統計分布 - Rの長所を生かしてより高速に "の記事についての議論

fxsaber, 2016.11.14 10:11 AM

CGraphicとCCurveを確定してください。これらは弱いクラスです。必要なのはprivateなので、継承するのはほとんど非現実的です。私も時間がかかりましたが、正常な動作に修正するために、自分でクラスを書き直しました。

インタラクティブなティック・チャートを作りたかったのだが、(クラスを書き換えることなく)粗雑にしかできなかった。

#include <Graphics/Graphic.mqh>

void GetPrices( double &Bids[], double &Asks[], const int Count = 100 )
{
  MqlTick Ticks[];
  
  const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, Count);
  
  ArrayResize(Bids, Amount);
  ArrayResize(Asks, Amount);
  
  for (int i = 0; i < Amount; i++)
  {
    Bids[i] = Ticks[i].bid;
    Asks[i] = Ticks[i].ask;
  }
}

CGraphic* Graphic = new CGraphic;
const string Name = "Graphic" +(string)(GetTickCount() + MathRand());

void OnDeinit( const int Reason )
{
  Graphic.Destroy();
  delete Graphic;
  
  ChartRedraw();
}

void GraphTicks( const double &Price1[], const double &Price2[] )
{
   Graphic.Destroy();
   delete Graphic;

   Graphic = new CGraphic;  
   Graphic.Create(0, Name, 0, 0, 0, (int)(ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) * 0.8), (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS));

   Graphic.AddCurve(Price1, CURVE_LINES);
   Graphic.AddCurve(Price2, CURVE_LINES);
  
   Graphic.PlotAllCurves();
   Graphic.Update();
}

void OnTick()
{
  double Bids[], Asks[];
  GetPrices(Bids, Asks);
  
  GraphTicks(Bids, Asks);
}

DeleteCurve、ChangeCurveなどがない。


 
Sergey Pavlov:

そして、インタラクティブ性(3Dオブジェクトコントロール)をどのように実現するか?タイムフレームの変更、チャートのスケール、ウィンドウの変更、新しいティック(バー)、その他多くの変更にどのように反応するのでしょうか?

この実装では、ターミナルとMQL5言語機能がすべてを行い、何もプログラムする必要はありません。つまり、複雑な問題に対するシンプルなソリューションが提供されているのです。

記事のトピックは、ある種のインタラクティブなコントロールですか?記事のテーマは3Dモデリングです。空間座標を与えるとスクリーン座標が出力される魔法のような機能はどこにあるのだろうか?

記事の中でトピックが開示されていないだけでなく、著者はこのトピックの本質が何なのかわかっていないようにさえ思える。

 
fxsaber:

簡単な仕事ではないが、当初はトレンド・ライン・オブジェクトを 使ったアプローチが間違っていたようだ。

なぜカスタムリソースのビットマップオブジェクトを使わないのでしょうか?おそらく、mat.libはこの方法で3Dに実装されるだろう。

そして両方がそうであるべきではなく、これらは表示オプションである。最初はすべて配列にするべきだ。
 
Dmitry Fedoseev:
その両方であってはならない。最初はすべてが配列であるべきだ。
つまり、3D配列は生のデータなんだ。私たちはビジュアライゼーションの話をしているのだと思います。
 
fxsaber:
つまり、3Dアレイは生データなんだ。私たちはビジュアライゼーションの話をしているんだと思う。
もしそうなら視覚化なんてまったく必要ない。
 
Dmitry Fedoseev:
もし...まったく視覚化されていない。
まったく理解できない。
 
私はあなたの作品が好きです。でも、やはり3Dモデリングはキャンバスの上で行うべきだと思う。この方向で技術を発展させてみてください。頑張ってください。
 
Dmitry Fedoseev:

記事のトピックは、何らかのインタラクティブなコントロールですか?記事のトピックは3Dモデリングです。空間座標を与えるとスクリーン座標が出力される魔法のような機能はどこにあるのだろうか?

この記事では、トピックが開示されていないだけでなく、著者はこのトピックの本質にまったく気づいていないようにさえ思える。

視点を変える機能のない3Dは、2Dのドローイングである。したがって、3次元のオブジェクトを モデリングする上で最も重要なのは、インタラクティブ性である。静止画に何の意味があるのか?

魔法の機能があり、その使用例が示されている。