利用均线间隔距离来进行交易的系统.doc_第1页
利用均线间隔距离来进行交易的系统.doc_第2页
利用均线间隔距离来进行交易的系统.doc_第3页
利用均线间隔距离来进行交易的系统.doc_第4页
利用均线间隔距离来进行交易的系统.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用均线间隔距离来进行交易的系统(据说价格300欧元)/ user inputextern double Lots=0.1; / how many lots to trade at a time extern int Slippage=2; / how many pips of slippage can you tolorateextern int Fast_TimeFrame=0;extern int Fast_Period=28;extern int Fast_Price = PRICE_OPEN;extern int Fast_Mode = MODE_SMA;extern int Fast_Shift=0;extern int Slow_TimeFrame=0;extern int Slow_Period=73;extern int Slow_Price = PRICE_OPEN;extern int Slow_Mode = MODE_SMA;extern int Slow_Shift=0;extern double DVBuySell=0.002;extern int MAXTrades=5; / number of trades to have open at onceextern double ProfitMade=100; / how much money do you expect to makeextern double LossLimit=72; / how much loss can you tolorateextern int TrailStop=999; / trailing stop (999=no trailing stop)extern int PLBreakEven=999; / set break even when this many pips are made (999=off)extern int StartHour=0; / your local time to start making tradesextern int StopHour=24; / your local time to stop making tradesextern int BasketProfit=9999; / if equity reaches this level, close tradesextern int BasketLoss=9999; / if equity reaches this negative level, close trades/ naming and numberingint MagicNumber = 200601182020; / allows multiple experts to trade on same accountstring TradeComment = 2MA_DivergenceTrader_04_;/ Bar handlingdatetime bartime=0; / used to determine when a bar has movedint bartick=0; / number of times bars have movedint objtick=0; / used to draw objects on the chartint tickcount=0;/ Trade controlbool TradeAllowed=true; / used to manage trades/ Min/Max trackingdouble maxOrders;double maxEquity;double minEquity;double CECount;double CEProc;double CEBuy;double CESell;/+-+/| Custom init |/|-+/ Called ONCE when EA is added to chart or recompiledint init() int i; string o; /remove the old objects for(i=0; iBars; i+) o=DoubleToStr(i,0); ObjectDelete(myx+o); ObjectDelete(myz+o); objtick=0; Print(Init happened ,CurTime(); Comment( ); /+-+/| Custom DE-init |/+-+/ Called ONCE when EA is removed from chartint deinit() int i; string o; /remove the old objects for(i=0; i=0;cnt-) OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if( OrderSymbol()=Symbol() & OrderMagicNumber()=MagicNumber) OrdersPerSymbol+; if(OrderType()=OP_BUY) OrdersBUY+; if(OrderType()=OP_SELL)OrdersSELL+; if(OrdersPerSymbolmaxOrders) maxOrders=OrdersPerSymbol; /+-+ /| Insert your indicator here | /| And set either BUYme or | /| SELLme true to place orders | /+-+ diverge=divergence(0); Comment(Current Divergence = ,diverge); if( diverge=DVBuySell ) BUYme=true; if( diverge=(DVBuySell*(-1) ) SELLme=true; /+-+ /| End Insert | /+-+ /ENTRY LONG (buy, Ask) if(OrdersPerSymbol=MAXTrades & TradeAllowed & BUYme) /Ask(buy, long) if(LossLimit =0) SL=0; else SL=Ask-(LossLimit+7)*Point() ); if(ProfitMade=0) TP=0; else TP=Ask+(ProfitMade+7)*Point() ); OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,TradeComment,MagicNumber,White); gle=GetLastError(); if(gle=0) Print(BUY Ask=,Ask, bartick=,bartick); ObjectCreate(myx+DoubleToStr(objtick,0), OBJ_TEXT, 0, Time0, High0+(5*p); ObjectSetText(myx+DoubleToStr(objtick,0),B,15,Arial,Red); bartick=0; TradeAllowed=false; else Print(-ERROR- BUY Ask=,Ask, error=,gle, bartick=,bartick); /ENTRY SHORT (sell, Bid) if(OrdersPerSymbolmaxEquity) maxEquity=CurrentBasket; if(CurrentBasket=BasketProfit | CurrentBasket=(BasketLoss*(-1) ) CloseEverything(); CECount+; / CLOSE order if profit target made for(cnt=0;cnt= PLBreakEven*p & OrderOpenPrice()OrderStopLoss() SL=OrderOpenPrice()+(spread*2); TP=OrderTakeProfit(); OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP, White); gle=GetLastError(); if(gle=0) Print(MODIFY BREAKEVEN BUY Bid=,Bid, bartick=,bartick); ObjectCreate(myz+DoubleToStr(objtick,0), OBJ_TEXT, 0, Time0, Low0-(7*p); ObjectSetText(myz+DoubleToStr(objtick,0),BE,15,Arial,White); else Print(-ERROR- MODIFY BREAKEVEN BUY Bid=,Bid, error=,gle, bartick=,bartick); / modify for trailing stop if(CurrentProfit = TrailStop*p ) SL=Bid-(TrailStop*p); TP=OrderTakeProfit(); OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP, White); gle=GetLastError(); if(gle=0) Print (MODIFY TRAILSTOP BUY StopLoss=,SL, bartick=,bartick,OrderTicket=,OrderTicket(), CurrProfit=,CurrentProfit); ObjectCreate(myz+DoubleToStr(objtick,0), OBJ_TEXT, 0, Time0, Low0-(7*p); ObjectSetText(myz+DoubleToStr(objtick,0),TS,15,Arial,White); else Print(-ERROR- MODIFY TRAILSTOP BUY Bid=,Bid, error=,gle, bartick=,bartick); / did we make our desired BUY profit / or did we hit the BUY LossLimit if(CurrentProfit=(ProfitMade*p) | CurrentProfit= PLBreakEven*p & OrderOpenPrice()= TrailStop*p) SL=Ask+(TrailStop*p); TP=OrderTakeProfit(); OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP, Red); gle=GetLastError(); if(gle=0) Print (MODIFY TRAILSTOP SELL StopLoss=,SL, bartick=,bartick,OrderTicket=,OrderTicket(), CurrProfit=,CurrentProfit); ObjectCreate(myz+DoubleToStr(objtick,0), OBJ_TEXT, 0, Time0, Low0-(7*p); ObjectSetText(myz+DoubleToStr(objtick,0),TS,15,Arial,Red); else Print(-ERROR- MODIFY TRAILSTOP SELL Ask=,Ask, error=,gle, bartick=,bartick); / did we make our desired SELL profit? if( CurrentProfit=(ProfitMade*p) | CurrentProfit=0;i-) OrderSelect(i, SELECT_BY_POS); myAsk=MarketInfo(OrderSymbol(),MODE_ASK); myBid=MarketInfo(OrderSymbol(),MODE_BID); myTkt=OrderTicket(); myLot=OrderLots(); myTyp=OrderType(); switch( myTyp ) /Close opened long positions case OP_BUY :result = OrderClose(myTkt, myLot, myBid, Slippage, Red); CEBuy+; break; /Close opened short positions case OP_SELL :result = OrderClose(myTkt, myLot, myAsk, Slippage, Red); CESell+; break; /Close pending orders case OP_BUYLIMIT : case OP_BUYSTOP : case OP_SELLLIMIT: case OP_SELLSTOP :result = OrderDelete( OrderTicket() ); if(result = false) Alert(Order , myTkt , failed to close. Error: , GetLastError() ); Print(Order , myTkt , failed to close. Error: , GetLastError() ); Sleep(3000); Sleep(1000); CEProc+; /for / closeeverythingdouble divergence(int mypos) int i; double maF1, maF2, maS1, maS2; double dv1, dv2; maF1=iMA(Symbol(),Fast_TimeFrame,Fast_Period,Fast_Shift,Fast_Mode,Fast_Price,mypos); maS1=iMA(Symbol(),Slow_TimeFrame,Slow_Period,Slow_Shift,Slow_Mode,Slow_Price,mypos); dv1=(maF1-maS1); maF2=iMA(Symbol(),Fast_TimeFrame,Fast_Period,Fast_Shift,Fast_Mode,Fast_Price,mypos+1); maS2=iMA(Symbol(),Slow_TimeFrame,Slow_Period,Slow_Shift,Slow_Mode,Slow_Price,mypos+1); dv2=(maF1-maS1)-(maF2-maS2); return(dv1-dv2); /*int PlaceOrder(string currency, string BuySell, int PM, int LL) / Returns GetLastError number / you can call with ProfitMade or LossLimit set to / zero, and none will be set when order is placed int gle=0; / GetLastError number double mySL; / locally generated SL double myTP; / locally generated TP double myAsk = MarketInfo(currency, MODE_ASK); double myBid = MarketInfo(currency, MODE_BID); double myPoint = MarketInfo(currency, MODE_POINT); /Ask(buy, long) if (BuySell=BUY) if(LL=0) mySL=0; else mySL=myAsk-(LL*myPoint); if(PM=0) myTP=0; else myTP=myAsk+(PM*myPoint); OrderSend(c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论