//+------------------------------------------------------------------+
//| Multi_Exchange.mq4 |
//| Sanyooooook |
//| sanyooooook@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sanyooooook"
#property link "sanyooooook@mail.ru"
//---- input parameters
extern int V_Period=3600;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double Time_Buffer[1000000,2];
ArrayInitialize(Time_Buffer,0.0);
Time_Buffer[0,0]=GetTickCount();
Time_Buffer[0,1]=MarketInfo("EURUSD",MODE_BID);
double Time_Buffer1[1000000,2];
ArrayInitialize(Time_Buffer1,0.0);
Time_Buffer1[0,0]=GetTickCount();
Time_Buffer1[0,1]=MarketInfo("EURCAD",MODE_BID);
double Time_Buffer2[1000000,2];
ArrayInitialize(Time_Buffer2,0.0);
Time_Buffer2[0,0]=GetTickCount();
Time_Buffer2[0,1]=MarketInfo("EURJPY",MODE_BID);
double Time_Buffer3[1000000,2];
ArrayInitialize(Time_Buffer3,0.0);
Time_Buffer3[0,0]=GetTickCount();
Time_Buffer3[0,1]=MarketInfo("EURCHF",MODE_BID);
double Price=MarketInfo("EURUSD",MODE_BID);
int i=1;
int Max_Count=0;
double H;
double Price1=MarketInfo("EURCAD",MODE_BID);
int i1=1;
int Max_Count1=0;
double H1;
double Price2=MarketInfo("EURJPY",MODE_BID);
int i2=1;
int Max_Count2=0;
double H2;
double Price3=MarketInfo("EURCHF",MODE_BID);
int i3=1;
int Max_Count3=0;
double H3;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
double _Time_Buffer[1000000,2];
ArrayInitialize(_Time_Buffer,0.0);
_Time_Buffer[0,0]=GetTickCount();
_Time_Buffer[0,1]=MarketInfo("GBPUSD",MODE_BID);
double _Time_Buffer1[1000000,2];
ArrayInitialize(_Time_Buffer1,0.0);
_Time_Buffer1[0,0]=GetTickCount();
_Time_Buffer1[0,1]=MarketInfo("USDCAD",MODE_BID);
double _Time_Buffer2[1000000,2];
ArrayInitialize(_Time_Buffer2,0.0);
_Time_Buffer2[0,0]=GetTickCount();
_Time_Buffer2[0,1]=MarketInfo("USDJPY",MODE_BID);
double _Time_Buffer3[1000000,2];
ArrayInitialize(_Time_Buffer3,0.0);
_Time_Buffer3[0,0]=GetTickCount();
_Time_Buffer3[0,1]=MarketInfo("USDCHF",MODE_BID);
double _Price=MarketInfo("GBPUSD",MODE_BID);
int _i=1;
int _Max_Count=0;
double _H;
double _Price1=MarketInfo("USDCAD",MODE_BID);
int _i1=1;
int _Max_Count1=0;
double _H1;
double _Price2=MarketInfo("USDJPY",MODE_BID);
int _i2=1;
int _Max_Count2=0;
double _H2;
double _Price3=MarketInfo("USDCHF",MODE_BID);
int _i3=1;
int _Max_Count3=0;
double _H3;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
string com;
//++++++++++++++++++++++++++++++++++++++++++++++++
while(!IsStopped())
{
datetime ZeroX=Time[0]+60*Period()*(WindowBarsPerChart()-WindowFirstVisibleBar()-1);
/*if(WindowBarsPerChart()==WindowFirstVisibleBar())Comment(" 1 ");
if(WindowBarsPerChart()>WindowFirstVisibleBar())Comment(WindowBarsPerChart()-WindowFirstVisibleBar());
if(WindowBarsPerChart()<WindowFirstVisibleBar())Comment(" 3 ");*/
double ZeroY=WindowPriceMax()-(WindowPriceMax()-WindowPriceMin())/4;
double _ZeroY=WindowPriceMin()+(WindowPriceMax()-WindowPriceMin())/4;
//++++++++++++++++++++++++++++++++++++++++++++++++
RefreshRates();
//+++++++++++++++++++++++++++++++++++++++++++++++
if(Price!=MarketInfo("EURUSD",MODE_BID))
{
Price=MarketInfo("EURUSD",MODE_BID);
Time_Buffer[i,0]=GetTickCount();
Time_Buffer[i,1]=MarketInfo("EURUSD",MODE_BID);
int e=i;
int Count=0;
while(e>=0)
{
Count++;
/*if(Time_Buffer[i,1]>=Time_Buffer[e+1,1])*/H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
//if(Time_Buffer[i,1]<Time_Buffer[e+1,1])H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
//Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",Count," ",Time_Buffer[i,1]," ",Time_Buffer[e+1,1]);
if((Time_Buffer[i,0]-Time_Buffer[e,0])/1000>V_Period)
{
e=-1;
continue;
}
e--;
}
i++;
}
if(Price1!=MarketInfo("EURCAD",MODE_BID))
{
Price1=MarketInfo("EURCAD",MODE_BID);
Time_Buffer1[i1,0]=GetTickCount();
Time_Buffer1[i1,1]=MarketInfo("EURCAD",MODE_BID);
int e1=i1;
int Count1=0;
while(e1>=0)
{
Count1++;
/*if(Time_Buffer[i,1]>=Time_Buffer[e+1,1])*/H1=Time_Buffer1[i1,1]-Time_Buffer1[e1+1,1];
//if(Time_Buffer[i,1]<Time_Buffer[e+1,1])H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
//Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",Count1," ",Time_Buffer1[i1,1]," ",Time_Buffer1[e1+1,1]);
if((Time_Buffer1[i1,0]-Time_Buffer1[e1,0])/1000>V_Period)
{
e1=-1;
continue;
}
e1--;
}
i1++;
}
if(Price2!=MarketInfo("EURJPY",MODE_BID))
{
Price2=MarketInfo("EURJPY",MODE_BID);
Time_Buffer2[i2,0]=GetTickCount();
Time_Buffer2[i2,1]=MarketInfo("EURJPY",MODE_BID);
int e2=i2;
int Count2=0;
while(e2>=0)
{
Count2++;
/*if(Time_Buffer[i,1]>=Time_Buffer[e+1,1])*/H2=(Time_Buffer2[i2,1]-Time_Buffer2[e2+1,1])/100;
//if(Time_Buffer[i,1]<Time_Buffer[e+1,1])H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
//Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",Count2," ",Time_Buffer2[i2,1]," ",Time_Buffer2[e2+1,1]);
if((Time_Buffer2[i2,0]-Time_Buffer2[e2,0])/1000>V_Period)
{
e2=-1;
continue;
}
e2--;
}
i2++;
}
if(Price3!=MarketInfo("EURCHF",MODE_BID))
{
Price3=MarketInfo("EURCHF",MODE_BID);
Time_Buffer3[i3,0]=GetTickCount();
Time_Buffer3[i3,1]=MarketInfo("EURCHF",MODE_BID);
int e3=i3;
int Count3=0;
while(e3>=0)
{
Count3++;
/*if(Time_Buffer[i,1]>=Time_Buffer[e+1,1])*/H3=Time_Buffer3[i3,1]-Time_Buffer3[e3+1,1];
//if(Time_Buffer[i,1]<Time_Buffer[e+1,1])H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",Count3," ",Time_Buffer3[i3,1]," ",Time_Buffer3[e3+1,1]);
if((Time_Buffer3[i3,0]-Time_Buffer3[e3,0])/1000>V_Period)
{
e3=-1;
continue;
}
e3--;
}
i3++;
}
//+++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++
if(_Price!=MarketInfo("GBPUSD",MODE_BID))
{
_Price=MarketInfo("GBPUSD",MODE_BID);
_Time_Buffer[_i,0]=GetTickCount();
_Time_Buffer[_i,1]=MarketInfo("GBPUSD",MODE_BID);
int _e=_i;
int _Count=0;
while(_e>=0)
{
_Count++;
/*if(Time_Buffer[i,1]>=Time_Buffer[e+1,1])*/
if(_Time_Buffer[_i,1]!=0&&_Time_Buffer[_e+1,1]!=0)_H=(1/_Time_Buffer[_i,1])-(1/_Time_Buffer[_e+1,1]);
//if(Time_Buffer[i,1]<Time_Buffer[e+1,1])H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
//Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",Count," ",Time_Buffer[i,1]," ",Time_Buffer[e+1,1]);
if((_Time_Buffer[_i,0]-_Time_Buffer[_e,0])/1000>V_Period)
{
_e=-1;
continue;
}
_e--;
}
_i++;
}
if(_Price1!=MarketInfo("USDCAD",MODE_BID))
{
_Price1=MarketInfo("USDCAD",MODE_BID);
_Time_Buffer1[_i1,0]=GetTickCount();
_Time_Buffer1[_i1,1]=MarketInfo("USDCAD",MODE_BID);
int _e1=_i1;
int _Count1=0;
while(_e1>=0)
{
_Count1++;
/*if(Time_Buffer[i,1]>=Time_Buffer[e+1,1])*/_H1=_Time_Buffer1[_i1,1]-_Time_Buffer1[_e1+1,1];
//if(Time_Buffer[i,1]<Time_Buffer[e+1,1])H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
//Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",Count1," ",Time_Buffer1[i1,1]," ",Time_Buffer1[e1+1,1]);
if((_Time_Buffer1[_i1,0]-_Time_Buffer1[_e1,0])/1000>V_Period)
{
_e1=-1;
continue;
}
_e1--;
}
_i1++;
}
if(_Price2!=MarketInfo("USDJPY",MODE_BID))
{
_Price2=MarketInfo("USDJPY",MODE_BID);
_Time_Buffer2[_i2,0]=GetTickCount();
_Time_Buffer2[_i2,1]=MarketInfo("USDJPY",MODE_BID);
int _e2=_i2;
int _Count2=0;
while(_e2>=0)
{
_Count2++;
/*if(Time_Buffer[i,1]>=Time_Buffer[e+1,1])*/_H2=(_Time_Buffer2[_i2,1]-_Time_Buffer2[_e2+1,1])/100;
//if(Time_Buffer[i,1]<Time_Buffer[e+1,1])H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
//Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",Count2," ",Time_Buffer2[i2,1]," ",Time_Buffer2[e2+1,1]);
if((_Time_Buffer2[_i2,0]-_Time_Buffer2[_e2,0])/1000>V_Period)
{
_e2=-1;
continue;
}
_e2--;
}
_i2++;
}
if(_Price3!=MarketInfo("USDCHF",MODE_BID))
{
_Price3=MarketInfo("USDCHF",MODE_BID);
_Time_Buffer3[_i3,0]=GetTickCount();
_Time_Buffer3[_i3,1]=MarketInfo("USDCHF",MODE_BID);
int _e3=_i3;
int _Count3=0;
while(_e3>=0)
{
_Count3++;
/*if(Time_Buffer[i,1]>=Time_Buffer[e+1,1])*/_H3=_Time_Buffer3[_i3,1]-_Time_Buffer3[_e3+1,1];
//if(Time_Buffer[i,1]<Time_Buffer[e+1,1])H=Time_Buffer[i,1]-Time_Buffer[e+1,1];
//Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",_Count3," ",_Time_Buffer3[_i3,1]," ",_Time_Buffer3[_e3+1,1]);
if((_Time_Buffer3[_i3,0]-_Time_Buffer3[_e3,0])/1000>V_Period)
{
_e3=-1;
continue;
}
_e3--;
}
_i3++;
}
//+++++++++++++++++++++++++++++++++++++++++++++++
datetime X1Time=ZeroX-60*Period()*10;
double Y2Price=ZeroY+H;
color ColorLine=Blue;
if(H<0)ColorLine=Red;
ObjectCreateTrend("EURUSD",OBJ_TREND,0,X1Time,ZeroY,X1Time,Y2Price,ColorLine);
datetime X1Time1=ZeroX-60*Period()*20;
double Y2Price1=ZeroY+H1;
color ColorLine1=Blue;
if(H1<0)ColorLine1=Red;
ObjectCreateTrend("EURCAD",OBJ_TREND,0,X1Time1,ZeroY,X1Time1,Y2Price1,ColorLine1);
datetime X1Time2=ZeroX-60*Period()*30;
double Y2Price2=ZeroY+H2;
color ColorLine2=Blue;
if(H2<0)ColorLine2=Red;
ObjectCreateTrend("EURJPY",OBJ_TREND,0,X1Time2,ZeroY,X1Time2,Y2Price2,ColorLine2);
datetime X1Time3=ZeroX-60*Period()*40;
double Y2Price3=ZeroY+H3;
color ColorLine3=Blue;
if(H3<0)ColorLine3=Red;
ObjectCreateTrend("EURCHF",OBJ_TREND,0,X1Time3,ZeroY,X1Time3,Y2Price3,ColorLine3);
X1Time3=ZeroX-60*Period()*50;
Y2Price3=ZeroY+(H3+H2+H1+H)/4;
ColorLine3=Blue;
if((H3+H2+H1+H)/4<0)ColorLine3=Red;
ObjectCreateTrend("EUR",OBJ_TREND,0,X1Time3,ZeroY,X1Time3,Y2Price3,ColorLine3);
//++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++
datetime _X1Time=ZeroX-60*Period()*10;
double _Y2Price=_ZeroY+_H;
color _ColorLine=Blue;
if(_H<0)_ColorLine=Red;
ObjectCreateTrend("GBPUSD",OBJ_TREND,0,_X1Time,_ZeroY,_X1Time,_Y2Price,_ColorLine);
datetime _X1Time1=ZeroX-60*Period()*20;
double _Y2Price1=_ZeroY+_H1;
color _ColorLine1=Blue;
if(_H1<0)_ColorLine1=Red;
ObjectCreateTrend("USDCAD",OBJ_TREND,0,_X1Time1,_ZeroY,_X1Time1,_Y2Price1,_ColorLine1);
datetime _X1Time2=ZeroX-60*Period()*30;
double _Y2Price2=_ZeroY+_H2;
color _ColorLine2=Blue;
if(_H2<0)_ColorLine2=Red;
ObjectCreateTrend("USDJPY",OBJ_TREND,0,_X1Time2,_ZeroY,_X1Time2,_Y2Price2,_ColorLine2);
datetime _X1Time3=ZeroX-60*Period()*40;
double _Y2Price3=_ZeroY+_H3;
color _ColorLine3=Blue;
if(_H3<0)_ColorLine3=Red;
ObjectCreateTrend("USDCHF",OBJ_TREND,0,_X1Time3,_ZeroY,_X1Time3,_Y2Price3,_ColorLine3);
_X1Time3=ZeroX-60*Period()*50;
_Y2Price3=_ZeroY+(_H3+_H2+_H1+_H)/4;
_ColorLine3=Blue;
if((_H3+_H2+_H1+_H)/4<0)_ColorLine3=Red;
ObjectCreateTrend("USD",OBJ_TREND,0,_X1Time3,_ZeroY,_X1Time3,_Y2Price3,_ColorLine3);
//++++++++++++++++++++++++++++++++++++++++++++++++
WindowRedraw();
Sleep(100);
}
return(0);
}
//+---
//---------------------------------------------------------------+
double fn()
{
int Time_Buffer[100000];
ArrayInitialize(Time_Buffer,0.0);
Time_Buffer[0]=GetTickCount();
double Price=Bid;
int i=1;
int Max_Count=0;
while (!IsStopped())
{
int Z=GetTickCount();
RefreshRates();
if(Price!=Bid)
{
Price=Bid;
Time_Buffer[i]=GetTickCount();
int e=i;
int Count=0;
while(e>=0)
{
Count++;
if((Time_Buffer[i]-Time_Buffer[e])/1000>V_Period)
{
if(Count>Max_Count)Max_Count=Count;
Comment("Êîëè÷åñòâî òèêîâ çà ïîñëåäíèå ",V_Period," c. :",Count,"\n",
"Ìàêñèìàëüíîå êîëè÷åñòâë òèêîâ â ",V_Period," c. çà âåñü ïåðèîä íàáëþäåíèÿ: ",Max_Count);
e=-1;
continue;
}
e--;
}
i++;
}
Sleep(100);
}
}
void ObjectCreateTrend(string iObjectName,int Type,int iWindow,int X1Time,double Y1Price,int X2Time,double Y2Price,color iColor)
{
if (ObjectFind(iObjectName)<0) {
ObjectCreate(iObjectName,Type,iWindow,0,0);
ObjectSet(iObjectName,OBJPROP_RAY,false);
ObjectSet(iObjectName,OBJPROP_COLOR,iColor);
ObjectSet(iObjectName,OBJPROP_WIDTH,4);
//Alert("");
}
if (X1Time!=0)
ObjectSet(iObjectName,OBJPROP_TIME1,X1Time);
ObjectSet(iObjectName,OBJPROP_PRICE1,Y1Price);
if (X2Time!=0)
ObjectSet(iObjectName,OBJPROP_TIME2,X2Time);
if (Y2Price!=0)
ObjectSet(iObjectName,OBJPROP_PRICE2,Y2Price);
ObjectSet(iObjectName,OBJPROP_COLOR,iColor);
}
Comments