Ошибки, баги, вопросы - страница 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-Server по какой-то причине все маркет-ордера исполняются дольше секунды
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

При этом отложенные - близко к пингу. В чем может быть причина такого перекоса на демо?

 

При обновлении продукта в маркете заполнила англ/руc странички с описанием того что изменилось и опубликовала новую версию, но в разделе моего продукта "что нового" ничего из моего описания не появилось.

Даже нет возможности редактировать это описание,так как на против последней версии вообще нет документа.

где описание изменений ?

 
Tetyana Shcherba:

При обновлении продукта в маркете заполнила англ/руc странички с описанием того что изменилось и опубликовала новую версию, но в разделе моего продукта "что нового" ничего из моего описания не появилось.

Даже нет возможности редактировать это описание,так как на против последней версии вообще нет документа.


тоже самое. я думал это у меня глюкнуло 

 

После выбора пункта меню "Запустить одиночное тестирование"

нет ничего, что говорило бы о том, что идет и сделан соответствующий одиночный прогон. Хорошо бы переключиться на вкладку "График" в случае удачного запуска одиночного прогона, или же на вкладку "Журнал" - при обломе.


Может показаться, что мелкая косметическая придирка. 

 
Nikolai Semko:

Когда мне нужно заполнить часть большого массива одним значением Z я использую конструкцию:


Многие скажут - зачем так сложно, можно ведь проще:

Но по непонятной причине первый вариант с использованием промежуточного массива выполняется заметнее быстрее чем второй

Пару лет назад я уже писал по этому вопросу в СД. На что получил ответ, что мол спасибо, проблему нашли и исправили, в следующем билде будет нормально.

Но проблема остается.

Причем тот же самый тест в 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, будет отдавать физическую память по мере необходимости, при первом обращении к странице виртуальной памяти.
Страница имеет размер 4КБ, т.е. для "разогрева" можно было не все элементы обнулить через ArrayFill (как я написал), а только каждый 4096 / sizeof(array element type), начиная с нулевого.


Т.к. в MQL4 гарантируется обнуление переменных, то ArrayResize в MT4, пробегается по массиву, обнуляя его, поэтому там, эффекта "холодной" памяти нет.

 
Ilyas:

Тонкость, однако. Спасибо! В Документации, наверное, давно назрел спойлер "Тонкости".

Причина обращения: