//+------------------------------------------------------------------+ //| UploadExport.mq4 JHS©2008 | //+------------------------------------------------------------------+ #property copyright "JHS©2008" #include <WinUser32.mqh> //---- #import "TaskManager.dll" void Load_TM(string dc,bool Demo); void Save_TM(); string Version_TM(); bool MainWND_TM(int wnd); void Show_TM(); void Close_TM(); int Sleep_TM(int milliseconds,int dt); void AddSymbol_TM(string Name); void AddPeriod_TM(string Name); string TaskName_TM(); string Symbol_TM(); int Period_TM(); int FromDate_TM(); bool IncludeBar_TM(); string ExportDir_TM(); bool Export_TM(); bool LackHistory_TM(); bool AllHistory_TM(); int FileCreate_TM(string FileName); void FileClose_TM(int FileHandle); int FileWriteLn_TM(int FileHandle,string str); string FileReadLn_TM(int FileHandle); void NOP_TM(); bool Stopped_TM(); void Stop_TM(bool St); void AddMenu_TM(int ID,string Caption); void OnFile_TM(string FileName,int FromDT,int ToDT); void OnExported_TM(); string Message_TM(); //---- #import #define DLL_VER "136" #define IND_VER "132" #define ACTION_NONE 0 #define ACTION_EXPORT 1 #define ACTION_CLOSE 2 #define ACTION_MESSAGE 3 #define ACTION_USER 8000 //Menu //Ñîáûòèÿ #define ACTION_MENU_QUIT 1000 //Ïîëüçîâàòåëüñêèå #define ACTION_MENU_USER 9000//...9999 //ãëîáàëüíûå ïåðåìåííûå string Symbols[]; int TimFram[9]={1, 5, 15, 30, 60, 240, 1440, 10080, 43200}; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CheckSymbol(string SymbolName) { int CountSymbols=ArrayRange(Symbols, 0); for(int i=0;i<CountSymbols;i++) { if(Symbols[i]==SymbolName) return(false); } return(true); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void GenereteSymbolList() {//copyright "Øóìàõåð" string Currencies[]={"AED", "AUD", "BHD", "BRL", "CAD", "CHF", "CNY", "CYP", "CZK", "DKK", "DZD", "EEK", "EGP", "EUR", "GBP", "HKD", "HRK", "HUF", "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JOD", "JPY", "KRW", "KWD", "LBP", "LTL", "LVL", "LYD", "MAD", "MXN", "MYR", "NOK", "NZD", "OMR", "PHP", "PLN", "QAR", "RON", "RUB", "SAR", "SEK", "SGD", "SKK", "SYP", "THB", "TND", "TRY", "TWD", "USD", "VEB", "XAG", "XAU", "YER", "ZAR"}; int Count=ArrayRange(Currencies, 0); int Loop, SubLoop; string TempSymbol; for(Loop=0; Loop < Count; Loop++) for(SubLoop=0; SubLoop < Count; SubLoop++) { TempSymbol=Currencies[Loop] + Currencies[SubLoop]; if(MarketInfo(TempSymbol, MODE_BID) > 0) { if(CheckSymbol(TempSymbol)) { ArrayResize(Symbols, ArraySize(Symbols)+1); Symbols[ArraySize(Symbols)-1]=TempSymbol; } } } //All string Another[]={"GOLD" ,"_DJI" ,"_NQ100","_NQCOMP","_SP500","#HPQ" ,"#IBM" ,"#INTC" ,"NQ" ,"ZS" , "#MSFT" ,"#QQQ" ,"#SPY" ,"#T" ,"#XOM" ,"_DXY" ,"_C" ,"_S" ,"_W" ,"_QG" , "_GC" ,"_SI" ,"_ES" ,"_NQ" ,"_QM" ,"#DIA" ,"#AA" ,"#AIG" ,"#AXP" ,"#BA" , "#C" ,"#CAT" ,"#DD" ,"#DIS" ,"#EK" ,"#GE" ,"#GM" ,"#HD" ,"#HON" ,"#IP" , "#JNJ" ,"#JPM" ,"#KO" ,"#MCD" ,"#MMM" ,"#MO" ,"#MRK" ,"#PFE" ,"#PG" ,"ZO" , "#UTX" ,"#VZ" ,"#WMT" ,"#CZ7" ,"#WZ7" ,"#SX7" ,"#QMZ7","#QGX7" ,"#QGZ7","PB" , "#ESZ7" ,"#NQZ7","#GCZ7" ,"#SIZ7" ,"#SF8" ,"#QMF8" ,"#QGF8","XAU" ,"ER2" ,"LC" , "6A" ,"6B" ,"6C" ,"6E" ,"6J" ,"6S" ,"DX" ,"RF" ,"RY" ,"ES" , "YM" ,"FTSE" ,"FDAX" ,"NKD" ,"FESX" ,"NI225_M" ,"NI300","NI225" ,"QM" ,"LH" , "QG" ,"CL" ,"BRN" ,"WTI" ,"NG" ,"HO" ,"THU" ,"THO" ,"ZW" ,"ZC" , "ZL" ,"ZM" ,"KE" ,"KW" ,"RB" ,"CO" ,"YC" ,"YW" ,"YK" ,"FC" , "ZG" ,"ZI" ,"GC" ,"SI" ,"HG" ,"PA" ,"PL" ,"YG" ,"YI" ,"LB" , "JO" ,"D" ,"C" ,"W" ,"SB" ,"SG" ,"TRB" ,"FGBL" ,"FGBM" ,"FGBS" , "SAEPI" ,"SADS" ,"SALB" ,"SAMAG" ,"SALTH" ,"SAVP" ,"SAXR" ,"SBA" ,"SBAB" ,"CT" , "SBAC" ,"SBIDU","SBOT" ,"SBRCD" ,"SCAL" ,"SCOH" ,"SCROX","SCSCO" ,"SCPA" ,"KC" , "SCRAY" ,"SCSH" ,"SCS" ,"SCTSH" ,"SCVX" ,"SDAKT" ,"SDIVX","SICOC" ,"SIIG" ,"SAAPL" , "SINFY" ,"SGES" ,"SGM" ,"SGD" ,"SGLDN" ,"SGOOG" ,"SGROW","SGS" ,"SGT" ,"SHPQ" , "SJSDA" ,"SLMT" ,"SLVS" ,"SMA" ,"SMS" ,"SMSFT" ,"SNDAQ","SNENG" ,"SNTRI","CC" , "SNVDA" ,"SNYX" ,"SWW" ,"SSNP" ,"SRIMM" ,"SPOT" ,"SWBD" ,"SQQQQ" ,"SSOFO","SARO" , "STXI" ,"STM" ,"STRA" ,"SXOM" ,"SGE" ,"SMMM" ,"SAA" ,"SMO" ,"SAIG" ,"SAXP" , "ST" ,"SCAT" ,"SC" ,"SKO" ,"SDIS" ,"SDD" ,"SHD" ,"SHON" ,"SIBM" ,"SINTC" , "SJNJ" ,"SJPM" ,"SMCD" ,"SMRK" ,"SPFE" ,"SPG" ,"SUTX" ,"SVZ" ,"SWMT" ,"STATTF", "SATI" ,"SALGT","SAB" ,"SAEOS" ,"SAOB" ,"SHRT" ,"SALC" ,"SATNI" ,"SAVTR","SVCLK" , "SBT" ,"SBWP" ,"SBWS" ,"SCBG" ,"SCHINA","SKMX" ,"SCELG","SCHAP" ,"SRIO" , "SBAP" ,"SCUTR","SCYNO" ,"SDECK" ,"SDLB" ,"SDLLR" ,"SEZPW","SFMCN" ,"SFTEK", "SGSOL" ,"SGEF" ,"SHMSY" ,"SHPC" ,"SHLT" ,"SHMIN" ,"SHXM" ,"SICON" ,"SBLUD", "SIMKTA","SICE" ,"SIGLD" ,"SJST" ,"SKCI" ,"SLHCG" ,"SLFL" ,"SMFW" ,"SWFR" , "SMGM" ,"SMIDD","SMICC" ,"SMBT" ,"SNTGR" ,"SJWN" ,"SPTNR","SPSPT" ,"SPRFT", "SPHLY" ,"SPHI" ,"SPVH" ,"SRL" ,"SPCP" ,"SPCLN" ,"SSEIC","SSWS" ,"SCRM" , "SSAY" ,"S" ,"SIMO" ,"SSBGI" ,"SPCU" ,"SSTLD" ,"SSF" ,"SSYNT" ,"SSYX" , "STEF" ,"STSTC","STPX" ,"STS" ,"STSRA" ,"SNCTY" ,"STSS" ,"SX" ,"SUSAP", "SVDSI" ,"SPAY" ,"SVIP" ,"SVMC" ,"SWEBX" ,"SAAPLtest","ZB" ,"RC" ,"GAS" ,"AC"}; //---- Count=ArrayRange(Another, 0); for(Loop=0; Loop < Count; Loop++) { TempSymbol=Another[Loop]; if(MarketInfo(TempSymbol, MODE_BID) > 0) { if(CheckSymbol(TempSymbol)) { ArrayResize(Symbols, ArraySize(Symbols)+1); Symbols[ArraySize(Symbols)-1]=TempSymbol; } } } return; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { if(!IsLibrariesAllowed()) { Alert("Áèáëèîòå÷íûå âûçîâû çàïðåùåíû. Ñêðèïò íå ìîæåò âûïîëíÿòüñÿ."); return(0); } if(!IsDllsAllowed()) { Alert("Âûçîâû èç áèáëèîòåê (DLL) çàïðåùåíû. Ñêðèïò íå ìîæåò âûïîëíÿòüñÿ."); return(0); } string DllVersion=Version_TM();DllVersion=StringSubstr(DllVersion,0,3); if(DllVersion!=DLL_VER) { Print("Uncompatible version: dll v."+DllVersion+" indiacator dll v."+DLL_VER); MessageBoxA(WindowHandle(Symbol(),Period()),"Íåñîîòâåòñòâèå âåðñèè âûçûâàåìîé dll è âñòðîåííîãî îïèñàíèÿ.","Îøèáêà",MB_OK+MB_ICONERROR); return(0); }else Print("Indiacator v."+IND_VER+", indiacator dll v."+DLL_VER+", dll v."+DllVersion); //Variables string CurrentSymbol,d,t,CurrentTask,FileName; int i,j,CurrentPeriod,barShift,FromBar,Handle,Refresh=0; datetime LimitDate,FromDT,ToDT; bool LackHistory,AllHistory,Export,Quit=false; //Init Load_TM(AccountCompany(),IsDemo()); if(!MainWND_TM(WindowHandle(Symbol(),Period()))) { Print("Îáíàðóæåí âòîðîé ýêçýìïëÿð ñêðèïòà. Äàííàÿ ôóíêöèÿ íå ïîääåðæèâàåòñÿ."); MessageBoxA(WindowHandle(Symbol(),Period()),"Îáíàðóæåí âòîðîé ýêçýìïëÿð ñêðèïòà. Äàííàÿ ôóíêöèÿ íå ïîääåðæèâàåòñÿ.","Îøèáêà",MB_OK+MB_ICONERROR); return(0); } GenereteSymbolList(); for(i=0;i<ArrayRange(Symbols,0);i++) AddSymbol_TM(Symbols[i]); for(i=0;i<ArrayRange(TimFram,0);i++) AddPeriod_TM(TimFram[i]); //AddMenu_TM(ACTION_MENU_USER,"Âñ¸ êðóòî");//Ïðèìåð ðàáîòû ñ ìåíþ, îáðàáîò÷èê íèæå while(!IsStopped() && !Quit) { switch(Sleep_TM(500,iTime(Symbol(),PERIOD_M1,0))) { case ACTION_NONE: { Refresh++; if(Refresh>60)//êàæäûå 30 ñåêóíä { Refresh=0; RefreshRates(); } break; } case ACTION_EXPORT: { CurrentTask=TaskName_TM(); CurrentSymbol=Symbol_TM(); if(StringLen(CurrentSymbol)==0) break; if(!IsConnected()) Print(CurrentTask," : Íåò ñâÿçè ñ ñåðâåðîì. Ïîäêà÷êà èñòîðèè íå âûïîëíÿåòñÿ."); while(StringLen(CurrentSymbol)>0 && !IsStopped()) { CurrentPeriod=Period_TM(); while(CurrentPeriod>0 && !IsStopped()) { if(MarketInfo(CurrentSymbol,MODE_BID)>0) { LimitDate=FromDate_TM(); if(IncludeBar_TM()) { FromBar=0; } else { FromBar=1; } AllHistory=AllHistory_TM(); if(AllHistory) { barShift=iBars(CurrentSymbol,CurrentPeriod); }else { barShift=iBarShift(CurrentSymbol,CurrentPeriod,LimitDate,false); } LackHistory=LackHistory_TM(); if(LackHistory || (LimitDate>=iTime(CurrentSymbol,CurrentPeriod,barShift) && !LackHistory) || AllHistory) { //Upload for(i=barShift;i>=FromBar && !IsStopped() && IsConnected();i--) { j=20;//1 ñåêóíäà while(iTime(CurrentSymbol,CurrentPeriod,i)==0 && j>0) { j--; NOP_TM(); Sleep(50); } } RefreshRates(); if(AllHistory) barShift=iBars(CurrentSymbol,CurrentPeriod); //Export FileName=ExportDir_TM()+AccountCompany()+"-"+CurrentSymbol+"-"+CurrentPeriod+".prn"; Export=Export_TM(); if(Export) Handle=FileCreate_TM(FileName); if(Handle>=0 || !Export) { if(Export) FileWriteLn_TM(Handle,"<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>"); FromDT=0; for(i=barShift;i>=FromBar && !IsStopped();i--) { if(iTime(CurrentSymbol,CurrentPeriod,i)==0 || (LimitDate>iTime(CurrentSymbol,CurrentPeriod,i) && !AllHistory)) { continue; } ToDT=iTime(CurrentSymbol,CurrentPeriod,i); if(FromDT==0) FromDT=ToDT; if(!Export) { NOP_TM(); continue;//íà âñÿêèé ñëó÷àé ïðîâåðÿåì ÷òîáû íàéòè ðåàëüíûé ToDT } d=TimeToStr(ToDT,TIME_DATE); d=StringSubstr(d,0,4)+StringSubstr(d,5,2)+StringSubstr(d,8,2); t=TimeToStr(ToDT,TIME_SECONDS); t=StringSubstr(t,0,2)+StringSubstr(t,3,2)+StringSubstr(t,6,2); FileWriteLn_TM(Handle,StringConcatenate(d,",",t,",", iOpen (CurrentSymbol,CurrentPeriod,i),",", iHigh (CurrentSymbol,CurrentPeriod,i),",", iLow (CurrentSymbol,CurrentPeriod,i),",", iClose (CurrentSymbol,CurrentPeriod,i),",", iVolume(CurrentSymbol,CurrentPeriod,i))); } if(Export) { FileClose_TM(Handle); Print(CurrentTask," : Âûãðóçêà çàâåðøåíà: ",CurrentSymbol," - ",CurrentPeriod); }else { Print(CurrentTask," : Äàííûå ïåðåäàíû: ",CurrentSymbol," - ",CurrentPeriod); } OnFile_TM(FileName,FromDT,ToDT); } else Print(CurrentTask," : Íåâîçìîæíî çàïèñàòü: ",FileName); } else if(!LackHistory) Print(CurrentTask," : Íåäîñòàòî÷íî èñòîðèè: ",CurrentSymbol," - ",CurrentPeriod); } else Print(CurrentTask," : Íåò òàêîãî èíñòðóìåíòà: ",CurrentSymbol); CurrentPeriod=Period_TM(); }//while(CurrentPeriod>0) CurrentSymbol=Symbol_TM(); }//while(StringLen(CurrentSymbol)>0) Print(CurrentTask," : Ýêñïîðò çàâåðøîí"); OnExported_TM(); break; }//ACTION_EXPORT case ACTION_CLOSE: { Close_TM(); break; }//ACTION_CLOSE case ACTION_MENU_QUIT: { Quit=true; break; }//ACTION_MENU_QUIT case ACTION_MESSAGE: { Print(Message_TM()); break; }//ACTION_MENU_QUIT case ACTION_MESSAGE: {//Ïðèìåð ðàáîòû ñ ìåíþ, äîáàâëåíèå ïóíêòà ìåíþ âûøå MessageBoxA(WindowHandle(Symbol(),Period()),"Âñ¸ êðóòî","Òåñò",MB_OK); break; }//ACTION_MENU_USER }//switch } Close_TM();//îáÿçàòåëüíî, íà ñëó÷àé åñëè îòêðûòà ôîðìà Save_TM();//ñîõðàíÿåì íàñòðîéêè Print("Ñêðèïò çàâåðøèë ðàáîòó."); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains tick volumes of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
TaskManager
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen