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

 
Nikolai Semko:
маленький хинт - можно закрыть все графики кроме нужного, тогда потребление будет примерно на уровне того, как если бы ваш костыль реализовали.
 
Andrei Trukhanovich:
маленький хинт - можно закрыть все графики кроме нужного, тогда потребление будет примерно на уровне того, как если бы ваш костыль реализовали.

старперская логика

На VPS у меня так и есть, но рабочем компе уж извините. Не хочу быть ничем ограничен.
 
Igor Makanu:

если теперь разговор о потреблении памяти, то помнится пару месяцев назад @fxsaber бился с такой же проблемой, но при загрузке тиков - после освобождения массивов с тиками, терминал не освобождает память, а хранит (секунд 10? ) эти тики в качестве кэша

высока вероятность, что и Ваша просьба будет иметь аналогичную проблему - потребление памяти не уменьшится, а наоборот увеличится ( в пике )

не понимаю почему.
Я знаю как пользоваться функцией ArrayFree.
Тем более я буду изпользовать функцию, о которой прошу, только лишь раз. Но при этом мне не нужно влючать Unlimited.
Вся история по одному инструменту умещается где-то в 80-100 Мб (и в ОЗУ и на диске). Сейчас на диске это где-то 500 Мб.  
Включил терминал - загрузил массив структур с файла в память и работаешь спокойно. Никаких пиков нет.
Я бы использовал штатную структуру данных. Хрен с тем, что места много есть. Но мне нужно время для High и Low.
Тики я и так использую на полную катушку в формировании моей структуры данных, но они не имеют всей глубины истории и имеют, как правило рассогласования с минутными барами. То тики есть, баров нет, то бары есть - тиков нет.


 
Nikolai Semko:

ну для того чтобы выстрелить себе в ногу - существует и так бесчисленное множество вариантов. 
Как раз, если установить max_bars = Unlimited, то потребление памяти резко возрастает. 
Вот пример теминал с  max_bars = 5000

а теперь меняем  max_bars = Unlimited и перегружаем терминал.

При тех же открытых окнах потребление памяти увеличилось на более чем Гб. В моем случае в 11 раз !!!!
Нормальный такой некостыль ))
Можете проверить сами. 
max_bars = Unlimited - это очень жесткая роскошь.

Если бы моя просьба была бы удовлетворена, то можно ни когда не использовать max_bars = Unlimited.
И кроме экономии памяти в ОЗУ, также очень сильно бы уменьшилась эта папка, которая у меня сейчас около 31 Гб. Думаю где-то в раз 5. И было бы 6Гб вместо 30Гб

Так ты предлагаешь всем сделать невыключаемый Unlimited!

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

Почему графики должны показывать тысячу баров, если индикатору доступно миллион?


Другой вопрос — открыть доступ к формату hcc и к папке с историческими файлами. Но там тоже не все просто — кэши, экономный сброс, проверка на корректность, что-то еще..

 

2940

был код индикатора: всё замечательно работало и на чарте и в тестере.

создал новую версию индикатора с внесёнными изменениями: на чарте работает нормально а в тестере нет (совершенно ничего не рисует, хотя в окне данных буферы отображаются и они пустые).

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

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

 
Nikolai Semko:

Я бы использовал штатную структуру данных. Хрен с тем, что места много есть. Но мне нужно время для High и Low.
Тики я и так использую на полную катушку в формировании моей структуры данных, но они не имеют всей глубины истории и имеют, как правило рассогласования с минутными барами. То тики есть, баров нет, то бары есть - тиков нет.

Были бы тики за 20 лет, использовал бы их? Можно я не буду интересоваться — зачем? )

Ну ок, можно настраивать супер-умную само-адаптирующуюся стратегию, и из интереса прогнать ее разок на 20-тилетней тиковой истории. Из интереса. Разок.

Но не для работы, не в виде штатной возможности.


А если рассинхрон, почему веришь барам? Это вообще нонсенс.

 
Andrey Khatimlianskii:

Так ты предлагаешь всем сделать невыключаемый Unlimited!

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

Почему графики должны показывать тысячу баров, если индикатору доступно миллион?


Другой вопрос — открыть доступ к формату hcc и к папке с историческими файлами. Но там тоже не все просто — кэши, экономный сброс, проверка на корректность, что-то еще..

не надо открывать доступ к формату hcc и к папке с историческими файлами. Во-первых на это MQ никогда не пойдет, во-вторых в этом нет необходимости. Просто получить массив M1 с этих файлов будет достаточно. 

В том то и дело, что я хочу получить возможность никогда не включать Unlimited. Т.к. такое включение начинает качать данные по всем инструментам. Но мне не нужно по всем, а только по одному в данный момент времени. Зачем мне перегружать систему закачками дополнительных ненужных сотен Мб исторических данных, причем безконтрольный. 

 
Andrey Khatimlianskii:

Были бы тики за 20 лет, использовал бы их? Можно я не буду интересоваться — зачем? )

Ну ок, можно настраивать супер-умную само-адаптирующуюся стратегию, и из интереса прогнать ее разок на 20-тилетней тиковой истории. Из интереса. Разок.

Но не для работы, не в виде штатной возможности.


А если рассинхрон, почему веришь барам? Это вообще нонсенс.

Здесь не в стратегии дело, а в правильной визуализации динамичного ТФ, который будет гораздо более наглядный и удобный, чем существующая архаичная таймфреймовая система. 
Также для возможности внутреннего теста "на лету". 
Хотя на некотурую точность в стратегиях это тоже может повлиять в положительном смысле. 

ну вот хотя бы маленький пример: 
Как строить обычный ZigZag, когда не известно, какое событие наступило первее, High или Low?




или


 
если ты это пытаешься выяснить для дневных баров, то нет гарантий, что при max_bars = 50000, ты сможешь загрузить более младшие таймфреймы для данного времени бара, и тиков тоже. 

 
Ошибка при выполнении:
void OnStart()
{
    uchar array[];
    const string text = "All Files\0*.*\0\0";
    const int start = 0, count = StringLen( text );
    Print( StringToCharArray( text, array, start, count ), ":", count );
}

Результат:  10:15

Ожидалось 15:15

Хотел использовать результат в WinAPI функции GetSaveFileNameA, а не могу из-за бага


 
A100:

Так уже давно. mql строки очень не любят нуль символы внутри строки и в литералах, в функциях тоже.

Единственный нормальный способ - переводить в массив три строки с завершающим нулем.

Т.е. такое поведение как сейчас было сделано намеренно несколько лет назад. Причин не знаю.
Причина обращения: