Price Data Components
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
s_FlatEfficiency_v1
//+------------------------------------------------------------------+
//| ind_FlatEfficiency_v1.mq4 |
//| * |
//| * |
//+------------------------------------------------------------------+
#property copyright "Integer"
#property link "for-good-letter@yandex.ru"
#property show_inputs
extern int MaxSpread=8; // íå èñïîëçîâàòü ñèìâîëû ñî ñïðåäîì áîëüøå óñòàíîâëåííîãî
extern string SymbolsFile="symbols.set"; // èìÿ ôàéëà ñî ñïèñêîì ñèìâîëîâ (äîëæåí íàõîäèòüñÿ â experts/files)
extern string OutputFile="flateficiensy.txt"; // èìÿ ôàéëà äëÿ ñîõðàíåíèÿ ðåçóëüòàòîâ
extern int iPeriod=10000; // êîëè÷åñòâî èñïîëüçóåìûõ áàðîâ
/*
Èñïîëüçîâàíèå:
1. Ñîõðàíèòü â experts/files ôàéë symbols.set ñ íàáîðîì ñèìâîëîâ îêíà îáçîðà
ðûíêà (ïðàâàÿ êíîïêà â îêíå îáçîðà ðûíêà - íàáîð ñèìâîëîâ - ñîõðàíèòü êàê).
2. Çàïóñòèòü ñêðèïò íà ãðàôèêå ëþáîãî ñèìâîëà òðåáóåìîãî òàéìôðåéìà.
Ñêðèïò ïûòàåòñÿ ñàì ïîäãðóæàòü äàííûå ïî âñåì ñèìâîëàì, íî íå âñåãäà
ïîëó÷àåòñÿ ïîäãðóçèòü óñòàíîâëåííîå â iPeriod êîëè÷åñòâî ñ ïåðâîé ïîïûòêè,
ìîæåò ïîòðåáîâàòüñÿ ïîâòîðíûé çàïóñê ñêðèïòà.
3. Ñìîòðåòü â experts/files ôàéë _[TimeFrame]_flateficiensy.txt
*/
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit(){
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start(){
OutputFile=fTimeFrameName(Period())+"_"+OutputFile;
string AllSymbols[];
double Result[];
int TickSum[];
double BarSize[];
double BarSizeRelative[];
double Deviation[];
int Reiting[];
int h=FileOpen(SymbolsFile,FILE_CSV|FILE_READ);
if(h>0){
while(!FileIsEnding(h)){
string str=FileReadString(h);
if(str!=""){
//if(iBars(str,0)>10000)
if(ND0(MarketInfo(str,MODE_SPREAD))<=MaxSpread){
ArrayResize(AllSymbols,ArraySize(AllSymbols)+1);
AllSymbols[ArraySize(AllSymbols)-1]=str;
}
}
}
}
else{
Alert("Íåò ôàéëà "+SymbolsFile);
return(0);
}
ArrayResize(Result,ArraySize(AllSymbols));
ArrayResize(TickSum,ArraySize(AllSymbols));
ArrayResize(BarSize,ArraySize(AllSymbols));
ArrayResize(BarSizeRelative,ArraySize(AllSymbols));
ArrayResize(Deviation,ArraySize(AllSymbols));
ArrayResize(Reiting,ArraySize(AllSymbols));
int BarC=0;
datetime daytimes[];
bool err=false;
while(!IsStopped()){
err=false;
for(int i=0;i<ArraySize(AllSymbols);i++){
ArrayCopySeries(daytimes,MODE_TIME,AllSymbols[i],0);
if(GetLastError()==4066 || iClose(AllSymbols[i],0,0)==0){
Comment("...æäó îáíîâëåíèÿ äàííûõ "+AllSymbols[i]);
Sleep(1000);
err=true;
break;
}
}
if(!err){
Comment("...äàííûå OK!");
Sleep(400);
Comment("...ïðîöåññ");
break;
}
}
if(err)return(0);
BarC=iBars(AllSymbols[0],0);
for(i=1;i<ArraySize(AllSymbols);i++){
BarC=MathMin(BarC,iBars(AllSymbols[i],0));
}
iPeriod=MathMin(iPeriod+2,BarC);
iPeriod-=2;
for(i=0;i<ArraySize(AllSymbols);i++){
Result[i]=0;
TickSum[i]=0;
BarSize[i]=0;
Deviation[i]=0;
for(int j=1;j<=iPeriod;j++){
Result[i]+=MathAbs(iClose(AllSymbols[i],0,j)-iClose(AllSymbols[i],0,j+1));
TickSum[i]+=iVolume(AllSymbols[i],0,j);
BarSize[i]+=iHigh(AllSymbols[i],0,j)-iLow(AllSymbols[i],0,j+1);
Deviation[i]+=MathPow(iClose(AllSymbols[i],0,j)-iMA(AllSymbols[i],0,iPeriod,0,0,0,1),2);
}
//Deviation[i]/=iPeriod;
Deviation[i]=MathSqrt(Deviation[i]/iPeriod);
//Alert(AllSymbols[i]," ",Deviation[i]);
Result[i]/=
(iHigh(AllSymbols[i],0,iHighest(AllSymbols[i],0,MODE_HIGH,iPeriod,1))-
iLow(AllSymbols[i],0,iLowest(AllSymbols[i],0,MODE_LOW,iPeriod,1)));
BarSize[i]/=iPeriod;
BarSize[i]/=MarketInfo(AllSymbols[i],MODE_POINT);
BarSizeRelative[i]= BarSize[i]/MarketInfo(AllSymbols[i],MODE_SPREAD);
}
h=FileOpen(OutputFile,FILE_CSV|FILE_WRITE,"\t");
if(h>0){
FileWrite(h,"Ñïðåä:");
FileWrite(h,"");
for(i=0;i<ArraySize(AllSymbols);i++){
FileWrite(h,AllSymbols[i],MarketInfo(AllSymbols[i],MODE_SPREAD));
}
FileWrite(h,"");
FileWrite(h,"Èñïîëüçîâàëîñü "+iPeriod+" (áàðîâ) "+fTimeFrameName(Period()));
FileWrite(h,"");
FileWrite(h,"Ñèìâîë | Ýôôåêòèâíîñòü ôëåòà | Ñóììà òèêîâ | Ñðåäíèé ðàçìåð áàðà | Ñðåäíèé ðàçìåð áàðà/ñïðåä | Äåâèàöèÿ");
FileWrite(h,"");
//==========================================================================================================================
FileWrite(h,"Îòñîðòèðîâàíî ïî \"Ýôôåêòèâíîñòü ôëåòà\"");
FileWrite(h,"");
for(i=0;i<ArraySize(AllSymbols);i++){
for(j=0;j<ArraySize(AllSymbols);j++){
if(Result[i]>Result[j]){ // ïî âîð
fArrayChangeValues_string(AllSymbols,i,j);
fArrayChangeValues_double(Result,i,j);
fArrayChangeValues_int(TickSum,i,j);
fArrayChangeValues_double(BarSize,i,j);
fArrayChangeValues_double(BarSizeRelative,i,j);
fArrayChangeValues_double(Deviation,i,j);
fArrayChangeValues_int(Reiting,i,j);
}
}
}
for(i=0;i<ArraySize(AllSymbols);i++){
Reiting[i]+=i;
FileWrite(h,AllSymbols[i],DS3(Result[i]),TickSum[i],DS0(BarSize[i]),DS3(BarSizeRelative[i]),DS5(Deviation[i]));
}
//==========================================================================================================================
FileWrite(h,"");
FileWrite(h,"Îòñîðòèðîâàíî ïî \"Ñóììà òèêîâ\"");
FileWrite(h,"");
for(i=0;i<ArraySize(AllSymbols);i++){
for(j=0;j<ArraySize(AllSymbols);j++){
if(TickSum[i]>TickSum[j]){ // ïî âîð
fArrayChangeValues_string(AllSymbols,i,j);
fArrayChangeValues_double(Result,i,j);
fArrayChangeValues_int(TickSum,i,j);
fArrayChangeValues_double(BarSize,i,j);
fArrayChangeValues_double(BarSizeRelative,i,j);
fArrayChangeValues_double(Deviation,i,j);
fArrayChangeValues_int(Reiting,i,j);
}
}
}
for(i=0;i<ArraySize(AllSymbols);i++){
Reiting[i]+=i;
FileWrite(h,AllSymbols[i],DS3(Result[i]),TickSum[i],DS0(BarSize[i]),DS3(BarSizeRelative[i]),DS5(Deviation[i]));
}
//==========================================================================================================================
FileWrite(h,"");
FileWrite(h,"Îòñîðòèðîâàíî ïî \"Ñðåäíèé ðàçìåð áàðà\"");
FileWrite(h,"");
for(i=0;i<ArraySize(AllSymbols);i++){
for(j=0;j<ArraySize(AllSymbols);j++){
if(BarSize[i]>BarSize[j]){ // ïî âîð
fArrayChangeValues_string(AllSymbols,i,j);
fArrayChangeValues_double(Result,i,j);
fArrayChangeValues_int(TickSum,i,j);
fArrayChangeValues_double(BarSize,i,j);
fArrayChangeValues_double(BarSizeRelative,i,j);
fArrayChangeValues_double(Deviation,i,j);
fArrayChangeValues_int(Reiting,i,j);
}
}
}
for(i=0;i<ArraySize(AllSymbols);i++){
Reiting[i]+=i;
FileWrite(h,AllSymbols[i],DS3(Result[i]),TickSum[i],DS0(BarSize[i]),DS3(BarSizeRelative[i]),DS5(Deviation[i]));
}
//==========================================================================================================================
FileWrite(h,"");
FileWrite(h,"Îòñîðòèðîâàíî ïî \"Ñðåäíèé ðàçìåð áàðà/ñïðåä\"");
FileWrite(h,"");
for(i=0;i<ArraySize(AllSymbols);i++){
for(j=0;j<ArraySize(AllSymbols);j++){
if(BarSizeRelative[i]>BarSizeRelative[j]){ // ïî âîð
fArrayChangeValues_string(AllSymbols,i,j);
fArrayChangeValues_double(Result,i,j);
fArrayChangeValues_int(TickSum,i,j);
fArrayChangeValues_double(BarSize,i,j);
fArrayChangeValues_double(BarSizeRelative,i,j);
fArrayChangeValues_double(Deviation,i,j);
fArrayChangeValues_int(Reiting,i,j);
}
}
}
for(i=0;i<ArraySize(AllSymbols);i++){
Reiting[i]+=i;
FileWrite(h,AllSymbols[i],DS3(Result[i]),TickSum[i],DS0(BarSize[i]),DS3(BarSizeRelative[i]),DS5(Deviation[i]));
}
//==========================================================================================================================
FileWrite(h,"");
FileWrite(h,"Îòñîðòèðîâàíî ïî \"Äåâèàöèÿ\"");
FileWrite(h,"");
for(i=0;i<ArraySize(AllSymbols);i++){
for(j=0;j<ArraySize(AllSymbols);j++){
if(Deviation[i]>Deviation[j]){ // ïî âîð
fArrayChangeValues_string(AllSymbols,i,j);
fArrayChangeValues_double(Result,i,j);
fArrayChangeValues_int(TickSum,i,j);
fArrayChangeValues_double(BarSize,i,j);
fArrayChangeValues_double(BarSizeRelative,i,j);
fArrayChangeValues_double(Deviation,i,j);
fArrayChangeValues_int(Reiting,i,j);
}
}
}
for(i=0;i<ArraySize(AllSymbols);i++){
Reiting[i]+=i;
FileWrite(h,AllSymbols[i],DS3(Result[i]),TickSum[i],DS0(BarSize[i]),DS3(BarSizeRelative[i]),DS5(Deviation[i]));
}
//==========================================================================================================================
FileWrite(h,"");
FileWrite(h,"ÐÅÉÒÈÍÃ");
FileWrite(h,"");
for(i=0;i<ArraySize(AllSymbols);i++){
for(j=0;j<ArraySize(AllSymbols);j++){
if(Reiting[i]<Reiting[j]){ // ïî âîð
fArrayChangeValues_string(AllSymbols,i,j);
fArrayChangeValues_double(Result,i,j);
fArrayChangeValues_int(TickSum,i,j);
fArrayChangeValues_double(BarSize,i,j);
fArrayChangeValues_double(BarSizeRelative,i,j);
fArrayChangeValues_double(Deviation,i,j);
fArrayChangeValues_int(Reiting,i,j);
}
}
}
for(i=0;i<ArraySize(AllSymbols);i++){
Reiting[i]+=i;
FileWrite(h,AllSymbols[i],DS3(Result[i]),TickSum[i],DS0(BarSize[i]),DS3(BarSizeRelative[i]),DS5(Deviation[i]),"R - "+Reiting[i],"(ñïðåä - "+DS0(MarketInfo(AllSymbols[i],MODE_SPREAD))+")");
}
}
else{
Alert("Îøèáêà ôàéëà "+OutputFile);
return(0);
}
Comment("");
Alert("Ãîòîâî "+iPeriod+" (áàðîâ). Ñì. ôàéë "+OutputFile);
return(0);
}
//+------------------------------------------------------------------+
string DS5(double v){return(DoubleToStr(v,5));}
string DS3(double v){return(DoubleToStr(v,3));}
string DS0(double v){return(DoubleToStr(v,0));}
double ND0(double v){return(NormalizeDouble(v,0));}
string fTimeFrameName(int arg){
// fTimeFrameName();
int v;
if(arg==0){
v=Period();
}
else{
v=arg;
}
switch(v){
case 0:
return("0");
case 1:
return("M1");
case 5:
return("M5");
case 15:
return("M15");
case 30:
return("M30");
case 60:
return("H1");
case 240:
return("H4");
case 1440:
return("D1");
case 10080:
return("W1");
case 43200:
return("MN1");
default:
return("Wrong TimeFrame");
}
}
void fArrayChangeValues_int(int & aArray[], int aIndex1,int aIndex2){
//fArrayChangeValues_int(,,);
int tmp;
tmp=aArray[aIndex1];
aArray[aIndex1]=aArray[aIndex2];
aArray[aIndex2]=tmp;
}
void fArrayChangeValues_string(string & aArray[], int aIndex1, int aIndex2){
string tmp;
tmp=aArray[aIndex1];
aArray[aIndex1]=aArray[aIndex2];
aArray[aIndex2]=tmp;
}
void fArrayChangeValues_double(double & aArray[], int aIndex1, int aIndex2){
double tmp;
tmp=aArray[aIndex1];
aArray[aIndex1]=aArray[aIndex2];
aArray[aIndex2]=tmp;
}
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
---