MA_SquizeMA_E_mtf

Author: Kalenzo
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
MA_SquizeMA_E_mtf
//+------------------------------------------------------------------+
//| Squize_MA_E_mtf                                    Squize_MA.mq4 |
//| mtf:ForexTSD.com 2007                                    Kalenzo |
//|                                      bartlomiej.gorski@gmail.com |
//+------------------------------------------------------------------+
//mladen's formula   ki 
#property copyright "Kalenzo"
#property link      "bartlomiej.gorski@gmail.com"
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Yellow
#property indicator_color4 Goldenrod
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2

double upma[];
double dnma[];
double SqLup[]; 
double SqLdn[]; 

extern int MAsThresHold = 5;
//extern color MA1_Color=Blue;       // ma colors (int.tab) - 4 referece only
extern int Ma1Period = 5;
extern int Ma1Type = MODE_EMA;
extern int Ma1Price = PRICE_CLOSE;
//extern color MA2_Color=Red;         // ma colors (int.tab) - 4 referece only
extern int Ma2Period = 21;
extern int Ma2Type = MODE_EMA;
extern int Ma2Price = PRICE_CLOSE;

extern int     TimeFrame = 0;
extern string  note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern string   note_MA_Type    = "SMA0 EMA1 SMMA2 LWMA3";
extern string   note_Price      = "0C 1O 2H 3L 4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";

string IndicatorFileName;

#property indicator_chart_window

//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,upma);
   SetIndexBuffer(1,dnma);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(2,SqLup);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(3,SqLdn);
   SetIndexStyle(3,DRAW_LINE);
   
   SetIndexLabel(0,"SqMA1("+Ma1Period+")["+TimeFrame+"]");
   SetIndexLabel(1,"SqMA2("+Ma2Period+")["+TimeFrame+"]");
   SetIndexLabel(2,"SqMA Env("+MAsThresHold+")("+Ma1Period+","+Ma2Period+")["+TimeFrame+"]");
   SetIndexLabel(3,"SqMA Env("+MAsThresHold+")("+Ma1Period+","+Ma2Period+")["+TimeFrame+"]");

//----
   IndicatorShortName("SquizeMA ("+Ma1Period+","+Ma2Period+")["+TimeFrame+"] ");
   TimeFrame =MathMax(TimeFrame, Period());
   IndicatorFileName = WindowExpertName();



   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
//----

   return(0);
  }

//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   if(counted_bars < 0) return(-1);
   if(counted_bars>0) counted_bars--;

   int      limit,i;
   limit = Bars-counted_bars;
   if (TimeFrame != Period())
       {
         limit = MathMax(limit,TimeFrame/Period());
         datetime TimeArray[];
         ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
           
           for(i=0,int y=0; i<limit; i++)
           {
              if(Time[i]<TimeArray[y]) y++;
              
         upma  [i] = iCustom(NULL,TimeFrame,IndicatorFileName,MAsThresHold,Ma1Period,Ma1Type,Ma1Price,Ma2Period,Ma2Type,Ma2Price,0,y);
         dnma  [i] = iCustom(NULL,TimeFrame,IndicatorFileName,MAsThresHold,Ma1Period,Ma1Type,Ma1Price,Ma2Period,Ma2Type,Ma2Price,1,y);
         SqLup [i] = iCustom(NULL,TimeFrame,IndicatorFileName,MAsThresHold,Ma1Period,Ma1Type,Ma1Price,Ma2Period,Ma2Type,Ma2Price,2,y);
         SqLdn [i] = iCustom(NULL,TimeFrame,IndicatorFileName,MAsThresHold,Ma1Period,Ma1Type,Ma1Price,Ma2Period,Ma2Type,Ma2Price,3,y);

            }
         return(0);         
        }

//
   
   for(i = 0; i <= limit; i++)
   {
      double ma1 = iMA(Symbol(),0,Ma1Period,0,Ma1Type,Ma1Price,i);
      double ma2 = iMA(Symbol(),0,Ma2Period,0,Ma2Type,Ma2Price,i);       
      double madif = MathAbs(ma1-ma2);
 
         upma[i] = ma1;
         dnma[i] = ma2;
          

      SqLup   [i] = EMPTY_VALUE;  SqLdn   [i] = EMPTY_VALUE; 
    
      if(madif/Point< MAsThresHold)
    
      {
//         if(ma1>ma2)
//         {
//            upma[i] = ma1 - (madif/2);
//            dnma[i] = ma1 - (madif/2);
        SqLup   [i] = ma2+ MAsThresHold*Point ; 
        SqLdn   [i] = ma2- MAsThresHold*Point; 

 //       }
 //        else
 //        {
 //           upma[i] = ma2 - (madif/2);
 //           dnma[i] = ma2 - (madif/2);
 //       SqLdn   [i] = ma2+ MaDifrential*Point; 
 //       SqLup   [i] = ma2- MaDifrential*Point; 
     
        // }
         
      }
   }
  
   return(0);
  }
//+------------------------------------------------------------------+

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 ---