Multi_Exchange_EUR

Author: Sanyooooook
0 Views
0 Downloads
0 Favorites
Multi_Exchange_EUR
//+------------------------------------------------------------------+
//|                                               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