記事"MetaTrader5でDirectXを使用して3Dグラフィックスを作成する方法"についてのディスカッション - ページ 4

 
Mahrukh Aleem:

ゲームやグラフィカルなアプリケーション、ワンスクリーンアプリケーションを宣伝したいのなら、提案がある。


以下のようなmt4/mt5アプリケーションに切り替えましょう。

-singleappmode windowed テンプレート名.tpl theea.ex4/ex5

-singleappmodeフルスクリーン templatename.tpl theea.ex4/ex5


switchでアプリケーションを実行すると、メタトレーダーはただ1つのチャートを開き、テンプレートを適用して EAをアタッチします。EAがプロパティや関数を使用できる場合のみ表示されます。

例えば、コントロールの表示、メニューバーの表示などです。あるいはshowdefaultsにすることもできます。

こうすることで、MetaTraderは本格的なグラフィカル・アプリケーションまたは単一のEAユーザー・アプリケーションになります。


メタトレーダーを改善するための私の提案です。

3dは素晴らしい機能ですが、私は基本的なものをすべて優先的に修正することを望みます。

取引プラットフォームの中でゲームを開発するなんて、本当に?

 
Alain Verleyen:

3Dはいい機能だが、基本的なことはすべて優先的に直してもらいたい。

取引プラットフォームの中でゲームを開発するなんて、本当に?

それはゲームかもしれないし、完全にカスタマイズされたGUIを持つ、非常にスタイルの良い取引ロボットかもしれない。

 
いいね
 
へえ、mql5でそんなことができるんだ。他の目的で3Dモデリングしたことはあるけど、ここでもできるとは知らなかった。
 

12時間かけてマスターした結果



3Dはうまく機能するが、使いこなすのは簡単ではない。

 


それとも、これらの「開発者からのパスハック」=我々をからかうためのものなのだろうか?:)

誰が3DグラフィックスのTOLKを見た?

 

サー

この記事のコードが実行されません!チェックして助けてください。

Canva.mqlのコードにPrint(...)を追加しました。 コードを追加しました。

328行目

bool CCanvas::CreateBitmapLabel(const long chart_id,const int subwin,const string name,
                                const int x,const int y,const int width,const int height,
                                ENUM_COLOR_FORMAT clrfmt)
  {
//--- キャンバスを作成する
       Print("At CCanvas Create BitmapLabel 1  ",width,"  ",name,"   ",height,"  ",clrfmt);   //を加える。
       bool xx= Create(name,width,height,clrfmt);     
       Print("CCanvas Create return  ",xx,"   ",GetLastError());   //を加える。
 // if(作成(名前,幅,高さ,clrfmt)) // 変更する
   if (xx)
     {
       Print("CCanvas Create  2  ",chart_id,"  ",name,"   ",subwin);
..................

forCanva.mqlコード:私はトレースエラーのためにいくつかのPrint(......)コードを追加し、以下を参照してください:行328。

xx= Create(name,width,height,clrfmt);    will call function bellow:

Canva.mqlのコード:250行目。

bool CCanvas::Create(const string name,const int width,const int height,ENUM_COLOR_FORMAT clrfmt)
  {
   Destroy();
//--- データ配列の準備
   if(width>0 && height>0 && ArrayResize(m_pixels,width*height)>0)
     {
      //--- リソース名の生成
      m_rcname="::"+name+(string)ChartID()+(string)(GetTickCount()+MathRand());
      
      //--- データをゼロで初期化する
      ArrayInitialize(m_pixels,0);
      //--- 動的リソースの作成
       Print("Before CCanvas ResourceCreate 0  ",m_rcname);         //を加える。
      if(ResourceCreate(m_rcname,m_pixels,width,height,0,0,0,clrfmt))
        {

         //--- 作成に成功
         //--- 初期化完了
         m_width =width;
         m_height=height;
         m_format=clrfmt;
         //--- 成功
       Print("then CCanvas ResourceCreate OK  ",m_rcname);     //を加える。
         return(true);
        }
     }
.............................


サンプル3D-surface.mq5について

40行目:3D-Surface.mq5を実行、受信。

   //| 作成nbsp; &nbspnbsp;   &nbsp
   //+------------------------------------------------------------------+
   virtual bool      Create(const int width,const int height)
     {
      //--- キャンバスの寸法を保存する
      m_width=width;
      m_height=height;
      //--- 入力データのリセット
      m_mouse_x=m_mouse_y=-1;
      //--- カメラのデフォルト・パラメータを設定する。
      m_camera_distance=10.0 f;
      m_camera_angles.x=DX_PI_DIV6;
      m_camera_angles.y=DX_PI_DIV3;
      //--- 3Dシーンをレンダリングするためのキャンバスを作成する。
      ResetLastError();
      if(!m_canvas.CreateBitmapLabel("3D Surface",0,0,m_width,m_height,COLOR_FORMAT_ARGB_NORMALIZE))
       { 
         Print("CreateBitmapLabel fail 3D surface ?");   // 以下の行を追加する
         Print("Error creating canvas: ",GetLastError());
         return(false);
         }
..........................


3D-Surface.mq5を実行してください。

2023.05.05 11:32:46.180 3 D_Surface (EURUSD,M1)  At CCanvas Create BitmapLabel 1  604  3 D Surface   392  2
2023.05.05 11:32:46.180 3 D_Surface (EURUSD,M1)  Before CCanvas ResourceCreate 0  ::3 D Surface1332772457869319469285704
2023.05.05 11:32:46.180 3 D_Surface (EURUSD,M1)  then CCanvas ResourceCreate OK  ::3 D Surface1332772457869319469285704
2023.05.05 11:32:46.185 3 D_Surface (EURUSD,M1)   CCanvas Create return  false   5151
2023.05.05 11:32:46.185 3 D_Surface (EURUSD,M1)  CreateBitmapLabel fail 3 D surface ?
2023.05.05 11:32:46.185 3 D_Surface (EURUSD,M1)  Error creating canvas: 5151
then CCanvas ResourceCreate OK 
BUR BUT But....

    
CCanvas Create return  false   5151

何が間違っているのか?

5151は何ですか?

 

私のディスプレイアダプターはNivada FX 1700---古い 製品 です。


そこで、DXcpl.exeを使ってMTにForce WRAPを設定すれば、すべてOKだ。

 

この言語の能力を示すには悪くない。

しかし、取引にはほとんど使えない。どこで取引に使えるかと考えたが、何も思い浮かばなかった。

デモのためには、ポーズのオープン、注文の設定、変更、削除、クローズなど、すべてのチェックが正しく行われるExpert Advisorのテンプレートを作成し、さらに送信してエラーなしで検証するほうがよい。

私が言いたいのは、私はmt5でExpert Advisorを書き、それはエラーや問題なくターミナルで取引するということです。

私はそれを検証のために送りましたが、エラーがたくさんあります。

取引ロボットはマーケットで公開する前にどのようなチェックを通過すべきでしょうか?

そしてそれは役に立たず、私は1ヶ月間自分自身を苦しめました、 それでも多くのエラーがありました。

mt5に乗り換えるのが大変なのは無駄なことではありません。

テンプレートは間違いなく役に立つでしょう。

あるいは動くテンプレートのリンクを教えてください。

幸運を祈ります!

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
 
Anatoliy Lukanin #:

いいテンプレートが見つからないんだ。

https://www.mql5.com/ru/forum/93352/page78#comment_48296338