Download MetaTrader 5
To add comments, please log in or register
Articles have already helped many traders. Come and read them!
MetaQuotes Software Corp.
Moderator
180219
MetaQuotes Software Corp. 2009.07.31 17:01 

SuperForex V2:

Working with RSI on Daily chart. Has StopLoss, TakeProffit and trailing stop.

Author: Rafael Maia de Amorim

bobby
69
bobby 2009.08.01 00:15  

Hi Rafael MAia de Amorim, thanks for sharing your code.



What is your broker ? I don't get the same result on Alpari UK.

Rafael Maia de Amorim
1425
Rafael Maia de Amorim 2009.08.01 04:10  
funyoo:

Hi Rafael MAia de Amorim, thanks for sharing your code.



What is your broker ? I don't get the same result on Alpari UK.


i use LiteForex

MQL4 Comments
16319
MQL4 Comments 2009.08.04 12:42  

thxs for sharing, but don't have win with your EA, what are your best settings, please

Rafael Maia de Amorim
1425
Rafael Maia de Amorim 2009.08.04 14:02  
kinonen:

thxs for sharing, but don't have win with your EA, what are your best settings, please

What Symbol do you use, timeframe and spread of your broker?

MQL4 Comments
16319
MQL4 Comments 2009.08.06 08:45  

Hi Rafael,

What settings did you use on your back test? and What year and months did you backtest on?

Thanks for sharing your EA.

John

Rafael Maia de Amorim
1425
Rafael Maia de Amorim 2009.08.06 13:41  
johnfilo:


Hi Rafael,

What settings did you use on your back test? and What year and months did you backtest on?

Thanks for sharing your EA.

John

optimize 1 month and two years backtest

i use this setting

Autor=Rafael Maia de Amorim
Desc1=If you make money with this EA, please help me to start..
Desc2=alertpay or paypal: rdamorim@click21.com.br
Desc3=Thanks a lot
TakeProfit=109.00000000
TakeProfit,F=0
TakeProfit,1=6.00000000
TakeProfit,2=1.00000000
TakeProfit,3=150.00000000
StopLoss=9.00000000
StopLoss,F=0
StopLoss,1=6.00000000
StopLoss,2=1.00000000
StopLoss,3=50.00000000
Lots=0.30000000
Lots,F=0
Lots,1=0.10000000
Lots,2=0.00000000
Lots,3=0.00000000
Pos=90.00000000
Pos,F=0
Pos,1=50.00000000
Pos,2=1.00000000
Pos,3=100.00000000
Neg=10.00000000
Neg,F=0
Neg,1=0.00000000
Neg,2=1.00000000
Neg,3=50.00000000
SET=2
SET,F=1
SET,1=2
SET,2=1
SET,3=20
TrailingStop=4
TrailingStop,F=1
TrailingStop,1=1
TrailingStop,2=1
TrailingStop,3=80
NumeroMagico=1000
NumeroMagico,F=0
NumeroMagico,1=1000
NumeroMagico,2=0
NumeroMagico,3=0
MaxLots=5000
MaxLots,F=0
MaxLots,1=100
MaxLots,2=0
MaxLots,3=0

MQL4 Comments
16319
MQL4 Comments 2010.06.01 20:17  

Nice results, thanks for sharing.

MQL4 Comments
16319
MQL4 Comments 2010.09.29 16:21  

my first ea am building a expert advisor and i need to introduce the indicator ( TrendRSI_v3 ) in expert.

please someone help me in the conditions of the buy and sell

i did it this way but not working

double TrendRsi_Up = iCustom(NULL,0,"TrendRSI_v3",RSIPeriod,EMAPeriod,ATRPeriod,K,1,0);
double TrendRsi_Dn = iCustom(NULL,0,"TrendRSI_v3",RSIPeriod,EMAPeriod,ATRPeriod,K,2,0);

//----------------------------conditions of the sell----------//

if(OrdersTotalMagicbuy(Magicsell)<1)
{


if( TrendRsi_Up == 1){


if(martingale == false){
orderclosebuy(ticketbuy);
}


SellValue = 1;
}

}

//----------------------------conditions of the buy----------//

if(OrdersTotalMagicsell(Magicbuy)<1)
{
if(TrendRsi_Dn == 2){

if(martingale == false){
orderclosesell(ticketsell);
}

BuyValue = 1;

}

}

//-------------------indicator TrendRSI_v3--------------------------//

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 LightBlue
#property indicator_color3 Tomato
//---- input parameters
extern int RSIPeriod=14;
extern int EMAPeriod= 5;
extern int ATRPeriod=14;
extern double K=4.236;//2.618

//---- buffers

double RSIindex[];
double UpTrend[];
double DnTrend[];
double RSIBuffer[];
double smin[];
double smax[];
double trend[];

int MAPeriod=1;
int Price=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 2 additional buffers are used for counting.
IndicatorBuffers(7);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,RSIindex);
SetIndexStyle(1,DRAW_ARROW);
SetIndexBuffer(1,UpTrend);
SetIndexStyle(2,DRAW_ARROW);
SetIndexBuffer(2,DnTrend);
SetIndexArrow(1,159);
SetIndexArrow(2,159);
SetIndexBuffer(3,RSIBuffer);
SetIndexBuffer(4,smin);
SetIndexBuffer(5,smax);
SetIndexBuffer(6,trend);


//---- name for DataWindow and indicator subwindow label
short_name="TrendRSI("+RSIPeriod+","+EMAPeriod+","+ATRPeriod+","+DoubleToStr(K,3)+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"UpTrend");
SetIndexLabel(2,"DownTrend");
//----

SetIndexDrawBegin(0,RSIPeriod+EMAPeriod+ATRPeriod);
SetIndexDrawBegin(1,RSIPeriod+EMAPeriod+ATRPeriod);
SetIndexDrawBegin(2,RSIPeriod+EMAPeriod+ATRPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| TrendRSI_v3 |
//+------------------------------------------------------------------+
int start()
{
int i,limit,counted_bars=IndicatorCounted();
double rel;
//----

if ( counted_bars < 0 ) return(-1);
if ( counted_bars ==0 ) limit=Bars-1;
if ( counted_bars < 1 )

for( i=1;i<RSIPeriod+EMAPeriod+ATRPeriod;i++)
{
RSIindex[Bars-i]=0.0;
UpTrend[Bars-i]=0.0;
DnTrend[Bars-i]=0.0;
}

if(counted_bars>0) limit=Bars-counted_bars;
limit--;

for( i=limit; i>=0; i--)
{
double sumn=0.0,sump=0.0;
for (int k=RSIPeriod-1;k>=0;k--)
{
rel=iMA(NULL,0,MAPeriod,0,MODE_SMA,Price,i+k)-iMA(NULL,0,MAPeriod,0,MODE_SMA,Price,i+k+1);
if(rel>0) sump+=rel; else sumn-=rel;
}
double pos=sump/RSIPeriod;
double neg=sumn/RSIPeriod;

if(neg==0.0) RSIBuffer[i]=100.0;
else
RSIBuffer[i]=100.0-100.0/(1.0+pos/neg);

RSIindex[i]=RSIindex[i+1]+2.0/(1.0+EMAPeriod)*(RSIBuffer[i]-RSIindex[i+1]);


double AvgRange=0;
for ( k=ATRPeriod-1;k>=0;k--)
AvgRange+=MathAbs(RSIindex[i+k]-RSIindex[i+k+1]);

double Range = AvgRange/ATRPeriod;

smax[i]=RSIindex[i]+K*Range;
smin[i]=RSIindex[i]-K*Range;

trend[i]=trend[i+1];
if (RSIindex[i]>smax[i+1]) trend[i]=1;
if (RSIindex[i]<smin[i+1]) trend[i]=-1;

if(trend[i]>0)
{
if (smin[i]<smin[i+1]) smin[i]=smin[i+1];
UpTrend[i]=smin[i];
DnTrend[i]=EMPTY_VALUE;
}
else
{
if(smax[i]>smax[i+1]) smax[i]=smax[i+1];
UpTrend[i]=EMPTY_VALUE;
DnTrend[i]=smax[i];
}
}
//----
return(0);
}
//+------------------------------------------------------------------+

MQL4 Comments
16319
MQL4 Comments 2010.09.29 16:23  
ruiamor:

my first ea am building a expert advisor and i need to introduce the indicator ( TrendRSI_v3 ) in expert.

please someone help me in the conditions of the buy and sell

i did it this way but not working

double TrendRsi_Up = iCustom(NULL,0,"TrendRSI_v3",RSIPeriod,EMAPeriod,ATRPeriod,K,1,0);
double TrendRsi_Dn = iCustom(NULL,0,"TrendRSI_v3",RSIPeriod,EMAPeriod,ATRPeriod,K,2,0);

//----------------------------conditions of the sell----------//

if(OrdersTotalMagicbuy(Magicsell)<1)
{


if( TrendRsi_Up == 1){


if(martingale == false){
orderclosebuy(ticketbuy);
}


SellValue = 1;
}

}

//----------------------------conditions of the buy----------//

if(OrdersTotalMagicsell(Magicbuy)<1)
{
if(TrendRsi_Dn == 2){

if(martingale == false){
orderclosesell(ticketsell);
}

BuyValue = 1;

}

}

//-------------------indicator TrendRSI_v3--------------------------//

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 LightBlue
#property indicator_color3 Tomato
//---- input parameters
extern int RSIPeriod=14;
extern int EMAPeriod= 5;
extern int ATRPeriod=14;
extern double K=4.236;//2.618

//---- buffers

double RSIindex[];
double UpTrend[];
double DnTrend[];
double RSIBuffer[];
double smin[];
double smax[];
double trend[];

int MAPeriod=1;
int Price=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- 2 additional buffers are used for counting.
IndicatorBuffers(7);
//---- indicator line
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,RSIindex);
SetIndexStyle(1,DRAW_ARROW);
SetIndexBuffer(1,UpTrend);
SetIndexStyle(2,DRAW_ARROW);
SetIndexBuffer(2,DnTrend);
SetIndexArrow(1,159);
SetIndexArrow(2,159);
SetIndexBuffer(3,RSIBuffer);
SetIndexBuffer(4,smin);
SetIndexBuffer(5,smax);
SetIndexBuffer(6,trend);


//---- name for DataWindow and indicator subwindow label
short_name="TrendRSI("+RSIPeriod+","+EMAPeriod+","+ATRPeriod+","+DoubleToStr(K,3)+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"UpTrend");
SetIndexLabel(2,"DownTrend");
//----

SetIndexDrawBegin(0,RSIPeriod+EMAPeriod+ATRPeriod);
SetIndexDrawBegin(1,RSIPeriod+EMAPeriod+ATRPeriod);
SetIndexDrawBegin(2,RSIPeriod+EMAPeriod+ATRPeriod);
//----
return(0);
}
//+------------------------------------------------------------------+
//| TrendRSI_v3 |
//+------------------------------------------------------------------+
int start()
{
int i,limit,counted_bars=IndicatorCounted();
double rel;
//----

if ( counted_bars < 0 ) return(-1);
if ( counted_bars ==0 ) limit=Bars-1;
if ( counted_bars < 1 )

for( i=1;i<RSIPeriod+EMAPeriod+ATRPeriod;i++)
{
RSIindex[Bars-i]=0.0;
UpTrend[Bars-i]=0.0;
DnTrend[Bars-i]=0.0;
}

if(counted_bars>0) limit=Bars-counted_bars;
limit--;

for( i=limit; i>=0; i--)
{
double sumn=0.0,sump=0.0;
for (int k=RSIPeriod-1;k>=0;k--)
{
rel=iMA(NULL,0,MAPeriod,0,MODE_SMA,Price,i+k)-iMA(NULL,0,MAPeriod,0,MODE_SMA,Price,i+k+1);
if(rel>0) sump+=rel; else sumn-=rel;
}
double pos=sump/RSIPeriod;
double neg=sumn/RSIPeriod;

if(neg==0.0) RSIBuffer[i]=100.0;
else
RSIBuffer[i]=100.0-100.0/(1.0+pos/neg);

RSIindex[i]=RSIindex[i+1]+2.0/(1.0+EMAPeriod)*(RSIBuffer[i]-RSIindex[i+1]);


double AvgRange=0;
for ( k=ATRPeriod-1;k>=0;k--)
AvgRange+=MathAbs(RSIindex[i+k]-RSIindex[i+k+1]);

double Range = AvgRange/ATRPeriod;

smax[i]=RSIindex[i]+K*Range;
smin[i]=RSIindex[i]-K*Range;

trend[i]=trend[i+1];
if (RSIindex[i]>smax[i+1]) trend[i]=1;
if (RSIindex[i]<smin[i+1]) trend[i]=-1;

if(trend[i]>0)
{
if (smin[i]<smin[i+1]) smin[i]=smin[i+1];
UpTrend[i]=smin[i];
DnTrend[i]=EMPTY_VALUE;
}
else
{
if(smax[i]>smax[i+1]) smax[i]=smax[i+1];
UpTrend[i]=EMPTY_VALUE;
DnTrend[i]=smax[i];
}
}
//----
return(0);
}
//+------------------------------------------------------------------+

MQL4 Comments
16319
MQL4 Comments 2012.09.12 18:29  

Hi Rafael,

thanks for sharing this EA, but I get an error while backtesting it: SuperForexV2 EURUSD,Daily: OrderSend error 131

Does this error occure only on my account? How can I solve this?

Thanks

/ /12
To add comments, please log in or register