#property copyright "Copyright © 2012, TradeWays"
#property link      "http://www.tradeways.org"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 DeepSkyBlue
#property indicator_style1 STYLE_DOT

int gi_80 = 0;
extern int Start = 6;
extern int End = 0;
extern int Step = 3;
int gi_96 = 0;
double gd_100 = 161.0;
double gd_108 = 200.0;
double gd_116 = 261.0;
int WPR = 38;
int CCI = 30;
int g_applied_price_132 = PRICE_TYPICAL;
int RSI = 34;
int g_applied_price_140 = PRICE_CLOSE;
int gi_144 = 3;
int gi_148 = 195;
extern int Corner = 2;
int ColText = Gold;
int gi_160 = 16748574;
int gi_164 = 255;
int gi_168 = 12632256;
double g_ibuf_172[];
double g_ibuf_176[];
double g_ibuf_180[];
double g_ibuf_184[];
double g_ibuf_188[];
double g_ibuf_192[];
double g_ibuf_196[];
double last_high;
double last_low;
double gd_unused_216;
double gd_224;

int init() {
   gd_100 /= 100.0;
   gd_108 /= 100.0;
   gd_116 /= 100.0;
   f0_1();
   return (0);
}
			 		 		       	   	 		  		  			 	 				  		  		 	 	 				 	  	 	 				 	 	   	 		 	    	  		       		   	   			 	 	  		   		 	   		  	 			 		 	   
int f0_1() {
   IndicatorBuffers(7);
   SetIndexBuffer(0, g_ibuf_172);
   SetIndexBuffer(1, g_ibuf_188);
   SetIndexBuffer(2, g_ibuf_192);
   SetIndexBuffer(3, g_ibuf_196);
   SetIndexBuffer(4, g_ibuf_176);
   SetIndexBuffer(5, g_ibuf_180);
   SetIndexBuffer(6, g_ibuf_184);
   return (0);
}
		 			    		   	  			 	 	     	    				 	     	 			  		    	 	  		  	 		  			 	 				  				 	   		       	 	 		  						 			 		  	 				 	      	 		
int deinit() {
   f0_5("MSFP2_");
   return (0);
}
	   	  				  	  			 				 	 	 					  	 		 	 	 			  		  				     	   				 			 				  	  		      	   	 	 	 	 				  	  	 	       		  	 	 						 	     
void f0_5(string as_0) {
   for (int li_8 = ObjectsTotal() - 1; li_8 >= 0; li_8--)
      if (StringFind(ObjectName(li_8), as_0, 0) == 0) ObjectDelete(ObjectName(li_8));
}
								   	  	    		  		 	    	  				 		 	    			   	 	  		 						 	      		  			 	    				  	 	 	   			   						 				 					 	  	 		  	  	  		 	
int start() {
   bool li_0;
   bool li_4;
   gi_148 = 15;
   int li_8 = Bars - IndicatorCounted();
   for (int li_12 = li_8 - 1; li_12 >= 0; li_12--) {
      g_ibuf_172[li_12] = g_ibuf_172[li_12 + 1];
      g_ibuf_176[li_12] = g_ibuf_176[li_12 + 1];
      g_ibuf_180[li_12] = g_ibuf_180[li_12 + 1];
      g_ibuf_184[li_12] = g_ibuf_184[li_12 + 1];
      g_ibuf_188[li_12] = g_ibuf_188[li_12 + 1];
      g_ibuf_192[li_12] = g_ibuf_192[li_12 + 1];
      g_ibuf_196[li_12] = g_ibuf_196[li_12 + 1];
      li_0 = f0_4(End, gi_80, Start, gi_96, Time[li_12]);
      li_4 = f0_4(End, gi_80, Start, gi_96, Time[li_12 + 1]);
      if (li_0) {
         if (!li_4) {
            last_high = High[li_12];
            last_low = Low[li_12];
            gd_unused_216 = Open[li_12];
         }
         last_high = MathMax(last_high, High[li_12]);
         last_low = MathMin(last_low, Low[li_12]);
      }
      if (!li_0) {
         if (li_4) {
            g_ibuf_172[li_12] = (last_high + last_low) / 2.0;
            gd_224 = last_high - last_low;
            g_ibuf_176[li_12] = last_high - 1.61 * gd_224;
            g_ibuf_180[li_12] = last_high - 2.0 * gd_224;
            g_ibuf_184[li_12] = last_high - 2.61 * gd_224;
            g_ibuf_188[li_12] = last_low + 1.61 * gd_224;
            g_ibuf_192[li_12] = last_low + 2.0 * gd_224;
            g_ibuf_196[li_12] = last_low + 2.61 * gd_224;
         }
      }
   }
   double iwpr_16 = iWPR(NULL, 0, WPR, 0);
   double icci_24 = iCCI(NULL, 0, CCI, g_applied_price_132, 0);
   double irsi_32 = iRSI(NULL, 0, RSI, g_applied_price_140, 0);
   string ls_40 = "";
   string ls_48 = "";
   string ls_56 = "";
   string ls_64 = "";
   int li_72 = gi_168;
   if (iwpr_16 > -50.0 && icci_24 > 0.0 && irsi_32 > 50.0) {
      ls_40 = "";
      li_72 = gi_160;
      if (Step == 1) ls_48 = "PREDICTED PRICE is " + f0_2(g_ibuf_188[0]);
      else {
      if (Step == 2) ls_56 = "PREDICTED PRICE is " + f0_2(g_ibuf_192[0]);
      else
      if (Step == 3) ls_64 = "PREDICTED PRICE is " + f0_2(g_ibuf_196[0]);
      }
   }
   if (iwpr_16 < -50.0 && icci_24 < 0.0 && irsi_32 < 50.0) {
      ls_40 = "";
      li_72 = gi_164;
      if (Step == 1) ls_48 = "PREDICTED PRICE is " + f0_2(g_ibuf_176[0]);
      else {
      if (Step == 2) ls_56 = "PREDICTED PRICE is " + f0_2(g_ibuf_180[0]);
      else
      if (Step == 3) ls_64 = "PREDICTED PRICE is " + f0_2(g_ibuf_184[0]);
      }
   }
   if (Corner == 0 || Corner == 1) {
    //  f0_3("MSFP2_1", gi_144, gi_148, " " + "", Corner, ColText, 8, 0, "Arial", FALSE);
    //  f0_3("MSFP2_2", gi_144, gi_148 + 5, "", Corner, ColText, 8, 0, "Arial", FALSE);
    //  f0_3("MSFP2_3", gi_144, gi_148 + 20, " " + ls_40, Corner, li_72, 8, 0, "Arial", FALSE);
    //  f0_3("MSFP2_4", gi_144, gi_148 + 25, "", Corner, ColText, 8, 0, "Arial", FALSE);
      f0_3("MSFP2_5", gi_144 , gi_148 , " " + ls_48, Corner, ColText, 14, 0, "Calibri", FALSE);
      f0_3("MSFP2_6", gi_144 , gi_148 , " " + ls_56, Corner, ColText, 14, 0, "Calibri", FALSE);
      f0_3("MSFP2_7", gi_144 , gi_148 , " " + ls_64, Corner, ColText, 14, 0, "Calibri", FALSE);
    //  f0_3("MSFP2_8", gi_144, gi_148 + 65, "", Corner, ColText, 8, 0, "Arial", FALSE);
      f0_3("MSFP2_9", gi_144 , gi_148 + 20, "  Target below the last Low at  " + f0_0(gd_224 / Point/10) + "  " + "pips", Corner, White, 9, 0, "Calibri", FALSE);
    //  f0_3("MSFP2_10", gi_144, gi_148 + 85, "", Corner, ColText, 8, 0, "Arial", FALSE);
    //  f0_3("MSFP2_11", gi_144, gi_148 + 100, " " + "", Corner, ColText, 8, 0, "Arial", FALSE);
   } else {
    //  f0_3("MSFP2_1", gi_144, gi_148 + 100, " " + "", Corner, ColText, 8, 0, "Arial", FALSE);
    //  f0_3("MSFP2_2", gi_144, gi_148 + 95, "", Corner, ColText, 8, 0, "Arial", FALSE);
    //  f0_3("MSFP2_3", gi_144, gi_148 + 80, " " + ls_40, Corner, li_72, 8, 0, "Arial", FALSE);
    //  f0_3("MSFP2_4", gi_144, gi_148 + 75, "", Corner, ColText, 8, 0, "Arial", FALSE);
      f0_3("MSFP2_5", gi_144 , gi_148 , " " + ls_48, Corner, ColText, 14, 0, "Calibri", FALSE);
      f0_3("MSFP2_6", gi_144 , gi_148 , " " + ls_56, Corner, ColText, 14, 0, "Calibri", FALSE);
      f0_3("MSFP2_7", gi_144 , gi_148 , " " + ls_64, Corner, ColText, 14, 0, "Calibri", FALSE);
    //  f0_3("MSFP2_8", gi_144, gi_148 + 35, "", Corner, ColText, 8, 0, "Arial", FALSE);
      f0_3("MSFP2_9", gi_144 , gi_148 + 20, "  Target above the last High at " + f0_0(gd_224 / Point/10) + "  " + "pips", Corner, White, 9, 0, "Calibri", FALSE);
    //  f0_3("MSFP2_10", gi_144, gi_148 + 15, "", Corner, ColText, 8, 0, "Arial", FALSE);
    //  f0_3("MSFP2_11", gi_144, gi_148, " " + "", Corner, ColText, 8, 0, "Arial", FALSE);
   }
   return (0);
}
		 		 		  		 		   				 		    	 	   		  		    	 				    	   	  				  		    				 					 	  		 	 		 	    				 	 	 							 	 		 				  					 	      	 	
string f0_0(double ad_0) {
   return (DoubleToStr(ad_0, 0));
}
			 	 		     		     		 		 		 	 	  	 	  		 		 	 			 	   	  	   								      		 			   	  			  		 	 		 				  		 				  	 	 			 			  	  		 	  		  	 	
string f0_2(double ad_0) {
   return (DoubleToStr(ad_0, Digits));
}
				 	     		  	   	  	 	 	 	 	   		 		 	 	 	 	 		  			   				  			   		   	  	 		 		 							  		 	 	   	    	  		 	 	 					   	 	 	  	   	 		 		
   void f0_3(string a_name_0, int a_x_8, int a_y_12, string a_text_16, int a_corner_24 = 0, color a_color_28 = 255, int a_fontsize_32 = 8, 
   int a_window_36 = 0, string a_fontname_40 = "Arial", bool a_bool_48 = FALSE)
{
   if (ObjectFind(a_name_0) != a_window_36) ObjectCreate(a_name_0, OBJ_LABEL, a_window_36, 0, 0);
   ObjectSet(a_name_0, OBJPROP_XDISTANCE, a_x_8);
   ObjectSet(a_name_0, OBJPROP_YDISTANCE, a_y_12);
   ObjectSetText(a_name_0, a_text_16, a_fontsize_32, a_fontname_40, a_color_28);
   ObjectSet(a_name_0, OBJPROP_BACK, a_bool_48);
   ObjectSet(a_name_0, OBJPROP_CORNER, a_corner_24);
}
	 	 		 	 	       	  	 						  		 		 								  			  	 			 		  	 		 			 	  	  	 			     	 	 	     				   			 			 		   		  	 	 	       	 		 			 	  	
int f0_4(int ai_0, int ai_4, int ai_8, int ai_12, int ai_16) {
   int li_20 = 3600 * ai_0 + 60 * ai_4;
   int li_24 = 3600 * ai_8 + 60 * ai_12;
   int li_28 = ai_16 - 86400 * (ai_16 / 86400);
   if (li_20 <= li_24) {
      if (!(li_28 >= li_20 && li_28 < li_24)) return (0);
      return (1);
   }
   if (li_28 >= li_20 || li_28 < li_24) return (1);
   return (0);
}