//+------------------------------------------------------------------+ //| | //| FOREXSYSTEMS.RU, FXNOW.RU, FORTRADER.RU Юрий, ftyuriy@gmail.com | //| http://FORTRADER.RU, Price | //+------------------------------------------------------------------+ // СОВЕТНИК ДЛЯ 46 ВЫПУСКА ЖУРНАЛА FORTRADER.RU // ССЫЛКА НА ВЫПУСК: http://www.fortrader.ru/ftgate.php?id=0&NUM=46 // ССЫЛКА НА ОБСУЖДЕНИЕ #property copyright "FORTRADER.RU, Юрий, ftyuriy@gmail.com" #property link "http://FORTRADER.RU, Price" extern int pips=25; extern int profitpips=25; extern double Lots=0.01; extern int time=0; //1 - включено, 0 - выключено. extern int starttime = 7; extern int stoptime = 17; //Описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=1 int timecontrol() { if ( ( (Hour()>=0 && Hour()<=stoptime-1) || (Hour()>=starttime && Hour()<=23)) && starttime>stoptime) { return(1); } if ( (Hour()>=starttime && Hour()<=stoptime-1) && starttime0){TrailStopOrders();} if(CountPos(0)==0 && CountPos(1)==0 && ChStopPosLimitSumm()<2){ _DeleteOrder(); } if(GetMaxLot()==GetMaxLotOrder()){ ChangeOrder(GetMaxLot()*2); } if(ChStopPosLimitSumm()<1){ DopOrder(GetMaxLot()*2); } err=CloseManager(); } return(0); } double op,sl,tp; int OpenNewOrders() {int err; op=Ask-pips*Point;if(SL>0){sl=Ask;}else{sl=0;}if(TP>0){tp=op-TP*Point;}else{tp=0;} err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"46 FORTRADER.RU",0,0,Red); if(err<0){Print("OrderSend()- Ошибка OP_SELLSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} op=Bid+pips*Point;if(SL>0){sl=Bid;}else{sl=0;}if(TP>0){tp=op+TP*Point;}else{tp=0;} err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"46 FORTRADER.RU",0,0,Red); if(err<0){Print("OrderSend()- Ошибка OP_BUYSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} return(err); } //Описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=65 int TrailStopOrders() {int i;bool err; for( i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if( OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && (OrderOpenPrice()-Bid)>pips*Point ) { Print("ТРЕЙЛИМ"); err=OrderModify(OrderTicket(),Bid+pips*Point,OrderStopLoss(),OrderTakeProfit(),0,Green); if(err==false){return(-1);} }//if( OrderType()==OP_BUYSTOP }//if(OrderSelect(i-1,SEL if(OrderSelect(i-1,SELECT_BY_POS)==true) { if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && (Ask-OrderOpenPrice())>pips*Point) { Print("ТРЕЙЛИМ"); err=OrderModify(OrderTicket(),Ask-pips*Point,OrderStopLoss(),OrderTakeProfit(),0,Green); if(err==false){return(-1);} }//if(OrderType()==OP_SELLSTOP }//if(OrderSelect(i-1, }// for( i=1; i<=O return(0); } //Описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66 int CountPos(int type) {int i,b,s; for( i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol()){b=b+1;} if(OrderType()==OP_SELL && OrderSymbol()==Symbol()){s=s+1;} } } if(type==0){return(s);} if(type==1){return(b);} } //Описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=67 int ChStopPosLimitSumm() {int i,z; for( i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP ){z=z+1;} } } return(z); } //Описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=68 int _DeleteOrder() { for( int i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() ) { OrderDelete(OrderTicket()); }//if if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() ) { OrderDelete(OrderTicket()); }//if }//if } return(0); } int CloseManager() {int err; double maxlot=GetMaxLot(); for( int i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderLots()==maxlot && ((OrderOpenPrice()-Ask)>profitpips*Point ) ) {_DeleteOrder();CloseAllPos(0);CloseAllPos(1); // err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); if(err<0){Print("OrderClose()- Ошибка закрытия OP_SELL. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);} }//if if(OrderType()==OP_BUY&& OrderSymbol()==Symbol() && OrderLots()==maxlot && ((Bid-OrderOpenPrice())>profitpips*Point ) ) {_DeleteOrder();CloseAllPos(0);CloseAllPos(1); // err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); if(err<0){Print("OrderClose()- Ошибка закрытия OP_BUY. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);} }//if }//if } return(err); } //Описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=69 double GetMaxLot() {int i;double maxlot; for( i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if((OrderType()==OP_BUY ||OrderType()==OP_SELL) && OrderSymbol()==Symbol() && maxlot0){sl=Bid;}else{sl=0;}if(TP>0){tp=op+TP*Point;}else{tp=0;} err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FORTRADER.RU",0,0,Red); if(err<0){Print("OrderSend()- Ошибка OP_BUYSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} } if(type==0){ op=Ask-pips*Point;if(SL>0){sl=Ask;}else{sl=0;}if(TP>0){tp=op-TP*Point;}else{tp=0;} err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FORTRADER.RU",0,0,Red); if(err<0){Print("OrderSend()- Ошибка OP_SELLSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} }*/ } //Описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=71 int GetLastTypePos() { int i;datetime dt;int type; for( i=1; i<=OrdersTotal(); i++) { if(OrderSelect(i-1,SELECT_BY_POS)==true) { if((OrderType()==OP_BUY ||OrderType()==OP_SELL) && OrderSymbol()==Symbol() && dt0){sl=Bid;}else{sl=0;}if(TP>0){tp=op+TP*Point;}else{tp=0;} err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FORTRADER.RU",0,0,Red); if(err<0){Print("OrderSend()- Ошибка OP_BUYSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} } if(type==0){ op=Ask-pips*Point;if(SL>0){sl=Ask;}else{sl=0;}if(TP>0){tp=op-TP*Point;}else{tp=0;} err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FORTRADER.RU",0,0,Red); if(err<0){Print("OrderSend()- Ошибка OP_SELLSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);} } return(0); } //описание функции: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=72 int CloseAllPos(int type) { int buy=1; int sell=1; int i,b=0;int ordertiket; if(type==1) { while(buy==1) { buy=0; for( i=0;i