帆布与标签 - 页 12

 
Andrey Khatimlianskii:

如何以人性化的方式限制可视化器中的kanvas刷新率?

这样,在慢速情况下,图片是实时更新的,而在高速情况下,不会降低测试速度?

现在,画布(如果它在每一个tick 上更新)真的会拖慢整个可视化的速度(分析显示80-90%的渲染时间)。我扭曲了以秒为单位的可配置的暂停,但这是一个拐杖,限制了功能(即使在慢速下,图片也很少更新)。

绑定什么,才不会经常刷新?GetMicroseconds?

哪些功能可以跳过?

安德烈 我一年多前已经在这里 写过了。

它的效果相当好。
这里有一个现场视频(只有两个花瓶)。

我只需要补充一点,在测试器中,CHARTEVENT_CHART_CHANGE事件不起作用。

所以我在画布形成块中加入了以下内容(当使用iCanvas时)。

void BildParabolas() {
   if(Canvas.tester) ChartChanged();
   static uint lastCalc=0;
   uint cur=GetTickCount();
   if (cur-lastCalc<17) return;
...

这里是GIF上的指标OnCalculate中的部分代码。

static uint lastCalc=0; 
if (Canvas.tester) {
      uint cur=GetTickCount();
      if (cur-lastCalc>17) {
         lastCalc=cur;
         BildParabolas();
         menu.Draw();
      }
   }

 
Dmitry Fedoseev:
肉眼可见的是,Kanvas的速度明显慢了很多。


 
Taras Slobodyanik:

在MT5测试器中,定时器是有效的,你可以把它设置为60秒,它将在测试器时间每分钟更新一次)

关于我写的暂停的拐杖,它不起作用。

 
Nikolai Semko:

安德烈,我一年多前就在这里 写过这个问题。

它的效果相当好。
这里有一个现场视频(只有两个花瓶)。

看起来有点慢,至于最大速度。

谢谢,我将通过GetTickCount试试

 
Andrey Khatimlianskii:

对于最高速度来说,看起来有点慢。

谢谢,我将通过GetTickCount试试

不,这不是最大值。在最大限度的面前,它是非常敏感的。
这里是最大的。

 
Andrey Khatimlianskii:

对于最高速度来说,看起来有点慢。

谢谢,我将尝试使用GetTickCount!

另外,为了使图表本身不存在偏差,我们应该尝试用OBJ_BITMAP而不是OBJ_BITMAP_LABEL 进行实验。要与时间和价格而不是XY坐标绑定。
我仍然想试试,但我无法做到。在这种情况下,我们将不得不使画布大于窗口尺寸,并改变控制逻辑。如果垂直比例保持不变,该代码可能会有明显的速度优势,因为不必重绘整个画布,而只需重绘其中的一小部分。在任何情况下,当快速移动时,看到kanvas与主图之间的不平衡也不会令人讨厌。

 
Nikolai Semko:

不,这不是最大值。在最大限度的面前,它是非常敏感的。
这是最大值。

那是 "所有虱子 "吗?如果是这样,那就很酷。我去看看。


Nikolai Semko:

另外,为了不出现与图表本身有关的偏差,我们应该尝试用OBJ_BITMAP而不是OBJ_BITMAP_LABEL 进行实验。要与时间和价格而不是XY坐标绑定。
我仍然想试试,但我无法做到。在这种情况下,我们必须使画布大于窗口的大小,并改变控制逻辑。也许会有速度上的提升。总之,不平衡的画布和主图在运动速度快的时候不会伤到眼睛。

我有一个简单的面板。没有链接到图表。

 
Andrey Khatimlianskii:

我有一个普通的仪表盘。没有图表的链接。

啊,好吧,那就好。
我的Hypha上也有一个画布,它是占用资源最少的面板,因为我不用经常重绘,抓住新条的瞬间。

 
Andrey Khatimlianskii:

那是 "所有的抽搐 "吗?如果是这样,那就很酷。我去看看。

不,这是在3分钟内的一分钟OHLC。但我检查了所有的虱子。图片几乎是一样的。因为在这种情况下,kanvas的重绘并不与ticks挂钩,而只是与实际时间(不是测试者时间)挂钩。也就是说,速度越高,帧密度就越低。但对眼睛来说,这种差异是不明显的。

 
是啊...动画GIF无疑是一个强有力的论据。