Ошибки, баги, вопросы - страница 3508

 

Есть код

//+------------------------------------------------------------------+
//|                                                 Tree_K-Means.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property link      "https://www.mql5.com/ru/users/-aleks-"
#property version   "1.00"
#property script_show_inputs
#property strict
#include <Math\Alglib\alglib.mqh>

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   CMatrixDouble MatrixTest;
   MatrixTest.Resize(10, 10);
   MatrixTest[0].Set(0,15.0);
   double Get_M=MatrixTest[0][0];
   Print("Get_M=",DoubleToString(Get_M,2));
}

Почему получаю ноль для Get_M, а не 15?

2024.03.12 03:42:52.001 Tree_K-Means_Test (USDJPY,H1)   Get_M=0.00
 
Andrey Khatimlianskii #:

В пятерке проще всего открыть чарт с месячным таймфреймом, и он все сам закачает. 

Всё-таки как не разумно реализовано хранение загруженных котировок в МТ5!
Если я открыл чарт с месячными барами( от силы несколько сотен бар), то у меня на SSD будут сформированы hcc файлы размером примерно пол гигабайта, которые по сути представляют Всю историю М1, но при этом у меня нет доступа к этим минутным барам программно, если у меня (у юзера) не установлено unlimited баров.
Более того, если я даже установлю unlimited, то сформируются на диске ещё пол гигабайта только для М1, по сути дублируя hcc файлы. 
Наверное сама закачка осуществляется через упакованный формат( не уверен, надо проверить), но судя по размеру hcc файлов и размера структуры MqlRates (60 байт на один бар) hcc файлы не упакованы.Хотя их легко можно упаковать в раз 5-7. Т.е. вместо 500 Mb, на диске будет храниться  только 70-100 Mb на один символ. Современные SSD прочитают 500 Mb примерно за 100-200 миллисекунд. Уверен, что этого времени хватит, чтобы прочитать 100Мб и распаковать их в ОЗУ в массив MqlRates  размером ~500 Mb. Тогда просто можно сэкономить многие гигабайты места на SSD у каждого юзера МТ5 без потери производительности. Если используется HDD,  тогда тем более, т.к. на них время чтения больше.
Как можно так неуважительно относиться к чужому дисковому пространству!
 
Aleksey Vyazmikin #:

Есть код

Почему получаю ноль для Get_M, а не 15?

О как бывает - за ночь поправили синтаксис теперь присваивать значение надо так

MatrixLearn.Set(row,col,Input_arr_Data[N_Stolb*row+col]);

Старый вариант уже не компилируется - так и до шизофрении дойти можно...

 
Комментарии, не относящиеся к этой теме, были перенесены в "не регистрирует статус продавец".
 

Ошибка при компиляции есть в одном случае, а в другом - нет:

class A {};
#import "test.ex5"
    A *f1(); //нормально
#import
    A *f2(); //Error: 'f2' - class type expected

А какая принципиальная разница между ними ?

 

Ошибка при выполнении:

struct A {
    enum { a = 1 };
    int    a;
    A() :  a(  2) { Print( a ); }
} a;
void OnStart() {}

Крайне сомнительный результат:  2     а почему например не 1 ?

 
A100 #:

Ошибка при выполнении:

Крайне сомнительный результат:  2     а почему например не 1 ?

Ну должен же быть хоть какой-то приоритет в таких случаях. Иначе был бы бардак.

 
fxsaber #:

Ну должен же быть хоть какой-то приоритет в таких случаях. Иначе был бы бардак.

Приоритет не может быть хоть каким то: он либо есть (и описан в Документации) либо нет

 
A100 #:

Приоритет не может быть хоть каким то: он либо есть (и описан в Документации) либо нет

Так есть, если не случайный результат.

 
fxsaber #:

Не первый месяц сталкиваюсь, что темы в Избранном помечаются обновленными. Захожу, а там последнее - мое сообщение. Причем оно может быть написано несколько часов назад. И там точно никакой спам модератор не чистил.

Наблюдаете такое у себя?

Снова.