turtlechanneli

Author: djindyFX@sbcglobal.com
turtlechanneli
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
turtlechanneli
//+------------------------------------------------------------------+
//|                              Turtle Channel Method(Donchain).mq4 |
//|                                           djindyFX@sbcglobal.net |
//|      http://www.learncurrencytrading.com/fxforum/blogs/djindyfx/ |
//+------------------------------------------------------------------+
#property copyright "djindyFX@sbcglobal.com"
#property link      "http://www.learncurrencytrading.com/fxforum/blogs/djindyfx/"
//+--------------------------------------------------------------------------------------------------------------------------+
//| Original Donchain channel code posted here: http://codebase.mql4.com/ru/1317                                             |
//| Periods: number of bars used for calculating the Donchian channels                                                       | 
//|            3 Seperate Channels are provided, Long term, Medium, and Short Term                                           |
//| Extremes: 1 uses the highest high and the lowest low to create the Channel                                               |
//|            0 uses the open of the extremes bar -> the open point of a bar (as well as the close                          |
//|            are the points of maximum probability of concentration of the prices during the bar                           |
//|            3 uses the median point most extreme open and lowest low or highest high                                      |
//| Margins: is the percent of the channel subtrated from the channel border before printing it, negative values are allowed |
//| Advance: the numbers of bars ahead                                                                                       | 
//+--------------------------------------------------------------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 White
#property indicator_color2 White
#property indicator_color3 Yellow
#property indicator_color4 Yellow
#property indicator_color5 Red
#property indicator_color6 Red
//---- input parameters
extern int       LngPeriod=50;
extern int       MedPeriod=20;
extern int       ShtPeriod=10;
extern int       Extremes=1;
extern int       Margins=0;
extern int       Advance=0;
// - Buffers
double Channel1[];
double Channel2[];
double Channel3[];
double Channel4[];
double Channel5[];
double Channel6[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //Comment("Turtle Channel is running");
   string LngTop, LngBottom, MedTop, MedBottom, ShtTop, ShtBottom;
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_DOT);
   SetIndexStyle(1,DRAW_LINE,STYLE_DOT);
   SetIndexStyle(2,DRAW_LINE,STYLE_DASH);
   SetIndexStyle(3,DRAW_LINE,STYLE_DASH);
   SetIndexStyle(4,DRAW_LINE,STYLE_DASHDOT);
   SetIndexStyle(5,DRAW_LINE,STYLE_DASHDOT);
   //
   SetIndexBuffer(0,Channel1);
   SetIndexBuffer(1,Channel2);
   SetIndexBuffer(2,Channel3);
   SetIndexBuffer(3,Channel4);
   SetIndexBuffer(4,Channel5);
   SetIndexBuffer(5,Channel6);
//----
   LngTop="Long Top";
   LngBottom="Long Bottom";
   MedTop="Medium Top";
   MedBottom="Medium Bottom";
   ShtTop="Short Top";
   ShtBottom="Short Bottom";
//----
   IndicatorShortName(LngTop);
   IndicatorShortName(LngBottom);
   IndicatorShortName(MedTop);
   IndicatorShortName(MedBottom);
   IndicatorShortName(ShtTop);
   IndicatorShortName(ShtBottom);
//-----
   SetIndexLabel(0,LngTop);
   SetIndexLabel(1,LngBottom);
   SetIndexLabel(2,MedTop);
   SetIndexLabel(3,MedBottom);
   SetIndexLabel(4,ShtTop);
   SetIndexLabel(5,ShtBottom);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   counted_bars=IndicatorCounted();
   int max_bars;
//----
   if    (counted_bars < 0) return(-1);
   if    (counted_bars>0) counted_bars--;
   max_bars= Bars-1;
   double   sminl=0, smaxl=0, SsMinl=0, SsMaxl=0;
   double   sminm=0, smaxm=0, SsMinm=0, SsMaxm=0;
   double   smins=0, smaxs=0, SsMins=0, SsMaxs=0;
//----
   for(int shift=0; shift< max_bars; shift++)
     { //begin for loop
      if(Extremes ==1)
        {
         SsMaxl=High[iHighest(NULL,0,MODE_HIGH,LngPeriod,shift)];
         SsMinl=Low[iLowest(NULL,0,MODE_LOW,LngPeriod,shift)];
         SsMaxm=High[iHighest(NULL,0,MODE_HIGH,MedPeriod,shift)];
         SsMinm=Low[iLowest(NULL,0,MODE_LOW,MedPeriod,shift)];
         SsMaxs=High[iHighest(NULL,0,MODE_HIGH,ShtPeriod,shift)];
         SsMins=Low[iLowest(NULL,0,MODE_LOW,ShtPeriod,shift)];
        }
      else if (Extremes ==3)
           {
            SsMaxl=(Open[iHighest(NULL,0,MODE_OPEN,LngPeriod,shift)]+High[iHighest(NULL,0,MODE_HIGH,LngPeriod,shift)])/2;
            SsMinl=(Open[iLowest(NULL,0,MODE_OPEN,LngPeriod,shift)]+Low[iLowest(NULL,0,MODE_LOW,LngPeriod,shift)])/2;
            SsMaxm=(Open[iHighest(NULL,0,MODE_OPEN,MedPeriod,shift)]+High[iHighest(NULL,0,MODE_HIGH,MedPeriod,shift)])/2;
            SsMinm=(Open[iLowest(NULL,0,MODE_OPEN,MedPeriod,shift)]+Low[iLowest(NULL,0,MODE_LOW,MedPeriod,shift)])/2;
            SsMaxs=(Open[iHighest(NULL,0,MODE_OPEN,ShtPeriod,shift)]+High[iHighest(NULL,0,MODE_HIGH,ShtPeriod,shift)])/2;
            SsMins=(Open[iLowest(NULL,0,MODE_OPEN,ShtPeriod,shift)]+Low[iLowest(NULL,0,MODE_LOW,ShtPeriod,shift)])/2;
           }
         else
           {
            SsMaxl=Open[iHighest(NULL,0,MODE_OPEN,LngPeriod,shift)];
            SsMinl=Open[iLowest(NULL,0,MODE_OPEN,LngPeriod,shift)];
            SsMaxm=Open[iHighest(NULL,0,MODE_OPEN,MedPeriod,shift)];
            SsMinm=Open[iLowest(NULL,0,MODE_OPEN,MedPeriod,shift)];
            SsMaxs=Open[iHighest(NULL,0,MODE_OPEN,ShtPeriod,shift)];
            SsMins=Open[iLowest(NULL,0,MODE_OPEN,ShtPeriod,shift)];
           }
      smaxl=SsMaxl-(SsMaxl-SsMinl)*Margins/100;
      sminl=SsMinl+(SsMaxl-SsMinl)*Margins/100;
      smaxm=SsMaxm-(SsMaxm-SsMinm)*Margins/100;
      sminm=SsMinm+(SsMaxm-SsMinm)*Margins/100;
      smaxs=SsMaxs-(SsMaxs-SsMins)*Margins/100;
      smins=SsMins+(SsMaxs-SsMins)*Margins/100;
      //
      Channel1[shift-Advance]=smaxl;
      Channel2[shift-Advance]=sminl;
      Channel3[shift-Advance]=smaxm;
      Channel4[shift-Advance]=sminm;
      Channel5[shift-Advance]=smaxs;
      Channel6[shift-Advance]=smins;
     }//end for loop
//----
   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 ---