Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Конвертер данных Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Снарколов



Зарегистрирован: 18.01.2012
Сообщения: 10

СообщениеДобавлено: Ср Мар 27, 2013 12:32 pm Ответить с цитатой Вернуться к началу

Пока идут разбирательства с работой AddToComposite() на тиках написал конвертер, разделяющий на тиках объемы бидов и офферов. Это мой первый более менее серьезный код на АФЛ. Smile
Исходные данные 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

СообщениеДобавлено: Ср Мар 27, 2013 2:45 pm Ответить с цитатой Вернуться к началу

Так вот, по поводу вышеприведенного кода. Хотелось бы при входящем файле большого размера получать на выходе нарезку. Скажем, по пять дней, не считая выходных. Пока не сообразил как это реализовать. Если у кого есть идеи, милости просим. Smile

_________________
xz
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Ср Мар 27, 2013 7:32 pm Ответить с цитатой Вернуться к началу

То бишь надо каждые 5 дней создавать новый файл с именем скажем BidX.txt где Х - порядковый номер файла?
Для этого можно заюзать динамические текстовые переменные для создания и записи в новый файл.
Мона тут прочитать про них:
http://www.amibroker.com/guide/afl/afl_view.php?varsettext
Посмотреть профиль Отправить личное сообщение ICQ Number
Снарколов



Зарегистрирован: 18.01.2012
Сообщения: 10

СообщениеДобавлено: Ср Мар 27, 2013 8:20 pm Ответить с цитатой Вернуться к началу

spitfire писал(а):
То бишь надо каждые 5 дней создавать новый файл с именем скажем BidX.txt где Х - порядковый номер файла?


Ну да. Что-то такое.

spitfire писал(а):

Для этого можно заюзать динамические текстовые переменные для создания и записи в новый файл.
Мона тут прочитать про них:
http://www.amibroker.com/guide/afl/afl_view.php?varsettext

Спасибо.

_________________
xz
Посмотреть профиль Отправить личное сообщение
мама ира



Зарегистрирован: 10.06.2015
Сообщения: 3
Откуда: Вологда

СообщениеДобавлено: Пн Июн 15, 2015 11:51 am Ответить с цитатой Вернуться к началу

Снарколов писал(а):
Пока идут разбирательства с работой AddToComposite() на тиках написал конвертер, разделяющий на тиках объемы бидов и офферов. Это мой первый более менее серьезный код на АФЛ. Smile
Исходные данные 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
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen