Author: Copyright � 2010, Sautkin Vladimir
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
Fan_v1_0
//+------------------------------------------------------------------+
//|                                                    Fan_v1.0.mq4  |
//|                              Copyright © 2010, Sautkin Vladimir  |
//|                                                 sly_fox@list.ru  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Sautkin Vladimir"
#property link      "sly_fox@list.ru"
//--------------------------------------------------------------------
// Ïðè öâåòå Lime    âååð ðàñêðûò è ðàñøèðÿåòñÿ
// Ïðè öâåòå Green   âååð ðàñêðûò è ñóæàåòñÿ
// Ïðè öâåòå Yellow  âååð ïåðåïëåòåí è ðàñøèðÿåòñÿ
// Ïðè öâåòå Orange  âååð ïåðåïëåòåí è ñóæàåòñÿ
// Öâåò Red âçâåøåííîå èçìåíåíèå öåíû
//--------------------------------------------------------------------
#property indicator_separate_window
#property indicator_level1	0
#property indicator_levelcolor	Silver
#property indicator_levelwidth	0
#property indicator_levelstyle	2
#property indicator_buffers 5
#property indicator_color1  Lime
#property indicator_color2  Green 
#property indicator_color3 Yellow 
#property indicator_color4 Orange 
#property indicator_color5 Red

extern int period_1   = 1;
extern int period_2   = 25;
extern int period_3   = 50;
extern int period_4   = 75;
extern int period_5   = 100;
extern int period_6   = 150;
extern int period_7   = 200;
extern int width      = 1;
extern int TF         = 0;

double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double Buffer5[];
//------------------------------------------------------------------
int init()
  {
   if(TF<Period()) TF=0;
   if(TF!=0) TF=next_period(TF);

   SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,2);
   SetIndexBuffer(0,Buffer1);
   SetIndexLabel(0,"Âååð"+string_per(TF));

   SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,2);
   SetIndexBuffer(1,Buffer2);
   SetIndexLabel(1,"Âååð"+string_per(TF));

   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,2);
   SetIndexBuffer(2,Buffer3);
   SetIndexLabel(2,"Âååð"+string_per(TF));

   SetIndexStyle(3,DRAW_HISTOGRAM,EMPTY,2);
   SetIndexBuffer(3,Buffer4);
   SetIndexLabel(3,"Âååð"+string_per(TF));

   SetIndexStyle(4,DRAW_LINE,EMPTY,width);
   SetIndexBuffer(4,Buffer5);
   SetIndexLabel(4,"Âååð"+string_per(TF));

   IndicatorShortName("Âååð "+string_per(TF));
   return(0);
  }
//--------------------------------------------------------------
int start()
  {
   int    i,bar,limit;
   double DeltaMA1,DeltaMA2,DeltaMA3,DeltaMA4,DeltaMA5,DeltaMA6;
   double MA_1,MA_2,MA_3,MA_4,MA_5,MA_6,MA_7;
   double DL,DeltaFan;

   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if(counted_bars==0) limit-=1+1;

   for(i=limit; i>0; i--)
     {
      bar=iBarShift(NULL,TF,Time[i],false);
      MA_1 = iMA(NULL,TF,period_1,0,MODE_EMA,PRICE_CLOSE,bar);
      MA_2 = iMA(NULL,TF,period_2,0,MODE_EMA,PRICE_CLOSE,bar);
      MA_3 = iMA(NULL,TF,period_3,0,MODE_EMA,PRICE_CLOSE,bar);
      MA_4 = iMA(NULL,TF,period_4,0,MODE_EMA,PRICE_CLOSE,bar);
      MA_5 = iMA(NULL,TF,period_5,0,MODE_EMA,PRICE_CLOSE,bar);
      MA_6 = iMA(NULL,TF,period_6,0,MODE_EMA,PRICE_CLOSE,bar);
      MA_7 = iMA(NULL,TF,period_7,0,MODE_EMA,PRICE_CLOSE,bar);
      DeltaMA1 = MA_1 - MA_2;
      DeltaMA2 = MA_1 - MA_3;
      DeltaMA3 = MA_1 - MA_4;
      DeltaMA4 = MA_1 - MA_5;
      DeltaMA5 = MA_1 - MA_6;
      DeltaMA6 = MA_1 - MA_7;

      DL=Buffer1[i+1]+Buffer2[i+1]+Buffer3[i+1]+Buffer4[i+1];
      DeltaFan=DeltaMA6-DeltaMA1;

      Buffer1[i]=0;
      Buffer2[i]=0;
      Buffer3[i]=0;
      Buffer4[i]=0;

      if(DeltaFan==DL)
        {
         Buffer1[i]=Buffer1[i+1];
         Buffer2[i]=Buffer2[i+1];
         Buffer3[i]=Buffer3[i+1];
         Buffer4[i]=Buffer4[i+1];
        }
      else
         if((MA_2>MA_3 && MA_3>MA_4 && MA_4>MA_5 && MA_5>MA_6 && MA_6>MA_7) || 
            (MA_2<MA_3 && MA_3<MA_4 && MA_4<MA_5 && MA_5<MA_6 && MA_6<MA_7))
            if((DeltaFan>DL && DeltaFan>0) || (DeltaFan<DL && DeltaFan<0))
               Buffer1[i]=DeltaFan;
      else
         Buffer2[i]=DeltaFan;
      else
      if((DeltaFan>DL && DeltaFan>0) || (DeltaFan<DL && DeltaFan<0))
         Buffer3[i]=DeltaFan;
      else
         Buffer4[i]=DeltaFan;

      Buffer5[i]=(DeltaMA1+DeltaMA2+DeltaMA3+DeltaMA4+DeltaMA5+DeltaMA6)/6;

     }
   return(0);
  }
//------------------------------------------------------------------
string string_per(int per)
  {
   if(per == 0) per=Period();
   if(per == 1)     return(" M1 ");
   if(per == 5)     return(" M5 ");
   if(per == 15)    return(" M15 ");
   if(per == 30)    return(" M30 ");
   if(per == 60)    return(" H1 ");
   if(per == 240)   return(" H4 ");
   if(per == 1440)  return(" D1 ");
   if(per == 10080) return(" W1 ");
   if(per == 43200) return(" MN1 ");
   return("Îøèáêà ïåðèîäà");
  }
//------------------------------------------------------------------
int next_period(int per)
  {
   if(per > 43200)  return(0);
   if(per > 10080)  return(43200);
   if(per > 1440)   return(10080);
   if(per > 240)    return(1440);
   if(per > 60)     return(240);
   if(per > 30)     return(60);
   if(per > 15)     return(30);
   if(per > 5)      return(15);
   if(per > 1)      return(5);
  }
//==================================================================

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---