a questo punto abbiamo i due indicatori per la NinjaTrader che esportano i dati in due file CSV e non ci resta che leggerli in mql4
inizio con un breve riassunto
- adesso abbiamo due file CSV nella cartella FILES della o delle Metatrader
- attenzione a mettere il percorso corretto nel codice dei due indicatori NinjaScript
- il primo file CSV contiene i dati del DOM con i contratti reali da 100.000 USD (o 125.000 a seconda dello strumento) fissati ai 10 bid inferiori e ai 10 ask superiori
- il secondo CSV contiene l`ultimo ordine con i contratti reali e il prezzo ask o bid
i dati del DOM sono nel file
6E_DOM.csv e hanno questo formato
Ask;2015.01.02 06:52:19;1.2072;182
Ask;2015.01.02 06:52:29;1.2071;48
Ask;2015.01.02 06:52:19;1.207;154
Ask;2015.01.02 06:52:46;1.2069;53
Ask;2015.01.02 06:51:32;1.2068;123
Ask;2015.01.02 06:52:46;1.2067;52
Ask;2015.01.02 06:52:29;1.2066;88
Ask;2015.01.02 06:52:30;1.2065;68
Ask;2015.01.02 06:52:49;1.2064;52
Ask;2015.01.02 06:52:36;1.2063;31
Bid;2015.01.02 06:52:43;1.2062;5
Bid;2015.01.02 06:52:45;1.2061;47
Bid;2015.01.02 06:52:42;1.206;59
Bid;2015.01.02 06:52:44;1.2059;81
Bid;2015.01.02 06:52:44;1.2058;69
Bid;2015.01.02 06:52:44;1.2057;48
Bid;2015.01.02 06:52:37;1.2056;152
Bid;2015.01.02 06:52:28;1.2055;48
Bid;2015.01.02 06:52:37;1.2054;173
Bid;2015.01.02 06:52:21;1.2053;177
invece i contratti realmente chiusi vengono via via aggiunti in coda a un file con la data del giorno, in modo da conservare i dati storici
il CSV ha un nome tipo
150102_MarketData.csv e questo formato
...
841;2015.01.02 09.19.52;BID;1.2074;1
842;2015.01.02 09.19.53;BID;1.2074;1
843;2015.01.02 09.19.54;BID;1.2074;1
844;2015.01.02 09.19.54;BID;1.2074;1
...
questo è lo pseudo-codice MQL4 per estrarli e importarli nei tuoi indicatori o addirittura usarli per i tuoi EA
Codice: Seleziona tutto
int fHandle = FileOpen("150102_MarketData.csv", FILE_CSV | FILE_READ | FILE_SHARE_READ);
if (fHandle < 0)
{
Print("ERROR " + IntegerToString(GetLastError()));
}
else
{
while (!FileIsEnding(fHandle))
{
// "BID;" + e.Price + ";" + e.Volume
// "ASK;" + e.Price + ";" + e.Volume
// "NONE;" + e.Price + ";" + e.Volume
// BID;1.2267;1
string sRoll = FileReadString(fHandle);
string sTime = FileReadString(fHandle);
string sType = FileReadString(fHandle);
string sPrice = FileReadString(fHandle);
string sVol = FileReadString(fHandle);
Print(sRoll + " " + sTime + " " + sType + " price " + sPrice + " vol " + sVol);
}
FileClose (fHandle);
}
il parsing del CSV è molto semplice, perché sono appunto Comma Separated Values, leggo le stringhe e poi le posso convertire nel formato dati che mi interessa