I have bought data (in ASCII format) of some symbols not listed in my MT4. I can use History Center to import data to existing symbols, but how can I add my new symbols ?
- history center import
- HELP ME
- History Center
Open offline
"Open offline" ?!
How can I browse for my ascii data ? Or may I first conwert it to .hst format (how ?) and save it to appropriate directory ?
How can I browse for my ascii data ? Or may I first conwert it to .hst format (how ?) and save it to appropriate directory ?
HST format was published.
Period_converter script is sample of hst-files creating.
You can modify old csv2hst converter
Period_converter script is sample of hst-files creating.
You can modify old csv2hst converter
//+------------------------------------------------------------------+ //| CSV to HST converter | //| Copyright © 2003, MetaQuotes Software Corp. | //| http://www.metaquotes.ru | //+------------------------------------------------------------------+ #include <string.h> #include <stdlib.h> #include <stdio.h> #include <time.h> #pragma pack(1) struct RateInfo { time_t ctm; // current time in seconds since 01.01.1970 double open; double low; double high; double close; int vol; }; #pragma pack(8) struct HistoryHeader { int version; char copyright[64]; char symbol[8]; int period; int unused[16]; }; //+------------------------------------------------------------------+ //| usage 1: csv2hst SSSSSSSP.csv | //| usage 2: csv2hst file.csv SSSSSSSP.hst | //+------------------------------------------------------------------+ int main(int argc, char* argv[]) { FILE *in, *out; char *cp; int i, period; char inputfilename[256] = ""; char outputfilename[256] = ""; char symbol[8]; char buffer[256]; char *delimiter = ","; tm tt; RateInfo ri; HistoryHeader hdr; if (argc < 2) return -1; strcpy(inputfilename,argv[1]); strcpy(outputfilename,argv[1]); if ((cp = strstr(outputfilename, ".csv")) == NULL) return -2; if (argc > 2) strcpy(outputfilename,argv[2]); else { *cp=0; strcat(outputfilename, ".hst"); } if (stricmp(inputfilename, outputfilename) == 0) return -3; if ((cp = strstr(outputfilename, ".hst")) == NULL) return -4; if ((in = fopen(inputfilename, "ri")) == NULL) return -5; if ((out = fopen(outputfilename, "wb")) == NULL) { fclose(in); return -6; } // take period and symbol from output file name *cp=0; period=0; for (i=strlen(outputfilename)-1; i>=0; i--) { if ((outputfilename[i]<'0' || outputfilename[i]>'9') && period == 0) { period = atoi(outputfilename+i+1); outputfilename[i+1]=0; } if (outputfilename[i]=='\\' || outputfilename[i]=='/') break; } strncpy(symbol, outputfilename+i+1, 7); symbol[7] = 0; // prepare and write hst header memset(&hdr, 0, sizeof(HistoryHeader)); hdr.version = 1; hdr.period = period; strcpy(hdr.symbol, symbol); strcpy(hdr.copyright, "Copyright © 2003, MetaQuotes Software Corp."); fwrite(&hdr, sizeof(HistoryHeader), 1, out); // prepare and write RateInfo records i=0; while (fgets(buffer, 255, in) != NULL) { buffer[255] = 0; cp = buffer; //---- date DD.MM.YYYY tt.tm_mday = atoi(cp); if (tt.tm_mday < 1 || tt.tm_mday > 31) continue; if ((cp = strstr(cp, ".")) == NULL) continue; tt.tm_mon = atoi(cp+1) - 1; if (tt.tm_mon < 0 || tt.tm_mon > 11) continue; if ((cp = strstr(cp+1, ".")) == NULL) continue; tt.tm_year = atoi(cp+1); if (tt.tm_year > 1900) tt.tm_year -= 1900; if (tt.tm_year < 50) tt.tm_year += 100; //---- time ,HH:MI if ((cp = strstr(buffer, delimiter)) == NULL) continue; tt.tm_hour = atoi(cp+1); if (tt.tm_hour < 0 || tt.tm_hour > 23) continue; if ((cp = strstr(cp+1, ":")) == NULL) continue; tt.tm_min = atoi(cp+1); if (tt.tm_min < 0 || tt.tm_min > 59) continue; if ((ri.ctm = mktime(&tt)) == 0) continue; ri.ctm -= _timezone; //---- open,high,low,close,volume if ((cp = strstr(cp, delimiter)) == NULL) continue; if ((ri.open = atof(cp+1)) <= 0) continue; if ((cp = strstr(cp+1, delimiter)) == NULL) continue; if ((ri.high = atof(cp+1)) <= 0) continue; if ((cp = strstr(cp+1, delimiter)) == NULL) continue; if ((ri.low = atof(cp+1)) <= 0) continue; if ((cp = strstr(cp+1, delimiter)) == NULL) continue; if ((ri.close = atof(cp+1)) <= 0) continue; if ((cp = strstr(cp+1, delimiter)) == NULL) continue; if ((ri.vol = atoi(cp+1)) < 0) continue; //----- check prices if (ri.low > ri.open || ri.low > ri.close || ri.low > ri.high) continue; if (ri.high < ri.open || ri.high < ri.close || ri.high < ri.low) continue; if (gmtime(&ri.ctm) == NULL) continue; i++; fwrite(&ri,sizeof(RateInfo),1,out); } fclose(in); fclose(out); printf("%d records written\n", i); return 0; }
Hi Slawa,
I have no C background (C# & VB.NET), but would like to use your awesome trading platform to analyse and backtest other markets than the FX, so I would need to add new symbols and prepare hst files FROM ASCII data.
Would you please clarify on those two questions:
1. Should "Copyright © 2003, MetaQuotes Software Corp." be the only text in the header immediately followed by the data? No Sumbol & time period(eg. AUDUSD1440).
2. Are you writing the whole data block (datetime,0:00,open,high,low,close,volume) without any other separators (besides the COMMA)?
I tried to compile the code but hit an error on line "tm tt;" : variable 'tt' not found.
Can you please help me decypher the C code above?
Thanks in advanve for your help!
I have no C background (C# & VB.NET), but would like to use your awesome trading platform to analyse and backtest other markets than the FX, so I would need to add new symbols and prepare hst files FROM ASCII data.
Would you please clarify on those two questions:
1. Should "Copyright © 2003, MetaQuotes Software Corp." be the only text in the header immediately followed by the data? No Sumbol & time period(eg. AUDUSD1440).
2. Are you writing the whole data block (datetime,0:00,open,high,low,close,volume) without any other separators (besides the COMMA)?
I tried to compile the code but hit an error on line "tm tt;" : variable 'tt' not found.
Can you please help me decypher the C code above?
Thanks in advanve for your help!
bbzz,
the simplest way for you i think (also the quickest/dirtiest), is going to Tools/History center
then just pick one pair/period that you are not going to use.
press import, BROWSE, choose "ascii" file type and pick your file.
as for the format, you can just pick a pair with existing data and use the export button (.csv)
watch it with notepad and you will know the format
m
the simplest way for you i think (also the quickest/dirtiest), is going to Tools/History center
then just pick one pair/period that you are not going to use.
press import, BROWSE, choose "ascii" file type and pick your file.
as for the format, you can just pick a pair with existing data and use the export button (.csv)
watch it with notepad and you will know the format
m
How can I add new symbols in mt5?
By Default it’s only showing 4/4 in market watch
TariSingh:
How can I add new symbols in mt5?
By Default it’s only showing 4/4 in market watch
There are no any symbols by default.
Because MT5 is the software, and the brokers are using it to propose the symbols to trade.
There are a lot of the brokers, and they all are proposing the different symbols to trade.
----------------
Find a Server by the Broker's Name:
https://www.mql5.com/en/forum/9950/page88#comment_3981953
https://www.mql5.com/en/forum/214820
How to Start with Metatrader 5
- 2017.01.05
- www.mql5.com
I decided to create this thread to help to myself and to the others to start with Metatrader 5...
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register