//+------------------------------------------------------------------+ //| MACDSimpleReshetov.mq4 | //| Copyright © 2006, Yury V. Reshetov | //| http://reshetov.xnet.uz/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Yury V. Reshetov ICQ: 282715499" #property link "http://reshetov.xnet.uz/" //---- Âõîäíûå è ïð. ïàðàìåòðû //Lots - îáúåì îòêðûòûõ ïîçèöèé extern double Lots = 2; // Ñìåùåíèå (ïðèðàùåíèå) ïåðèîäà áûñòðîé ñêîëüçÿùåé ñðåäíåé // ê ïåðèîäó ñèãíàëüíîé ëèíèè extern int DF = 1; // Ñìåùåíèå (ïðèðàùåíèå) ïåðèîäà ìåäëåííîé ñêîëüçÿùåé ñðåäíåé // ê ïåðèîäó áûñòðîé ñêîëüçÿùåé ñðåäíåé extern int DS = 2; // Ïåðèîä ñèãíàëüíîé ëèíèè extern int SignalPeriod = 10; // prevtime - ïðåäûäóùåå âðåìÿ (ïðåäûäóùåãî áàðà) static int prevtime = 0; //+------------------------------------------------------------------+ //| Ôóíêöèÿ èíèöèàëèçàöèè | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| Äåèíèöèàëèçèðóþùàÿ ôóíêöèÿ | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Ôóíêöèÿ start | //+------------------------------------------------------------------+ int start() { // Òèêåò ïîçèöèè int ticket = 0; // Ïðîâåðèì, ñôîðìèðîâàëñÿ ëè íîâûé áàð? // Åñëè íå ñôîðìèðîâàëñÿ, òî âûõîäèì. // Ýòî ïîçâîëèò èçáåæàòü ëîæíûõ ñðàáàòûâàíèé âî ôëýòå è ðåíäæå if(Time[0] == prevtime) return(0); // Çàïîìíèì òåêóùåå âðåìÿ prevtime = Time[0]; // Çíà÷åíèå îñíîâíîé ëèíèè MACD double main = iMACD(Symbol(), 0, SignalPeriod + DF, SignalPeriod + DS + DF, SignalPeriod, PRICE_CLOSE, MODE_MAIN, 0); // Çíà÷åíèå ñèãíàëüíîé ëèíèè MACD double signal = iMACD(Symbol(), 0, SignalPeriod + DF, SignalPeriod + DS + DF, SignalPeriod, PRICE_CLOSE, MODE_SIGNAL, 0); // îòêðûòûå ïîçèöèè int total = OrdersTotal(); for(int cnt = 0; cnt < total; cnt++) { // Íó-êà ãëÿíåì OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); int tick = OrderTicket(); double openprice = OrderOpenPrice(); double closeprice = Bid; double comission = OrderCommission(); double swap = OrderSwap(); double profit = OrderProfit(); // Ñëó÷àéíî, ýòî íå íàø èíñòðóìåíò? if(OrderSymbol() == Symbol()) { // Àãà! Îí ñàìûé // Çäåñü ìû ïîêóïàëè, à ñèãíàë íà ïðîäàæó if(OrderType() == OP_BUY && main < 0) { // Òàê äåëî íå ïîéäåò, âûõîäèì èç ðûíêà if(OrderClose(OrderTicket(), OrderLots(), closeprice, 3, Blue)) { // Îòïðàâèì âåñòî÷êó èíâåñòîðó SendMail("Close buy position " + Symbol(), "Order #" + tick + ", close at price " + closeprice + " with profit $" + profit + ".\nOpen price " + openprice + "\nComission " + comission + "\nSwap " + swap + ".\n___\nBalance $" + AccountBalance() + "\nEquity $" + AccountEquity() + "\nTotalProfit $" + AccountProfit() + "\nFreeMargin $" + AccountFreeMargin()); } return(0); } // Çäåñü ìû ïðîäàâàëè, à ñèãíàë íà ïîêóïêó if(OrderType() == OP_SELL && main > 0) { closeprice = Ask; // Âåðíèòå íàøè äåíåæêè èëè òî, ÷òî îò íèõ îñòàëîñü if(OrderClose(OrderTicket(), OrderLots(), closeprice, 3, Red)) { // Îòïðàâèì âåñòî÷êó èíâåñòîðó SendMail("Close Sell position " + Symbol(), "Order #" + tick + ", close at price " + closeprice + " with profit $" + profit + ".\nOpen price " + openprice + "\nComission " + comission + "\nSwap " + swap + ".\n___\nBalance $" + AccountBalance() + "\nEquity $" + AccountEquity() + "\nTotalProfit $" + AccountProfit() + "\nFreeMargin $" + AccountFreeMargin()); } return(0); } // Îòêðûòàÿ ïîçèöèÿ íà ýòîì èíñòðóìåíòå óæå åñòü, âòîðóþ îòêðûâàòü íå áóäåì, // à ëó÷øå çàâåðøèì ðàáîòó ýêñïåðòà return(0); } } // Åñëè îáå ëèíèè ïî îäíó ñòîðîíó ôðîíòà, òî âõîäèì â ðûíîê if((main * signal) > 0) { // Åñëè ñèãíàë íà ïîêóïêó if(main > 0) { // Çíà÷èò êóïèì if(main > signal) ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "MACDSimple", 888, 0, Blue); return(0); } else { // Çäåñü ìû ïðîäàåì if (main < signal) ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "MACDSimple", 888, 0, Red); return(0); } } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Indicators Used:
MACD Histogram
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
Other Features:
It sends emails