Файл "OpenInteresGBP.csv", создал и поместил в папку "files"
Чтобы выложить файлы здесь сделал им расширение txt, csv не подкрепляется на форуме, в папке терминала они расширения csv.
Вызываю скрипт, ошибок не появляется. Открываю файл "OpenInteresGBP.csv" в нем нет никаких записей.
voidOnStart()
{
int Handle,HandleWrite,Qnt,chislo;
datetime Dat_DtTm;
string File_Name="FinFutYY.csv";
string File_NameW="OpenInteresGBP.csv";
string Text, Skip;
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,",");// открываем файл
HandleWrite=FileOpen(File_NameW,FILE_READ|FILE_WRITE|FILE_CSV,";");
ResetLastError();
if(Handle<0) // Failure when opening a file
{
if(GetLastError()==4103)
Alert("There is no file named ",File_Name);
elseAlert("Error when opening a file ",File_Name);
PlaySound("Bzrrr.wav");
return;
}
ResetLastError();
if(HandleWrite<0) // Failure when opening a file
{
if(GetLastError()==4103)
Alert("There is no file named ",File_NameW);
elseAlert("Error when opening a file ",File_NameW);
PlaySound("Bzrrr.wav");
return;
}
while(FileIsEnding(Handle)==false)
{
Skip =FileReadString(Handle);//пропускаем
Skip =FileReadString(Handle);//первые два поля
Dat_DtTm =FileReadDatetime(Handle);// строка даты
Skip =FileReadString(Handle);//пропускаем
Skip =FileReadString(Handle);//еще
Skip =FileReadString(Handle);//четыре
Skip =FileReadString(Handle);//поля
Text =FileReadString(Handle);//считываем значение открытого интересаwhile(!FileIsLineEnding(Handle)) Skip =FileReadString(Handle);//пропускаем все остальные поля до конца строкиPrint("Dat_DtTm=",Dat_DtTm,"Text=",Text);
if(FileIsEnding(Handle)==true){ Print("Конец отсчета=");}
if(FileIsLineEnding(Handle)){ Print("Конец строки=");}
chislo=StrToInteger(Text);//преобразую строку в число
Qnt=FileWrite(File_NameW,Dat_DtTm,chislo);
if (Qnt<0)Alert("не получилась запись=");
}
FileClose(Handle);
FileClose(HandleWrite);
}
//+------------------------------------------------------------------+
Попробовал сделать так же на массивах. Файл создается, но в него ничего не записывается.
datetime time_[];
double OI[];
int shetchik;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
ArraySetAsSeries(time_,true);
ArraySetAsSeries(OI,true);
int Handle,HandleWrite,Qnt,chislo,i=0;
datetime Dat_DtTm;
string File_Name="FinFutYY.csv";//откуда считываемstring File_NameW="OpenInteresGBP.csv";//куда записываемstring Text, Skip;
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,",");// открываем файл для получения кол-ва строкResetLastError();
if(Handle<0) // Failure when opening a file
{
if(GetLastError()==4103)
Alert("There is no file named ",File_Name);
elseAlert("Error when opening a file ",File_Name);
PlaySound("Bzrrr.wav");
return;
}
while(FileIsEnding(Handle)==false)
{
Skip =FileReadString(Handle);//пропускаемif(FileIsLineEnding(Handle))shetchik=shetchik+1;
if(FileIsEnding(Handle)){ Print("shetchik=",shetchik);FileClose(Handle);}//получили кол-во строк
}
ArrayInitialize(time_,0);//массив времени ArrayInitialize(OI,0);//массив занчений открытого интереса ArrayResize(time_,shetchik+1);
ArrayResize(OI,shetchik+1);
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,",");// открываем для считывания ячеекwhile(FileIsEnding(Handle)==false)
{
Skip =FileReadString(Handle);//пропускаем
Skip =FileReadString(Handle);//первые два поля
Dat_DtTm =FileReadDatetime(Handle);// строка даты
Skip =FileReadString(Handle);//пропускаем
Skip =FileReadString(Handle);//еще
Skip =FileReadString(Handle);//четыре
Skip =FileReadString(Handle);//поля
Text =FileReadString(Handle);//считываем значение открытого интересаwhile(!FileIsLineEnding(Handle)) Skip =FileReadString(Handle);//пропускаем все остальные поля до конца строкиif(FileIsEnding(Handle)==true){ Print("Конец отсчета=");}
if(FileIsLineEnding(Handle)){ Print("Конец строки=");}
chislo=StrToInteger(Text);
i=i+1;
time_[i]=Dat_DtTm;
OI[i]=chislo;
Print("time_[i]=",time_[i],"OI[i]=",OI[i]);
}
FileClose(Handle);
/////////////////////////////////////////получили все значения, дальше записываем
HandleWrite=FileOpen(File_NameW,FILE_READ|FILE_WRITE|FILE_CSV,",");// открываем файл для записиResetLastError();
if(HandleWrite<0) // Failure when opening a file
{
if(GetLastError()==4103)
Alert("There is no file named ",File_NameW);
elseAlert("Error when opening a file ",File_NameW);
PlaySound("Bzrrr.wav");
return;
}
for (int r=1;r<=shetchik;r++)
{
Qnt=FileWrite(File_NameW,time_[r],OI[r]);
if(Qnt <0){Alert("не удалось записать=");}
}
}
Распринтовал последний цикл. for (int r=1;r<=shetchik;r++)
А вообще возможно сделать так, чтобы в начале строки сравнивать название валюты, а если оно совпадает, то брать данные с файла. Если нет, то ничего не записывать.
Попробовал сделать так:
string cash="CANADIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE";
while(FileIsEnding(Handle)==false)
{
Skip =FileReadString(Handle);
if (Skip==cash)
{
Skip =FileReadString(Handle);//первые два поля
DataString =FileReadString(Handle);// строка датыStringReplace(DataString,"-",".");
Dat_DtTm=StringToTime(DataString);
Skip =FileReadString(Handle);//пропускаем
Skip =FileReadString(Handle);//еще
Skip =FileReadString(Handle);//четыре
Skip =FileReadString(Handle);//поля
Text =FileReadString(Handle);//считываем значение открытого интересаwhile(!FileIsLineEnding(Handle)) Skip =FileReadString(Handle);//пропускаем все остальные поля до конца строки
chislo=StrToInteger(Text);
i=i+1;
time_[i]=Dat_DtTm;
OI[i]=chislo;
}
еще не победил? день уже прошел ))
скомпилируйте человеку кто нить парсера ))
Файл "OpenInteresGBP.csv", создал и поместил в папку "files"
Чтобы выложить файлы здесь сделал им расширение txt, csv не подкрепляется на форуме, в папке терминала они расширения csv.
Вызываю скрипт, ошибок не появляется. Открываю файл "OpenInteresGBP.csv" в нем нет никаких записей.
Попробовал сделать так же на массивах. Файл создается, но в него ничего не записывается.
Спасибо!
Заработало, как это я пропустил.
Сделал! Спасибо всем, кто подсказывал.
А вообще возможно сделать так, чтобы в начале строки сравнивать название валюты, а если оно совпадает, то брать данные с файла. Если нет, то ничего не записывать.
Попробовал сделать так:
Ничего не выходит.
Вот итить, нашел в чем проблема, кавычку цепляет в первой подстроке
Как теперь ее убрать?
Вот итить, нашел в чем проблема, кавычку цепляет в первой подстроке
Как теперь ее убрать?
Придумал. Может кому пригодится:
Подправил в цикле строку и в предыдущем посте:
Ошибки функций (ArrayMinimum,ArrayMaximum) перестали вылазить, но значения принтуются пустые: