Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Наверно не то. Многомерный же да в csv. А зачем? Если бы в бинарном режиме - без проблем, но это не csv.
Если в csv, сначала надо подумать, как вы хотите чтобы данные выглядели в csv? Как будет отделяться одно измерение, от другого? Величиной отступа наверно, то есть количеством пустых полей в строке. Но скорее всего не в этом вопрос.
Можно для разных размерностей массива использовать разные символы разделители. Потом при загрузке уже разделять данные согласно этим символам.
Я так делал, но не совсем для многомерного массива (вместо них я использую структуры или классы).
Вот пример
NeuroLayer[i] - слой нейросети в вашем случае это будет 1-е измерения массива
.Neuron[j] - нейрон или второе измерения массива
.Weight[k] - вес или третье измерение массив.
Используются символы разделители "|" и "N"
Загрузка реализована вот так:
Получается файл примерно вот такого вида:
можно сплошником! arr[i][0][3][12] получается 36 элементов надо записать
Можно сплошняком весь массив за одно действие, но в не csv, а в бинарный файл. Функции: FileWriteArray и FileReadArray
В чем задача? Просто сохранить данные в файл, а потом загрузить их в массив? Или же еще надо будет в этот файл смотреть глазами?
Можно для разных размерностей массива использовать разные символы разделители. Потом при загрузке уже разделять данные согласно этим символам.
Я так делал, но не совсем для многомерного массива (вместо них я использую структуры или классы).
Вот пример
NeuroLayer[i] - слой нейросети в вашем случае это будет 1-е измерения массива
.Neuron[j] - нейрон или второе измерения массива
.Weight[k] - вес или третье измерение массив.
Используются символы разделители "|" и "N"
Загрузка реализована вот так:
Получается файл примерно вот такого вида:
Вообще в природе существует JSON. Но тут непонятно, тут надо понять, как человек хочет видеть свои данные в csv (если это вообще надо).
Вообще в природе существует JSON. Но тут непонятно, тут надо понять, как человек хочет видеть свои данные в csv.
Это его дело, в любом случая, он должен сам это реализовать, а не ждать когда за него это напишут. Ссылку на документацию дали, примеры дали, пиши ни здоровье.
Вообще в природе существует JSON. Но тут непонятно, тут надо понять, как человек хочет видеть свои данные в csv.
В каждой строке 36 элементов, запись происходит при OnDeinit. Работа советника происходит следующим образом:
Первый запуск- снимаю значения различных переменных при открытии сделки. Переменные записываются в 2-х, 3-х и 4-х мерные массивы, в зависимости от типа переменных. Первое измерение это номер сделки, второе это переменная, третье это количество периодов по которым проиисходит снятие значений, четвёртое это количество баров в периоде с которых и снимаются расчётные переменные.
При втором запуске в OnInit мне надо считать из файла в такой же массив эти значения и уже произвести расчёты для статистического и математического анализа.
Для двумерного массива я использую вот такую функцию-
void WriteArray2(double &arr[][], string name="") // записывает двухмерный массив в *.csv файл
{
if(name=="") name=TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS);
int handle=FileOpen(name+".csv", FILE_CSV|FILE_WRITE),
size=ArraySize(arr)/12;
for(int i=0; i<size; i++)
FileWrite(handle,DoubleToStr(arr[i][0],4),DoubleToStr(arr[i][1],4),DoubleToStr(arr[i][2],4),DoubleToStr(arr[i][3],4),DoubleToStr(arr[i][4],4),
DoubleToStr(arr[i][5],4),DoubleToStr(arr[i][6],4),DoubleToStr(arr[i][7],4),DoubleToStr(arr[i][8],4),DoubleToStr(arr[i][9],4),DoubleToStr(arr[i][10],4),DoubleToStr(arr[i][11],4));
FileClose(handle);
}
Можно ли её переделать под четырёхмерный?
Это его дело, в любом случая, он должен сам это реализовать, а не ждать когда за него это напишут. Ссылку на документацию дали, примеры дали, пиши ни здоровье.
согласен)
В каждой строке 36 элементов, запись происходит при OnDeinit. Работа советника происходит следующим образом:
Первый запуск- снимаю значения различных переменных при открытии сделки. Переменные записываются в 2-х, 3-х и 4-х мерные массивы, в зависимости от типа переменных. Первое измерение это номер сделки, второе это переменная, третье это количество периодов по которым проиисходит снятие значений, четвёртое это количество баров в периоде с которых и снимаются расчётные переменные.
При втором запуске в OnInit мне надо считать из файла в такой же массив эти значения и уже произвести расчёты для статистического и математического анализа.
Для двумерного массива я использую вот такую функцию-
void WriteArray2(double &arr[][], string name="") // записывает двухмерный массив в *.csv файл
{
if(name=="") name=TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS);
int handle=FileOpen(name+".csv", FILE_CSV|FILE_WRITE),
size=ArraySize(arr)/12;
for(int i=0; i<size; i++)
FileWrite(handle,DoubleToStr(arr[i][0],4),DoubleToStr(arr[i][1],4),DoubleToStr(arr[i][2],4),DoubleToStr(arr[i][3],4),DoubleToStr(arr[i][4],4),
DoubleToStr(arr[i][5],4),DoubleToStr(arr[i][6],4),DoubleToStr(arr[i][7],4),DoubleToStr(arr[i][8],4),DoubleToStr(arr[i][9],4),DoubleToStr(arr[i][10],4),DoubleToStr(arr[i][11],4));
FileClose(handle);
}
Можно ли её переделать под четырёхмерный?
Может вам проще использовать структуру. И не надо огород городить с многомерностью (не люблю я многомерные массивы :) )
Получится одномерный массив в котором в одном измерении можно хранить разные данные.
Работаю в екселевских таблицах
А можете вручную записать 4х мерный массив в excell, хотя-бы такой arr[2][3][2][3]; и чтобы все поняли что это именно такой массив. Ну пусть не все, достаточно чтобы сам понял где какой элемент записан.
В каждой строке 36 элементов, запись происходит при OnDeinit. Работа советника происходит следующим образом:
Первый запуск- снимаю значения различных переменных при открытии сделки. Переменные записываются в 2-х, 3-х и 4-х мерные массивы, в зависимости от типа переменных. Первое измерение это номер сделки, второе это переменная, третье это количество периодов по которым проиисходит снятие значений, четвёртое это количество баров в периоде с которых и снимаются расчётные переменные.
При втором запуске в OnInit мне надо считать из файла в такой же массив эти значения и уже произвести расчёты для статистического и математического анализа.
Для двумерного массива я использую вот такую функцию-
void WriteArray2(double &arr[][], string name="") // записывает двухмерный массив в *.csv файл
{
if(name=="") name=TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS);
int handle=FileOpen(name+".csv", FILE_CSV|FILE_WRITE),
size=ArraySize(arr)/12;
for(int i=0; i<size; i++)
FileWrite(handle,DoubleToStr(arr[i][0],4),DoubleToStr(arr[i][1],4),DoubleToStr(arr[i][2],4),DoubleToStr(arr[i][3],4),DoubleToStr(arr[i][4],4),
DoubleToStr(arr[i][5],4),DoubleToStr(arr[i][6],4),DoubleToStr(arr[i][7],4),DoubleToStr(arr[i][8],4),DoubleToStr(arr[i][9],4),DoubleToStr(arr[i][10],4),DoubleToStr(arr[i][11],4));
FileClose(handle);
}
Можно ли её переделать под четырёхмерный?
А смотреть в файл глазами вы собираетесь? Может и не надо csv. Записать в бинарный, если смотреть в него не надо.