//+------------------------------------------------------------------+ //| 一键三单.mq4 | //| | //| 平反向旧单,新单设止损,增加两单 | //+------------------------------------------------------------------+ #property link "shang9" extern int slippage=2;//滑点 extern int stoploss=40;//止损 extern int wait=180;//补单有效时间(秒) //-------------------------------------------------------------------- double g_point; int init() { if (Point == 0.00001) g_point = 0.0001; else { if (Point == 0.001) g_point = 0.01; else g_point = Point; } return (0); } //-------------------------------------------------------------------- int start() { //------------------------------------------------------------------平反向旧单 if (OrdersTotal( ) > 1 ) { if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) { for(int i=0;i<OrdersTotal()-1;i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,CLR_NONE); } } } if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) { for( i=0;i<OrdersTotal()-1;i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { if(OrderType()==OP_BUY && OrderSymbol()==Symbol()) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,CLR_NONE); } } } } } //----------------------------------------------------------------------------------------------加两单 if (OrdersTotal( ) <3 ) { if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==true) { if((OrderType()==OP_BUY && OrderSymbol()==Symbol()) && TimeCurrent()-OrderOpenTime()<=wait) OrderSend(Symbol(),OP_BUY,OrderLots(),Ask,slippage,Ask-g_point*stoploss,0,"",0,0,Blue); if((OrderType()==OP_SELL && OrderSymbol()==Symbol()) && TimeCurrent()-OrderOpenTime()<=wait) OrderSend(Symbol(),OP_SELL,OrderLots(),Bid,slippage,Bid+g_point*stoploss,0,"",0,0,Blue); } } //----------------------------------------------------------------------------------------------补止损 if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==true) { if((OrderType()==OP_BUY && OrderSymbol()==Symbol()) && (OrderStopLoss()==0 && OrderMagicNumber()!=555)) OrderModify(OrderTicket(),OrderOpenPrice(),Ask-g_point*stoploss,OrderTakeProfit(),0,CLR_NONE); if((OrderType()==OP_SELL && OrderSymbol()==Symbol()) && (OrderStopLoss()==0 && OrderMagicNumber()!=555)) OrderModify(OrderTicket(),OrderOpenPrice(),Bid+g_point*stoploss,OrderTakeProfit(),0,CLR_NONE); } return(0); } |
|