Code: Select all
//+------------------------------------------------------------------+
//| TRO_DYNAMICFIBSSR.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 DarkSeaGreen
#property indicator_color4 Khaki
#property indicator_color5 Gray
#property indicator_color6 Khaki
#property indicator_color7 DarkSeaGreen
//---- input parameters
extern bool bDrawFibs = false;
extern int iDecimals =4;
extern int iPeriods=5;
extern double iLevel1=0.24;
extern double iLevel2=0.382;
extern double iLevel3=0.5;
extern double iLevel4=0.618;
extern double iLevel5=0.76;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
//----- internal vars
double Dynamic_77 = 0;
double Dynamic_61 = 0;
double Dynamic_50 = 0;
double Dynamic_38 = 0;
double Dynamic_23 = 0;
double Dynamic_R = 0;
double Dynamic_S = 0;
double OldDynamic_R = 0;
double OldDynamic_S = 0;
double PrevDynamic_R = 0;
double PrevDynamic_S = 0;
/*
var xHH_CL = 0 ;
var xCL_LL = 0 ;
var xLgEntry = 0 ;
var xShEntry = 0
*/
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,161);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,161);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(1,0.0);
SetIndexStyle(2,DRAW_ARROW);
SetIndexArrow(2,161);
SetIndexBuffer(2,ExtMapBuffer3);
SetIndexEmptyValue(2,0.0);
SetIndexStyle(3,DRAW_ARROW);
SetIndexArrow(3,161);
SetIndexBuffer(3,ExtMapBuffer4);
SetIndexEmptyValue(3,0.0);
SetIndexStyle(4,DRAW_ARROW);
SetIndexArrow(4,161);
SetIndexBuffer(4,ExtMapBuffer5);
SetIndexEmptyValue(4,0.0);
SetIndexStyle(5,DRAW_ARROW);
SetIndexArrow(5,161);
SetIndexBuffer(5,ExtMapBuffer6);
SetIndexEmptyValue(5,0.0);
SetIndexStyle(6,DRAW_ARROW);
SetIndexArrow(6,161);
SetIndexBuffer(6,ExtMapBuffer7);
SetIndexEmptyValue(6,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars < 0)
return(-1);
//----
for (int j =0;j<=300; j++){
if(TimeDay(Time[j])!=TimeDay(Time[j+1])) {
PrevDynamic_R =0;
PrevDynamic_S =0;
// Dynamic_R = High[j+1];
// Dynamic_S = Low[j+1];
}
else {
int xHH = ArrayMaximum(High,iPeriods, j ); // dynamic Resistance array index
int xLL = ArrayMinimum(Low, iPeriods, j ); // dynamic Suport array index
Dynamic_R = High[xHH];
Dynamic_S = Low[xLL];
if ( (PrevDynamic_R !=0) && (PrevDynamic_R > Dynamic_R) && (Dynamic_R != High[j]) ) Dynamic_R = PrevDynamic_R;
if ( (PrevDynamic_S !=0) && (PrevDynamic_S < Dynamic_S) && (Dynamic_S != Low[j]) ) Dynamic_S = PrevDynamic_S;
}
double Range = Dynamic_R-Dynamic_S;
Print ("Dynamic S ", Dynamic_S, " Dynamic R", Dynamic_R);
int i,xM;
for(i=j; i<=j*iPeriods+xHH; i++)
ExtMapBuffer1[i] = Dynamic_R;
for(i=j; i<=j*iPeriods+xLL; i++)
ExtMapBuffer2[i] = Dynamic_S;
if (bDrawFibs){
if (xHH>xLL) xM = xLL;
else xM = xHH;
for (i=0; i<=xM; i++)
{
ExtMapBuffer3[j] = Dynamic_R - Range*iLevel1;
ExtMapBuffer4[j] = Dynamic_R - Range*iLevel2;
ExtMapBuffer5[j] = Dynamic_R - Range*iLevel3;
ExtMapBuffer6[j] = Dynamic_R - Range*iLevel4;
ExtMapBuffer7[j] = Dynamic_R - Range*iLevel5;
}
}
// PrevDynamic_R = Dynamic_R;
// PrevDynamic_S = Dynamic_S;
}
//----
return(0);
}
//+------------------------------------------------------------------+