初学者的问题 MQL5 MT5 MetaTrader 5 - 页 47

 
你能告诉我,远程代理上的可视化是否,我想,在类别上是不可能的?或者说有可能吗?
 
Dimka-novitsek:
请告诉我,在远程代理上实现可视化,我猜是不可能的?或者说有可能吗?

不可能,因为不需要,远程代理处于进程模式,它没有窗口(除了设置窗口)。

它只能通过任务管理器看到(但只有进程,没有它在做什么)。

 
下面是我直接读到的没有出来的印刷品...这真是太糟糕了。一般来说,如果经过足够长的时间,优化过程的灰线上连一个小点都没有,这意味着什么,根本没有积极的结果?那么打印和可视化也是必要的!但为什么它不去呢?坦克走了,战舰也开战了,内存也是4G,还有超级显卡,1375MHz之类的,测试起来完全不行!!!。至少是慢慢地...电脑直接进入击倒状态,屏幕一片空白。
 
Urain:
不可能,因为你不需要它,远程代理处于进程模式,它没有窗口(除了设置窗口外)。谢谢!知道了!的确如此!
 
Vladon:
对于时钟,我想使用一种非标准的字体,如果有可能直接存储在资源中,例如。
sergeev:
文本的意思是不要拖着一个单独的ttf文件,而是把它直接嵌入到ex5中作为一种资源。

你是说专门用于在图形位图/画布中绘图?

字体肯定不会被嵌入,但我们可能允许使用标准的Windows字体在画布上绘图。

 
Renat:

你是说专门用于在图形位图/画布中绘图?

不,为了有效地绘制标签。问题是让终端能够从资源中获取字体并独立设置。
 
TheXpert:
不,为了有效地绘制标签。问题是要让终端从资源中获取字体并自行安装。
不幸的是,没有。
 
Renat:

那么,专门用于在图形位图/画布中绘图?

我们肯定不会嵌入字体,但我们可以让你使用普通的Windows字体在画布上绘图。

我知道你将为Kanvas开辟一些GDI。这很好。

但我认为,有一个问题,在于图表绘制原则的意识形态层面上。

让我用两个例子来解释。

为了更积极地使用画布,你需要一个框架的变化。但在终端中,任何对象都要等到它从所有的时间框架中隐藏起来(OBJ_NO_PERIODS)才会被画出来。 这导致我无法准备对象的位置 尺寸,如果它还没有被画出来。

我对输出静态文本的尺寸 和输出bmp的尺寸 都提出了这个话题--答案是这样的--你用宽度=1来画,然后从对象本身询问尺寸,你就会知道得很准确。并在此添加一个最低限度的停顿,并 有必要调用ChartRedraw...你会同意这是个拐杖。

而且我们需要丰满的不仅仅是一个静态或bmp,而是几十个。如果有大量的活动,你必须注意渲染的停顿。

--------------------

至于无处不在的画布作为现有物体 的替代品--那是乌托邦//虽然在理想的世界里很好。

没有人在正常情况下会画一个10兆字节的位图,并且为了一条穿过2096×1080像素的图表的对角线而降低速度。


我完全支持kanvas的发展//我支持任何的发展。

但现有的对象涵盖了界面中95%的业务需求。 Kanvas是复杂业务结构的附录//由Kohonen地图很好地演示了。但他们并不想完全取代这些物品。

( -5%是开发者为避免引入坐标线而做出的努力。:)//但对话已经开始,希望我们能达成共识)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 

2012.10.20 14:21:46 测试员专家文件C:\Users\Micha\AppData\Roaming\MetaQuotes\Terminal\FF783873B20D7FA177754FFD85AFB6\MQL5\Experts\Final.ex5分配错误

2012.10.20 14:21:31 核心2授权(代理构建695)。

2012.10.20 14:21:16 核心2连接到127.0.0.1:3001

2012.10.20 14:11:10 核心1 OpenCL设备:NVIDIA公司GeForce 9600 GSO 1GB GPU,OpenCL 1.0(12单元,1375 MHz,2048MB,版本301.42)。

对不起,这说的是什么?我明白,这个错误。它缺少什么???

一般来说,测试几乎完全挂起。往往会关闭...但当天晚上,有非常热闹和美丽的游戏,坦克世界,跟踪者等。!


 
sergeev:

但在我看来,在绘制图表的原则中存在着一个意识形态层面的问题。

为了更积极地使用kanvas,你需要改变框架。而终端中的任何对象都不会被绘制,直到它从所有的时间框架中隐藏起来(OBJ_NO_PERIODS)。 这导致我无法准备对象的位置 和知道它的大小,如果它还没有被绘制。

你知道在我们的画布上有一个完美的提示,那就是反缓冲,并链接到屏幕上的一个物体?

我们可以完美地、快速地、没有人工痕迹地绘制框架。请看一下OpenCL测试 中基于帧序列生成的视频例子。

使用一个漂亮的战术。

  1. 在图表上创建一个位图标签图形对象

       string objname ="OpenCL_"+IntegerToString(ChartID());
       string resname ="::Mandelbrot_"+IntegerToString(ChartID());
    //--- creating the object for graphics display
       ObjectCreate(0,objname,OBJ_BITMAP_LABEL,0,0,0);
       ObjectSetInteger(0,objname,OBJPROP_XDISTANCE,4);
       ObjectSetInteger(0,objname,OBJPROP_YDISTANCE,26);
    

  2. 在内存中创建一个空的图形资源,并将其与先前创建的对象绑定。

    //--- create initial empty picture
       uint buf[];
    
       ArrayResize(buf,SIZE_X*SIZE_Y);
       ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
       ObjectSetString(0,objname,OBJPROP_BMPFILE,resname);
    
    这就是奇迹发生的地方。图形对象接受与图形资源的直接绑定。而这种绑定是智能的,有缓存,因为它是专门为快速分页和处理后备箱而创建的。

  3. 现在你可以很容易地在你的缓冲区里画画,而不必担心与屏幕上的对象绑定。

    //--- рисуем что хотим в buf
    ....
    
  4. 现在是时候在屏幕上显示这个更新的位图了

          //--- saving the frame in memory and drawing it
          ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
          ChartRedraw();
    
    为了做到这一点,我们 "重建 "资源(实际上没有重建,因为所有的尺寸都是一样的),把新的位图复制到它上面,这个资源的变化计数器被递增。

    请注意,图形对象objname本身并没有以任何方式被触及,因为它已经与资源相关联。

    然后我们通过ChartRedraw调用屏幕重绘,这需要绘制图形对象。它被绑定到我们的资源上,它使用位图更改计数器来控制。如果保存在图形对象中的位图的变化计数器与资源的计数器不一致,位图将被自动复制到图形对象中,并以保护的方式进行可视化。如果计数器是相同的,那么就显示图片,不做任何改动。

这里有一个安全(来自MQL5和终端渲染系统本身的同时访问)和快速处理渲染框架的简单方法。