//+------------------------------------------------------------------+ //| Created by Ronald Verwer. | //| Predict.mq4 | //| Copyright; 2006 © by Ronald Verwer/ROVERCOM | //+------------------------------------------------------------------+ #property copyright "Copyright 2006 © Ronald Verwer / ROVERCOM" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Blue #property indicator_color2 Magenta #property indicator_color3 Orange #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 2 extern int BuyLevel = 56; extern int SellLevel = 56; extern bool Use_Single_Arrows = false;//true; double Up[]; double Dn[]; double Fl[]; double Drctn[]; //+------------------------------------------------------------------+ //| Indicator Initialization Function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(4); SetIndexStyle(0,DRAW_ARROW,0,2); SetIndexArrow(0,233); SetIndexStyle(1,DRAW_ARROW,0,2); SetIndexArrow(1,234); SetIndexStyle(2,DRAW_ARROW,0,2); SetIndexArrow(2,159); SetIndexBuffer(0,Up); SetIndexBuffer(1,Dn); SetIndexBuffer(2,Fl); SetIndexBuffer(3,Drctn); IndicatorShortName("Prediction"); SetIndexLabel(0,"Up"); SetIndexLabel(1,"Dn"); SetIndexLabel(2,"Flat"); //---- SetIndexDrawBegin(0,10); SetIndexDrawBegin(1,10); SetIndexDrawBegin(2,10); //---- return(0); } //+------------------------------------------------------------------+ //| Indicator De-Initialization Function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| EMA_Levels | //+------------------------------------------------------------------+ int start() { int i,limit; double D1,D2,Pr; string Txt; int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(i=limit;i>=0;i--) { Up[i] = EMPTY_VALUE; Dn[i] = EMPTY_VALUE; Fl[i] = EMPTY_VALUE; D1=(Close[i+1]+Close[i+2])/2; D2=(Close[i+1]+Close[i+2]+Close[i+3]+Close[i+4]+Close[i+5])/5; if(Close[i+1]!=0) Pr=((MathAbs(D1-D2)/Close[i+1]*125.75 + 0.54528)*10000)/100; if(D1>D2 && Pr>BuyLevel) { Drctn[i] = 1; if(Drctn[i] != Drctn[i+1] || !Use_Single_Arrows) Up[i] = Low[i] - 4 * Point; } else if(D1SellLevel) { Drctn[i] = -1; if(Drctn[i] != Drctn[i+1] || !Use_Single_Arrows) Dn[i] = High[i] + 4 * Point; } else if(Pr>50 && Pr<60) { Drctn[i] = 0; if(Drctn[i+1]==1) Fl[i] = Low[i] - 4 * Point; else if(Drctn[i+1]==-1) Fl[i] = High[i] + 4 * Point; } else Drctn[i] = 0; } if(Drctn[0]==-1) Txt="Short"; else if(Drctn[0]==1) Txt="Long"; else Txt="Flat"; Comment("Predictions: Pr = "+DoubleToStr(Pr,3)+" ; Current Signal = "+Txt); return(0); } //----