A present.
Channelin’ The House
In order to start channeling, the Alex Foley aka the market has to trade in the E-32 for an Axel S. E-32 itself would become one end of the channel and the distance doubled would be the other end.
In the example above you can see that the encounter with the E-16 viaduct brought on the channeling move.
#property copyright "by Macdulio"
#property link "forexfore.blog"
#property description "Axel S"
#property indicator_chart_window
#property indicator_buffers 9
int lookback = 300;
double e16d1[], e16d2[], e16d3[], e16d4[], E16[], RSI2[];
double E32L[], AxelU[], AxelU1[], AxelL[], AxelL2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,AxelU);
SetIndexStyle(0,DRAW_LINE,4,1,clrCyan);
SetIndexBuffer(1,AxelL);
SetIndexStyle(1,DRAW_LINE,4,1,clrYellow);
SetIndexBuffer(2,AxelU1);
SetIndexStyle(2,DRAW_LINE,1,1,clrCyan);
SetIndexBuffer(3,E32L);
SetIndexStyle(3,DRAW_LINE,3,3,clrYellow);
SetIndexBuffer(4,e16d1);
SetIndexStyle(4,DRAW_LINE,1,1,clrBlue);
SetIndexBuffer(5,e16d2);
SetIndexStyle(5,DRAW_LINE,1,1,clrBlue);
SetIndexBuffer(6,e16d3);
SetIndexStyle(6,DRAW_LINE,1,1,clrRed);
SetIndexBuffer(7,e16d4);
SetIndexStyle(7,DRAW_LINE,1,1,clrGreen);
SetIndexBuffer(8,AxelL2);
SetIndexStyle(8,DRAW_LINE,1,1,clrYellow);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i; // Number of counted bars
string symbol = Symbol();
ArrayResize(E16, Bars);
ArrayInitialize(E16, EMPTY_VALUE);
ArrayResize(e16d1, Bars);
ArrayInitialize(e16d1, EMPTY_VALUE);
ArrayResize(e16d2, lookback);
ArrayInitialize(e16d2, EMPTY_VALUE);
ArrayResize(e16d3, lookback);
ArrayInitialize(e16d3, EMPTY_VALUE);
ArrayResize(e16d4, lookback);
ArrayInitialize(e16d4, EMPTY_VALUE);
ArrayResize(E16, lookback);
ArrayInitialize(E16, EMPTY_VALUE);
ArrayResize(RSI2, lookback);
ArrayInitialize(RSI2, EMPTY_VALUE);
ArrayResize(AxelU, lookback);
ArrayInitialize(AxelU, EMPTY_VALUE);
ArrayResize(AxelU1, lookback);
ArrayInitialize(AxelU1, EMPTY_VALUE);
ArrayResize(AxelL, lookback);
ArrayInitialize(AxelL, EMPTY_VALUE);
ArrayResize(AxelL2, lookback);
ArrayInitialize(AxelL2, EMPTY_VALUE);
ArrayResize(E32L, Bars);
ArrayInitialize(E32L, EMPTY_VALUE);
//--------------------------------------------------------------------
for (i = lookback ; i >=0; i--) {
if (Period()==30) E16[i]=iMA(NULL,0,32,0,MODE_EMA, PRICE_MEDIAN,i);
else E16[i]=iMA(NULL,0,16,0,MODE_EMA, PRICE_MEDIAN,i);
if (Period()==60) E32L[i]=iMA(NULL,0,32,0,MODE_EMA, PRICE_MEDIAN,i);
else E32L[i]=iMA(NULL,0,32*2,0,MODE_EMA, PRICE_MEDIAN,i);
e16d1[i]=E16[i]+450*Point;
e16d2[i]=E16[i]-450*Point;
if (iMA(NULL,60,67,0,MODE_EMA, PRICE_HIGH,0)>iMA(NULL,60,207,0,MODE_EMA, PRICE_HIGH,0)) e16d4[i]=e16d2[i];
if (iMA(NULL,60,67,0,MODE_EMA, PRICE_HIGH,0)<iMA(NULL,60,207,0,MODE_EMA, PRICE_HIGH,0)) e16d3[i]=e16d1[i];
AxelU[i]=E32L[i]+280*Point;
AxelU1[i]=AxelU[i]+280*Point;
AxelL[i]=E32L[i]-280*Point;
AxelL2[i]=AxelL[i]-280*Point;
}
return(0);
}
Should work both on 60 and 30M
Add on from the super saver menu: RSI2 30M