Odczyt danych z pliku csv

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Odczyt danych z pliku csv

Nieprzeczytany post autor: personov »

Proszę o pomoc w odczytaniu danych z pliku csv.
Mam wskaźnik, który zapisuje dane cen zamknięcia ostatnich 20 świec.
I teraz mam EA, które ma to odczytać w formie tablicy np. :
close[5] to piąta zapisana cena w pliku
close[12] to dwunasta zapisana cena w pliku.
Wskaźnik zapisuje mi fajnie wszystko do pliku.
Niestety mam problem z odczytaniem tego.
Załączam wskaźnik i EA.
Z góry dziękuję za pomoc.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Solą życia jest kasa.

Awatar użytkownika
por. Borewicz
Gaduła
Gaduła
Posty: 93
Rejestracja: 25 cze 2014, 11:58

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: por. Borewicz »

Spróbuj użyć funkcji FileReadString zamiast FileReadArray.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: personov »

String ?
Przecież to dane liczbowe double.
Solą życia jest kasa.

Awatar użytkownika
por. Borewicz
Gaduła
Gaduła
Posty: 93
Rejestracja: 25 cze 2014, 11:58

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: por. Borewicz »

personov pisze:String ?
Przecież to dane liczbowe double.
W takim razie FileReadNumber

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: personov »

Szczerze mówiąc to ja nawet nie wiem, czy dobrze otwieram plik w init().
Ogólnie rzecz biorąc.....nie wychodzi....nie chce zaczytać. Zwraca "0".
Solą życia jest kasa.

Awatar użytkownika
por. Borewicz
Gaduła
Gaduła
Posty: 93
Rejestracja: 25 cze 2014, 11:58

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: por. Borewicz »

Na pierwszy rzut oka wygląda ok, ale już dawno nie pisałem w mql4. Czy GetLastError() zwraca jakiś błąd (zaraz po otwarciu pliku jak i próbie odczytu)?
I jeszcze jedna rzecz - jak otwierasz plik to po zakończeniu pracy z nim powinieneś go zamknąć przez FileClose

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: personov »

Nie zwraca błędu.
Tak. Powinienem zamykać, ale nie ma to teraz wpływu na odczyt ( tak mi się wydaje ).
Solą życia jest kasa.

Awatar użytkownika
por. Borewicz
Gaduła
Gaduła
Posty: 93
Rejestracja: 25 cze 2014, 11:58

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: por. Borewicz »

Z ciekawości sprawdziłem u siebie i u mnie działa (mforex trader wersja 4 build 765). Z tą różnicą że ja ten kawałek kodu umieściłem w skrypcie. Ty może wrzucasz do wskaźnika i dla każdego ticku wywołuje wczytanie 20 wartości. Dla pierwszego ticku zadziała, później już zapewne nie. Możesz jeszcze spróbować przesunąć wskaźnik pliku do początku przed każdym wywołaniem FileReadNumber:
FileSeek(handle, 0, SEEK_SET);

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: personov »

Tak. Teraz widzę, że też u mnie działa, ale tylko na pierwszym ticku. Przy drugim ticku wartości zeruje.
Wskaźnik zapisujący nie chodzi, a plik mam zapisany w folderze. Włączam tylko odczyt jako EA. Czyli wartości zapisane w pliku nie ulegają zmianie.
No i na drugim ticku zeruje.
Solą życia jest kasa.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Re: Odczyt danych z pliku csv

Nieprzeczytany post autor: personov »

Teraz znowu nie działa i zwraca wartości "0".
Zapis pliku działa bez zarzutu.
Problem jest z odczytem. Raz działa, a raz nie działa.
Pomóżcie.
Zerknijcie na te kody co przesłałem na początku. Jest jakiś sposób, aby to odczytać ?
Proszę o jakiś konkretny przykład.

-- Dodano: sob 25-04-2015, 16:32 --

Wiem już w czym jest problem.
Jest weekend, rynek jest zamknięty.
Wszystko testuje na backtesterze.
Pliki na live zapisywane są w : \MQL4\Files
a na testerze pliki zapisywane są w : \tester\files
Tak samo będzie z odczytem.
Pytanie : jak na backtesterze odczytać dane z istniejącego pliku, który jest w :\MQL4\Files ?
Zapewne wystarczy podać ścieżkę. Tylko nie wiem jak.
kombinuję tak :

Kod: Zaznacz cały

handle=FileOpen("\\MQL4\\Files\\zapis.csv",FILE_READ|FILE_CSV);
Ale nic nie wychodzi ;(
Solą życia jest kasa.

ODPOWIEDZ