Baza danych

O jezykach programowania w platformach i nie tylko.
krzem78
Stały bywalec
Stały bywalec
Posty: 54
Rejestracja: 15 maja 2011, 18:18

Baza danych

Nieprzeczytany post autor: krzem78 »

Chciałbym utworzyć plik / pliki excela, w którym znajdowałyby się dane historyczne z par walutowych:
- open/close/high/low dla świeczek m15, m30, h1, h4, d1

Idealnie gdyby dane same się aktualizowały w arkuszu lub poprzez kliknięcie "update".

Czy zna ktoś z Was jakiś sposób?

MaximusFX
Bywalec
Bywalec
Posty: 14
Rejestracja: 18 wrz 2018, 10:20

Re: Baza danych

Nieprzeczytany post autor: MaximusFX »

też chce zrobić eksport do excela.
Może do Accessa jeszcze uzgodnie to z kumplem który ma vb i SQL bardziej opanowany, gdzie lepiej dane będzie przeglądać i sortować.
Zależy mi na wycinkach czasowych, chcę np sprawdzić jak przez ostatni rok chodził dax między np. 9-10,30
pogrupowane dniami tygodnia
powinno to wyglądać tak wycinki 1,5h
data - dzień pn (i wykres~)~~~~~~~~~~~~
data - dzień wt ~~~~~~~~~~~~


na początku trzeba je wyeksportować tak żeby excel ładnie świece zrobił
a wymaga aby:

aby utworzyć wykres giełdowy Uporządkuj dane na arkuszu w następującej kolejności cena najwyższa cena najniższa cena zamknięcia Użyj zatrudnia giełdowych jako etykiety



od jednego z forumowiczów znalazłem taki kod
http://fxcraft.biz/baza-wiedzy/mt4-i-ek ... -do-pliku/

void export() {

string file="export_"+Symbol()+"_"+Period()+".csv";
int f=FileOpen(file,FILE_CSV|FILE_WRITE,",");

if(f<1) {
Alert("Błąd otwierania pliku");
return(0);
}

for(int i=0;i<Bars;i++) {
FileWrite(f,TimeToStr(Time,TIME_DATE|TIME_MINUTES),
Open,High,Low,Close);
}

Alert("Eksport "+Symbol()+" zakończony. Wyeksportowano "+Bars+" rekordów");

FileFlush(f);
FileClose(f);

}


do export do excela,
ale jak go zaimplementować w Mt4 lub 5, , w jakim pliku to zapisać i gdzie ten plik umieścić , może ktoś podpowie?

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: Baza danych

Nieprzeczytany post autor: -rookie- »

1. Wchodzisz w MT4 i odpalasz pasek testera na dole a potem przechodzisz do kreatora EA https://images92.fotosik.pl/39/983a85c6d0f63fc7.png
2. Klikasz na tej liście ze wskaźnikami i EA na Create in MetaEditor
3. Wklejasz ten kod do tego pustego pliku, zastępujesz ten wygenerowany czysty kod EA

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                     ExportFile18092018TestEA.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   _export();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+

void _export() {

   string file="export_"+Symbol()+"_"+Period()+".csv";
   int f=FileOpen(file,FILE_CSV|FILE_WRITE,",");

   if(f<1) {
    Alert("Błąd otwierania pliku");
    return;
   }

   for(int i=0;i<Bars;i++) {
      FileWrite(f,TimeToStr(Time[i],TIME_DATE|TIME_MINUTES),
                  Open[i],High[i],Low[i],Close[i]);
   }

   Alert("Eksport "+Symbol()+" zakończony. Wyeksportowano "+Bars+" rekordów");

   FileFlush(f);
   FileClose(f);

}
4. Puszczasz test... i zatrzymujesz od razu.
5. Plik zapisuje się pod Windowsem gdzieś w tych folderach, tam gdzie masz w AppData folder dla plikó MT4 gdzie się wrzuca wskaźniki
C:\Users\(home folder)\AppData\Roaming\MetaQuotes\Terminal\A24505C************************4C\tester\files


LUB PO PROSTU WRZUCASZ EA NA WYKRES LIVE, na bieżący wykres, wyskakuje Alert i plik zapisuje się w tej ścieżce
C:\Users\(home folder)\AppData\Roaming\MetaQuotes\Terminal\A24505C*********A195FD144C\MQL4\Files

-- Dodano: 18 wrz 2018, 12:31 --

W sumie moglibyście to podbić i opisać skoro fxcraft dał rozwiązanie, żeby potem inni nie szukali.

MaximusFX
Bywalec
Bywalec
Posty: 14
Rejestracja: 18 wrz 2018, 10:20

Re: Baza danych

Nieprzeczytany post autor: MaximusFX »

super, dzięki za odpowiedź,
dobrze opisane, teraz to rozumiem, faktycznie przydało by się opisać ,

wcześniej wrzucałem na wykres, kopiując go do różnych folderów, i też do 'script' ale nie działał
wywala

2018.09.18 22:07:04.522 cannot open file 'C:\Users\.......pData\Roaming\MetaQuotes\Terminal\......\Scripts\ToExcel.ex4' [2]



robię w/g wskazówek i dalej nie działa

2018.09.18 21:36:20.614 Tester: cannot load Experts\1excel22
2018.09.18 21:36:20.614 cannot open file 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\.....FC1E5CF75\MQL4\Experts\1excel22.ex4' [2]


a w samym edytorze o uruchomieniu wywala

'1excel22.mq4' 1excel22.mq4 1 1
'export' - unexpected token 1excel22.mq4 3 6
'(' - name expected 1excel22.mq4 3 12
'file' - undeclared identifier 1excel22.mq4 6 16
'if' - expressions are not allowed on a global scope 1excel22.mq4 8 1
'for' - expressions are not allowed on a global scope 1excel22.mq4 13 1
'Alert' - declaration without type 1excel22.mq4 18 1
'FileFlush' - declaration without type 1excel22.mq4 20 1
'FileClose' - declaration without type 1excel22.mq4 21 1
')' - expressions are not allowed on a global scope 1excel22.mq4 23 1
9 error(s), 0 warning(s) 10 1



Nie mam pojęcia co to może być że nie może pliku załadować
zmieniłem uprawnienia w w10 że plik może każdy edytować ,
prog uruchamiałem jak admin.
oczywiście plik tam jest i w momencie uruchamiania w edytorze jest zamknięty
może druga instancja mt4 blokuje, ale przecież mają swoje podfoldery

-rookie-
Maniak
Maniak
Posty: 2307
Rejestracja: 13 kwie 2015, 19:00

Re: Baza danych

Nieprzeczytany post autor: -rookie- »

Nie grzebałem do tej pory z zapisywaniem plików na MT4, za bardzo nie ogarniam tego.
Może spróbuj dodać nowy indykator i wklej ten kod do wygenerowanego pliku.
I wtedy wrzuć na wykres zamiast EA indykator.

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                     jsdsakfh13jhj13b51352135.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

   _export();
   
   Print( TerminalInfoString(TERMINAL_DATA_PATH) ); // zakladce EXPERTS na dolnym panelu wyświetli sciezke do folderu MT4
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

void _export() {

   string file="export_"+Symbol()+"_"+Period()+".csv";
   FileDelete(file);
   int f=FileOpen(file,FILE_CSV|FILE_WRITE,",");

   if(f<1) {
    Alert("Błąd otwierania pliku");
    return;
   }

   for(int i=0;i<Bars;i++) {
      FileWrite(f,TimeToStr(Time[i],TIME_DATE|TIME_MINUTES),
                  Open[i],High[i],Low[i],Close[i]);
   }

   Alert("Eksport "+Symbol()+" zakończony. Wyeksportowano "+Bars+" rekordów");

   FileFlush(f);
   FileClose(f);

}
Poza tym nie wiem jak jest rozwiązany dostęp do plików w Win 10, nie wiem jak przestwić chmod na folderach z poziomu MT4, nie wiem jak zmienić uprawnienia do zapis w Win10 itd. Nic nie wiem o Win10 niestety bo go nie miałem nigdy. Więc ja w tej kwestii nie pomoge.

Poza tym mogłeś podać kod który wrzucasz bo jeśli coś zmieniłeś to może to jest pochodna tych zmian które tam wprowadziłeś do tego kodu co wkleiłem.

Coś widzę że mają problemy inni z Edytorem MT4 https://www.mql5.com/en/forum/68197 i np tutaj ktoś napisał że wystarczy zastąpić plik edytora tym tutaj ale nie wiem co tam w tym pliku jest więc nie będę kombinował https://www.forex.in.rs/metatrader-ex4- ... de-solved/

Chyba tyle mogłem pomóc tutaj.

grzesq
Stały bywalec
Stały bywalec
Posty: 30
Rejestracja: 10 lip 2009, 16:57

Re: Baza danych

Nieprzeczytany post autor: grzesq »

Co za czasów dożyłem. Z tego co piszecie wyglada ze program "Windowsy" lepiej działa na Linuxie niż na Win. Niestety też nie pomogę mogę tylko napisać że pod linuxem działa.

ODPOWIEDZ