3barpullback

Author: Plamen
3barpullback
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
3barpullback
//+------------------------------------------------------------------+
//|                                         3barpullback.mq4 |
//|                                                           Plamen |
//|                                                 http://127.0.0.1 |
//+------------------------------------------------------------------+
#property copyright "Plamen"
#property link      "http://127.0.0.1"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color3 Lime
#property indicator_color4 Red
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 2
#property indicator_width4 2

//---- options
extern string UpSignal="===== Up Signal Settings =====";
extern bool ShowUpArrows=true;
extern color UpArrowsColor=Lime;
extern bool ShowLowerHighs=true;
extern color LowerHighsColor=Lime;
extern bool ShowCloseToCloseLines=true;
extern color CloseToCloseLinesColor=Lime;
extern string EndUpSignalSettings="==============================";
extern string DownSignal="==== Down Signal Settings ====";
extern bool ShowDownArrows=true;
extern color DownArrowsColor=Red;
extern bool ShowHigherLows=true;
extern color HigherLowsColor=Red;
extern bool ShowOpenToOpenLines=true;
extern color OpenToOpenLinesColor=Red;
extern string EndDownSignalSettings="==============================";

//---- buffers
double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];

int CloseToCloseLinesCounter=0;
int OpenToOpenLinesCounter=0;
int pos=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW, EMPTY, EMPTY, HigherLowsColor);
   SetIndexArrow(0,217);
   SetIndexBuffer(0,Buffer1);
   SetIndexDrawBegin(0, 7);
   
   SetIndexStyle(1,DRAW_ARROW, EMPTY, EMPTY, LowerHighsColor);
   SetIndexArrow(1,218);
   SetIndexBuffer(1,Buffer2);
   SetIndexDrawBegin(1,7);
   
   SetIndexStyle(2,DRAW_ARROW, EMPTY, EMPTY, UpArrowsColor);
   SetIndexArrow(2,67);
   SetIndexBuffer(2, Buffer3);
   SetIndexDrawBegin(2,7);
   
   SetIndexStyle(3,DRAW_ARROW, EMPTY, EMPTY, DownArrowsColor);
   SetIndexArrow(3,68);
   SetIndexBuffer(3,Buffer4);
   SetIndexDrawBegin(3,7);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
    int i;
    
    for(i=0; i<=CloseToCloseLinesCounter; i++)
      ObjectDelete("CloseToCloseLines"+i);
      
    for(i=0; i<=OpenToOpenLinesCounter; i++)
      ObjectDelete("OpentoOpenLines"+i);
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   
   pos=Bars-counted_bars;
   
   while(pos>0)
   {
     if( (High[pos+1]<High[pos+2])&&(High[pos+2]<High[pos+3]) &&
         (Close[pos]>Close[pos+10]) &&
         (High[pos]>High[pos+1]) )
     {    
       if(ShowCloseToCloseLines) DisplayCloseToCloseLines();     
       if(ShowUpArrows) DisplayUpArrows();
       if(ShowLowerHighs) DisplayLowerHighs();
     }
           
     if( (Low[pos+1]>Low[pos+2])&&(Low[pos+2]>Low[pos+3]) &&
         (Open[pos]<Open[pos+10]) &&
         (Low[pos]<Low[pos+1]) )
     {
       if(ShowOpenToOpenLines) DisplayOpenToOpenLines();     
       if(ShowDownArrows) DisplayDownArrows();
       if(ShowHigherLows) DisplayHigherLows();
     }   

     pos--;
   }
   
   return(0);
  }
//+------------------------------------------------------------------+
void DisplayUpArrows()
{
  if(Digits==2)
    Buffer3[pos]=Low[pos]-0.30;
  else if(Digits==4)
    Buffer3[pos]=Low[pos]-0.0030;
}
//+------------------------------------------------------------------+
void DisplayDownArrows()
{
  if(Digits==2)
    Buffer4[pos]=High[pos]+0.30;
  else if(Digits==4)
    Buffer4[pos]=High[pos]+0.0030;
}
//+------------------------------------------------------------------+
void DisplayLowerHighs()
{
  if(Digits==2)
  {
    Buffer2[pos+1]=High[pos+1]+0.10;
    Buffer2[pos+2]=High[pos+2]+0.10;
    Buffer2[pos+3]=High[pos+3]+0.10;
  }
  else
  {
    Buffer2[pos+1]=High[pos+1]+0.0010;
    Buffer2[pos+2]=High[pos+2]+0.0010;
    Buffer2[pos+3]=High[pos+3]+0.0010;
  }
}
//+------------------------------------------------------------------+
void DisplayHigherLows()
{
  if(Digits==2)
  {
    Buffer1[pos+1]=Low[pos+1]-0.10;
    Buffer1[pos+2]=Low[pos+2]-0.10;
    Buffer1[pos+3]=Low[pos+3]-0.10;
  }
  else
  {
    Buffer1[pos+1]=Low[pos+1]-0.0010;
    Buffer1[pos+2]=Low[pos+2]-0.0010;
    Buffer1[pos+3]=Low[pos+3]-0.0010;
  }
}
//+------------------------------------------------------------------+
void DisplayCloseToCloseLines()
{
  ObjectCreate("CloseToCloseLines"+CloseToCloseLinesCounter, OBJ_TREND, 0, Time[pos+10], Close[pos+10], Time[pos], Close[pos+10]);
  ObjectSet("CloseToCloseLines"+CloseToCloseLinesCounter, OBJPROP_COLOR, CloseToCloseLinesColor);
  ObjectSet("CloseToCloseLines"+CloseToCloseLinesCounter, OBJPROP_RAY, false);
  CloseToCloseLinesCounter++;
  ObjectCreate("CloseToCloseLines"+CloseToCloseLinesCounter, OBJ_TREND, 0, Time[pos+10], Close[pos], Time[pos], Close[pos]);
  ObjectSet("CloseToCloseLines"+CloseToCloseLinesCounter, OBJPROP_COLOR, CloseToCloseLinesColor);
  ObjectSet("CloseToCloseLines"+CloseToCloseLinesCounter, OBJPROP_RAY, false);
  CloseToCloseLinesCounter++;
  ObjectCreate("CloseToCloseLines"+CloseToCloseLinesCounter, OBJ_TREND, 0, Time[pos+10], Close[pos+10], Time[pos+10], Close[pos]);
  ObjectSet("CloseToCloseLines"+CloseToCloseLinesCounter, OBJPROP_COLOR, CloseToCloseLinesColor);
  ObjectSet("CloseToCloseLines"+CloseToCloseLinesCounter, OBJPROP_RAY, false);
  CloseToCloseLinesCounter++;
}
//+------------------------------------------------------------------+
void DisplayOpenToOpenLines()
{
  ObjectCreate("OpenToOpenLines"+OpenToOpenLinesCounter, OBJ_TREND, 0, Time[pos+10], Open[pos+10], Time[pos], Open[pos+10]);
  ObjectSet("OpenToOpenLines"+OpenToOpenLinesCounter, OBJPROP_COLOR, OpenToOpenLinesColor);
  ObjectSet("OpenToOpenLines"+OpenToOpenLinesCounter, OBJPROP_RAY, false);
  OpenToOpenLinesCounter++;
  ObjectCreate("OpenToOpenLines"+OpenToOpenLinesCounter, OBJ_TREND, 0, Time[pos+10], Open[pos], Time[pos], Open[pos]);
  ObjectSet("OpenToOpenLines"+OpenToOpenLinesCounter, OBJPROP_COLOR, OpenToOpenLinesColor);
  ObjectSet("OpenToOpenLines"+OpenToOpenLinesCounter, OBJPROP_RAY, false);
  OpenToOpenLinesCounter++;
  ObjectCreate("OpenToOpenLines"+OpenToOpenLinesCounter, OBJ_TREND, 0, Time[pos+10], Open[pos+10], Time[pos+10], Open[pos]);
  ObjectSet("OpenToOpenLines"+OpenToOpenLinesCounter, OBJPROP_COLOR, OpenToOpenLinesColor);
  ObjectSet("OpenToOpenLines"+OpenToOpenLinesCounter, OBJPROP_RAY, false);
  OpenToOpenLinesCounter++;
}
//+------------------------------------------------------------------+

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