Any rookie question, so as not to clutter up the forum. Professionals, don't pass by. Nowhere without you - 6. - page 1119

You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
You tell me...
Type
Size in bytes
Minimum positive value
Maximum value
Analog in C++
float
4
1.175494351e-38
3.402823466e+38
float
double
8
2.2250738585072014e-308
1.7976931348623158e+308
double
file size in bytes, the size occupied by type double in bytes, and it is obligatory to divide by zhzhezhezhezhezhezhezhezhezhez
What's a zzzzzz? It doesn't add up, can't you take it easy?
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
FileSeek(handle,0,SEEK_END);
Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива
int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме.
FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива
FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
The code of the line supplementing the bin file with a new bar
{
// ArrayResize(arrS,coun);
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA
coun++;
}
ResetLastError();
int handle=FileOpen(path,FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_SET);
FileWriteArray(handle,arrS);
Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
count=1;
}
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
FileSeek(handle,0,SEEK_END);
Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива
int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме.
FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива
FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
The code of the line that supplements the bin file with a new bar
{
// ArrayResize(arrS,coun);
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA
coun++;
}
ResetLastError();
int handle=FileOpen(path,FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_SET);
FileWriteArray(handle,arrS);
Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
count=1;
}
I don't remember where I read it, but if you open a file for writing only, everything in it gets deleted.
The file has to be opened for reading and writing
I can't remember where I read it, but if a file is only opened for writing, everything in it is deleted.
The file has to be opened for reading and writing
I thought that was it.
I write new data to the beginning, it writes to the full beginning, is there any way to increase the size of the beginning))
I mean is it limited to write to the beginning ? or continue saving to the end only ?
And if I save to the end, and continue to add to the end, how do I read from the end to the right amount ? Or rather, how to capture from bin file the right chunk fromN to the end
Or did I do it with the wrong commands!?!?
I save two arrays to the end - it is written as I understand by increasing the weight of the bin correctly.
Then I try to transfer data to the array with the task to capture the last record, file bins are bigger than the array.
int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
//--- прочитаем все данные из файла в массив
//file_siz=FileSize(file_handle)/8000;
//FileSeek(file_handle,file_size,SEEK_END);
FileReadArray(file_handle,arr);
//--- получим размер массива
int siz=ArraySize(arr);
//--- распечатаем данные из массива
Print("arr = ",arr[1][3]," Bid = ",arr[1][2]," Ask = ",arr[0][3]);
Print("file_siza = ",file_siz);
//--- закрываем файл
FileClose(file_handle);
If I read the required section from the binary file with
The algorithm processes the array itself, the missing cells are translated similarly to the position in the bin, which in turn gives the requested range in the limit of the same position as in the bin, only with zeros.
If I read the required section from the binary file with
The algorithm processes the array itself, missing cells are translated similarly to binary position, which in turn gives the requested range in the limit of the same position as in the binary, only with zeros.
I don't understand what can go wrong...
You just open the file for reading.
shift the pointer to the right number of bytes in the right direction
// В данном случае от конца файла на 32 байта
32 bytes is 8 integer values or 4 floating point values.
If the array is two-dimensional, this means that we shift by 4 lines if the array is of int type, or by 2 lines if the array is of double type
Then, we read the values into the array declared beforehand as a dynamic arr[][2]; this is a two-dimensional array.
THAT'S IT!!!
Next, determine the size of the array
and then print the values.
int i, z;
for(i = 0; i < size; i++)
{for(z = 0; z < 2; z++)
{
Print("arr[", i, "][", z, "]", arr[i][z]);
}
}
I don't understand what can go wrong...
Thank you, you! It worked)))
I have an EA, I want it to be able to choose which days to trade on, and which not.
Mon - false
Tues - true
Cp- ...
Please advise how to implement it?