TRUE Forex

Просмотр кода форекс индикатора !!! Fractal.Arrow.mq4

яю//+------------------------------------------------------------------+

//|                                                    iFractals.mq4 |

//|                                        Copyright © 2008, lotos4u |

//|                                                lotos4u@gmail.com |

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

#property copyright "Copyright © 2008, lotos4u"

#property link      "lotos4u@gmail.com"



#property indicator_chart_window

#property indicator_buffers 6



#property indicator_width1 1

#property indicator_width2 1

#property indicator_width3 2

#property indicator_width4 2

#property indicator_width5 1

#property indicator_width6 1



#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_color3 Red

#property indicator_color4 Lime

#property indicator_color5 White

#property indicator_color6 White





extern int LeftBars  = 55;

extern int RightBars = 55;





double LineUpBuffer1[];

double LineDownBuffer2[];

double ArrowUpBuffer3[];

double ArrowDownBuffer4[];

double ArrowBreakUpBuffer5[];

double ArrowBreakDownBuffer6[];



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

//| Custom indicator initialization function                         |

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

int init()

{

   SetIndexStyle(0, DRAW_LINE);

   SetIndexArrow(0, 218);

   SetIndexBuffer(0, LineUpBuffer1);

   SetIndexEmptyValue(0, 0.0);

   SetIndexLabel(0, "$@0:B0;L=>5 A>?@>B82;5=85");

   

   SetIndexStyle(1, DRAW_LINE);

   SetIndexArrow(1, 217);

   SetIndexBuffer(1, LineDownBuffer2);

   SetIndexEmptyValue(1, 0.0);

   SetIndexLabel(1, "$@0:B0;L=0O ?>445@6:0");



   SetIndexStyle(2, DRAW_ARROW);

   SetIndexArrow(2, 218);

   //SetIndexArrow(2, 218);

   SetIndexBuffer(2, ArrowUpBuffer3);

   SetIndexEmptyValue(2, 0.0);

   SetIndexLabel(2, "$@0:B0;  %");

   

   SetIndexStyle(3, DRAW_ARROW);

   SetIndexArrow(3, 217);

   //SetIndexArrow(3, 217);

   SetIndexBuffer(3, ArrowDownBuffer4);

   SetIndexEmptyValue(3, 0.0);

   SetIndexLabel(3, "$@0:B0; ");



   SetIndexStyle(4, DRAW_ARROW);

   SetIndexArrow(4, 119);

   //SetIndexArrow(4, 217);

   SetIndexBuffer(4, ArrowBreakUpBuffer5);

   SetIndexEmptyValue(4, 0.0);

   SetIndexLabel(4, "@>1>9  %");

   

   SetIndexStyle(5, DRAW_ARROW);

   SetIndexArrow(5, 119);

   //SetIndexArrow(5, 218);

   SetIndexBuffer(5, ArrowBreakDownBuffer6);

   SetIndexEmptyValue(5, 0.0);

   SetIndexLabel(5, "@>1>9 ");



   return(0);

}





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

//| Custom indicator deinitialization function                       |

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

int deinit(){return(0);}







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

//| Custom indicator iteration function                              |

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

int start()

{

   int counted_bars = IndicatorCounted(), limit;

   if(counted_bars > 0) 

       counted_bars--;

   limit = Bars; // - counted_bars;



   for(int i = limit-1; i >= 0; i--)

   {

      LineUpBuffer1[i] = isFractalUp(i, LeftBars, RightBars);

      if(LineUpBuffer1[i] == 0)

         LineUpBuffer1[i] = LineUpBuffer1[i+1];

      else

         ArrowUpBuffer3[i] = LineUpBuffer1[i];

      

      LineDownBuffer2[i] = isFractalDown(i, LeftBars, RightBars);

      if(LineDownBuffer2[i] == 0)

         LineDownBuffer2[i] = LineDownBuffer2[i+1];

      else

         ArrowDownBuffer4[i] = LineDownBuffer2[i];

         

      if(Close[i] < LineDownBuffer2[i] && Close[i+1] >= LineDownBuffer2[i+1])

         ArrowBreakDownBuffer6[i] = Close[i];

   }

   LineUpBuffer1[-1] = LineUpBuffer1[0];

   LineDownBuffer2[-1] = LineDownBuffer2[0];

   return(0);

}











double isFractalUp(int index, int lBars, int rBars)

{

   int left = lBars, right = rBars;

   double max = High[index]; //@8=8<05< 70 <0:A8<C< 7=0G5=85 %0O 8AA;54C5<>3> 10@0

   for(int i = index - right; i <= (index + left); i++)

   {

      if(!(High[i] > 0.0))return(0);

      //if(max <= High[i] && i != index)

      if(max < High[i] && i != index)

      {

         if(max < High[i])

            return(0);

         if(MathAbs(i - index) > 1)

            return(0);

      }

   }

   return(max);

}









double isFractalDown(int index, int lBars, int rBars)

{

   int left = lBars, right = rBars;

   double min = Low[index],test;

   for(int i = index - right; i <= (index + left); i++)

   {

      if(!(Low[i] > 0.0))return(0);

      //if(min >= Low[i] && i != index)

      if(min > Low[i] && i != index)

      {

         if(min > Low[i])

            return(0);



         if(MathAbs(i - index) > 1)

            return(0);

      }



   }

   return(min);

}

Комментарии к исходному коду форекс индикатора !!! Fractal.Arrow.mq4
В целях безопасности и борьбы со спамом в тексте комментариев запрещено размещать html-теги и ссылки. Благодарим за понимание.

  • X
  • 0% загружено
« индикатор !!! 27-23 Rule.mq4
индикатор !!!-MT4 SEMAFOR.mq4 »