错误、漏洞、问题 - 页 2279

 
Vladislav Andruschenko:

我刚想回答,但你回答了自己的问题。

谢谢你的确认)

 

下午好。

你能让这些函数调用 在策略测试中发挥作用吗,谢谢?谢谢!

bool scaleFix=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ChartSetInteger(ChartID(),CHART_SCALEFIX,true);
   scaleFix=ChartGetInteger(ChartID(),CHART_SCALEFIX);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   if(rates_total!=prev_calculated)  
     {
      double max=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,Period)); 
      double min=iLow (_Symbol,_Period, iLowest(_Symbol,_Period,MODE_LOW, Period));
      if(scaleFix && ChartSetDouble(ChartID(),CHART_FIXED_MAX,max))
         printf("Chart fixed max is %f, should be %f",ChartGetDouble(ChartID(),CHART_FIXED_MAX),max); 
      if(scaleFix && ChartSetDouble(ChartID(),CHART_FIXED_MIN,min))
         printf("Chart fixed min is %f, should be %f",ChartGetDouble(ChartID(),CHART_FIXED_MIN),min); 
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
2018.09.06 12:54:55.757 2018.09.04 12:00:00   Chart fixed max is 1.171770, should be 1.162740
2018.09.06 12:54:55.758 2018.09.04 12:00:00   Chart fixed min is 1.158410, should be 1.155760
2018.09.06 12:54:55.765 2018.09.04 13:00:00   Chart fixed max is 1.171770, should be 1.162670
2018.09.06 12:54:55.765 2018.09.04 13:00:00   Chart fixed min is 1.158410, should be 1.155590
2018.09.06 12:54:55.772 2018.09.04 14:00:00   Chart fixed max is 1.171770, should be 1.162280
2018.09.06 12:54:55.772 2018.09.04 14:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.781 2018.09.04 15:00:00   Chart fixed max is 1.171770, should be 1.162070
2018.09.06 12:54:55.781 2018.09.04 15:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.789 2018.09.04 16:00:00   Chart fixed max is 1.171770, should be 1.162020
2018.09.06 12:54:55.789 2018.09.04 16:00:00   Chart fixed min is 1.158410, should be 1.154940
2018.09.06 12:54:55.799 2018.09.04 17:00:00   Chart fixed max is 1.171770, should be 1.161980
2018.09.06 12:54:55.800 2018.09.04 17:00:00   Chart fixed min is 1.158410, should be 1.153890

 
由于某些原因,InstaForex公司服务器 上的所有市场订单的执行时间都超过了一秒钟。
2018.09.06 14:08:22.754 Trades  '9424479': instant buy 0.01 CADCHF at 0.7360 (deviation: 1000)
2018.09.06 14:08:22.936 Trades  '9424479': accepted instant buy 0.01 CADCHF at 0.7360 (deviation: 1000)
2018.09.06 14:08:23.944 Trades  '9424479': deal #9539619 buy 0.01 CADCHF at 0.7360 done (based on order #10514041)
2018.09.06 14:08:23.944 Trades  '9424479': order #10514041 buy 0.01 / 0.01 CADCHF at 0.7360 done in 1195.200 ms
2018.09.06 14:08:23.944 Trades  '9424479': modify #10514041 buy 0.01 CADCHF sl: 0.0000, tp: 0.0000 -> sl: 0.0000, tp: 0.8350
2018.09.06 14:08:24.134 Trades  '9424479': accepted modify #10514041 buy 0.01 CADCHF sl: 0.0000, tp: 0.0000 -> sl: 0.0000, tp: 0.8350
2018.09.06 14:08:24.134 Trades  '9424479': modify #10514041 buy 0.01 CADCHF -> sl: 0.0000, tp: 0.8350 done in 184.895 ms
2018.09.06 14:08:24.134 Trades  '9424479': instant sell 0.01 CADCHF at 0.7350, close #10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000)
2018.09.06 14:08:24.314 Trades  '9424479': accepted instant sell 0.01 CADCHF at 0.7350, close #10514041 buy 0.01 CADCHF 0.7360 (deviation: 1000)
2018.09.06 14:08:25.323 Trades  '9424479': deal #9539620 sell 0.01 CADCHF at 0.7350 done (based on order #10514042)
2018.09.06 14:08:25.323 Trades  '9424479': order #10514042 sell 0.01 / 0.01 CADCHF at 0.7350 done in 1193.896 ms
2018.09.06 14:08:25.323 Trades  '9424479': buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.509 Trades  '9424479': accepted buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.510 Trades  '9424479': order #10514043 buy limit 0.01 / 0.01 CADCHF at market done in 181.861 ms
2018.09.06 14:08:25.510 Trades  '9424479': cancel order #10514043 buy limit 0.01 CADCHF at 0.6360
2018.09.06 14:08:25.691 Trades  '9424479': accepted cancel order #10514043 buy 0.00  at market
2018.09.06 14:08:25.691 Trades  '9424479': cancel #10514043 buy limit 0.01 CADCHF at market done in 181.474 ms
2018.09.06 14:08:25.692 Trades  '9424479': buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:25.878 Trades  '9424479': accepted buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:25.882 Trades  '9424479': order #10514044 buy stop 0.01 / 0.01 CADCHF at market done in 190.823 ms
2018.09.06 14:08:25.883 Trades  '9424479': cancel order #10514044 buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:26.062 Trades  '9424479': accepted cancel order #10514044 buy stop 0.01 CADCHF at 0.8360
2018.09.06 14:08:26.062 Trades  '9424479': cancel #10514044 buy stop 0.01 CADCHF at market done in 183.056 ms

同时,待定的也接近于平局。在演示中出现这种偏差的原因是什么?

 

当我在市场上更新产品时,我在英语/俄语页面上填写了对变化的描述,并发布了新版本,但我的描述中没有任何内容出现在产品的 "新内容 "部分。

我甚至不能编辑这个描述,因为根本就没有针对最新版本的文件。

变化的描述在哪里?

 
Tetyana Shcherba:

当我在市场上更新产品时,我在英语/俄语页面上填写了对变化的描述,并发布了新版本,但我的描述中没有任何内容出现在产品的 "新内容 "部分。

甚至没有可能编辑这个描述,因为没有针对最后版本的文件。


同样的事情,我以为是个小故障。

 

选择菜单项 "运行单一测试 "后

没有任何迹象表明正在进行和已经运行适当的单一测试。如果单次运行成功,最好切换到 "图表 "标签,如果运行失败,则切换到 "日志 "标签。


这可能看起来是一个小的外观问题。

 
Nikolai Semko:

当我需要用一个单一的Z值来填充一个大数组的一部分时,我使用一个结构。


许多人会说--为什么这么复杂,它可以更简单。

但由于某些未知的原因,使用中间数组的第一个变体比第二个变体表现得快得多

几年前,我已经就这个问题给SD写过信。我得到的答复是,我已经发现并解决了这个问题,在下一个版本中就可以了。

但问题依然存在。

我在MT4中也做了同样的测试。

你在Windows中遇到了一个特殊的内存操作

,在ArrayResize 添加后的右键

ArrayFill(arr,0,size,0);
这启动了物理内存的实际分配,因此在测试期间不会发生这种情况。


以下是我的电脑上的结果

2018.09.06 16:25:44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill = 94
2018.09.06 16:25:44.238 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayInitialize + ArrayCopy = 147
 
Ilyas:

你在Windows中遇到了一个内存的特殊性

在ArrayResize后立即添加

这启动了物理内存的实际分配,因此在测试期间不会发生这种情况。

那么,ME内置的剖析器 在ArrayResize上测量什么?

 
fxsaber:

那么,ME内置的剖析器 在ArrayResize上测量什么?

它测量ArrayResize函数的运行时间。

TestArrayFill测试代码是这样构建的:为数组分配 "冷 "内存,没有机会获得 "热 "内存。


说白了,ArrayResize分配的是虚拟内存(或进程内存),但不能保证虚拟内存会立即得到(或已经拥有)物理页。

Windows,将根据需要分配物理内存,在第一次访问虚拟内存页的时候。
页面大小为4KB,也就是说,为了 "预热",并不是所有的元素都可以通过ArrayFill(如我所写)归零,而只是从零开始每隔4096 / sizeof(array element type)归零。


由于在MQL4中保证了变量的归零,MT4中的ArrayResize通过数组运行归零,所以没有 "冷 "内存效应。

 
Ilyas:

然而,微妙的是。谢谢你!该文件可能早就该有一个 "微妙 "的破坏者了。