//+------------------------------------------------------------------+//| MACD Sample.mq4 |//| Copyright , MetaQuotes Software Corp. |//| |//+------------------------------------------------------------------+extern double TakeProfit = 50;extern double Lots = 0.1;extern double TrailingStop = 30;extern double MACDOpenLevel=3;extern double MACDCloseLevel=2;extern double MATrendPeriod=26;double Points;//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intinit() { Points = MarketInfo (Symbol(), MODE_POINT);//---- return(0); }//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intdeinit() { return(0); }//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intstart() { double MacdCurrent=0, MacdPrevious=0, SignalCurrent=0; double SignalPrevious=0, MaCurrent=0, MaPrevious=0; int cnt=0, total; if(Bars<100) { Print("bars less than 100"); return(0); // 磬 沭圄桕?戾礤?100 徉痤? } if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // 镳钼屦屐 TakeProfit }// 疣滂 箫痤龛 ?篑觐疱龛 觐溧, 耦躔囗桁 礤钺躅滂禧?// 溧眄 桧滂赅蝾痤?忸 怵屐屙睇?镥疱戾眄 MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,MODE_EMA,0,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,MATrendPeriod,MODE_EMA,0,PRICE_CLOSE,1);// 蝈镥瘘 磬漕 铒疱溴腓螯? - ?赅觐?耦耱?龛?蝾疸钼 蝈痨桧嚯?// 镳钼屦桁, 羼螯 腓 疣礤?铗牮 镱玷鲨?桦?铕溴瘥? if(OrdersTotal()<1) { // 礤?龛 钿眍泐 铗牮钽?铕溴疣 // 磬 怦觇?耠篦嚅 镳钼屦桁, 羼腓 ?磬?疋钺钿睇?溴睃汨 磬 聍弪? // 珥圜屙桢 1000 忡蝾 潆 镳桁屦? 钺眍 祛骓?铗牮?1 腩? if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money"); return(0); // 溴礤?礤?- 恹躅滂? } // 镳钼屦桁, 礤 耠桫觐?腓 鬣耱?稃蜞屐? 铗牮? // 羼腓 镱耠邃龛?疣?蝾疸钼嚯?戾礤?麇?5 扈眢?5*60=300 皴? // 磬玎? 蝾 恹躅滂? // If((CurTime-LastTradeTime)<300) { Exit } // 镳钼屦屐 磬 忸珈铈眍耱?怦蜞螯 ?潆桧眢?镱玷鲨?(BUY) if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDOpenLevel*Points) && MaCurrent>MaPrevious) { OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Points,"macd sample",16384,0,Red); // 桉镱腠屐 if(GetLastError()==0)Print("Order opened : ",OrderOpenPrice()); return(0); // 恹躅滂? 蜞?赅?怦?疣忭?镱耠?耦忮瘌屙? 蝾疸钼铋 铒屦圉梃 // 磬耱箫桦 10-蜩 皴牦礓睇?蜞殪囿?磬 耦忮瘌屙桢 蝾疸钼 铒屦圉栝 } // 镳钼屦屐 磬 忸珈铈眍耱?怦蜞螯 ?觐痤蜿簋 镱玷鲨?(SELL) if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDOpenLevel*Points) && MaCurrent<MaPrevious) { OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Points,"macd sample",16384,0,Red); // 桉镱腠屐 if(GetLastError()==0)Print("Order opened : ",OrderOpenPrice()); return(0); // 恹躅滂? }; // 玟羼?禧 玎忮瘌桦?镳钼屦牦 磬 忸珈铈眍耱?铗牮? 眍恹?镱玷鲨? // 眍恹?镱玷鲨?铗牮?礤 猁腓 ?镳铖蝾 恹躅滂?镱 Exit, 蜞?赅? // 怦?疣忭?囗嚯桤桊钼囹?礤麇泐 return(0); }; // 镥疱躅滂??忄骓铋 鬣耱?耧屦蜞 - 觐眚痤膻 铗牮 镱玷鲨? // '忄骓?镳噔桦?忸轵??瘥眍? 眍 恹轵?- 妁?忄骓邋...' total=OrdersTotal(); for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // ?铗牮? 镱玷鲨? OP_BUY 桦?OP_SELL OrderSymbol()==Symbol()) // 桧耱痼戾眚 耦怙噤噱? { if(OrderType()==OP_BUY) // 铗牮?潆桧磬 镱玷鲨 { // 镳钼屦桁, 祛驽?箧?镱疣 玎牮囹? if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDCloseLevel*Points)) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 玎牮噱?镱玷鲨? return(0); // 恹躅滂? }; // 镳钼屦桁 - 祛驽?祛骓?眢骓?箧?蝠彘腓磴 耱铒 耱噔栩? if(TrailingStop>0) // 镱朦珙忄蝈朦 恹耱噔桦 ?磬耱痤殛圊 蝠彘腓磴耱铒 { // 珥圜栩 禧 桎屐 邈?镳钼屦螯 if(Bid-OrderOpenPrice()>Points*TrailingStop) { if(OrderStopLoss()<Bid-Points*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Points*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } else // 桧圜??觐痤蜿? 镱玷鲨 { // 镳钼屦桁, 祛驽?箧?镱疣 玎牮囹? if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Points)) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 玎牮噱?镱玷鲨? return(0); // 恹躅滂? } // 镳钼屦桁 - 祛驽?祛骓?眢骓?箧?蝠彘腓磴 耱铒 耱噔栩? if(TrailingStop>0) // 镱朦珙忄蝈朦 恹耱噔桦 ?磬耱痤殛圊 蝠彘腓磴耱铒 { // 珥圜栩 禧 桎屐 邈?镳钼屦螯 if((OrderOpenPrice()-Ask)>(Points*TrailingStop)) { if(OrderStopLoss()==0.0 || OrderStopLoss()>(Ask+Points*TrailingStop)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Points*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); }// the end.