
//+------------------------------------------------------------------+ //| disaster.mq4 | //| Max Fade | //| http:// | //+------------------------------------------------------------------+ #property copyright "Jimmy" #property link "http://blog.jimmyacrbin.com" extern double StopLoss = 200; extern double TakeProfit = 200; extern int ModelStyle = 1; extern int PeriodOption = 30; extern int BarJump = 2; extern int MAPER = 590; int Magic = 54321; datetime TradeTimeOut; datetime nowT; int init() { return(0); } int deinit() { return(0); } int start() { /* int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";"); if(handle>0){ // 写入表格栏标题 FileWrite(handle, "Time;Open;High;Low;Close;Volume"); // 记录数据 for(int w=0; w<Bars; w++){ FileWrite(handle, Time[w], Open[w], High[w], Low[w], Close[w], Volume[w]); FileClose(handle); } } Print("Bid",":",Bid,"---","Ask",Ask,"---"); Print("一分钟",iClose("EURUSD",1,0),":",iClose("EURUSD",1,1)); return(0); */ int preOrderType=-1,preTicket=0; double prePriceOpen=0,prePriceClose=0,preTP=0,preSL=0; bool STOPLEVELCHECK; int e,i,m,n,j,k,l,ticket,err,nBars=0,numOrdersCount=0,numSLCount=0,pass=1; double Price = 0.0; double nowBhPrice = 0.0; double nowBmPrice = 0.0; double nowBlPrice = 0.0; double preBhPriceOne = 0.0; double preBmPriceOne = 0.0; double preBlPriceOne = 0.0; double preBhPriceTwo = 0.0; double preBmPriceTwo = 0.0; double preBlPriceTwo = 0.0; double nowClosePrice = 0.0; double preClosePrice = 0.0; double nowClosePriceH1 = 0.0; double preClosePriceH1 = 0.0; double tpreClosePriceH1 = 0.0; int total=OrdersTotal(); nowClosePrice = iClose("EURUSD",PERIOD_H4,0); preClosePrice = iClose("EURUSD",PERIOD_H4,1); nowClosePriceH1 = iClose("EURUSD",PERIOD_H1,0); preClosePriceH1 = iClose("EURUSD",PERIOD_H1,1); tpreClosePriceH1 = iClose("EURUSD",PERIOD_H1,2); //当前布林带最高价 nowBhPrice = iBands("EURUSD",PeriodOption,20,2,0,4,1,0); //当前布林带最低价 nowBlPrice = iBands("EURUSD",PeriodOption,20,2,0,4,2,0); nowBmPrice = (nowBhPrice+nowBlPrice)/2; preBhPriceOne = iBands("EURUSD",PeriodOption,20,2,0,4,1,BarJump); preBlPriceOne = iBands("EURUSD",PeriodOption,20,2,0,4,2,BarJump); preBmPriceOne = (preBhPriceOne+preBlPriceOne)/2; preBhPriceTwo = iBands("EURUSD",PeriodOption,20,2,0,4,1,BarJump*2); preBlPriceTwo = iBands("EURUSD",PeriodOption,20,2,0,4,2,BarJump*2); preBmPriceTwo = (preBhPriceTwo+preBlPriceTwo)/2; for (m=total;m>=0;m--){ if (OrderSelect(m,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderProfit()<-20){ Print("损失:",OrderProfit()); pass=0; OrderDelete(OrderTicket(), Red); e = GetLastError(); Print(OrderTicket(),"修改二11111所有订单删除",OrderType(),":",e,"订单总数",OrdersTotal()); if(e>0){ if(OrderType()!=1 || OrderType()!=5 ||OrderType()!=3){ OrderClose(OrderTicket(),0.1,Ask+3*Point,3,Red); Print(OrderTicket(),"修改二222所有订单关闭",OrderType(),":",GetLastError(),"订单总数",OrdersTotal()); }else{ OrderClose(OrderTicket(),0.1,Bid+3*Point,3,Red); Print(OrderTicket(),"修改二333所有订单关闭",OrderType(),":",GetLastError(),"订单总数",OrdersTotal()); } } return(0); } if(OrderProfit()>20 ||OrderProfit()<-20){ OrderDelete(OrderTicket(), Red); e = GetLastError(); Print(OrderTicket(),"修改二所有订单删除",OrderType(),":",e,"订单总数",OrdersTotal()); if(e>0){ OrderClose(OrderTicket(),0.1,Bid,2,Red); Print(OrderTicket(),"修改二所有订单关闭",OrderType(),":",GetLastError(),"订单总数",OrdersTotal()); } } /* if(OrderType()==0||OrderType()==2||OrderType()==4){ if(OrderProfit()>20 ||OrderProfit()<-20 ){ OrderDelete(OrderTicket(), Red); e = GetLastError(); Print(OrderTicket(),"修改一所有订单删除",OrderType(),":",e,"订单总数",OrdersTotal()); if(e>0){ OrderClose(OrderTicket(),0.1,Ask,2,Red); Print(OrderTicket(),"修改一所有订单关闭",OrderType(),":",GetLastError(),"订单总数",OrdersTotal()); } } } if(OrderType()==1||OrderType()==3||OrderType()==5){ if(OrderProfit()>20 ||OrderProfit()<-20){ OrderDelete(OrderTicket(), Red); e = GetLastError(); Print(OrderTicket(),"修改二所有订单删除",OrderType(),":",e,"订单总数",OrdersTotal()); if(e>0){ OrderClose(OrderTicket(),0.1,Bid,2,Red); Print(OrderTicket(),"修改二所有订单关闭",OrderType(),":",GetLastError(),"订单总数",OrdersTotal()); } } } */ } if(pass==0){ return(0); } Price=NormalizeDouble(nowBhPrice,Digits); //Print("对于 EURUSD M1当前柱0: ", iOpen("EURUSD",PERIOD_M1,0)); //Print("对于 EURUSD 当前柱ASK: ", Ask); //Print("对于 EURUSD 当前柱Bid: ", Bid); //if((nowBmPrice>preBmPriceOne) && (preBmPriceOne>preBmPriceTwo) && nowClosePrice>preClosePrice && Ask>iOpen("EURUSD",PERIOD_H1,1) && iClose("EURUSD",PERIOD_H1,1)>iClose("EURUSD",PERIOD_H1,2) && (Ask - preClosePriceH1)>(preClosePriceH1-tpreClosePriceH1)){ if(Ask>iOpen("EURUSD",PERIOD_H1,1) && iClose("EURUSD",PERIOD_H1,1)>iClose("EURUSD",PERIOD_H1,2) && (Ask - preClosePriceH1)>(preClosePriceH1-tpreClosePriceH1)){ Print("策略一:",Bid); for (i=total;i>=0;i--){ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue; preOrderType=OrderType(); preTicket=OrderTicket(); prePriceOpen=OrderOpenPrice(); preTP=OrderTakeProfit(); preSL=OrderStopLoss(); prePriceClose=OrderClosePrice(); if(Ask<preClosePriceH1){ Print("策略一盈利:",OrderProfit()); for (m=total;m>=0;m--){ if (OrderSelect(m,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderProfit()<=-7 ){ OrderDelete(OrderTicket(), Red); e = GetLastError(); Print(OrderTicket(),"策略一订单删除",OrderType(),":",e,"订单总数",OrdersTotal()); if(e>0){ OrderClose(OrderTicket(),0.1,Bid,2,Red); Print(OrderTicket(),"策略一订单关闭",OrderType(),":",GetLastError(),"订单总数",OrdersTotal()); } } } pass=0; } } if ( total<6 &&Ask-Price >2 * Point && pass==1 && (nowBmPrice>preBmPriceOne) && (preBmPriceOne>preBmPriceTwo) && nowClosePrice>preClosePrice){ ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,NormalizeDouble(Ask,Digits)+3*Point,1,NormalizeDouble(Ask,Digits)-400*Point,NormalizeDouble(Ask,Digits)+250*Point,"略一下单",Magic,0,Red); Print(ticket); if(ticket<=0){ int error=GetLastError(); Print("错误:",error); }else{ OrderSelect(ticket,SELECT_BY_TICKET); OrderPrint(); } } } //if(nowBmPrice<preBmPriceOne && preBmPriceOne<preBmPriceTwo && nowClosePrice<preClosePrice && Bid<iOpen("EURUSD",PERIOD_H1,1) && iClose("EURUSD",PERIOD_H1,1)<iClose("EURUSD",PERIOD_H1,2) && (preClosePriceH1 - Ask)>(tpreClosePriceH1-preClosePriceH1) ){ if( Bid<iOpen("EURUSD",PERIOD_H1,1) && iClose("EURUSD",PERIOD_H1,1)<iClose("EURUSD",PERIOD_H1,2) && (preClosePriceH1 - Ask)>(tpreClosePriceH1-preClosePriceH1) ){ Print("策略二",Bid); for (i=total;i>=0;i--){ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue; preOrderType=OrderType(); preTicket=OrderTicket(); prePriceOpen=OrderOpenPrice(); preTP=OrderTakeProfit(); preSL=OrderStopLoss(); prePriceClose=OrderClosePrice(); if(Bid>preClosePriceH1){ Print("策略二盈利:",OrderProfit()); for (n=total;n>=0;n--){ if (OrderSelect(n,SELECT_BY_POS,MODE_TRADES)==false) continue; if(OrderProfit()<=-7){ OrderDelete(OrderTicket(), Red); e = GetLastError(); Print(OrderTicket(),"策略二订单删除",OrderType(),":",e,"订单总数",OrdersTotal()); if(e>0){ OrderClose(OrderTicket(),0.1,Ask,3,Red); Print(OrderTicket(),"策略二订单关闭",OrderType(),":",GetLastError(),"订单总数",OrdersTotal()); } } } pass=0; } } if ( total<6 && Price-Bid > 20 * Point && pass==1 && nowBmPrice<preBmPriceOne && preBmPriceOne<preBmPriceTwo && nowClosePrice<preClosePrice ){ ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,NormalizeDouble(Bid,Digits)-3*Point,1,NormalizeDouble(Bid,Digits)+400*Point,NormalizeDouble(Bid,Digits)-250*Point,"略二下单",Magic,0,Blue); Print(ticket,"pass",pass); if(ticket<=0){ Print("错误:",GetLastError()); }else{ OrderSelect(ticket,SELECT_BY_TICKET); OrderPrint(); } } } }