marketwatch

Author: Dima S., 2010 г.
0 Views
0 Downloads
0 Favorites
marketwatch
ÿþ//---------------------------------------------------------------------

//87<5=5=> 09.04.2017: https://www.mql5.com/ru/users/ich_hub

#property copyright 	"Dima S., 2010 3."

#property link      	"dimascub@mail.com"

#property version   	"1.01"

#property description "Market Watch"

//---------------------------------------------------------------------

#property indicator_chart_window

//---------------------------------------------------------------------



//---------------------------------------------------------------------

//	AB>@8O 25@A89:

//---------------------------------------------------------------------

//	11.10.20103. - V1.00

//	 - ',/  !/;

//

//	20.10.20103. - V1.01

//	 -  - ?0@0<5B@K 4;O A42830 B01;8FK ?> 25@B8:0;8 8 3>@87>=B0;8;

//

//---------------------------------------------------------------------





//---------------------------------------------------------------------

//	>4:;NG05<K5 181;8>B5:8:

//---------------------------------------------------------------------

#include	<MarketWatch.mqh>

//---------------------------------------------------------------------



//=====================================================================

//	=5H=85 7040205<K5 ?0@0<5B@K:

//=====================================================================

input string   CurrencylList="EURUSD;GBPUSD;EURGBP;AUDUSD;NZDUSD;AUDNZD;USDCAD;USDCHF;USDJPY;EURJPY;GBPJPY;AUDJPY;NZDJPY;CHFJPY;CADJPY;XAUUSD;";

//input 

string   TimeFrameList="H1;H4;D1;MN";

input int         UpDownBorderShift=1;

input int         LeftRightBorderShift=1;

input color      TitlesColor=clrLightCyan;

//---------------------------------------------------------------------



//---------------------------------------------------------------------

string   Symbol_Array[];                                                                        // A?8A>: @01>G8E 8=AB@C<5=B>2

string   TimeFrame_Array[];                                                                     // A?8A>: @01>G8E "$

ENUM_TIMEFRAMES   TFs[];

string   Titles_Array[]={ "Bid:","Spread:","StopLev:","ToOpen:","Hi-Lo:","DailyAv:" };

//---------------------------------------------------------------------



//---------------------------------------------------------------------

SymbolWatchDisplay*Watches[];

TableDisplay TitlesDisplay;

//---------------------------------------------------------------------



//---------------------------------------------------------------------

int         currencies_count;

int         timeframes_count;

bool        is_first_init=true;

//---------------------------------------------------------------------

#define		WIDTH			128

#define		HEIGHT		128

#define		FONTSIZE	10

//---------------------------------------------------------------------

//	1@01>BG8: A>1KB8O 8=8F80;870F88:

//---------------------------------------------------------------------

int

OnInit()

  {

//" - 

//--- A1@>A8< 7=0G5=85 >H81:8 

   ResetLastError();

   long chart_ID=0;

//--- CAB0=>28< F25B D>=0 3@0D8:0 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_BACKGROUND,clrBlack))

     {

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_BACKGROUND Error Code = ",GetLastError());

     }

//--- CAB0=>28< F25B >A59, H:0;K 8 AB@>:8 OHLC 3@0D8:0 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_FOREGROUND,clrNONE))

     {

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_FOREGROUND Error Code = ",GetLastError());

     }

//--- CAB0=>28< F25B A5B:8 3@0D8:0 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_GRID,clrNONE))

     {

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_GRID Error Code = ",GetLastError());

     }

//--- CAB0=>28< F25B >1J5<>2 8 C@>2=59 >B:@KB8O >@45@>2 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_VOLUME,clrNONE))

     {

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_VOLUME Error Code = ",GetLastError());

     }

//--- CAB0=>28< F25B 10@0 225@E, B5=8 8 >:0=B>2:8 B5;0 1KGL59 A25G8 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_UP,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_CHART_UP Error Code = ",GetLastError()); 

     } 

//--- CAB0=>28< F25B 10@0 2=87, B5=8 8 >:0=B>2:8 B5;0 <54256L59 A25G8 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_DOWN,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_CHART_DOWN Error Code = ",GetLastError()); 

     }      

//--- CAB0=>28< F25B ;8=88 3@0D8:0 8 O?>=A:8E A25G59 ">468" 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_CHART_LINE,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_CHART_LINE Error Code = ",GetLastError()); 

     }      

//--- CAB0=>28< F25B B5;0 1KGL59 A25G8 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_CANDLE_BULL,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_CANDLE_BULL Error Code = ",GetLastError()); 

     } 

//--- CAB0=>28< F25B B5;0 <54256L59 A25G8 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_CANDLE_BEAR,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_CANDLE_BEAR Error Code = ",GetLastError()); 

     } 

//--- CAB0=>28< F25B ;8=88 F5=K Bid 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_BID,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_BID Error Code = ",GetLastError()); 

     } 

//--- CAB0=>28< F25B ;8=88 F5=K Ask 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_ASK,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_ASK Error Code = ",GetLastError()); 

     } 

//--- CAB0=>28< F25B ;8=88 F5=K ?>A;54=59 A>25@H5==>9 A45;:8 (Last) 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_LAST,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_LAST Error Code = ",GetLastError()); 

     } 

//--- CAB0=>28< F25B C@>2=59 AB>?->@45@>2 (Stop Loss 8 Take Profit) 

   if(!ChartSetInteger(chart_ID,CHART_COLOR_STOP_LEVEL,clrNONE))

     { 

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK" 

      Print("CHART_COLOR_STOP_LEVEL Error Code = ",GetLastError()); 

     } 

                                   

     

//	!?8A>: A8<2>;>2:

   currencies_count=StringToArrayString(CurrencylList,Symbol_Array);



   if(currencies_count>16)

     {

      currencies_count=16;

     }



//	!?8A>: "$:

//MB> ?@840AB =5<=>3> H0@<0 >B https://www.mql5.com/ru/users/ich_hub

   switch(Period())

     {

      case 1: TimeFrameList="M1;M5"; break;

      case 5: TimeFrameList="M1;M5;M15"; break;

      case 15: TimeFrameList="M5;M15;M30"; break;

      case 30: TimeFrameList="M15;M30;H1"; break;

      case 60: TimeFrameList="M30;H1;H4"; break;

      case 240: TimeFrameList="H1;H4;D1"; break;

      case 1440: TimeFrameList="H4;D1;W1"; break;

      case 10080: TimeFrameList="D1;W1"; break;

      case 43200: TimeFrameList="W1;MN"; break;

     }



   timeframes_count=StringToArrayString(TimeFrameList,TimeFrame_Array);



   ArrayResize(TFs,timeframes_count);

   for(int k=0; k<timeframes_count; k++)

     {

      TFs[k]=get_timeframe_from_string(TimeFrame_Array[k]);

     }



   if(is_first_init!=true)

     {

      DeleteGraphObjects();

     }

   InitGraphObjects();

   is_first_init=false;



   RefreshInfo();

   EventSetTimer(1);



   ChartRedraw(0);



   return( 0 );

  }

//+------------------------------------------------------------------+ 

//| Custom indicator iteration function                              | 

//+------------------------------------------------------------------+ 

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {



   return(rates_total);

  }

//---------------------------------------------------------------------

//	1@01>BG8: A>1KB8O >B B09<5@0:

//---------------------------------------------------------------------

void

OnTimer()

  {

   RefreshInfo();

   ChartRedraw(0);

  }

//---------------------------------------------------------------------

//	1@01>BG8: A>1KB8O 45-8=8F80;870F88:

//---------------------------------------------------------------------

void

OnDeinit(const int _reason)

  {

   EventKillTimer();

   DeleteGraphObjects();

  }

//---------------------------------------------------------------------

//	=8F80;870F8O 3@0D8G5A:8E >1J5:B>2:

//---------------------------------------------------------------------

void

InitGraphObjects()

  {

//Print( "!>740=85..." );



//	03>;>2:8 ?>;59:

   TitlesDisplay.SetParams(0,0,CORNER_LEFT_UPPER);

   for(int k=0; k<3; k++)

     {

      TitlesDisplay.AddTitleObject( WIDTH, HEIGHT, LeftRightBorderShift + 5, UpDownBorderShift + k * 2 + 5, Titles_Array[ k ], TitlesColor, "Arial", FONTSIZE );

      TitlesDisplay.SetAnchor( k, ANCHOR_RIGHT );

     }

   TitlesDisplay.AddTitleObject( WIDTH, HEIGHT, LeftRightBorderShift + 5, UpDownBorderShift + 12, Titles_Array[ 3 ], TitlesColor, "Arial", 10 );

   TitlesDisplay.SetAnchor( 3, ANCHOR_RIGHT );

   for(int k=4; k<6; k++)

     {

      TitlesDisplay.AddTitleObject( WIDTH, HEIGHT, LeftRightBorderShift + 5, UpDownBorderShift + 2 * k + 7, Titles_Array[ k ], TitlesColor, "Arial", FONTSIZE );

      TitlesDisplay.SetAnchor( k, ANCHOR_RIGHT );

     }



//	03>;>2:8 "$:

   for(int k=0; k<timeframes_count; k++)

     {

      TitlesDisplay.AddTitleObject( WIDTH, HEIGHT, LeftRightBorderShift + 5, UpDownBorderShift + k * 2 + 20, TimeFrame_Array[ k ] + "%:", TitlesColor, "Arial", FONTSIZE );

      TitlesDisplay.SetAnchor( 6 + k, ANCHOR_RIGHT );

     }



   ArrayResize(Watches,currencies_count);

   for(int i=0; i<currencies_count; i++)

     {

      //	!>740=85 M;5<5=B0 >B>1@065=8O 4;O >4=>3> 8=AB@C<5=B0:

      Watches[i]=new SymbolWatchDisplay();

      Watches[i].Create(Symbol_Array[i],0,0,WIDTH,HEIGHT,UpDownBorderShift,LeftRightBorderShift+6+i*7,get_currency_color(Symbol_Array[i]),TFs);

      //Print ("Symbol_Array[i] = ",Symbol_Array[i]);

     }

  }

//---------------------------------------------------------------------

//	#40;5=85 3@0D8G5A:8E >1J5:B>2:

//---------------------------------------------------------------------

void

DeleteGraphObjects()

  {

//Print( "#40;5=85..." );



   TitlesDisplay.Clear();

   for(int i=0; i<currencies_count; i++)

     {

      if(CheckPointer(Watches[i])!=POINTER_INVALID)

        {

         //	#40;5=85 M;5<5=B0 >B>1@065=8O 4;O >4=>3> 8=AB@C<5=B0:

         delete( Watches[ i ] );

        }

     }

  }

//---------------------------------------------------------------------

//	1=>2;5=85 48=0<8G5A:>9 8=D>@<0F88:

//---------------------------------------------------------------------

void

RefreshInfo()

  {

   for(int i=0; i<currencies_count; i++)

     {

      Watches[ i ].RefreshSymbolInfo( );

      Watches[ i ].RedrawSymbolInfo( );

     }

  }

//+----------------------------------------------------------------------------+

//|  2B>@    : 8< 3>@L . aka KimIV,  http://www.kimiv.ru                   |

//!  7<5=5=> : Dima S., 2010 3.                                               !

//+----------------------------------------------------------------------------+

//|  5@A8O   : 10.10.2008                                                     |

//|  ?8A0=85 : 5@5=>A ;N1KE A;>2 87 AB@>:8 2 <0AA82                          |

//+----------------------------------------------------------------------------+

//|  0@0<5B@K:                                                                |

//|    st - AB@>:0 A;>2 G5@57 7040==K9 @0745;8B5;L                             |

//|    ad - <0AA82 A;>2                                                        |

//+----------------------------------------------------------------------------+

//|  >72@0B:                                                                  |

//|    >;8G5AB2> M;5<5=B>2 2 <0AA825                                          |

//+----------------------------------------------------------------------------+

int

StringToArrayString(string st,string &ad[],string _delimiter=";")

  {

   int         i=0,np;

   string   stp;



   ArrayResize(ad,0);

   while(StringLen(st)>0)

     {

      np=StringFind(st,_delimiter);

      if(np<0)

        {

         stp= st;

         st = "";

        }

      else

        {

         stp= StringSubstr(st,0,np);

         st = StringSubstr(st,np+1);

        }

      i++;

      ArrayResize(ad,i);

      StringTrimLeft(stp);

      ad[i-1]=stp;

     }



   return( ArraySize( ad ));

  }

//---------------------------------------------------------------------

//	>;CG5=85 F25B0 2 7028A8<>AB8 >B =0720=8O 8=AB@C<5=B0:

//---------------------------------------------------------------------

color

get_currency_color(string _currency)

  {

   int      i;

   for(i=0; i<currencies_count; i++)

     {

      if(StringFind(Symbol_Array[i],_currency)!=-1)

        {

         if(StringFind(_currency,"GOLD")!=-1)

           {

            return( clrGold );

           }

         else if(StringFind(_currency,"XAU")!=-1)

           {

            return( clrGold );

           }

         else if(StringFind(_currency,"JPY")!=-1)

           {

            return( clrNavajoWhite );

           }

         else if(StringFind(_currency,"EUR")!=-1)

           {

            return( clrDeepSkyBlue );

           }

         else if(StringFind(_currency,"GBP")!=-1)

           {

            return( clrDeepSkyBlue );

           }

         else if(StringFind(_currency,"QM")!=-1)

           {

            return( clrBrown );

           }

         else if(StringFind(_currency,"ES")!=-1)

           {

            return( clrLightSalmon );

           }

         else if(StringFind(_currency,"NQ")!=-1)

           {

            return( clrLightSalmon );

           }

         else if(StringFind(_currency,"CHF")!=-1)

           {

            return( clrSpringGreen );

           }

         else if(StringFind(_currency,"CAD")!=-1)

           {

            return( clrSpringGreen );

           }

         else if(StringFind(_currency,"AUD")!=-1)

           {

            return( clrGreenYellow );

           }

         else if(StringFind(_currency,"NZD")!=-1)

           {

            return( clrGreenYellow );

           }



         return( clrSilver );

        }

     }

   return( clrSilver );

  }

//---------------------------------------------------------------------

//	@5>1@07C5B "$ 87 AB@>:8 2 G8A;>:

//---------------------------------------------------------------------

ENUM_TIMEFRAMES

get_timeframe_from_string(string _str)

  {

   if(_str=="M1")

     {

      return( PERIOD_M1 );

     }

   if(_str=="M2")

     {

      return( PERIOD_M2 );

     }

   if(_str=="M3")

     {

      return( PERIOD_M3 );

     }

   if(_str=="M4")

     {

      return( PERIOD_M4 );

     }

   if(_str=="M5")

     {

      return( PERIOD_M5 );

     }

   if(_str=="M6")

     {

      return( PERIOD_M6 );

     }

   if(_str=="M10")

     {

      return( PERIOD_M10 );

     }

   if(_str=="M12")

     {

      return( PERIOD_M12 );

     }

   if(_str=="M15")

     {

      return( PERIOD_M15 );

     }

   if(_str=="M20")

     {

      return( PERIOD_M20 );

     }

   if(_str=="M30")

     {

      return( PERIOD_M30 );

     }

   if(_str=="H1")

     {

      return( PERIOD_H1 );

     }

   if(_str=="H2")

     {

      return( PERIOD_H2 );

     }

   if(_str=="H3")

     {

      return( PERIOD_H3 );

     }

   if(_str=="H4")

     {

      return( PERIOD_H4 );

     }

   if(_str=="H6")

     {

      return( PERIOD_H6 );

     }

   if(_str=="H8")

     {

      return( PERIOD_H8 );

     }

   if(_str=="H12")

     {

      return( PERIOD_H12 );

     }

   if(_str=="D1")

     {

      return( PERIOD_D1 );

     }

   if(_str=="W1")

     {

      return( PERIOD_W1 );

     }

   if(_str=="MN1")

     {

      return( PERIOD_MN1 );

     }



   return( PERIOD_D1 );

  }

//+------------------------------------------------------------------+

Comments