CME_FUTURES_SAVER

Author: Copyright � 2012�2013, Financial Arsenal LTD
Price Data Components
Series array that contains tick volumes of each bar Series array that contains open prices of each barSeries array that contains open time of each bar
Miscellaneous
Uses files from the file systemIt writes information to fileIt reads information from a file
0 Views
0 Downloads
0 Favorites
CME_FUTURES_SAVER
//+------------------------------------------------------------------+
//|                                            CME_FUTURES_SAVER.mq4 |
//|                     Copyright © 2012–2013, Financial Arsenal LTD |
//|                                     http://www.arsenal-forex.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012–2013, 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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---