两线发散交易法.docx
- 文档编号:30212920
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:15
- 大小:16.64KB
两线发散交易法.docx
《两线发散交易法.docx》由会员分享,可在线阅读,更多相关《两线发散交易法.docx(15页珍藏版)》请在冰豆网上搜索。
两线发散交易法
//+------------------------------------------------------------------+
//|两线发散交易法.mq4|
//|QQ群:
汇聚技术交流-806758447。
进群可享海量EA及指标资源定期或不定期更新资源供大家学习和参考|
//|进群请先加管理员QQ:
3365609227|
//+------------------------------------------------------------------+
#propertycopyright"QQ群:
汇聚技术交流-806758447。
进群可享海量EA及指标资源定期或不定期更新资源供大家学习和参考"
#propertylixxxxnk"进群请先加管理员QQ:
3365609227"
#propertyversion"1.00"
#propertystrict
inputdoubleLots=0.1;
inputintSlippage=2;
inputintFast_Timefrxxxxame=0;
inputintFast_Period=28;
inputintFast_Price=PRICE_OPEN;
inputintFast_Mode=MODE_SMA;
inputintFast_Shift=0;
inputintSlow_Timefrxxxxame=0;
inputintSlow_Period=73;
inputintSlow_Price=PRICE_OPEN;
inputintSlow_Mode=MODE_SMA;
inputintSlow_Shift=0;
inputdoubleDVBuySell=0.002;
inputintMAXTrades=5;
inputdoubleProfitMade=100;
inputdoubleLossLimit=72;
inputintTrailStop=999;
inputintPLBreakEven=999;
inputintStartHour=0;
inputintStopHour=24;
inputintBasketProfit=9999;
inputintBasketLoss=9999;
intMagicNumber=20190404000;
stringTradeComment="两线发散交易法";
datetimebartime=0;
intbartick=0;
intobjtick=0;
inttickcount=0;
boolTradeAllowed=true;
doublemaxOrders;
doublemaxEquity;
doubleminEquity;
doubleCECount;
doubleCEProc;
doubleCEBuy;
doubleCESell;
intOnInit()
{
//---
inti;
stringo;
//removetheoldobxxxxjects
for(i=0;i { o=DoubleToStr(i0); obxxxxjectDelete("myx"+o); obxxxxjectDelete("myz"+o); } objtick=0; Print("Inithappened"CurTime()); Comment(""); //--- return(INIT_SUCCEEDED); } voidOnDeinit(constintreason) { //--- inti; stringo; //removetheoldobxxxxjects for(i=0;i { o=DoubleToStr(i0); obxxxxjectDelete("myx"+o); obxxxxjectDelete("myz"+o); } objtick=0; Print("MAXnumberoforders"maxOrders); Print("MAXequity"maxEquity); Print("MINequity"minEquity); Print("CloseEverything"CECount); Print("CloseProc"CEProc); Print("ProcBuy"CEBuy); Print("ProcSell"CESell); Print("DE-Inithappened"CurTime()); Comment(""); } voidOnTick() { //--- doublep=Point(); doublespread=Ask-Bid; intcnt=0; intgle=0; intOrdersPerSymbol=0; intOrdersBUY=0; intOrdersSELL=0; intiFileHandle; doubleSL=0; doubleTP=0; doubleCurrentProfit=0; doubleCurrentBasket=0; boolBUYme=false; boolSELLme=false; doublediverge; if(bartime! =Time[0]) { bartime=Time[0]; bartick++; objtick++; TradeAllowed=true; Print("Bartick="bartick); } OrdersPerSymbol=0; for(cnt=OrdersTotal();cnt>=0;cnt--) { OrderSelect(cntSELECT_BY_POSMODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) { OrdersPerSymbol++; if(OrderType()==OP_BUY){OrdersBUY++;} if(OrderType()==OP_SELL){OrdersSELL++;} } } if(OrdersPerSymbol>maxOrders)maxOrders=OrdersPerSymbol; diverge=divergence(0); Comment("CurrentDivergence="diverge); if(diverge>=DVBuySell)BUYme=true; if(diverge<=(DVBuySell*(-1)))SELLme=true; if(OrdersPerSymbol<=MAXTrades&&TradeAllowed&&BUYme) { //Ask(buylong) if(LossLimit==0)SL=0;elseSL=Ask-((LossLimit+7)*Point()); if(ProfitMade==0)TP=0;elseTP=Ask+((ProfitMade+7)*Point()); OrderSend(Symbol()OP_BUYLotsAskSlippageSLTPTradeCommentMagicNumberWhite); gle=GetLastError(); if(gle==0) { Print("BUYAsk="Ask"bartick="bartick); obxxxxjectCreate("myx"+DoubleToStr(objtick0)OBJ_TEXT0Time[0]High[0]+(5*p)); obxxxxjectSetText("myx"+DoubleToStr(objtick0)"B"15"Arial"Red); bartick=0; TradeAllowed=false; } else { Print("-----ERROR-----BUYAsk="Ask"error="gle"bartick="bartick); } } if(OrdersPerSymbol<=MAXTrades&&TradeAllowed&&SELLme) { //Bid(sellshort) if(LossLimit==0)SL=0;elseSL=Bid+((LossLimit+7)*Point()); if(ProfitMade==0)TP=0;elseTP=Bid-((ProfitMade+7)*Point()); OrderSend(Symbol()OP_SELLLotsBidSlippageSLTPTradeCommentMagicNumberRed); gle=GetLastError(); if(gle==0) { Print("SELLBid="Bid"bartick="bartick); obxxxxjectCreate("myx"+DoubleToStr(objtick0)OBJ_TEXT0Time[0]High[0]+(5*p)); obxxxxjectSetText("myx"+DoubleToStr(objtick0)"S"15"Arial"Red); bartick=0; TradeAllowed=false; } else { Print("-----ERROR-----SELLBid="Bid"error="gle"bartick="bartick); } } CurrentBasket=AccountEquity()-AccountBalance(); if(CurrentBasket>maxEquity)maxEquity=CurrentBasket; if(CurrentBasket if(CurrentBasket>=BasketProfit||CurrentBasket<=(BasketLoss*(-1))) { CloseEverything(); CECount++; } for(cnt=0;cnt { OrderSelect(cntSELECT_BY_POSMODE_TRADES); if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) { if(OrderType()==OP_BUY) { CurrentProfit=Bid-OrderOpenPrice(); //modifyforbreakeven if(CurrentProfit>=PLBreakEven*p&&OrderOpenPrice()>OrderStopLoss()) { SL=OrderOpenPrice()+(spread*2); TP=OrderTakeProfit(); OrderModify(OrderTicket()OrderOpenPrice()SLTPWhite); gle=GetLastError(); if(gle==0) { Print("MODIFYBREAKEVENBUYBid="Bid"bartick="bartick); obxxxxjectCreate("myz"+DoubleToStr(objtick0)OBJ_TEXT0Time[0]Low[0]-(7*p)); obxxxxjectSetText("myz"+DoubleToStr(objtick0)"BE"15"Arial"White); } else { Print("-----ERROR-----MODIFYBREAKEVENBUYBid="Bid"error="gle"bartick="bartick); } } if(CurrentProfit>=TrailStop*p) { SL=Bid-(TrailStop*p); TP=OrderTakeProfit(); OrderModify(OrderTicket()OrderOpenPrice()SLTPWhite); gle=GetLastError(); if(gle==0) { Print("MODIFYTRAILSTOPBUYStopLoss="SL"bartick="bartick"OrderTicket="OrderTicket()"CurrProfit="CurrentProfit); obxxxxjectCreate("myz"+DoubleToStr(objtick0)OBJ_TEXT0Time[0]Low[0]-(7*p)); obxxxxjectSetText("myz"+DoubleToStr(objtick0)"TS"15"Arial"White); } else { Print("-----ERROR-----MODIFYTRAILSTOPBUYBid="Bid"error="gle"bartick="bartick); } } if(CurrentProfit>=(ProfitMade*p)||CurrentProfit<=((LossLimit*(-1))*p)) { OrderClose(OrderTicket()LotsBidSlippageWhite); gle=GetLastError(); if(gle==0) { Print("CLOSEBUYBid="Bid"bartick="bartick); obxxxxjectCreate("myz"+DoubleToStr(objtick0)OBJ_TEXT0Time[0]Low[0]-(7*p)); obxxxxjectSetText("myz"+DoubleToStr(objtick0)"C"15"Arial"White); } else { Print("-----ERROR-----CLOSEBUYBid="Bid"error="gle"bartick="bartick); } } } if(OrderType()==OP_SELL) { CurrentProfit=OrderOpenPrice()-Ask; //modifyforbreakeven if(CurrentProfit>=PLBreakEven*p&&OrderOpenPrice() { SL=OrderOpenPrice()-(spread*2); TP=OrderTakeProfit(); OrderModify(OrderTicket()OrderOpenPrice()SLTPRed); gle=GetLastError(); if(gle==0) { Print("MODIFYBREAKEVENSELLAsk="Ask"bartick="bartick); obxxxxjectCreate("myz"+DoubleToStr(objtick0)OBJ_TEXT0Time[0]Low[0]-(7*p)); obxxxxjectSetText("myz"+DoubleToStr(objtick0)"BE"15"Arial"Red); } else { Print("-----ERROR-----MODIFYBREAKEVENSELLAsk="Ask"error="gle"bartick="bartick); } } if(CurrentProfit>=TrailStop*p) { SL=Ask+(TrailStop*p); TP=OrderTakeProfit(); OrderModify(OrderTicket()OrderOpenPrice()SLTPRed); gle=GetLastError(); if(gle==0) { Print("MODIFYTRAILSTOPSELLStopLoss="SL"bartick="bartick"OrderTicket="OrderTicket()"CurrProfit="CurrentProfit); obxxxxjectCreate("myz"+DoubleToStr(objtick0)OBJ_TEXT0Time[0]Low[0]-(7*p)); obxxxxjectSetText("myz"+DoubleToStr(objtick0)"TS"15"Arial"Red); } else { Print("-----ERROR-----MODIFYTRAILSTOPSELLAsk="Ask"error="gle"bartick="bartick); } } //didwemakeourdesiredSELLprofit? if(CurrentProfit>=(ProfitMade*p)||CurrentProfit<=((LossLimit*(-1))*p)) { OrderClose(OrderTicket()LotsAskSlippageRed); gle=GetLastError(); if(gle==0) { Print("CLOSESELLAsk="Ask"bartick="bartick); obxxxxjectCreate("myz"+DoubleToStr(objtick0)OBJ_TEXT0Time[0]Low[0]-(7*p)); obxxxxjectSetText("myz"+DoubleToStr(objtick0)"C"15"Arial"Red); } else { Print("-----ERROR-----CLOSESELLAsk="Ask"error="gle"bartick="bartick); } } } } } } //+------------------------------------------------------------------+ voidCloseEverything() { doublemyAsk; doublemyBid; intmyTkt; doublemyLot; intmyTyp; inti; boolresult=false; for(i=OrdersTotal();i>=0;i--) { OrderSelect(iSELECT_BY_POS); myAsk=MarketInfo(OrderSymbol()MODE_ASK); myBid=MarketInfo(OrderSymbol()MODE_BID); myTkt=OrderTicket(); myLot=OrderLots(); myTyp=OrderType(); switch(myTyp) { //Closeopenedlongpositions caseOP_BUY: result=OrderClose(myTktmyLotmyBidSlippageRed); CEBuy++; break; //Closeopenedshortpositions caseOP_SELL: result=OrderClose(myTktmyLotmyAskSlippageRed); CESell++; break; //Closependingorders caseOP_BUYLIMIT: caseOP_BUYSTOP: caseOP_SELLLIMIT: caseOP_SELLSTOP: result=OrderDelete(OrderTicket()); } if(result==false) { Alert("Order"myTkt"failedtoclose.Error: "GetLastError()); Print("Order"myTkt"failedtoclose.Error: "GetLastError()); Sleep(3000); } Sleep(1000); CEProc++; }//for }//closeeverything doubledivergence(intmypos) { inti; doublemaF1maF2maS1maS2; doubledv1dv2; maF1=iMA(Symbol()Fast_TimefrxxxxameFast_PeriodFast_ShiftFast_ModeFast_Pricemypos); maS1=iMA(Symbol()Slow_TimefrxxxxameSlow_PeriodSlow_ShiftSlow_ModeSlow_Pricemypos); dv1=(maF1-maS1); maF2=iMA(Symbol()Fast_TimefrxxxxameFast_PeriodFast_ShiftFast_ModeFast_Pricemypos+1); maS2=iMA(Symbol()Slow_TimefrxxxxameSlow_PeriodSlow_ShiftSlow_ModeSlow_Pricemypos+1); dv2=((maF1-maS1)-(maF2-maS2)); return(dv1-dv2); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 发散 交易法