Price Data Components
Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
ft_ema_bands_rsi_
//+------------------------------------------------------------------+
//| FT_EMA_Bands_RSI.mq4 |
//| Copyright 2015, fortrader.org |
//| https://fortrader.org |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, fortrader.org"
#property link "https://fortrader.org"
#property version "1.00"
#property strict
#property link "http://fortrader.org/forex-strategy/trend-strategy/trendovaya-torgovaya-strategiya-emas-bands-with-rsi-filter.html"
string ea_name="FT_EMA_Bands_RSI";
int magic_n=22012016;
int ema1_start,ema2_start;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double rsi_trend;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnTick()
{
if(EMA(EMA1_Period)> EMA(EMA2_Period) && ChPos(OP_SELL)==0) { ema1_start = 1;}
if(EMA(EMA1_Period) < EMA(EMA2_Period) && ChPos(OP_BUY)==0) { ema2_start = 1;}
//rsi filter
if(RSI(PeriodRSI)>70){rsi_trend=1;}
if(RSI(PeriodRSI)<30){rsi_trend=-1;}
if(ema2_start==1 && EMA(EMA1_Period)>EMA(EMA2_Period) // ïåðåñå÷åíèå ñðåäíèõ
&& MWE(6) > 0 // macd ôèëüòð âûøå 0
&& (rsi_trend ==1 && RSI(PeriodRSI)>40) // control rsi trend filter
&& ChPos(OP_BUY)==0)
{OpenPos(OP_BUY);ema2_start=0;rsi_trend=0;}
if(ema1_start==1 && EMA(EMA1_Period)<EMA(EMA2_Period) // ïåðåñå÷åíèå ñðåäíèõ
&& MWE(6)<0 // macd ôèëüòð íèæå 0
&&(rsi_trend ==-1 && RSI(PeriodRSI)<60) // control rsi trend filter
&& ChPos(OP_SELL)==0)
{OpenPos(OP_SELL);ema1_start=0;}
ClosePos();
// Print(+" RSIFilter1 "+RSIFilter(0)+" RSIFilter2 "+RSIFilter(1));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double MaximumMinimum(int type,int barsearch)
{
int x=0,stop=0;double minmax;
if(type==0)
{
while(stop==0)
{
minmax=Low[iLowest(NULL,0,MODE_LOW,barsearch,x)];
if(minmax>Low[iLowest(NULL,0,MODE_LOW,barsearch,x+barsearch)])
{
minmax=Low[iLowest(NULL,0,MODE_LOW,barsearch,x+barsearch)];
x=x+barsearch;
}
else {stop=1;return(minmax);}
}//while(stop
}//if(type
if(type==1)
{
while(stop==0)
{
minmax=High[iHighest(NULL,0,MODE_HIGH,barsearch,x)];
if(minmax<High[iHighest(NULL,0,MODE_HIGH,barsearch,x+barsearch)])
{
minmax=High[iHighest(NULL,0,MODE_HIGH,barsearch,x+barsearch)];
x=x+barsearch;
}
else{stop=1;return(minmax);}
}// while(sto
}//if(type
return(0);
}
input string a; //EMA Settings:
input int EMA1_Period = 5;
input int EMA2_Period = 21;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double EMA(int period)
{
double ema=iMA(
Symbol(), // èìÿ ñèìâîëà
0 , // òàéìôðåéì
period, // ïåðèîä
0, // ñäâèã ñðåäíåé
MODE_EMA, // ìåòîä óñðåäíåíèÿ
PRICE_CLOSE, // òèï öåíû
1 // ñäâèã
);
return ema;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double RSI(int period)
{
double ema=iRSI(
Symbol(), // èìÿ ñèìâîëà
0 , // òàéìôðåéì
period, // ïåðèîä
PRICE_CLOSE, // òèï öåíû
1 // ñäâèã
);
return ema;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input string b; //MACD Settings:
extern int FastEMA=10;
extern int SlowEMA=20;
extern int SignalEMA=1;
extern int MAofSignalPer=7;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double MWE(int mode)
{
double wme=iCustom(
Symbol(), // èìÿ ñèìâîëà
0, // òàéìôðåéì
"Macd-with-EMA", // ïàïêà/èìÿ_ïîëüçîâàòåëüñêîãî èíäèêàòîðà
FastEMA,SlowEMA,SignalEMA,MAofSignalPer,// ñïèñîê âõîäíûõ ïàðàìåòðîâ èíäèêàòîðà
mode,// èñòî÷íèê äàííûõ
0 // ñäâèã
);
return wme;
}
input string c; //RSI Settings:
extern int PeriodRSI=14;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double RSIFilter(int mode)
{
double wme=iCustom(
Symbol(), // èìÿ ñèìâîëà
0, // òàéìôðåéì
"RSIFilter_v1",// ïàïêà/èìÿ_ïîëüçîâàòåëüñêîãî èíäèêàòîðà
PeriodRSI,// ñïèñîê âõîäíûõ ïàðàìåòðîâ èíäèêàòîðà
mode,// èñòî÷íèê äàííûõ
0 // ñäâèã
);
return wme;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OpenPos(int cmd)
{
int ticket;double sl,tp;
switch(cmd)
{
case OP_BUY:
sl=MaximumMinimum(0,10);
tp=TakeProfit(sl,OP_BUY);
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,sl,tp,ea_name,magic_n,0,clrGreen);
break;
case OP_SELL:
sl=MaximumMinimum(1,10);
tp=TakeProfit(sl,OP_SELL);
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,sl,tp,ea_name,magic_n,0,clrYellow);
break;
}
};
//--- Close Type
enum CloseType
{
Cl1=0, // SL*2
CL2=1, // EMACross
Cl3=2 // FunCross
};
//--- input parameters
input string d; //TakeProfit Settings:
input CloseType TpType=Cl1;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double TakeProfit(double sl,int cmd)
{
double tp=0;
switch(TpType)
{
case 0:
if(cmd==OP_BUY)
tp=Close[0]+MathAbs(Ask-sl)*2;
if(cmd==OP_SELL)
tp=Close[0]-MathAbs(Ask-sl)*2;
}
return tp;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double ChPos(int cmd)
{
int count=0,i,accTotal=OrdersTotal();
for(i=0;i<accTotal;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderType()==OP_BUY && cmd==OP_BUY)(count++);
if(OrderType()==OP_SELL && cmd==OP_SELL)(count++);
}
}
return count;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ClosePos()
{
int ticket=0,i,accTotal=OrdersTotal();
for(i=0;i<accTotal;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderType()==OP_BUY && TpType==1 && EMA(EMA1_Period)<EMA(EMA2_Period)){ticket=OrderClose(OrderTicket(),OrderLots(),Bid,10,clrAqua);}
if(OrderType()==OP_BUY && TpType==2 && Close[1]<EMA(EMA1_Period)){ticket=OrderClose(OrderTicket(),OrderLots(),Bid,10,clrAqua);}
if(OrderType()==OP_SELL && TpType==1 && EMA(EMA1_Period)>EMA(EMA2_Period)){ticket=OrderClose(OrderTicket(),OrderLots(),Ask,10,clrAqua);}
if(OrderType()==OP_SELL && TpType==2 && Close[1]>EMA(EMA1_Period)){ticket=OrderClose(OrderTicket(),OrderLots(),Ask,10,clrAqua);}
}
}
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---