文章 "如何在 MetaTrader 5 中利用 DirectX 创建 3D 图形" - 页 4

 
Mahrukh Aleem:

如果您想推广游戏、图形应用程序或单屏应用程序,我有一个建议。


使用 mt4/mt5 应用程序进行转换,例如

-singleappmode windowed templatename.tpl theea.ex4/ex5

-singleappmode fullscreen templatename.tpl theea.ex4/ex5


当有人使用开关运行应用程序时,metatrader 将只打开一个图表,应用模板 并附加 EA。所有其他内容都将隐藏,只有在 EA 允许使用属性或函数时才会显示。

如显示控件、显示菜单等。也可以是显示默认值。

通过这种方式,MetaTrader 可以成为严肃的图形应用程序或单一 EA 用户应用程序。


我知道这可能很难实现,或者需要一些公司层面的决策,但这只是我对改进 Meta Trader 的建议。

3d 是很好的功能,但我更希望优先解决所有基本问题,相信我,有很多问题。

在交易平台上开发游戏,真的吗?

 
Alain Verleyen:

3d 是很好的功能,但我更希望优先修复所有基本问题,相信我,有很多问题。

在交易平台上开发游戏,真的吗?

它既可以是一个游戏,也可以是一个风格迥异的交易机器人,带有完全定制的用户界面。

 
很好
 
哇,我不知道 mql5 还能这样做。我曾为其他目的在 3d 中建模,但我不知道在这里也可以这样做。
 

12 个小时的掌握和结果:



3D 效果很好,但不容易掌握。

 

同样的问题--我们为什么需要在交易终端中使用 3D 图形?
还是说这些 "开发人员的通行证 "只是为了取笑我们?:)

谁看到过 3D 图形的 TOLK?

 

Sir:

the code in this article cnn not run !  Please check and help me . 

for Canva.mql code:  I add some Print(...) code for trace error, see bellow:

line 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)
  {
//--- create canvas
       Print("At CCanvas Create BitmapLabel 1  ",width,"  ",name,"   ",height,"  ",clrfmt);   //I add
       bool xx= Create(name,width,height,clrfmt);     
       Print("CCanvas Create return  ",xx,"   ",GetLastError());   //I add
 //  if(Create(name,width,height,clrfmt))    // I change
   if (xx)
     {
       Print("CCanvas Create  2  ",chart_id,"  ",name,"   ",subwin);
..................

for Canva.mql code:     

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

line 250:

bool CCanvas::Create(const string name,const int width,const int height,ENUM_COLOR_FORMAT clrfmt)
  {
   Destroy();
//--- prepare data array
   if(width>0 && height>0 && ArrayResize(m_pixels,width*height)>0)
     {
      //--- generate resource name
      m_rcname="::"+name+(string)ChartID()+(string)(GetTickCount()+MathRand());
      
      //--- initialize data with zeros
      ArrayInitialize(m_pixels,0);
      //--- create dynamic resource
       Print("Before CCanvas ResourceCreate 0  ",m_rcname);         //I add
      if(ResourceCreate(m_rcname,m_pixels,width,height,0,0,0,clrfmt))
        {

         //--- successfully created
         //--- complete initialization
         m_width =width;
         m_height=height;
         m_format=clrfmt;
         //--- succeed
       Print("then CCanvas ResourceCreate OK  ",m_rcname);     //I add
         return(true);
        }
     }
.............................


For sample 3D-surface.mq5

line 40:

   //| Create                                                           |
   //+------------------------------------------------------------------+
   virtual bool      Create(const int width,const int height)
     {
      //--- save canvas dimensions
      m_width=width;
      m_height=height;
      //--- reset input data
      m_mouse_x=m_mouse_y=-1;
      //--- set default parameters for the camera
      m_camera_distance=10.0f;
      m_camera_angles.x=DX_PI_DIV6;
      m_camera_angles.y=DX_PI_DIV3;
      //--- create a canvas to render a 3D scene
      ResetLastError();
      if(!m_canvas.CreateBitmapLabel("3D Surface",0,0,m_width,m_height,COLOR_FORMAT_ARGB_NORMALIZE))
       { 
         Print("CreateBitmapLabel fail 3D surface ?");   // I add this line
         Print("Error creating canvas: ",GetLastError());
         return(false);
         }
..........................


Run 3D-Surface.mq5, received: 

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

    
CCanvas Create return  false   5151

Why? what's wrong?

What is 5151 ??

 

my display adapter is Nivada FX 1700--- an old product.  only support feture-level 10.0


So use DXcpl.exe to set Force WRAP for MT , then all run OK.

 

为了展示这门语言的能力,还不错。

但它在交易中几乎没有用处,我曾想过在哪里可以用它进行交易,但什么也没想起来。

为了演示,最好是编写一个 Expert Advisor 模板,其中包含对正确打开姿势、设置订单、修改、删除、关闭等的所有检查,以便进一步发送验证,且不会出错。

我的观点是,我在 mt5 上编写了一个 Expert Advisor,它在终端交易时没有错误和问题。

我把它送去验证,发现有很多错误,每个操作我都写了大约 5 次检查,用的是我自己写的,也有来自《Mt5》的检查。

交易机器人在市场上发布前应通过哪些检查?

我折磨了自己一个月, 还是有很多错误。

我不得不吐槽,换到 mt5 不是没有原因的,我在 mt4 上就没有这样的问题。

模板肯定会有用的。

或者给我一个可用模板的链接,我没有找到好的模板。

祝大家好运!

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

给我一个可用模板的链接,我找不到好的模板。

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