据说是比较好的mt4样本
样本EA代码,功能齐全 稍作修改即得成品 //+------------------------------------------------------------------+ //| 大家要顶呀,我是新手,支持我! //+------------------------------------------------------------------+ #property copy* "Copy* 2009 tom 的EA" #property link extern string basic1="==== MegaTrend参数 ===================="; extern int period=15; extern int method=3; // MODE_SMA extern int pr*=0; extern string basic="==== Basic Settings ===================="; extern double TakeProfit=100; extern double Stoploss=50; extern double 原始手数=0.1; double Lots; extern int 加仓次数=2; extern string averages="==== MA Settings ===================="; extern int FastPeriod=5; // Period for calculating MA extern int FastShift=0; // Shift the MA over X number of bars extern int FastType=0; // 0: ** moving average // 1: Exponential moving average // 2: Smoothed moving average // 3: Linear weighted moving average extern int FastApplication=0; // 0: Close pr* // 1: Open pr* // 2: High pr* // 3: Low pr* // 4: Median pr*, (high+low)/2 // 5: Typical pr*, (high+low+close)/3 // 6: Weighted close pr*, (high+low+close+close)/4 extern int SlowPeriod=21; extern int SlowShift=0; extern int SlowType=0; extern int SlowApplication=0; extern string manage="==== Order Management ===================="; extern int BreakEvenAtProfit=0; extern int BreakEvenShift=0; // Move the breakeven point up or down around the order open pr* extern int TrailingStop=30; extern bool onlyTrailAfterProfit=false; // Trailing Stop will only trails when order is profitable extern string account="==== Account Settings ===================="; extern int MinimumEquity=0; // New orders will be disabled if equity drops below minimum extern int MinimumBalance=0; // New orders will be disabled if balance drops below minimum extern string activity="==== EA Activity Settings ===================="; extern bool DisableClosingOrders=false; // If true, the order closing section of the EA will not run extern bool DisableNewOrders=false; // If true, the order creating section of the EA will not run extern int ConcurrentOrdersMax=1; // Maximum number of orders at any one time extern string id="==== Identity Settings ===================="; extern int ExpertID=127792141; // Magic number: for identifying an EA's orders extern bool TimeSpecific=false; // If true, Time frames are considered in determining // whether an order belongs to the EA or not string ExpertName="www.imt4.com"; // Expert name: for aesthetic purposes int BuySellSig=-1; //买卖信号 datetime lastTradeTime = 0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { Comment(ExpertName + " is waiting for the next tick to begin."); return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { 手数加倍计算(); Comment(ExpertName + " has started."); int buyOrders=0, sellOrders=0, buyPending=0, sellPending=0; checkOrderStatus(buyOrders, sellOrders, buyPending, sellPending); int instantOrders = buyOrders + sellOrders; int pendingOrders = buyPending + sellPending; int allOrders = instantOrders + pendingOrders; advancedStopManager(instantOrders); //+------------------------------------------------------------------+ //| variable and indicator declaration | //+------------------------------------------------------------------+ if (FastType3) FastType=0; if (FastApplication6) FastType=0; if (SlowType3) SlowType=0; if (SlowApplication6) SlowType=0; BuySellSig=BuyorSell(); //Print(BuySellSig); //+------------------------------------------------------------------+ //| close existing orders under apprpriate conditions | //+------------------------------------------------------------------+ if (DisableClosingOrders==false && allOrders>0) { //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ if (sellOrders==1) if (BuySellSig==0) closeSellOrder(); if (buyOrders==1) if (BuySellSig==1) closeBuyOrder(); //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ } //+------------------------------------------------------------------+ //| create new orders | //+------------------------------------------------------------------+ if (newOrderPrevention(allOrders) == false && Time[0] != lastTradeTime) { //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ if (buyOrders==0) if (BuySellSig==0) { lastTradeTime = Time[0]; sendBuyOrder(); } if (sellOrders==0) if (BuySellSig==1) { lastTradeTime = Time[0]; sendSellOrder(); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ } return(0); } //+------------------------------------------------------------------+ //| middle-man modules | //+------------------------------------------------------------------+ void sendBuyOrder() // Standard Version 1.71 { versatileOrderTaker(1, Ask); } //+------------------------------------------------------------------+ void sendSellOrder() // Standard Version 1.71 { versatileOrderTaker(2, Bid); } //+------------------------------------------------------------------+ void closeSellOrder() // Standard Version 1.71 { versatileOrderCloser(2); } //+------------------------------------------------------------------+ void closeBuyOrder() // Standard Version 1.71 { versatileOrderCloser(1); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| modules and functions | //+------------------------------------------------------------------+ void trailingStopManager() // Standard Version 1.71 { int cnt, total = OrdersTotal(); for(cnt=0;cnt0 && orderBelongsToMe()) { if (OrderType()==OP_BUY) { if ((Bid-OrderOpenPr*()> 据说是比较好的mt4样本 { if (OrderStopLoss()Point*TrailingStop) || onlyTrailAfterProfit==false) { if ((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) OrderModify(OrderTicket(),OrderOpenPr*(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); } } } } } //+------------------------------------------------------------------+ void breakEvenManager() // Standard Version 1.71 { for(int cnt=0;cnt0 && orderBelongsToMe()) { if (OrderType()==OP_BUY) { if (Bid-OrderOpenPr*()>=Point*BreakEvenAtProfit) { if (OrderStopLoss()!=OrderOpenPr*() + BreakEvenShift*Point) OrderModify(OrderTicket(),OrderOpenPr*(),OrderOpenPr*()+ BreakEvenShift*Point,OrderTakeProfit(),0,Green); } } else if (OrderType()==OP_SELL) { if (OrderOpenPr*()-Ask>=Point*BreakEvenAtProfit) { if (OrderStopLoss()!=OrderOpenPr*() - BreakEvenShift*Point) OrderModify(OrderTicket(),OrderOpenPr*(),OrderOpenPr*()- BreakEvenShift*Point,OrderTakeProfit(),0,Red); } } } } } //+------------------------------------------------------------------+ // Standard Version 1.71 void checkOrderStatus(int& buyOrders,int& sellOrders,int& buyPending, int& sellPending) { for(int cnt=OrdersTotal();cnt>=0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if ( orderBelongsToMe() ) { if (OrderType()==OP_BUY) {buyOrders++;} else if (OrderType()==OP_SELL) {sellOrders++;} else if (OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT) {buyPending++;} else if (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT) {sellPending++;} } } } //+------------------------------------------------------------------+ void advancedStopManager(int instantOrders) // Standard Version 1.71 { if (instantOrders>=1) { if (BreakEvenAtProfit>0) breakEvenManager(); if (TrailingStop>0) trailingStopManager(); } } //+------------------------------------------------------------------+ bool orderBelongsToMe() // Standard Version 1.71 { if (OrderSymbol()==Symbol() && OrderMagicNumber()==**MagicGenerator() ) return (true); else return (false); } //+------------------------------------------------------------------+ int **MagicGenerator() // Standard Version 1.71 { int truMagic; if (TimeSpecific) truMagic = ExpertID + (Period()*17 + 203); else truMagic = ExpertID; return (truMagic); } //+------------------------------------------------------------------+ string commentString() // Standard Version 1.71 { string tfString, fullComment; switch (Period()) { case 1: tfString = "1 Min"; break; case 5: tfString = "5 Min"; break; case 15: tfString = "15 Min"; break; case 30: tfString = "30 Min"; break; case 60: tfString = "1 Hour"; break; case 240: tfString = "4 Hour"; break; case 1440: tfString = "Daily"; break; case 10080: tfString = "Weekly"; break; case 40320: tfString = "Monthly"; break; default: tfString = "Unknown"; } fullComment=StringConcatenate(ExpertName, ": ", tfString); return (fullComment); } 未完,见2楼 |
打赏
最新创建圈子
- 新闻EA运行效果图圈 2019-05-05
圈主:admin 帖子:1