Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
FT_3BB_RSI_Stohastic_MA_1
//+------------------------------------------------------------------+
//| FT_3BB_RSI_Stohastic_MA.mq4.mq4
//| Copyright 2012, FORTRADER.RU, ftyuriy: http://forexsystems.ru/member.php?u=4
//| http://fortrader.ru
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, FORTRADER.RU, ftyuriy: http://forexsystems.ru/member.php?u=4"
#property link "http://fortrader.ru, 72 âûïóñê"
//ïàðàìåòðû äëÿ îïòèìèçàöèè
extern string b="òèï âõîäà";
extern int enter=0; // 0 - ìåæäó æåëòîé è ãîëóáîé, 1 - ìåæäó ãîëóáîé è êðàñíîé
extern string b1="Ïàðàìåòðû BB";
extern int bolinger_per=140;
extern int bolinger_deviation_yellow=2;
string b2="Äåëèòåëü BB";
int yellow_blue_enter=2; // ïàðàìåòð äëÿ ïîèñêà ïîëîâèíû ðàññòîÿíèÿ ìåæäó æåëòîé è ñèíåé ëèíèè
extern string r1="Ôèëüòð ïî RSI";
extern int RSIFilter=0; //âêëþ÷àåì ôèëüòð ïî RSI
extern int rsi_period=8;
extern int rsi_ur=70; // àâòîìàòè÷åñêè âû÷èñëÿåòñÿ íèæíèé óðîâåíü 100-80.
extern string r2="Ôèëüòð ïî Stohastic";
extern int StohasticFilter=1; // âêëþ÷àåì ôèëüòð ïî Stohastic-ó
extern int stohastic_period=20;
extern int stohastic_ur=95; // àâòîìàòè÷åñêè âû÷èñëÿåòñÿ íèæíèé óðîâåíü 100-80.
//çàêðûòèå ïî îáðàòíîìó êàñàíèþ
extern string ñx="Çàêðûòèå ìåæäó ëèíèÿìè";
extern int close_type=2; // 0 - çàêðûâàåì ïî ñðåäíåé ëèíèè, 1 - çàêðûòü ìåæäó æåëòîé è ãîëóáîé, 2 - ìåæäó ãîëóáîé è êðàñíîé , 3 - çàêðûâàåì ïî yellow_line, 4 - çàêðûâàåì ïî blue_line, 5 - çàêðûâàåì ïî red_line.
//ñäâèã äëÿ òåñòà ïî òèêàì, äëÿ òèêîâ = 0;
extern string sf="Äëÿ òåñòà ïî òèêàì";
extern int shift=1;
extern string ç2="Ñòàíäàðòíûå ïàðàìåòðû";
extern int EA_Magic=12354;
extern double InpLots =0.1;
extern int InpTakeProfit=200;
extern int InpStopLoss =200;
extern int onebuy=1;
int okbuy,oksell;
int start()
{
double STP = InpTakeProfit;
double TKP = InpStopLoss;
if(Digits==5 || Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
int bolinger_deviation_blue=bolinger_deviation_yellow+(bolinger_deviation_yellow/bolinger_deviation_yellow);
int bolinger_deviation_red=bolinger_deviation_yellow*2;
//---- ïîëó÷èì äàííûå èíäèêàòîðîâ
double bb_yellow_line_up=iBands(NULL,0,bolinger_per,bolinger_deviation_yellow,0,PRICE_CLOSE,MODE_UPPER,shift);
double bb_yellow_line_dw=iBands(NULL,0,bolinger_per,bolinger_deviation_yellow,0,PRICE_CLOSE,MODE_LOWER,shift);
double bb_blue_line_up=iBands(NULL,0,bolinger_per,bolinger_deviation_blue,0,PRICE_CLOSE,MODE_UPPER,shift);
double bb_blue_line_dw=iBands(NULL,0,bolinger_per,bolinger_deviation_blue,0,PRICE_CLOSE,MODE_LOWER,shift);
double bb_red_line_up=iBands(NULL,0,bolinger_per,bolinger_deviation_red,0,PRICE_CLOSE,MODE_UPPER,shift);
double bb_red_line_dw=iBands(NULL,0,bolinger_per,bolinger_deviation_red,0,PRICE_CLOSE,MODE_LOWER,shift);
double ma_line=iMA(NULL,0,bolinger_per,0,MODE_SMA,PRICE_CLOSE,shift+1);
if(RSIFilter) double rsi=iRSI(NULL,0,rsi_period,PRICE_CLOSE,shift);
if(StohasticFilter) double stohastic=iStochastic(NULL,0,stohastic_period,3,3,MODE_SMA,0,MODE_MAIN,shift);
//---- ðàññ÷èòàåì öåíîâîå çíà÷åíèå ïîëîâèíû ðàññòîÿíèÿ ìåæäó æåëòîé è ñèíèìè ëèíèÿìè âõîäà
double enterpriceBuy,enterpriceSell, priceclosebuy,proceclosesell;
if(enter==0){//âõîä ìåæäó æåëòîé è ãîëóáîé
enterpriceBuy = bb_yellow_line_up+((bb_blue_line_up-bb_yellow_line_up)/2);
enterpriceSell = bb_yellow_line_dw-((bb_yellow_line_dw-bb_blue_line_dw)/2);}
if(enter==1){//âõîä ìåæäó ãîëóáîé è êðàñíîé
enterpriceBuy = bb_blue_line_up+((bb_red_line_up-bb_blue_line_up)/2);
enterpriceSell = bb_blue_line_dw-((bb_blue_line_dw-bb_red_line_dw)/2);}
if(enter==2){//âõîä ïî æåëòîé ëèíèè
enterpriceBuy = bb_yellow_line_up;
enterpriceSell = bb_yellow_line_dw;}
if(enter==3){//âõîä ïî ãîëóáîé ëèíèè
enterpriceBuy = bb_blue_line_up;
enterpriceSell = bb_blue_line_up;}
if(enter==4){//âõîä ïî ãîëóáîé ëèíèè
enterpriceBuy = bb_red_line_up;
enterpriceSell = bb_red_line_dw;}
//ðàññ÷èòàåì öåíû äëÿ çàêðûòèÿ ìåæäó ëèíèÿìè
if((close_type==1 && enter==0) || (enter==1 && close_type==2) ){ //óðîâíè çàêðûòèÿ ìåæäó æåëòîé è ñèíåé
priceclosebuy=enterpriceSell;
proceclosesell=enterpriceBuy;
}
else{
priceclosebuy= bb_blue_line_dw-((bb_blue_line_dw-bb_red_line_dw)/2);
proceclosesell=bb_blue_line_up+((bb_red_line_up-bb_blue_line_up)/2);
}
if(onebuy){
if(Bid>=enterpriceBuy && !ChPos(1) && RSIFilter==0 && StohasticFilter==0){OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell && !ChPos(0) && RSIFilter==0 && StohasticFilter==0){OpenOrderOnMarket(0,TKP,STP);}
if(Bid>=enterpriceBuy && !ChPos(1) && (RSIFilter==1 && rsi>=rsi_ur) && StohasticFilter==0) {OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell && !ChPos(0) && (RSIFilter==1 && rsi<=(100-rsi_ur) ) && StohasticFilter==0){OpenOrderOnMarket(0,TKP,STP);}
if(Bid>=enterpriceBuy && !ChPos(1) && RSIFilter==0 && ( StohasticFilter==1 && stohastic>stohastic_ur)) {OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell && !ChPos(0) && RSIFilter==0 && ( StohasticFilter==1 && stohastic<(100-stohastic_ur))){OpenOrderOnMarket(0,TKP,STP);}
if(Bid>=enterpriceBuy && !ChPos(1) && (RSIFilter==1 && rsi>=rsi_ur) && (StohasticFilter==1 && stohastic>stohastic_ur) ) {OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell && !ChPos(0) && (RSIFilter==1 && rsi<=(100-rsi_ur)) && (StohasticFilter==1 && stohastic<(100-stohastic_ur) ) ) {OpenOrderOnMarket(0,TKP,STP);}
}
else{
if(Bid>=ma_line){okbuy=0;}
if(Ask<=ma_line){oksell=0;}
if(Bid>=enterpriceBuy && oksell==0 && RSIFilter==0 && StohasticFilter==0){oksell=1;OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell && okbuy==0 && RSIFilter==0 && StohasticFilter==0){okbuy=1;OpenOrderOnMarket(0,TKP,STP);}
if(Bid>=enterpriceBuy && oksell==0 && (RSIFilter==1 && rsi>=rsi_ur) && StohasticFilter==0) {oksell=1;OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell && okbuy==0 && (RSIFilter==1 && rsi<=(100-rsi_ur) ) && StohasticFilter==0){okbuy=1;OpenOrderOnMarket(0,TKP,STP);}
if(Bid>=enterpriceBuy && oksell==0 && RSIFilter==0 && ( StohasticFilter==1 && stohastic>stohastic_ur)) {oksell=1;OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell && okbuy==0 && RSIFilter==0 && ( StohasticFilter==1 && stohastic<(100-stohastic_ur))){okbuy=1;OpenOrderOnMarket(0,TKP,STP);}
if(Bid>=enterpriceBuy && oksell==0 && (RSIFilter==1 && rsi>=rsi_ur) && (StohasticFilter==1 && stohastic>stohastic_ur) ) {oksell=1;OpenOrderOnMarket(1,TKP,STP);}
if(Ask<=enterpriceSell && okbuy==0 && (RSIFilter==1 && rsi<=(100-rsi_ur)) && (StohasticFilter==1 && stohastic<(100-stohastic_ur) ) ) {okbuy=1;OpenOrderOnMarket(0,TKP,STP);}
}
//---- ââåäåì òðè óñëîÿ äëÿ çàêðûòèÿ, èëè ïî êðàñíîé èëè ïî æåëòîé èëè ïî ñèíåé ëèíèè
switch(close_type)
{
case 0:
if(Bid>=ma_line){_OrderClose(0);}
if(Ask<=ma_line){_OrderClose(1);}
break;
case 1:
if(Bid>=proceclosesell){_OrderClose(0);}
if(Ask<=priceclosebuy){_OrderClose(1);}
break;
case 2:
if(Bid>=proceclosesell){_OrderClose(0);}
if(Ask<=priceclosebuy){_OrderClose(1);}
break;
case 3:
if(Bid>=bb_yellow_line_up){_OrderClose(0);}
if(Ask<=bb_yellow_line_dw){_OrderClose(1);}
break;
case 4:
if(Bid>=bb_blue_line_up){_OrderClose(0);}
if(Ask<=bb_blue_line_dw){_OrderClose(1);}
break;
case 5:
if(Bid>=bb_red_line_up){_OrderClose(0);}
if(Ask<=bb_red_line_dw){_OrderClose(1);}
break;
case 6:
if(RSIFilter==1 && rsi>=rsi_ur) {_OrderClose(0);}
if(RSIFilter==1 && rsi<=(100-rsi_ur)){_OrderClose(1);}
break;
case 7:
if(StohasticFilter==1 && stohastic>stohastic_ur){_OrderClose(0);}
if(StohasticFilter==1 && stohastic<(100-stohastic_ur)){_OrderClose(1);}
break;
default:
break;
}
//---- ââåäåì äâà óñëîâèÿ äëÿ âêëþ÷åíèÿ ôèëüòðîâ ïî RSI è ñòîõàñòèêó
//----
return(0);
}
//Çàêðûâàåì âñå ïîçèöèè ïî òèïó
int CloseAllPos(int type)
{//Îïèñàíèå ôóíêöèè: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=72
int buy=1; int sell=1;
int i,b=0;int ordertiket;
if(type==1)
{
while(buy==1)
{
buy=0;
for( i=0;i<OrdersTotal();i++)
{
if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() ){buy=1; OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);}
}else{buy=0;}
}
if(buy==0){return(0);}
}
}
if(type==0)
{
while(sell==1)
{
sell=0;
for( i=0;i<OrdersTotal();i++)
{
if(true==OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() ){sell=1;OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); }
}else{sell=0;}
}
if(sell==0){return(0);}
}
}
return(0);
}
//Çàêðûâàåò ïîçèöþ ïî òèïó
int _OrderClose(int type)
{//http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=99
int err;
for(int i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==EA_Magic)
{
err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
if(err<0){Print("OrderClose()- Îøèáêà çàêðûòèÿ OP_BUY. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==EA_Magic)
{
err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
if(err<0){Print("OrderClose()- Îøèáêà çàêðûòèÿ OP_SELL. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);}
}
}
}
return(0);
}
//ïðîâåðÿåò åñòü ëè îòêðûòûå îðäåðà
int ChPos(int type)
{//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100
int i;bool col=false;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==EA_Magic){col=true;}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==EA_Magic){col=true;}
}
}
return(col);
}
int OpenOrderOnMarket(int type,int slpips,int tppips)
{double op,sl,tp;int err;
if(type==0)
{
op=Ask;if(slpips>0){sl=op-slpips*Point;}if(tppips>0){tp=op+tppips*Point;}
err=OrderSend(Symbol(),OP_BUY,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"72 FORTRADER.RU",EA_Magic,0,Red);
if(err<0){Print("OrderSend()- Îøèáêà OP_BUY. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
}
if(type==1)
{
op=Bid;if(slpips>0){sl=op+slpips*Point;}if(tppips>0){tp=op-tppips*Point;}
err=OrderSend(Symbol(),OP_SELL,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"72 FORTRADER.RU",EA_Magic,0,Red);
if(err<0){Print("OrderSend()- Îøèáêà OP_SELL. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
}
return(0);
}
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
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
---