Автор |
Сообщение |
Снарколов
Зарегистрирован: 18.01.2012
Сообщения: 10
|
Пока идут разбирательства с работой AddToComposite() на тиках написал конвертер, разделяющий на тиках объемы бидов и офферов. Это мой первый более менее серьезный код на АФЛ.
Исходные данные 1.txt
Исходная строка:
Date Time Last Vol CumVol Bid Ask НеизвестнаяХрень 0 0
Код: |
12/30/2010 23:00:01 1255.50 1 10642 1255.50 1255.75 4665120 0 0 |
Результат выводится в три файла:
2.txt Last
3.txt Bid и объем только бидов, объем асков=0
4.txt и объем только асков, объем бидов=0
Вроде как надо работает.
Код: |
fh1 = fopen( "1.txt", "r");
fh2 = fopen( "2.txt", "w");
fh3 = fopen( "3.txt", "w");
fh4 = fopen( "4.txt", "w");
if( fh1 && fh2 && fh3 && fh4)
{
while( ! feof( fh1 ) )
{
str0 = fgets( fh1 );
str1 = StrReplace(str0, " ", "," );
substr1 = StrExtract( str1, 0 ); // date
substr2 = StrExtract( str1, 1 ); // time
substr3 = StrExtract( str1, 2 ); //last
substr4 = StrExtract( str1, 3 ); //vol
substr5 = StrExtract( str1, 5 ); //bid
substr6 = StrExtract( str1, 6 ); //ask
Last = StrToNum(substr3);
Bid = StrToNum(substr5);
Ask = StrToNum(substr6);
BidVol = "0";
AskVol = "0";
if ( Last == Bid) BidVol = substr4;
if ( Last == Ask) AskVol = substr4;
str2 = substr1 + "," + substr2 + "," + substr3 + "," + substr4+ "\n";
str3 = substr1 + "," + substr2 + "," + substr5 + "," + BidVol + "\n";
str4 = substr1 + "," + substr2 + "," + substr6 + "," + AskVol + "\n";
fputs( str2, fh2 );
fputs( str3, fh3 );
fputs( str4, fh4 );
}
}
else
{
printf("ERROR: file can not be found (does not exist)");
}
if (fh1) fclose(fh1);
if (fh2) fclose(fh2);
if (fh3) fclose(fh3);
if (fh4) fclose(fh4); |
|
_________________ xz |
|
Посмотреть профиль Отправить личное сообщение |
|
Снарколов
Зарегистрирован: 18.01.2012
Сообщения: 10
|
Так вот, по поводу вышеприведенного кода. Хотелось бы при входящем файле большого размера получать на выходе нарезку. Скажем, по пять дней, не считая выходных. Пока не сообразил как это реализовать. Если у кого есть идеи, милости просим. |
_________________ xz |
|
Посмотреть профиль Отправить личное сообщение |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
Снарколов
Зарегистрирован: 18.01.2012
Сообщения: 10
|
spitfire писал(а): |
То бишь надо каждые 5 дней создавать новый файл с именем скажем BidX.txt где Х - порядковый номер файла?
|
Ну да. Что-то такое.
Спасибо. |
_________________ xz |
|
Посмотреть профиль Отправить личное сообщение |
|
мама ира
Зарегистрирован: 10.06.2015
Сообщения: 3
Откуда: Вологда
|
Снарколов писал(а): |
Пока идут разбирательства с работой AddToComposite() на тиках написал конвертер, разделяющий на тиках объемы бидов и офферов. Это мой первый более менее серьезный код на АФЛ.
Исходные данные 1.txt
Исходная строка:
Date Time Last Vol CumVol Bid Ask НеизвестнаяХрень 0 0
Код: |
12/30/2010 23:00:01 1255.50 1 10642 1255.50 1255.75 4665120 0 0 |
Результат выводится в три файла:
2.txt Last
3.txt Bid и объем только бидов, объем асков=0
4.txt и объем только асков, объем бидов=0
Вроде как надо работает.
Код: |
fh1 = fopen( "1.txt", "r");
fh2 = fopen( "2.txt", "w");
fh3 = fopen( "3.txt", "w");
fh4 = fopen( "4.txt", "w");
if( fh1 && fh2 && fh3 && fh4)
{
while( ! feof( fh1 ) )
{
str0 = fgets( fh1 );
str1 = StrReplace(str0, " ", "," );
substr1 = StrExtract( str1, 0 ); // date
substr2 = StrExtract( str1, 1 ); // time
substr3 = StrExtract( str1, 2 ); //last
substr4 = StrExtract( str1, 3 ); //vol
substr5 = StrExtract( str1, 5 ); //bid
substr6 = StrExtract( str1, 6 ); //ask
Last = StrToNum(substr3);
Bid = StrToNum(substr5);
Ask = StrToNum(substr6);
BidVol = "0";
AskVol = "0";
if ( Last == Bid) BidVol = substr4;
if ( Last == Ask) AskVol = substr4;
str2 = substr1 + "," + substr2 + "," + substr3 + "," + substr4+ "\n";
str3 = substr1 + "," + substr2 + "," + substr5 + "," + BidVol + "\n";
str4 = substr1 + "," + substr2 + "," + substr6 + "," + AskVol + "\n";
fputs( str2, fh2 );
fputs( str3, fh3 );
fputs( str4, fh4 );
}
}
else
{
printf("ERROR: file can not be found (does not exist)");
}
if (fh1) fclose(fh1);
if (fh2) fclose(fh2);
if (fh3) fclose(fh3);
if (fh4) fclose(fh4); |
|
Спасибо за код. Давно искали в отделе! |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|