Ok, I never saw this.
https://www.mql5.com/en/forum/173815
I like it but how can I use it in an EA ?
How do I say
IF trend = downtrend
or
If trend = uptrend
using StepChoppyv1.2.mq4 ?
If someone can help, I would appreciate it. If I make good EA, I'll post it.
//+------------------------------------------------------------------+
//| StepChoppy_v1.mq4 |
//| Copyright © 2006, Forex-TSD.com |
//| Written by IgorAD,igorad2003@yahoo.co.uk |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Forex-TSD.com "
#property link "https://www.forex-tsd.com/"
#property indicator_separate_window
#property indicator_minimum -0.05
#property indicator_maximum 1.05
#property indicator_buffers 8
//---- input parameters
int Length=10;
double StepSizeFast=5;
double StepSizeSlow=15;
int MAPeriod=1;
int Price=0;
int Mode=2;
//---- buffers
double UpBuffer1[];
double UpBuffer2[];
double UpBuffer3[];
double UpBuffer4[];
double DnBuffer1[];
double DnBuffer2[];
double DnBuffer3[];
double DnBuffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
SetIndexStyle(0,DRAW_HISTOGRAM,0,3,MediumBlue);
SetIndexStyle(1,DRAW_HISTOGRAM,0,3,DodgerBlue);
SetIndexStyle(2,DRAW_HISTOGRAM,0,3,LightBlue);
SetIndexStyle(3,DRAW_HISTOGRAM,0,3,Aqua);
SetIndexStyle(4,DRAW_HISTOGRAM,0,3,Crimson);
SetIndexStyle(5,DRAW_HISTOGRAM,0,3,Tomato);
SetIndexStyle(6,DRAW_HISTOGRAM,0,3,Orange);
SetIndexStyle(7,DRAW_HISTOGRAM,0,3,Yellow);
SetIndexBuffer(0,UpBuffer1);
SetIndexBuffer(1,UpBuffer2);
SetIndexBuffer(2,UpBuffer3);
SetIndexBuffer(3,UpBuffer4);
SetIndexBuffer(4,DnBuffer1);
SetIndexBuffer(5,DnBuffer2);
SetIndexBuffer(6,DnBuffer3);
SetIndexBuffer(7,DnBuffer4);
//----
string short_name="StepChoppy";
IndicatorShortName(short_name);
SetIndexLabel(0,"Strong UpTrend");
SetIndexLabel(1,"Retrace UpTrend");
SetIndexLabel(2,"Choppy UpTrend");
SetIndexLabel(3,"Be ready to change UpTrend");
SetIndexLabel(4,"Strong DownTrend");
SetIndexLabel(5,"Retrace DownTrend");
SetIndexLabel(6,"Choppy DownTrend");
SetIndexLabel(7,"Be ready to change DownTrend");
//----
SetIndexDrawBegin(0,Length);
SetIndexDrawBegin(1,Length);
SetIndexDrawBegin(2,Length);
SetIndexDrawBegin(3,Length);
SetIndexDrawBegin(4,Length);
SetIndexDrawBegin(5,Length);
SetIndexDrawBegin(6,Length);
SetIndexDrawBegin(7,Length);
//----
return(0);
}
//+------------------------------------------------------------------+
//| StepChoppy_v1 |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars=IndicatorCounted();
double RSI, FastRSI, SlowRSI, StepMA, UpTrendMA, DnTrendMA;
//----
if(Bars<=Length) return(0);
//---- initial zero
if(counted_bars<1)
for(i=1;i<=Length;i++)
{
UpBuffer1=0.0;
UpBuffer2=0.0;
UpBuffer3=0.0;
UpBuffer4=0.0;
DnBuffer1=0.0;
DnBuffer2=0.0;
DnBuffer3=0.0;
DnBuffer4=0.0;
}
//----
if ( counted_bars > 0 ) int limit=Bars-counted_bars;
if ( counted_bars ==0 ) limit=Bars-Length-1;
for(i=limit;i>=0;i--)
{
UpTrendMA = iCustom(NULL,0,"StepMA_v7",Length,1.0,0,0,0,0,true,2,0,1,i);
DnTrendMA = iCustom(NULL,0,"StepMA_v7",Length,1.0,0,0,0,0,true,2,0,2,i);
RSI=iCustom(NULL,0,"StepRSI_v5.2",Length,StepSizeFast,MAPeriod,Price,Mode,0,i);
FastRSI=iCustom(NULL,0,"StepRSI_v5.2",Length,StepSizeFast,MAPeriod,Price,Mode,1,i);
SlowRSI=iCustom(NULL,0,"StepRSI_v5.2",Length,StepSizeSlow,MAPeriod,Price,Mode,1,i);
UpBuffer1 =UpBuffer1;
UpBuffer2 =UpBuffer2;
UpBuffer3 =UpBuffer3;
UpBuffer4 =UpBuffer4;
DnBuffer1 =DnBuffer1;
DnBuffer2 =DnBuffer2;
DnBuffer3 =DnBuffer3;
DnBuffer4 =DnBuffer4;
if (FastRSI > SlowRSI && RSI > FastRSI && UpTrendMA!=EMPTY_VALUE)
{UpBuffer1 = 1.0;UpBuffer2 = 0.0;UpBuffer3 = 0.0;UpBuffer4 = 0.0;
DnBuffer1 = 0.0;DnBuffer2 = 0.0;DnBuffer3 = 0.0;DnBuffer4 = 0.0;}
else if (FastRSI > SlowRSI && RSI < FastRSI && UpTrendMA!=EMPTY_VALUE)
{UpBuffer1 = 0.0;UpBuffer2 = 1.0;UpBuffer3 = 0.0;UpBuffer4 = 0.0;
DnBuffer1 = 0.0;DnBuffer2 = 0.0;DnBuffer3 = 0.0;DnBuffer4 = 0.0;}
else if (FastRSI FastRSI && UpTrendMA!=EMPTY_VALUE)
{UpBuffer1 = 0.0;UpBuffer2 = 0.0;UpBuffer3 = 1.0;UpBuffer4 = 0.0;
DnBuffer1 = 0.0;DnBuffer2 = 0.0;DnBuffer3 = 0.0;DnBuffer4 = 0.0;}
else if (FastRSI < SlowRSI && RSI < FastRSI && UpTrendMA!=EMPTY_VALUE)
{UpBuffer1 = 0.0;UpBuffer2 = 0.0;UpBuffer3 = 0.0;UpBuffer4 = 1.0;
DnBuffer1 = 0.0;DnBuffer2 = 0.0;DnBuffer3 = 0.0;DnBuffer4 = 0.0;}
else if (FastRSI < SlowRSI && RSI < FastRSI && DnTrendMA!=EMPTY_VALUE)
{UpBuffer1 = 0.0;UpBuffer2 = 0.0;UpBuffer3 = 0.0;UpBuffer4 = 0.0;
DnBuffer1 = 1.0;DnBuffer2 = 0.0;DnBuffer3 = 0.0;DnBuffer4 = 0.0;}
else if (FastRSI FastRSI && DnTrendMA!=EMPTY_VALUE)
{UpBuffer1 = 0.0;UpBuffer2 = 0.0;UpBuffer3 = 0.0;UpBuffer4 = 0.0;
DnBuffer1 = 0.0;DnBuffer2 = 1.0;DnBuffer3 = 0.0;DnBuffer4 = 0.0;}
else if (FastRSI > SlowRSI && RSI < FastRSI && DnTrendMA!=EMPTY_VALUE)
{UpBuffer1 = 0.0;UpBuffer2 = 0.0;UpBuffer3 = 0.0;UpBuffer4 = 0.0;
DnBuffer1 = 0.0;DnBuffer2 = 0.0;DnBuffer3 = 1.0;DnBuffer4 = 0.0;}
else if (FastRSI > SlowRSI && RSI > FastRSI && DnTrendMA!=EMPTY_VALUE)
{UpBuffer1 = 0.0;UpBuffer2 = 0.0;UpBuffer3 = 0.0;UpBuffer4 = 0.0;
DnBuffer1 = 0.0;DnBuffer2 = 0.0;DnBuffer3 = 0.0;DnBuffer4 = 1.0;}
}
//----
return(0);
}
//+------------------------------------------------------------------+
Nevermind.
Anyway, if it says "ready to change : Downtrend"
That means that an uptrend is about to take place, right?

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
I need something that can detect when the market is choppy. Is there anything I can do for this? Anyone know a good way of determining this? Thanks