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



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

СообщениеДобавлено: Пт Ноя 27, 2020 11:03 am Ответить с цитатой Вернуться к началу

Здравствуйте, пытаюсь взять данные из внешнего файла, но fgets дает на dbugging - яю2, т.е. s=яю2, понимаю что 2 это первый символ в первой строчке, но что такое "яю", уже все подобные коды перебрал не понимаю в чем проблема, подскажите пожалуйста кто в теме!!!

Код:

/*
 Индюк для Ami чтоб смотреть свою/чужую внутридневную торговлю стрелочками :)

 Файл состоит из строк вида

23.01.15 buy
16.03.15 Sell
07.04.15 buy
29.05.15 Sell
23.06.15 buy
12.08.15 Sell
03.09.15 buy
23.10.15 Sell
17.11.15 buy
14.01.16 Sell
05.02.16 buy
31.03.16 Sell

 без отступов в начале строки. Всё идентифицируется по позиции в строке
(номеру колонки) Вид разделителей даты и времени неважен.

 */
 
function Date_To(ddmmyy)
{
   dd_ = StrToNum(StrLeft(ddmmyy,2));
   mm_ = StrToNum(StrMid(ddmmyy,3,2));
   aa_ = StrToNum(StrRight(ddmmyy,2));
   return (10000 * (aa_+100)) + (100 * mm_) + dd_;
}

fh = fopen( "C:\\1-11.txt", "r");
if( fh ){
   Buy=0; Sell=0; Short=0; Cover=0;
   while( ! feof( fh ) ) {
          s= fgets( fh );
          d0=Date_To(StrLeft(s,9));
          if(act=="bu")
            Buy=DateNum()==d0 OR Buy;
          else if(act=="Se")
            Sell=DateNum()==d0 OR Sell;
          else if(act=="SH")
            Short=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Short;
          else if(act=="CO")
            Cover=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Cover;
   }
   fclose( fh );
 
PlotOHLC(O,H,L,C,"Price",colorBlack);
PlotShapes(IIf(Buy,shapeUpArrow,0),colorGreen);
PlotShapes(IIf(Sell,shapeDownArrow,0),colorRed);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),colorGreen);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorRed);
} else {
   printf("ERROR: file can not be found (does not exist)");
}
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Ноя 28, 2020 10:34 am Ответить с цитатой Вернуться к началу

А выложи весь код пожалуйста. Посмотрю.
Делал подобный код. Должен быть на Пауке...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Sergey51



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

СообщениеДобавлено: Вс Ноя 29, 2020 8:10 am Ответить с цитатой Вернуться к началу

Да собственно весь код и есть, только я одну функцию закомментировал (не понимаю как работает), мож чего-то недопонимаю, давно в афл ничего не предпринимал, а тут понадобилось. А этот код взят на этом же форуме. чуть его изменил. Олег ты его и давал и говорил, что с паука. Файл источник данных приложил.
Код:

function Date_To(ddmmyy)
{
   dd_ = StrToNum(StrLeft(ddmmyy,2));
   mm_ = StrToNum(StrMid(ddmmyy,3,2));
   aa_ = StrToNum(StrRight(ddmmyy,2));
   return (10000 * (aa_+100)) + (100 * mm_) + dd_;
}
/*function rtrim(s)
{
   i=StrFind(s," ");
   if(i==0)i=StrFind(s,"\n");
   if(i==0)i=StrFind(s,"\t");
   if(i>0)
    s=StrLeft(s,i-1);
   return s;
}
*/
fh = fopen( "C:\\1-11.txt", "r");
if( fh ){
   Buy=0; Sell=0; Short=0; Cover=0;
   while( ! feof( fh ) ) {
          s= fgets( fh );
          d0=Date_To(StrLeft(s,9));
          if(act=="bu")
            Buy=DateNum()==d0 OR Buy;
          else if(act=="Se")
            Sell=DateNum()==d0 OR Sell;
          else if(act=="SH")
            Short=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Short;
          else if(act=="CO")
            Cover=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Cover;
   }
   fclose( fh );
 
PlotOHLC(O,H,L,C,"Price",colorBlack);
PlotShapes(IIf(Buy,shapeUpArrow,0),colorGreen);
PlotShapes(IIf(Sell,shapeDownArrow,0),colorRed);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),colorGreen);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorRed);
} else {
   printf("ERROR: file can not be found (does not exist)");
}
Посмотреть профиль Отправить личное сообщение
Sergey51



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

СообщениеДобавлено: Вс Ноя 29, 2020 8:14 am Ответить с цитатой Вернуться к началу

чет файл не прикладывается. Имеет вид вот-так.
23.01.15 buy
16.03.15 Sell
07.04.15 buy
29.05.15 Sell
23.06.15 buy
12.08.15 Sell
03.09.15 buy
23.10.15 Sell
17.11.15 buy
14.01.16 Sell
05.02.16 buy
31.03.16 Sell
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Ноя 29, 2020 9:43 am Ответить с цитатой Вернуться к началу

Он не весь. Не работает. Ругается на переменную act.
Ща я начну думать кде ее определить и в результате перепишу весь код заново )))

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Sergey51



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

СообщениеДобавлено: Вс Ноя 29, 2020 4:35 pm Ответить с цитатой Вернуться к началу

Извини Олег ты прав, я когда в коде искал ошибки, я насоздавал много переменных, и прочей ерунды, а потом когда уперся в проблему, решил спросить и почистил код и не проверил.

этот рабочий код переменную восстановил
Код:

function Date_To(ddmmyy)
{
   dd_ = StrToNum(StrLeft(ddmmyy,2));
   mm_ = StrToNum(StrMid(ddmmyy,3,2));
   aa_ = StrToNum(StrRight(ddmmyy,2));
   return (10000 * (aa_+100)) + (100 * mm_) + dd_;
}
/*function rtrim(s)
{
   i=StrFind(s," ");
   if(i==0)i=StrFind(s,"\n");
   if(i==0)i=StrFind(s,"\t");
   if(i>0)
    s=StrLeft(s,i-1);
   return s;
}
*/
fh = fopen( "C:\\1-11.txt", "r");
if( fh ){
   Buy=0; Sell=0; Short=0; Cover=0;
   while( ! feof( fh ) ) {
          s= fgets( fh );
          d0=Date_To(StrLeft(s,9));
          act=StrMid(s,10,2);
          if(act=="bu")
            Buy=DateNum()==d0 OR Buy;
          else if(act=="Se")
            Sell=DateNum()==d0 OR Sell;
          else if(act=="SH")
            Short=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Short;
          else if(act=="CO")
            Cover=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Cover;
   }
   fclose( fh );
 
PlotOHLC(O,H,L,C,"Price",colorBlack);
PlotShapes(IIf(Buy,shapeUpArrow,0),colorGreen);
PlotShapes(IIf(Sell,shapeDownArrow,0),colorRed);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),colorGreen);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorRed);
} else {
   printf("ERROR: file can not be found (does not exist)");
}
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Ноя 30, 2020 4:18 pm Ответить с цитатой Вернуться к началу

Код:

function Date_To(ddmmyy)
{
   dd_ = StrToNum(StrLeft(ddmmyy,2));
   mm_ = StrToNum(StrMid(ddmmyy,3,2));
   aa_ = StrToNum(StrRight(ddmmyy,2));
   return (10000 * (aa_+100)) + (100 * mm_) + dd_;
}
/*function rtrim(s)
{
   i=StrFind(s," ");
   if(i==0)i=StrFind(s,"\n");
   if(i==0)i=StrFind(s,"\t");
   if(i>0)
    s=StrLeft(s,i-1);
   return s;
}
*/
fh = fopen( "C:\\1-11.txt", "r");
if( fh ){
   Buy=0; Sell=0; Short=0; Cover=0;
   while( ! feof( fh ) ) {
          s= fgets( fh );
          d0=Date_To(StrLeft(s, 8));
          act=StrMid(s,9,2);
          if(act=="bu")
            Buy=DateNum()==d0 OR Buy;
          else if(act=="Se")
            Sell=DateNum()==d0 OR Sell;
          else if(act=="SH")
            Short=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Short;
          else if(act=="CO")
            Cover=(Cross(TimeNum(),t0) AND DateNum()==d0) OR Cover;
   }
   fclose( fh );
 
PlotOHLC(O,H,L,C,"Price",colorBlack);
PlotShapes(IIf(Buy,shapeUpArrow,0),colorGreen);
PlotShapes(IIf(Sell,shapeDownArrow,0),colorRed);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),colorGreen);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorRed);
}

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Ноя 30, 2020 4:20 pm Ответить с цитатой Вернуться к началу

Добавляешь в конец кода строку типа
Код:
Title = act;

Код:
Title = StrLeft(s, 8);

Код:
Title = StrMid(s,9,2);

и смотришь что возвращает. Таким макаром ловишь косяки...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Sergey51



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

СообщениеДобавлено: Пн Ноя 30, 2020 6:01 pm Ответить с цитатой Вернуться к началу

У меня "s" возвращает "юя2" , соответственно act ничего не возвращает., т.е. по какой то причине fgets берет не строку, а только "юя2" по сути непонятные буквы и первый символ в строке (это "2").
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Ноя 30, 2020 7:44 pm Ответить с цитатой Вернуться к началу

Мой код у тебя не работает?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Ноя 30, 2020 7:49 pm Ответить с цитатой Вернуться к началу

Вот

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Sergey51



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

СообщениеДобавлено: Пн Ноя 30, 2020 9:19 pm Ответить с цитатой Вернуться к началу

именно, не работает, мож у меня амиброкер не тот? у тебя какая версия? у меня 6,30, но пробовал и 6,20 на другой машине. все одно, не работает.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Ноя 30, 2020 9:59 pm Ответить с цитатой Вернуться к началу

Ты заметил что я немного изменил код? Твой у меня тоже не работал.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Sergey51



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

СообщениеДобавлено: Вт Дек 01, 2020 7:35 am Ответить с цитатой Вернуться к началу

А у меня вот так))) "ЮЯ2" и все на этом)))
[/img]
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Дек 01, 2020 9:43 am Ответить с цитатой Вернуться к началу

А пришли мне свой файл 1-11.txt

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen