Miscellaneous
0
Views
0
Downloads
0
Favorites
EquityOnChart
//+------------------------------------------------------------------+
//| EquityOnChart.mq4 |
//| Copyright © 2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.ru/"
//#property indicator_separate_window
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color5 Red
#property indicator_color4 DarkOrange
#property indicator_color3 Blue
#property indicator_color2 Black
#property indicator_color1 ForestGreen
#property indicator_level1 13000
#property indicator_level2 12000
#property indicator_level3 11000
#property indicator_level4 10000
#property indicator_level5 9000
#property indicator_level6 8000
#property indicator_level7 7000
#property indicator_level8 6000
#property indicator_levelcolor Red
//---- input parameters
extern string fileName="equity.csv";
extern double MaxEquity=13000;
extern double MinEquity=6000;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
bool Calculated=false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE,0,3);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE,0,3);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_LINE,0,3);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexStyle(3,DRAW_LINE,0,3);
SetIndexBuffer(3,ExtMapBuffer4);
SetIndexStyle(4,DRAW_LINE,0,5);
SetIndexBuffer(4,ExtMapBuffer5);
IndicatorShortName("");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Ïðîâåðèòü Ìàêñèìàëüíóþ è ìèíèìàëüíóþ öåíû íà ãðàôèêå |
//+------------------------------------------------------------------+
void CheckLevels(double & MaxPrice, double & MinPrice)
{
//----
int period=WindowBarsPerChart();
MaxPrice=High[iHighest(Symbol(),0,MODE_HIGH,period,0)];
MinPrice=Low[iLowest(Symbol(),0,MODE_LOW,period,0)];
Comment("");
//Comment("MaxPrice=",MaxPrice," MinPrice=",MinPrice);
//----
return;
}
//+------------------------------------------------------------------+
//| çàïèñü ñîäåðæèìîãî ôàéëà â ìàññèâ ñòðîê array[] |
//| â ñëó÷àå íåóäà÷è âåðíåì false |
//+------------------------------------------------------------------+
bool ReadFileToArray(string &array[],string FileName,string WorkFolderName,int devider='\x90')
{
bool res=false;
int FileHandle;
string tempArray[64000],currString;
int stringCounter;
string FullFileName;
if (StringLen(WorkFolderName)>0) FullFileName=StringConcatenate(WorkFolderName,"\\",FileName);
else FullFileName=FileName;
//----
//Print("Ïîïûòêà ïðî÷èòàòü ôàéë ",FileName);
FileHandle=FileOpen(FullFileName,FILE_READ|FILE_CSV,devider);
if (FileHandle!=-1)
{
while(!FileIsEnding(FileHandle))
{
currString=FileReadString(FileHandle);
tempArray[stringCounter]=currString;
//Print(stringCounter,": ",currString);
stringCounter++;
}
stringCounter--;
if (stringCounter>0)
{
ArrayResize(array,stringCounter);
for (int i=0;i<stringCounter;i++) array[i]=tempArray[i];
res=true;
}
FileClose(FileHandle);
}
else
{
Print("Íå óäàëîñü ïðî÷èòàòü ôàéë ",FileName,"| îøèáêà ",GetLastError());
}
//----
return(res);
}
//+------------------------------------------------------------------+
//| fill array of strings |
//+------------------------------------------------------------------+
void SplitString(string &ArrayRes[],string InputString,string splitter)
{
string temp,tempArray[100];
int pos,splitLength=StringLen(splitter),InputStrLength=StringLen(InputString),counter;
pos=StringFind(InputString,splitter);
if (pos!=-1)
{
if (pos==0) InputString=StringSubstr(InputString,splitLength,InputStrLength-splitLength);
while (StringFind(InputString,splitter)!=-1)
{
pos=StringFind(InputString,splitter);
InputStrLength=StringLen(InputString);
tempArray[counter]=StringSubstr(InputString,0,pos);
InputString=StringSubstr(InputString,pos+splitLength,InputStrLength-splitLength-pos);
counter++;
}
if (StringLen(InputString)!=0)
{
tempArray[counter]=InputString;
counter++;
}
}
ArrayResize(ArrayRes,counter);
for (int i=0;i<counter;i++)
{
ArrayRes[i]=tempArray[i];
//Print("i=",i," string=",ArrayRes[i]);
}
return;
}
//+------------------------------------------------------------------+
//| âîçâðàùàåò ïåðâûé èíäåêñ, ñ êîòîðîãî îòîáðàæàåòñÿ èíäèêàòîð |
//+------------------------------------------------------------------+
int GetFirstBarIndex()
{
int res;
//----
int window=ObjectFind("start");
if (window==0)
{
if (ObjectType("start")==OBJ_VLINE)
{
datetime Time1=ObjectGet("start",OBJPROP_TIME1);
//Print("Time1=",TimeToStr(Time1));
}
res=iBarShift(NULL,0,Time1);
}
//----
return(res);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
double max,min;
int firstBar=GetFirstBarIndex();
if (firstBar==0 && !Calculated)
{
Alert("Íå íàéäåíà âåðòèêàëüíàÿ ëèíèÿ ñ îïèñàíèåì \" start\" ");
Calculated=true;
return;
}
//firstBar;
//Print("firstBar=",firstBar);
//----
if (!Calculated)
{
CheckLevels(max,min); // íå òðåáóåòñÿ â äàííîì ñëó÷àå
double equityArray[][5];
string EquityStrings[];
string ArrayFromString[];
double scale=(MaxEquity-MinEquity)/(max-min);
if (!ReadFileToArray(EquityStrings,fileName,"")) Print("Íå óäàëîñü ïðî÷èòàòü äàííûå èç ôàéëà, îøèáêà ",GetLastError());
SplitString(ArrayFromString,EquityStrings[0],";");
int days=ArraySize(ArrayFromString);
ArrayResize(equityArray,days);
ExtMapBuffer1[firstBar]=10000;
for (i=1;i<days;i++)
{
ExtMapBuffer1[firstBar-i]=StrToDouble(ArrayFromString[i]);
// Print("i=",i, " ExtMapBuffer1=",ExtMapBuffer1[firstBar-i]," ArrayFromString=",ArrayFromString[i]);
}
SplitString(ArrayFromString,EquityStrings[1],";");
ExtMapBuffer2[firstBar]=10000;
for (i=1;i<days;i++)
{
ExtMapBuffer2[firstBar-i]=StrToDouble(ArrayFromString[i]);
// Print("i=",i, " ExtMapBuffer1=",ExtMapBuffer1[firstBar-i]," ArrayFromString=",ArrayFromString[i]);
}
SplitString(ArrayFromString,EquityStrings[2],";");
ExtMapBuffer3[firstBar]=10000;
for (i=1;i<days;i++)
{
ExtMapBuffer3[firstBar-i]=StrToDouble(ArrayFromString[i]);
// Print("i=",i, " ExtMapBuffer1=",ExtMapBuffer1[firstBar-i]," ArrayFromString=",ArrayFromString[i]);
}
SplitString(ArrayFromString,EquityStrings[3],";");
ExtMapBuffer4[firstBar]=10000;
for (i=1;i<days;i++)
{
ExtMapBuffer4[firstBar-i]=StrToDouble(ArrayFromString[i]);
// Print("i=",i, " ExtMapBuffer1=",ExtMapBuffer1[firstBar-i]," ArrayFromString=",ArrayFromString[i]);
}
SplitString(ArrayFromString,EquityStrings[4],";");
ExtMapBuffer5[firstBar]=10000;
for (i=1;i<days;i++)
{
ExtMapBuffer5[firstBar-i]=StrToDouble(ArrayFromString[i]);
// Print("i=",i, " ExtMapBuffer1=",ExtMapBuffer1[firstBar-i]," ArrayFromString=",ArrayFromString[i]);
}
Calculated=true;
}
//----
return(0);
}
//+------------------------------------------------------------------+
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
---