Miscellaneous
0
Views
0
Downloads
0
Favorites
FA
//+------------------------------------------------------------------+
//| FA.mq4 |
//| Copyright © 2009, al_su |
//| al_su31@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, al_su"
#property link "al_su31@mail.ru"
#include <stdlib.mqh>
#property indicator_separate_window
#property indicator_buffers 8
//---- input parameters
extern string ôàéë_äàííûõ1=".csv";
extern string ïîäïèñü1="";
extern color öâåò1=Red;
extern string ôàéë_äàííûõ2=".csv";
extern string ïîäïèñü2="";
extern color öâåò2=Orange;
extern string ôàéë_äàííûõ3=".csv";
extern string ïîäïèñü3="";
extern color öâåò3=Yellow;
extern string ôàéë_äàííûõ4=".csv";
extern string ïîäïèñü4="";
extern color öâåò4=Green;
extern string ôàéë_äàííûõ5=".csv";
extern string ïîäïèñü5="";
extern color öâåò5=DeepSkyBlue;
extern string ôàéë_äàííûõ6=".csv";
extern string ïîäïèñü6="";
extern color öâåò6=Blue;
extern string ôàéë_äàííûõ7=".csv";
extern string ïîäïèñü7="";
extern color öâåò7=Navy;
extern string ôàéë_äàííûõ8=".csv";
extern string ïîäïèñü8="";
extern color öâåò8=Magenta;
extern string ôîðìàò_äàòû="dd.mm.yyyy";
extern string ðàçäåëèòåëü_çàïèñåé=";";
extern string ðàçäåëèòåëü_öåëîé_è_äðîáíîé=",";
//---- buffers
double FA1[];
double FA2[];
double FA3[];
double FA4[];
double FA5[];
double FA6[];
double FA7[];
double FA8[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
string id;
int init()
{
MathSrand((int)TimeLocal());
for(;;)
{
id=StringConcatenate("Fundamental data (id_",MathRand(),")");
if(WindowFind(id)<0) break;
}
IndicatorShortName(id);
//---- indicators
if(FileCanOpen(ôàéë_äàííûõ1))
{
if(StringTrimLeft(StringTrimRight(ïîäïèñü1))=="")
ïîäïèñü1=StringSubstr(ôàéë_äàííûõ1,0,StringFind(ôàéë_äàííûõ1,"."));
}
else ïîäïèñü1="";
if(FileCanOpen(ôàéë_äàííûõ2))
{
if(StringTrimLeft(StringTrimRight(ïîäïèñü2))=="")
ïîäïèñü2=StringSubstr(ôàéë_äàííûõ2,0,StringFind(ôàéë_äàííûõ2,"."));
}
else ïîäïèñü2="";
if(FileCanOpen(ôàéë_äàííûõ3))
{
if(StringTrimLeft(StringTrimRight(ïîäïèñü3))=="")
ïîäïèñü3=StringSubstr(ôàéë_äàííûõ3,0,StringFind(ôàéë_äàííûõ3,"."));
}
else ïîäïèñü3="";
if(FileCanOpen(ôàéë_äàííûõ4))
{
if(StringTrimLeft(StringTrimRight(ïîäïèñü4))=="")
ïîäïèñü4=StringSubstr(ôàéë_äàííûõ4,0,StringFind(ôàéë_äàííûõ4,"."));
}
else ïîäïèñü4="";
if(FileCanOpen(ôàéë_äàííûõ5))
{
if(StringTrimLeft(StringTrimRight(ïîäïèñü5))=="")
ïîäïèñü5=StringSubstr(ôàéë_äàííûõ5,0,StringFind(ôàéë_äàííûõ5,"."));
}
else ïîäïèñü5="";
if(FileCanOpen(ôàéë_äàííûõ6))
{
if(StringTrimLeft(StringTrimRight(ïîäïèñü6))=="")
ïîäïèñü6=StringSubstr(ôàéë_äàííûõ6,0,StringFind(ôàéë_äàííûõ6,"."));
}
else ïîäïèñü6="";
if(FileCanOpen(ôàéë_äàííûõ6))
{
if(StringTrimLeft(StringTrimRight(ïîäïèñü7))=="")
ïîäïèñü7=StringSubstr(ôàéë_äàííûõ7,0,StringFind(ôàéë_äàííûõ7,"."));
}
else ïîäïèñü7="";
if(FileCanOpen(ôàéë_äàííûõ8))
{
if(StringTrimLeft(StringTrimRight(ïîäïèñü8))=="")
ïîäïèñü8=StringSubstr(ôàéë_äàííûõ8,0,StringFind(ôàéë_äàííûõ8,"."));
}
else ïîäïèñü8="";
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,öâåò1);
SetIndexLabel(0,ïîäïèñü1);
SetIndexBuffer(0,FA1);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,öâåò2);
SetIndexLabel(1,ïîäïèñü2);
SetIndexBuffer(1,FA2);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1,öâåò3);
SetIndexLabel(2,ïîäïèñü3);
SetIndexBuffer(2,FA3);
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,1,öâåò4);
SetIndexLabel(3,ïîäïèñü4);
SetIndexBuffer(3,FA4);
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,1,öâåò5);
SetIndexLabel(4,ïîäïèñü5);
SetIndexBuffer(4,FA5);
SetIndexStyle(5,DRAW_LINE,STYLE_SOLID,1,öâåò6);
SetIndexLabel(5,ïîäïèñü6);
SetIndexBuffer(5,FA6);
SetIndexStyle(6,DRAW_LINE,STYLE_SOLID,1,öâåò7);
SetIndexLabel(6,ïîäïèñü7);
SetIndexBuffer(6,FA7);
SetIndexStyle(7,DRAW_LINE,STYLE_SOLID,1,öâåò8);
SetIndexLabel(7,ïîäïèñü8);
SetIndexBuffer(7,FA8);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
for(int i=ObjectsTotal()-1;i>=0;i--)
{
if(StringFind(ObjectName(i),id,0)==0)
ObjectDelete(ObjectName(i));
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
DrawData(ôàéë_äàííûõ1,FA1,ïîäïèñü1,öâåò1);
DrawData(ôàéë_äàííûõ2,FA2,ïîäïèñü2,öâåò2);
DrawData(ôàéë_äàííûõ3,FA3,ïîäïèñü3,öâåò3);
DrawData(ôàéë_äàííûõ4,FA4,ïîäïèñü4,öâåò4);
DrawData(ôàéë_äàííûõ5,FA5,ïîäïèñü5,öâåò5);
DrawData(ôàéë_äàííûõ6,FA6,ïîäïèñü6,öâåò6);
DrawData(ôàéë_äàííûõ7,FA7,ïîäïèñü7,öâåò7);
DrawData(ôàéë_äàííûõ8,FA8,ïîäïèñü8,öâåò8);
//----
return(0);
}
//+------------------------------------------------------------------+
void DrawData(string file, double &FA[], string label, color C)
{
int i,j,h;
string date,val;
h=FileOpen(file,FILE_READ|FILE_CSV,ðàçäåëèòåëü_çàïèñåé);
if(h>=0)
{
ArrayInitialize(FA,EMPTY_VALUE);
FileSeek(h,0,SEEK_SET);
while(!FileIsEnding(h))
{
date=FileReadString(h);
val=FileReadString(h);
if(ðàçäåëèòåëü_öåëîé_è_äðîáíîé!=".") _StringReplace(val,ðàçäåëèòåëü_öåëîé_è_äðîáíîé,".");
FA[iBarShift(NULL,0,StrToDate(date,ôîðìàò_äàòû))]=StrToDouble(val);
}
FileClose(h);
int max=0;
for(i=0;i<Bars-1;i++)
if(FA[i]!=EMPTY_VALUE) max=i;
for(i=max-1;i>=0;i--)
{
if(FA[i]!=EMPTY_VALUE)
{
for(j=i+1;j<max;j++) FA[j]=FA[i]+((FA[max]-FA[i])/(max-i))*(j-i);
max=i;
}
}
ObjectDelete(id+"_"+label);
ObjectCreate(id+"_"+label,OBJ_TEXT,WindowFind(id),Time[max],FA[max]);
ObjectSetText(id+"_"+label,label,8,"",C);
// Alert(ErrorDescription(GetLastError()));
}
}
void _StringReplace(string &src, string old, string new_string)
{
src=StringTrimLeft(StringTrimRight(src));
old=StringTrimLeft(StringTrimRight(old));
new_string=StringTrimLeft(StringTrimRight(new_string));
int p;
while(true)
{
p=StringFind(src,old);
if(p==-1) break;
src=StringConcatenate(StringSubstr(src,0,p),new_string,StringSubstr(src,p+StringLen(old)));
}
}
bool IsNumeric(string c)
{
int i=StringGetChar(c,0);
return(i>=48&&i<=57);
}
datetime StrToDate(string src, string format)
{
src=StringTrimLeft(StringTrimRight(src));
format=StringTrimLeft(StringTrimRight(format));
string sy="",sm="",sd="",sh="",si="";
int pos=0;
string c,p;
while(pos<StringLen(src))
{
c=StringSubstr(src,pos,1);
p=StringSubstr(format,pos,1);
if(p=="y")
{
if(IsNumeric(c)) sy=sy+c;
else return(0);
}
else
if(p=="m")
{
if(IsNumeric(c)) sm=sm+c;
else return(0);
}
else
if(p=="d")
{
if(IsNumeric(c)) sd=sd+c;
else return(0);
}
else
if(p=="h")
{
if(IsNumeric(c)) sh=sh+c;
else return(0);
}
else
if(p=="i")
{
if(IsNumeric(c)) si=si+c;
else return(0);
}
else
if(p!=c) return(0);
pos++;
}
string result;
if(sy!=""&&sm!=""&&sd!="") result=StringConcatenate(sy,".",sm,".",sd);
if(sh!=""&&si!="") result=StringConcatenate(result," ",sh,":",si);
return(StrToTime(result));
}
bool FileCanOpen(string file)
{
int h=FileOpen(file,FILE_READ|FILE_CSV,ðàçäåëèòåëü_çàïèñåé);
if(h>=0) {FileClose(h);return(true);}
return(false);
}
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
---