Новая версия платформы MetaTrader 5 build 3210: изменен алгоритм расчета Sharpe Ratio и добавлено управление минимальным/максимальным значением индикатора - страница 9

 
Denis Kirichenko #:

Ну как минимум не хватает количества десятичных знаков после запятой. Или я ошибаюсь, и это как-то можно указать для ::Print() ?


Если после запятой ничего не печатается, значит там нули до 16-го знака

 
Slava #:

Если после запятой ничего не печатается, значит там нули до 16-го знака

А если печатается?

Вот простой скрипт.

#include <Math\Stat\Math.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
   {
   int rows, cols;
   rows = cols = 10;
   double test_2d_array[][10];
   ::ArrayResize(test_2d_array, rows);
   matrix test_mx;
   test_mx.Init(rows, cols);
   for(int row = 0; row < rows; row++)
      for(int col = 0; col < cols; col++)
         {
         double curr_val =::MathRandomNonZero();
         test_2d_array[row][col] = test_mx[row][col] = curr_val;
         }
   uint digs = 2;
   ::ArrayPrint(test_2d_array, digs);
   ::Print("\ntest_mx = \n", test_mx);
   }

Для массива имеем такую запись:

2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)            [,0] [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [0,] 0.63 0.64 0.01 0.90 0.02 0.47 0.77 0.13 0.03 0.75
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [1,] 0.77 0.29 0.01 0.45 0.54 0.99 0.17 0.43 0.59 0.85
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [2,] 0.64 0.79 0.55 0.77 0.75 0.79 0.40 0.89 0.50 0.02
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [3,] 0.29 0.70 0.98 0.62 0.77 0.01 0.98 0.34 0.92 0.15
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [4,] 0.23 0.25 0.24 0.98 0.61 0.79 0.68 0.35 0.92 0.06
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [5,] 0.82 0.29 0.37 0.05 0.44 0.77 0.44 0.62 0.60 0.29
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [6,] 0.27 0.95 0.40 0.04 0.24 0.42 0.51 0.99 0.94 0.44
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [7,] 0.84 0.59 0.05 0.26 0.15 0.47 0.47 0.36 0.12 0.85
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [8,] 0.20 0.29 0.79 0.93 0.24 0.73 0.66 0.12 0.07 0.57
2022.02.15 11:51:54.243 test_mx_print (EURUSD,H1)       [9,] 0.51 0.30 0.97 0.69 0.17 1.00 0.71 0.38 0.39 0.59


А для матрицы такую:

2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)       test_mx = 
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)       [[0.6281319620349742,0.6415906247138889,0.0130008850367748,0.9012115848261971,0.01580858790856655,0.4745628223517563,0.7699819940794091,0.129947813348796,0.02774132511368145,0.7522202215643788]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.772057252723777,0.2926419873653371,0.01150547807245094,0.4499038666951506,0.5387127292703024,0.9933774834437086,0.1669667653431806,0.4313486129337443,0.5888546403393659,0.8458510086367382]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.6417432172612689,0.7874080629902036,0.5488448744163336,0.7743156224250007,0.7534409619434187,0.7942136906033509,0.4029969176305429,0.8867152928250984,0.4951322977385785,0.02191228980376599]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.293160802026429,0.7013763847773675,0.9803460798974578,0.6245918149357585,0.7732474745933409,0.008362071596423231,0.9836725974303415,0.3433637501144444,0.9248634296700949,0.1472518082216865]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.2333445234534745,0.2537003692739647,0.2409131138035218,0.9814142277291177,0.6121707815790277,0.7879268776512955,0.6829737235633412,0.3515427106540117,0.9226660969878231,0.06427198095645009]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.8182622760704367,0.2887356181524094,0.3729972228156377,0.05441450239570299,0.4435560167241432,0.7683339945677053,0.4400158696249275,0.6192815942869351,0.6014587847529527,0.2861720633564257]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.2653584398937956,0.945921201208533,0.3952452162236396,0.03869747001556444,0.2408520767845699,0.4158146916104618,0.5092013306070131,0.9872737815485092,0.9400616473891416,0.4359263893551439]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.8400219733268227,0.5887325663014619,0.0511490218817713,0.2641682180242317,0.1458174382763146,0.4734946745200964,0.4687948240607929,0.3599658192693869,0.119083223975341,0.8517410809656056]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.1995605334635456,0.2916959135715811,0.7896053956724753,0.9296243171483505,0.238898892178106,0.7318643757438886,0.663655507065035,0.1162755211035493,0.07443464461195715,0.5715811639759514]
2022.02.15 11:52:02.317 test_mx_print (EURUSD,H1)        [0.5060274056215095,0.303567613757744,0.9728385265663625,0.6851710562456129,0.1705984679708243,0.9986877040925322,0.7058931241798151,0.3768120365001373,0.3861507003997925,0.5919064912869656]]


И вопрос. Это нормально, что нельзя указать точность для вывода значений матрицы?

 
Denis Kirichenko #:

Это нормально, что нельзя указать точность для вывода значений матрицы?

Возможно, лучший вариант - это перегрузка (со стороны MQ) ArrayPrint для матриц.

 
fxsaber #:

Возможно, лучший вариант - это перегрузка (со стороны MQ) ArrayPrint для матриц.

А мне кажется, что раз есть такие отдельные сущности, как вектор и матрица, то напрашиваются методы vector.Print() и matrix.Print().

 
Denis Kirichenko #:

А мне кажется, что раз есть такие отдельные сущности, как вектор и матрица, то напрашиваются методы vector.Print() и matrix.Print().

Тогда уж matrix.ToString();

 
Slava #:

Какие проблемы с тестированием M1 на месячном таймфрейме?

Просто указывайте PERIOD_M1 в качестве параметра при копировании таймсерий и вызове индикаторов

elibrarius #:

Это опять костыли. В настройках тестера одно, в параметрах другое.

Нужно не только считывать котировки и обучать, но и тестировать результат. Проверка и торговля идет в OnTick().

На месячном ТФ, OnTick() будет вызываться 1 раз в месяц по ценам открытия, по OHLC еще 3 раза.

По реальным тикам только остается. А это действительно большой траффик. Проверил. Только что, тестер выкачал с вашего сервера тиковых данных на 200 мб по EURUSD. И расчеты в 4 раза медленнее идут. А есть и др. инструменты...

Для МО в основном достаточно по ценам открытия M1-H1 работать. По крайней мере для быстрой оценки. По реальным тикам тоже надо, но потом, перед запуском эксперта в работу.

---------

Такое ощущение, что эта доработка потребует от вас неделю работы... просто снять или увеличить лимит. Я то думал это в 1-2 строчках сделать небольшие изменения, 1 год поменять на 10-20. Лучше без лимитов, сколько запросил - столько и получил.

Ну так сделаете? Это очень помогло бы. Все минусы текущей ситуации описал.

 
fxsaber #:

Тогда уж matrix.ToString();

Это запланировано

 
Denis Kirichenko #:

А мне кажется, что раз есть такие отдельные сущности, как вектор и матрица, то напрашиваются методы vector.Print() и matrix.Print().

Очень интересная идея
 
Denis Kirichenko #:

А мне кажется, что раз есть такие отдельные сущности, как вектор и матрица, то напрашиваются методы vector.Print() и matrix.Print().

Массивы тоже идут по этому пути.

 
Slava #:
Очень интересная идея

Вроде, так логичнее.

Print(matrix.ToString());


Сейчас можно делать заглушку на Print через одноименный макрос. Если будет метод, такая возможность исчезнет.