//+------------------------------------------------------------------+ //| FT_MultiCandlleSystem.mq4 | //| FORTRADER.RU, Þðèé, ftyuriy@gmail.com | //| http://FORTRADER.RU, Candlle+TimeFream | //+------------------------------------------------------------------+ //Îáñóæäåíèå ñîâåòíèêà: http://fxnow.ru/group_discussion_view.php?group_id=57&grouptopic_id=151 #property copyright "FORTRADER.RU, Þðèé, ftyuriy@gmail.com" #property link "http://FORTRADER.RU, Candlle+TimeFream" //---- input parameters extern int GrafOpen=5; extern int GrafOpenSize=100; extern int GrafOpenEnable=1; extern int GrafClose=6; extern int GrafCloseSize=100; extern int GrafCloseEnable=1; extern int GrafMon1=6; extern int GrafMon1Size=100; extern int GrafMon1Enable=1; extern int GrafMon2=7; extern int GrafMon2Size=100; extern int GrafMon2Enable=1; extern int SLTimeFream=7; extern int SL=0; extern int TPTimeFream=7; extern int TP=0; extern double Lots=0.10; extern int mn=1; extern int MG=564651; int start() { Comment("Àíàëèòè÷åñêèé æóðíàë äëÿ òðåéäåðîâ FORTRADER.Ru"); op(); mon(); return(0); } int op() {double op,sl,tp; int err,GrafOpenT,GrafMon1T,GrafMon2T,SLTimeFreamT,TPTimeFreamT; switch(SLTimeFream) { case 1: SLTimeFreamT=1;break; case 2: SLTimeFreamT=5;break; case 3: SLTimeFreamT=15;break; case 4: SLTimeFreamT=30;break; case 5: SLTimeFreamT=60;break; case 6: SLTimeFreamT=240;break; case 7: SLTimeFreamT=1440;break; default: SLTimeFreamT=1;break; } switch(TPTimeFream) { case 1: TPTimeFreamT=1;break; case 2: TPTimeFreamT=5;break; case 3: TPTimeFreamT=15;break; case 4: TPTimeFreamT=30;break; case 5: TPTimeFreamT=60;break; case 6: TPTimeFreamT=240;break; case 7: TPTimeFreamT=1440;break; default: TPTimeFreamT=1;break; } switch(GrafOpen) { case 1: GrafOpenT=1;break; case 2: GrafOpenT=5;break; case 3: GrafOpenT=15;break; case 4: GrafOpenT=30;break; case 5: GrafOpenT=60;break; case 6: GrafOpenT=240;break; case 7: GrafOpenT=1440;break; default: GrafOpenT=1;break; } switch(GrafMon1) { case 1: GrafMon1T=1;break; case 2: GrafMon1T=5;break; case 3: GrafMon1T=15;break; case 4: GrafMon1T=30;break; case 5: GrafMon1T=60;break; case 6: GrafMon1T=240;break; case 7: GrafMon1T=1440;break; default: GrafMon1T=1;break; } switch(GrafMon2) { case 1: GrafMon2T=1;break; case 2: GrafMon2T=5;break; case 3: GrafMon2T=15;break; case 4: GrafMon2T=30;break; case 5: GrafMon2T=60;break; case 6: GrafMon2T=240;break; case 7: GrafMon2T=1440;break; default: GrafMon2T=1;break; } if( ((iClose(NULL,GrafMon2T,1)>iOpen(NULL,GrafMon2T,1) && ((iClose(NULL,GrafMon2T,1)-iOpen(NULL,GrafMon2T,1))<GrafMon2Size*Point*mn) && GrafMon2Enable==1) || GrafMon2Enable==0) && ((iClose(NULL,GrafMon1T,1)>iOpen(NULL,GrafMon1T,1) && ((iClose(NULL,GrafMon1T,1)-iOpen(NULL,GrafMon1T,1))<GrafMon1Size*Point*mn) && GrafMon1Enable==1) || GrafMon1Enable==0) && ((iClose(NULL,GrafOpenT,1)>iOpen(NULL,GrafOpenT,1) && ((iClose(NULL,GrafOpenT,1)-iOpen(NULL,GrafOpenT,1))<GrafOpenSize*Point*mn) && GrafOpenEnable==1) || GrafOpenEnable==0) && ChPos(1)==0 ) { _OrderClose(0); op=Ask; if(SL>0){sl=Ask-SL*Point*mn;}else{sl=Ask-MathAbs((iClose(NULL,SLTimeFreamT,1)-iOpen(NULL,SLTimeFreamT,1)));} if(TP>0){tp=Ask+TP*Point*mn;}else{tp=Ask+MathAbs((iClose(NULL,TPTimeFreamT,1)-iOpen(NULL,TPTimeFreamT,1)));} err=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"5 FORTRADER.RU",MG,0,Red); if(err<0){Print("OrderSend()- Îøèáêà OP_BUY. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} } if( ((iClose(NULL,GrafMon2T,1)<iOpen(NULL,GrafMon2T,1) && ((iOpen(NULL,GrafMon2T,1)-iClose(NULL,GrafMon2T,1))<GrafMon2Size*Point*mn) && GrafMon2Enable==1) || GrafMon2Enable==0) && ((iClose(NULL,GrafMon1T,1)<iOpen(NULL,GrafMon1T,1) && ((iOpen(NULL,GrafMon1T,1)-iClose(NULL,GrafMon1T,1))<GrafMon1Size*Point*mn) && GrafMon1Enable==1) || GrafMon1Enable==0) && ((iClose(NULL,GrafOpenT,1)<iOpen(NULL,GrafOpenT,1) && ((iOpen(NULL,GrafOpenT,1)-iClose(NULL,GrafOpenT,1))<GrafOpenSize*Point*mn) && GrafOpenEnable==1) || GrafOpenEnable==0) && ChPos(0)==0 ) { _OrderClose(1); op=Bid; if(SL>0){sl=Bid+SL*Point*mn;}else{sl=Bid+MathAbs((iClose(NULL,SLTimeFreamT,1)-iOpen(NULL,SLTimeFreamT,1)));} if(TP>0){tp=Bid-TP*Point*mn;}else{tp=Bid-MathAbs((iClose(NULL,TPTimeFreamT,1)-iOpen(NULL,TPTimeFreamT,1)));} err=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red); if(err<0){Print("OrderSend()- Îøèáêà OP_SELL. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} } return(0); } int mon() {int GrafCloseT; switch(GrafClose) { case 1: GrafCloseT=1;break; case 2: GrafCloseT=5;break; case 3: GrafCloseT=15;break; case 4: GrafCloseT=30;break; case 5: GrafCloseT=60;break; case 6: GrafCloseT=240;break; case 7: GrafCloseT=1440;break; default: GrafCloseT=1;break; } if( ChPos(1)==1 && (iClose(NULL,GrafCloseT,1)<iOpen(NULL,GrafCloseT,1) && (iOpen(NULL,GrafCloseT,1)-iClose(NULL,GrafCloseT,1))<GrafCloseSize*Point*mn && GrafCloseEnable==1) ) { _OrderClose(1); } if( ChPos(0)==1 && (iClose(NULL,GrafCloseT,1)>iOpen(NULL,GrafCloseT,1) && (iClose(NULL,GrafCloseT,1)-iOpen(NULL,GrafCloseT,1))<GrafCloseSize*Point*mn && GrafCloseEnable==1) ) { _OrderClose(0); } return(0); } //ïðîâåðÿåò åñòü ëè îòêðûòûå îðäåðà int ChPos(int type) {//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100 int i;int col; for( i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==MG){col=1;} if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==MG){col=1;} } } return(col); } //Çàêðûâàåò ïîçèöþ ïî òèïó 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==1 && OrderMagicNumber()==MG) { 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==0 && OrderMagicNumber()==MG) { 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); }
Sample
Analysis
Market Information Used:
Series array that contains open prices of each bar
Series array that contains close prices for each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
It Closes Orders by itself
It automatically opens orders when conditions are reached
Checks for the total of open orders
Other Features: