//+------------------------------------------------------------------+ //| 2Graphs.mq4 | //| Copyright © 2009, Áóãàåâ Äàíèèë Âëàäèìèðîâè÷ | //| e-mail: buga1922@mail.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, Áóãàåâ Äàíèèë Âëàäèìèðîâè÷" #property link "mailto:buga1922@mail.ru" #property indicator_separate_window #property indicator_minimum -0.1 #property indicator_maximum 10.1 extern string symbol1="EURUSD"; extern string symbol2="USDCHF"; extern string s_period1="0"; extern string s_period2="0"; extern bool din_shirina=true; int period1, period2; double max_high1,max_high2, min_low1=10000,min_low2=10000; int j; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int PROVERKA(string s_period) { if ( ( s_period == "0" ) || (s_period == "" ) ) { return(Period()); } else { if ( ( s_period == "M1" ) || (s_period == "m1" ) ) { return(1); } else { if ( ( s_period == "M5" ) || (s_period == "m5" ) ) { return(5); } else { if ( ( s_period == "M15" ) || (s_period == "m15" ) ) { return(15); } else { if ( ( s_period == "M30" ) || (s_period == "m30" ) ) { return(30); } else { if ( ( s_period == "H1" ) || (s_period == "h1" ) ) { return(60); } else { if ( ( s_period == "H4" ) || (s_period == "h4" ) ) { return(240); } else { if ( ( s_period == "D1" ) || (s_period == "d1" ) ) { return(1440); } else { if ( ( s_period == "W1" ) || (s_period == "w1" ) ) { return(10080); } else { if ( ( s_period == "MN" ) || (s_period == "mn" ) || (s_period == "Mn" ) || (s_period == "mN" ) ) { return(43200); } else { return(-1); } } } } } } } } } } } double MASHTAB1(string symbol, int period, int lag) { if ( max_high1 < iHigh(symbol,period,lag) ) max_high1 = iHigh(symbol,period,lag); if ( min_low1 > iLow(symbol,period,lag) ) min_low1 = iLow(symbol,period,lag); return(10/(max_high1-min_low1)); } double MASHTAB2(string symbol, int period, int lag) { if ( max_high2 < iHigh(symbol,period,lag) ) max_high2 = iHigh(symbol,period,lag); if ( min_low2 > iLow(symbol,period,lag) ) min_low2 = iLow(symbol,period,lag); return(10/(max_high2-min_low2)); } void UROVNI() { int i; for ( i=0; i<=10; i++) { ObjectCreate ( "uroven"+i, OBJ_HLINE, 1, 1, i ); ObjectSet ( "uroven"+i, OBJPROP_COLOR, Silver ); ObjectSet ( "uroven"+i, OBJPROP_STYLE, STYLE_DOT ); } ObjectCreate ("razdel", OBJ_VLINE, 1, Time[WindowFirstVisibleBar( )-WindowBarsPerChart() /2] ,0); ObjectCreate ("valuta1", OBJ_LABEL, 1, 0, 0); ObjectSetText("valuta1",symbol1+"_"+s_period1,8,"Arial", Gray); ObjectSet("valuta1",OBJPROP_CORNER, 0);// Óãîë ïðèâÿçêè ObjectSet("valuta1",OBJPROP_XDISTANCE,15);// Êîîðäèíàòà Õ ObjectSet("valuta1",OBJPROP_YDISTANCE,15);// Êîîðäèíàòà Y ObjectCreate ("valuta2", OBJ_LABEL, 1, 0, 0); ObjectSetText("valuta2",symbol2+"_"+s_period2,8,"Arial", Gray); ObjectSet("valuta2",OBJPROP_CORNER, 1);// Óãîë ïðèâÿçêè ObjectSet("valuta2",OBJPROP_XDISTANCE,15);// Êîîðäèíàòà Õ ObjectSet("valuta2",OBJPROP_YDISTANCE,15);// Êîîðäèíàòà Y } int SHIRINA_TELA() { if ( WindowBarsPerChart() > 300 ) { return(1); } else { if ( WindowBarsPerChart() > 150 ) { return(3); } else { if ( WindowBarsPerChart() > 70 ) { return(5); } else { if ( WindowBarsPerChart() > 35 ) { return(9); } else { return(13); } } } } } void SVECHA(string symbol, int period, int lag_k, int lag_p, double k, double min_low) { ObjectCreate ( "shade"+symbol+lag_p, OBJ_TREND, 1, Time[lag_p], ( iHigh (symbol,period,lag_k) - min_low )*k, Time[lag_p], ( iLow (symbol,period,lag_k) - min_low )*k); ObjectCreate ( "telo"+symbol+lag_p, OBJ_TREND, 1, Time[lag_p], ( iOpen (symbol,period,lag_k) - min_low )*k, Time[lag_p], ( iClose(symbol,period,lag_k) - min_low )*k); ObjectSet ( "telo"+symbol+lag_p, OBJPROP_RAY,false); ObjectSet ( "shade"+symbol+lag_p, OBJPROP_RAY,false); if ( din_shirina == true ) { ObjectSet ( "telo"+symbol+lag_p, OBJPROP_WIDTH, SHIRINA_TELA() ); } else { ObjectSet ( "telo"+symbol+lag_p, OBJPROP_WIDTH, 3); } if ( iOpen(symbol,period,lag_k) < iClose(symbol,period,lag_k) ) { ObjectSet ( "telo"+symbol+lag_p, OBJPROP_COLOR,Red); ObjectSet ( "shade"+symbol+lag_p, OBJPROP_COLOR,Red); } else { ObjectSet ( "telo"+symbol+lag_p, OBJPROP_COLOR,Black); ObjectSet ( "shade"+symbol+lag_p, OBJPROP_COLOR,Black); } } int init() { period1=PROVERKA(s_period1); period2=PROVERKA(s_period2); //if ( ( period1==-1 ) || ( period2==-1 ) ) Comment("error"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void DELETE() { int i; ObjectDelete("razdel"); for ( i=( WindowFirstVisibleBar()-1 ); i>=( WindowFirstVisibleBar()-WindowBarsPerChart()/2+1 ); i--) { ObjectDelete("telo"+symbol1+i); ObjectDelete("shade"+symbol1+i); } for ( i=( WindowFirstVisibleBar()-WindowBarsPerChart()+2 ); i<=( WindowFirstVisibleBar()-WindowBarsPerChart()/2-1 ); i++) { ObjectDelete("telo"+symbol2+i); ObjectDelete("shade"+symbol2+i); } } int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i,travel1,travel2,vsego,first; double k1,k2; if (j!=Time[0]) { j=Time[0]; DELETE(); UROVNI(); vsego=WindowBarsPerChart( ); first=WindowFirstVisibleBar( ); max_high1=0;max_high2=0; min_low1=10000;min_low2=10000; for ( i=( WindowFirstVisibleBar()-WindowBarsPerChart()+3 ); i<=( WindowFirstVisibleBar()-WindowBarsPerChart()/2 ); i++) { k1=MASHTAB1(symbol1,period1,i); k2=MASHTAB2(symbol2,period2,i); } for ( i=( WindowFirstVisibleBar()-WindowBarsPerChart()+3 ); i<=( WindowFirstVisibleBar()-WindowBarsPerChart()/2 ); i++) { SVECHA( symbol1, period1, i, first-WindowBarsPerChart( )/2+2, k1, min_low1); SVECHA( symbol2, period2, i, first-WindowBarsPerChart( )+2 , k2, min_low2); first++; } } } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains open time of each bar
Series array that contains close prices for each bar
Series array that contains open prices of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: