Price Data Components
Miscellaneous
0
Views
0
Downloads
0
Favorites
CME_FUTURES_SAVER
//+------------------------------------------------------------------+
//| CME_FUTURES_SAVER.mq4 |
//| Copyright © 20122013, Financial Arsenal LTD |
//| http://www.arsenal-forex.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 20122013, Financial Arsenal LTD"
#property link "http://www.arsenal-forex.ru/"
//+------------------------------------------------------------------+
//| Super Global variables |
//+------------------------------------------------------------------+
extern string DeleteThisSymbols = "" ;
//+------------------------------------------------------------------+
//| Includes |
//+------------------------------------------------------------------+
#import "user32.dll"
int RegisterWindowMessageA(string lpstring);
int PostMessageA(int hWnd,int Msg,int wParam,string lParam);
#import
//+------------------------------------------------------------------+
//| Defines & Global variavles |
//+------------------------------------------------------------------+
#define empty EMPTY_VALUE
#define per PERIOD_M1
#define WM_COMMAND 0x0111
//+------------------------------------------------------------------+
string symbols[200],symbols_sel[200],sys[100],syv[200],dsys[100];
int pretms[200],vols[200][200][3],lvols[200];
bool first = true;
int pause = 1000;
int gSz;
int tDemoShift = 0;
bool NotHaveFutures = true;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
void init(){int i,ii,iii,sz,hd;string sy="",txt="",prom="";
//----
sz = SymbolsList(symbols_sel,true);
ArrayResize(symbols_sel,sz);
ii=0;
prom = "";
NotHaveFutures = false;
for(i=0;i<sz;i++){
if(StringFind(symbols_sel[i],"f")!=0){continue;}
if(StringFind(symbols_sel[i],"_L")>0){continue;}
if(StringFind(DeleteThisSymbols,symbols_sel[i])>=0){continue;}// íå èñïîëüçóåì ñèìâîëû èç ñïèñêà óäàëåííûõ
prom = prom + symbols_sel[i] + ",";
sys[ii] = symbols_sel[i];
syv[ii] = StringSubstr(sys[ii],1);
ii++;
}
tDemoShift = 0;
if(ii==0){// åëè àêêàóíò äåìî è èìååì òîëüêî ñèìâîëû ñ çàäåðæêîé
prom="";
for(i=0;i<sz;i++){
if(StringFind(symbols_sel[i],"df")!=0){continue;}
if(StringFind(symbols_sel[i],"_L")>0){continue;}
if(StringFind(DeleteThisSymbols,symbols_sel[i])>=0){continue;}// íå èñïîëüçóåì ñèìâîëû èç ñïèñêà óäàëåííûõ
prom = prom + symbols_sel[i] + ",";
sys[ii] = symbols_sel[i];
syv[ii] = StringSubstr(sys[ii],1);
ii++;
}
tDemoShift = 0;
}
if(ii==0){NotHaveFutures=true;return;}
ArrayResize(sys,ii);
ArrayResize(syv,ii);
ArrayResize(pretms,ii);
ArrayInitialize(pretms,0);
ArrayResize(vols,ii);
ArrayInitialize(vols,0);
ArrayResize(lvols,ii);
ArrayInitialize(lvols,0);
gSz = ii;
Print("Use "+gSz+" Symbols : "+StringSubstr(prom,0,StringLen(prom)-1));
//----
return;}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
void deinit(){
//----
//----
return;}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
void start(){int i,ii,iii,sz,hd;string fn="",txt="";int out[800];
//----------------------------------------------------------------+
if(NotHaveFutures){
Comment("Not found any futures Symbols. System stopped.");
return;
}
while(!IsStopped()){RefreshRates();
//-----Îáúÿâëåíèÿ ñèñòåìû ðàñ÷åòà--------------------------------------------
string lsy = sys[i]+"_L";
string fsy = sys[i];
int dg = MarketInfo(fsy,MODE_DIGITS);
double pt = MarketInfo(fsy,MODE_POINT);
if(dg==0||pt==0){// åñëè êðèâîé ñèìâîë - ïðîïóñêàåì åãî
i++;
if(i>=gSz){i=0;}
Sleep(20);
continue;
}
if(dg==5||dg==3){dg--;pt*=10;}// óìåíüøàåì ðàçðàäíîñòü äî 4 åñëè íàäî
int fvol = iVolume(lsy,per,0);
int optm = iTime(fsy,per,tDemoShift);
double fbid = MarketInfo(fsy,MODE_BID);
double fask = MarketInfo(fsy,MODE_ASK);
double last = MarketInfo(lsy,MODE_BID);
double op_p = NormalizeDouble(iOpen(fsy,per,0),dg);
double bid = NormalizeDouble(MarketInfo(fsy,MODE_BID),dg);//
int sm = 100 + MathRound((bid-op_p)/pt);// ñìåùåíèå â ïîëíûõ ïèïñàõ îòíîñèòåëüíî öåíû îòêðûòèÿ 1ìèí ÔÜÞ×ÅÐÑÀ íå âàëþòû êàê ðàíüøå
int l_s = 2;//---ðåæèì ðàñïðåäåëåíèÿ îáúåìîâ â çàâèñèìîñò îòïîëîæåíèÿ ëàñòà îòíîñèòåëüíî áèä\àñêà 0=long, 1=short, 2=long/short/2
//-----Ðàáîòà ïî ïðèõîäó áàðà (ôîðìàòèðóåì ìàññèâû ïèøåì â ôàéë)-------------
if(NewBars(i)){
ArrayResize(out,800);
ArrayInitialize(out,0);
iii=0;
for(ii=0;ii<200;ii++){
if(vols[i][ii][1]!=0||vols[i][ii][2]!=0){
out[iii] = vols[i][ii][0];
iii++;
out[iii] = ii;
iii++;
out[iii] = vols[i][ii][1];
iii++;
out[iii] = vols[i][ii][2];
iii++;
}
}
//----------------------------------
if(iii>3){
string dtm = TimeToStr(iTime("EURUSD",PERIOD_W1,0),TIME_DATE);
dtm = StringSetChar(dtm,4,95);
dtm = StringSetChar(dtm,7,95);
fn = dtm+"_"+fsy+".vol"; //Print("write file:"+fn);
hd = FileOpen(fn,FILE_BIN|FILE_READ);
if(hd<1){
Print("Now Create file :"+fn);
hd = FileOpen(fn,FILE_BIN|FILE_WRITE);
FileWriteArray(hd,out,0,iii);
FileClose(hd);
}else{
FileClose(hd);
hd = FileOpen(fn,FILE_BIN|FILE_READ|FILE_WRITE);
FileSeek(hd,0,SEEK_END);
FileWriteArray(hd,out,0,iii);
FileClose(hd);
}
}
for(ii=0;ii<200;ii++){vols[i][ii][0]=0;vols[i][ii][1]=0;vols[i][ii][2]=0;}// ôîðìàòèðóåì ìàññèâ ýòîãî ñèìâîëà
}
//-----Ðàáîòà ïî ïðèõîäó òèêà (ðàñïðåäåëÿåì îáúåìû ïî öåíàì)-------------
if(fvol - lvols[i] != 0){// ïðîïóñêàåì åñëè íåò ñâåæèõ äàííûõ
if(last>=fask){// ïðèïèñûâàåì ê ëîíãàì
l_s=0;
}else if(
last<=fbid){// ïðèïèñûâàåì ê øîðòàì
l_s=1;
}else{// äåëèì íà ïîëîâèíó ëîíã\øîðò
l_s=2;
}
if(fvol - lvols[i] < 0){// íîâûé áàð âïèñûâàåì îáúåì ñ îòêðûòèÿ
vols[i][sm][0] = optm;
if(l_s<2){
vols[i][sm][l_s+1] = fvol;
}else{
vols[i][sm][1] = fvol/2;
vols[i][sm][2] = fvol/2;
}
}else{// ïèøåì ðàçíèöó îáúåìîâ
vols[i][sm][0] = optm;
if(l_s<2){
vols[i][sm][l_s+1] += fvol-lvols[i];
}else{
vols[i][sm][1] += (fvol-lvols[i])/2;
vols[i][sm][2] += (fvol-lvols[i])/2;
}
}
lvols[i] = fvol;
}
i++;
if(i>=gSz){i=0;}
//-----Êîíåö ðàñ÷åòà-------------------------------------------
Comment("Worked "+TimeToStr(TimeLocal(),TIME_SECONDS));
Sleep(15);
}
//----
return;}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool NewBars(int sy_i){int tm = iTime(sys[sy_i],per,0);
if(pretms[sy_i]==0){
pretms[sy_i]=tm;
return(false);
}
if(pretms[sy_i]<tm){
pretms[sy_i]=tm;
return(true);
}
return(false);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int SymbolsList(string &Symbols[], bool Selected)
{
string SymbolsFileName;
int Offset, SymbolsNumber;
if(Selected) SymbolsFileName = "symbols.sel";
else SymbolsFileName = "symbols.raw";
int hFile = FileOpenHistory(SymbolsFileName, FILE_BIN|FILE_READ);
if(hFile < 0) return(-1);
if(Selected) { SymbolsNumber = (FileSize(hFile) - 4) / 128; Offset = 116; }
else { SymbolsNumber = FileSize(hFile) / 1936; Offset = 1924; }
ArrayResize(Symbols, SymbolsNumber);
if(Selected) FileSeek(hFile, 4, SEEK_SET);
for(int i = 0; i < SymbolsNumber; i++){
Symbols[i] = FileReadString(hFile, 12);
FileSeek(hFile, Offset, SEEK_CUR);
}
FileClose(hFile);
return(SymbolsNumber);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---