Navigation:Home > Content >

ATR_HiLo_Channel_Arrows_TT__2.mq4

Time: 2014-11-10 | Download file:ATR_HiLo_Channel_Arrows_TT__2.mq4

//*** Bear-SPb == Да, он перерисовывает только стрелки. Но это компенсируется уменьшив канал. На скрине он завышен. По факту, я использую более узкий диапазон.  +
//*** Ключевые параметры, я считаю: период и дистанция. для Н1 == период - 5 && дистанция - 0,62.                                                                +
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/////////////////// 01.11.2015 - проверка/шлифовка zhserg ////////////////////
//////////////////////////////////////////////////////////////////////////////
////////////////////////// ATR HiLo Channel Arrows TT ////////////////////////  
//////////////////////////////////////////////////////////////////////////////

#property copyright "Copyright ©  november 2015, http://forexsystems.ru/" 
#property link "http://forexsystemsru.com/indikatory-foreks-f41/" 
#property description "Построение канала по High && Low цены с расширением по ATR. Стрелки перерисовываются!" 
#property strict 
#property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 6

#property indicator_color1 RoyalBlue       //DodgerBlue
#property indicator_color2 Crimson         //OrangeRed
#property indicator_color3 LightSteelBlue  //White
#property indicator_color4 LightSteelBlue  //White
#property indicator_color5 DodgerBlue     //White
#property indicator_color6 Red            //Red

#property indicator_width1 2
#property indicator_width2 2

#property indicator_style3 STYLE_DOT
#property indicator_style4 STYLE_DOT

//// __ все настройки установлены по умолчанию как в версии at_ZDn 3_arrows.mq4 __ \\\\

extern ENUM_TIMEFRAMES TimeFrame=PERIOD_CURRENT;
input int    p        = 10;    // Период
input int    s        = 5;     // Угол наклона
input double distance = 2.0;   // Ширина канала
input bool   showBb   = true;  // Границы канала
input bool   showCl   = true;  // Центральная линия
input int    barsig   = 1;     // Сигнальная свеча (номер)
input int    arrots   = 30;    // Стрелка (отступ)
input int    arrsz    = 1;     // Стрелка (размер)
input int    ATR      = 1000;  // Период ATR
input int    cb       = 1000;  // Сколько свечей в истории


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
double fx1[],fx2[],hp[];
double z1,z2,ki;
int fs;

double upper[],lower[];
double upar[],dnar[];
string indicatorFileName;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- indicator buffers mapping
IndicatorBuffers(7);
SetIndexBuffer(0,fx1);
SetIndexBuffer(1,fx2);
SetIndexBuffer(2,lower);
SetIndexBuffer(3,upper);
SetIndexBuffer(4,upar);
SetIndexBuffer(5,dnar);
SetIndexBuffer(6,hp);

SetIndexStyle (4,DRAW_ARROW,0,arrsz);
SetIndexArrow (4,182);
SetIndexStyle (5,DRAW_ARROW,0,arrsz);
SetIndexArrow (5,182);

   if(showBb)
   {SetIndexStyle(2,DRAW_LINE);
    SetIndexStyle(3,DRAW_LINE);
   }
   else
   {SetIndexStyle(2,DRAW_NONE);
    SetIndexStyle(3,DRAW_NONE);
   }
   
    if(showCl)
   {SetIndexStyle(0,DRAW_LINE);
    SetIndexStyle(1,DRAW_LINE);
   }
   else
   {SetIndexStyle(0,DRAW_NONE);
    SetIndexStyle(1,DRAW_NONE);
   }

SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);

//---
   indicatorFileName=WindowExpertName();
   TimeFrame=MathMax(TimeFrame,_Period);
   return(INIT_SUCCEEDED);
  }
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int i;
   
      if (TimeFrame!=_Period)
      {
         for (i=MathMin(cb,Bars-1); i>=0; i--)
         {
            int y = iBarShift(NULL,TimeFrame,Time[i]);
            int x = y; if (i=0; i--) {fx1[i]=Close[i];}

for (int m=0; m<=s; m++)
{
z1=fx1[0];
for (i=0; i<=cb; i++) {z1=z1+(fx1[i]-z1)*ki; hp[i]=z1;}

z2=fx1[cb];
for (i=cb; i>=0; i--) {z2=z2+(fx1[i]-z2)*ki; fx1[i]=(hp[i]+z2)/2;}
}

fs=0;
for (i=cb; i>=0; i--)
{
if (fx1[i]>fx1[i+1]) fs=1;
if (fx1[i]upper[i+barsig])
 dnar[i] = High[i]+arrots*Point; else dnar[i] = EMPTY_VALUE;
 
if(Close[i+1+barsig]>lower[i+1+barsig] && Close[i+barsig]        

Recommend