TP_HeikenAshi

Author: Ron Mauldin
TP_HeikenAshi
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
TP_HeikenAshi
//+------------------------------------------------------------------+
//|                                                TP_HeikenAshi.mq4 |
//|                                                      Ron Mauldin |
//|                                                  http://fx41.com |
//+------------------------------------------------------------------+
#property copyright "Ron Mauldin"
#property link      "http://fx41.com"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 White
#property indicator_color3 Red
#property indicator_color4 White
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 3
#property indicator_width4 3

//----
color color1 = Red;
color color2 = White;
color color3 = Red;
color color4 = White;

//---- buffers
double haDN1[];
double haUP1[];
double haDN2[];
double haUP2[];

int init(){
 SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1);
 SetIndexBuffer(0, haDN1);//Red
 SetIndexDrawBegin(0,10);
 SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2);
 SetIndexBuffer(1, haUP1);//White
 SetIndexDrawBegin(1,10);
 SetIndexStyle(2,DRAW_HISTOGRAM, 0, 3, color3);
 SetIndexBuffer(2, haDN2);//Red
 SetIndexDrawBegin(2,10);
 SetIndexStyle(3,DRAW_HISTOGRAM, 0, 3, color4);
 SetIndexBuffer(3, haUP2);//White
 SetIndexDrawBegin(3,10);
 return(0);
}
int deinit(){return(0);}
int start(){
 double haOpen, haHigh, haLow, haClose;
 int counted_bars = IndicatorCounted();
 if(counted_bars<0) counted_bars=0;
 if(counted_bars>0) counted_bars--;
 int limit = (Bars - 1 - counted_bars);
 for(int bar = limit; bar >= 0; bar--){  
//haOpen=(haDN2[bar+1]+haUP2[bar+1])/2; This standard HA was replaced by a 4 period HA
  haOpen=((((((Open[bar+3]+High[bar+3]+Low[bar+3]+Close[bar+3])/4)+((Open[bar+2]+High[bar+2]+Low[bar+2]+Close[bar+2])/4))/2)+((Open[bar+1]+High[bar+1]+Low[bar+1]+Close[bar+1])/4))/2);

  haClose=(Open[bar]+High[bar]+Low[bar]+Close[bar])/4;
  haHigh=MathMax(High[bar], MathMax(haOpen, haClose));
  haLow=MathMin(Low[bar], MathMin(haOpen, haClose));
  if (haOpen<haClose){
   haDN1[bar]=haLow;
   haUP1[bar]=haHigh;
  }else{
   haDN1[bar]=haHigh;
   haUP1[bar]=haLow;
  } 
  haDN2[bar]=haOpen;
  haUP2[bar]=haClose;
 }
 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 ---