//+------------------------------------------------------------------+ //| jpytest.mq4 | //| Copyright © 2009, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern double LotSize=0.1; //Ðàçìåð ëîòà äëÿ òîðãîâëè int MagicNumber; int OpenedOrder; double ExtendPoint=1; //äëÿ ÄÖ ñ äîïîëíèòåëüíûì çíàêîì ExtendPoint=10 int init() { return(0); } int deinit() { return(0); } int start() { MagicNumber=900; datetime curtime=iTime(NULL,PERIOD_M1,0); if (ExistPositions(Symbol(),-1 , MagicNumber)) { if ((TimeHour(curtime)==5 && TimeMinute(curtime)==55) || (TimeHour(curtime)==6 && TimeMinute(curtime)==0)) OrderClose(OpenedOrder,LotSize,Ask,3); } else { if (TimeHour(curtime)==4 && TimeMinute(curtime)==0) iSetOrder(Symbol(), OP_SELL, 20*ExtendPoint,10000); } MagicNumber=901; if (ExistPositions(Symbol(),-1 , MagicNumber)) { if ((TimeHour(curtime)==12 && TimeMinute(curtime)==55) || (TimeHour(curtime)==13 && TimeMinute(curtime)==0)) OrderClose(OpenedOrder,LotSize,Bid,3); } else { if (TimeHour(curtime)==10 && TimeMinute(curtime)==0) iSetOrder(Symbol(), OP_BUY, 15*ExtendPoint,10000); } return(0); } bool iSetOrder(string symbol, int cmd, double stoploss, double takeprofit, string comment=""){ int Dist_SL =stoploss; // Çàäàííûé SL (pt) int Dist_TP =takeprofit; // Çàäàííûé TP (pt) double Prots=0.10; // Ïðîöåíò ñâîá. ñð. string Symb=symbol; // Ôèíàíñ. èíñòðóìåíò double i=0; double SL; double TP; color arr; double price; //--------------------------------------------------------------- 2 -- while(i<5) // Öèêë îòêðûòèÿ îðä. { if (cmd==OP_BUY) { SL=Bid - New_Stop(stoploss)*Point; // Âû÷èñëåíèå SL îòêð. TP=Bid + New_Stop(takeprofit)*Point; // Âû÷èñëåíèå TP îòêð. Alert("Ïîïûòêà îòêðûòü Buy. Îæèäàíèå îòâåòà.."); price=Ask; arr=Maroon; } else { SL=Ask + New_Stop(stoploss)*Point; // Âû÷èñëåíèå SL îòêð. TP=Ask - New_Stop(takeprofit)*Point; // Âû÷èñëåíèå TP îòêð. price=Bid; arr=Green; }//if else if (stoploss==0) SL=0; if (takeprofit==0) TP=0; int ticket=OrderSend(symbol,cmd,LotSize,price,3,SL,TP,comment,MagicNumber,0,arr);//Îòêðûòèå Buy //--------------------------------------------------------- 7 -- if (ticket>0) // Ïîëó÷èëîñü :) { Alert ("Îòêðûò îðäåð Buy ",ticket); OpenedOrder=ticket; return(True); break; // Âûõîä èç öèêëà } //--------------------------------------------------------- 8 -- int Error=GetLastError(); // Íå ïîëó÷èëîñü :( switch(Error) // Ïðåîäîëèìûå îøèáêè { case 135:Alert("Öåíà èçìåíèëàñü. Ïðîáóåì åù¸ ðàç.."); RefreshRates(); // Îáíîâèì äàííûå i=i+1; continue; // Íà ñëåä. èòåðàöèþ case 136:Alert("Íåò öåí. Æä¸ì íîâûé òèê.."); while(RefreshRates()==false) // Äî íîâîãî òèêà Sleep(1); // Çàäåðæêà â öèêëå continue; // Íà ñëåä. èòåðàöèþ case 146:Alert("Ïîäñèñòåìà òîðãîâëè çàíÿòà. Ïðîáóåì åù¸.."); Sleep(500); // Ïðîñòîå ðåøåíèå i=i+0.3; RefreshRates(); // Îáíîâèì äàííûå continue; // Íà ñëåä. èòåðàöèþ } switch(Error) // Êðèòè÷åñêèå îøèáêè { case 2 : Alert("Îáùàÿ îøèáêà."); break; // Âûõîä èç switch case 5 : Alert("Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà."); break; // Âûõîä èç switch case 64: Alert("Ñ÷åò çàáëîêèðîâàí."); break; // Âûõîä èç switch case 133:Alert("Òîðãîâëÿ çàïðåùåíà"); break; // Âûõîä èç switch default: Alert("Âîçíèêëà îøèáêà ",Error);// Äðóãèå âàðèàíòû } break; // Âûõîä èç öèêëà } //--------------------------------------------------------------- 9 -- return(False); } int New_Stop(int Parametr) // Ïðîâåðêà ñòîï-ïðèê. { int Min_Dist=MarketInfo(Symbol(),MODE_STOPLEVEL);// Ìèíèì. äèñòàíöèÿ if (Parametr < Min_Dist) // Åñëè ìåíüøå äîïóñò. { Parametr=Min_Dist; // Óñòàíîâèì äîïóñò. Alert("Óâåëè÷åíà äèñòàíöèÿ ñòîï-ïðèêàçà."); } return(Parametr); // Âîçâðàò çíà÷åíèÿ } bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) { int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (ot<=OrderOpenTime()) return(True); } } } } } } return(False); }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
It Closes Orders by itself
It automatically opens orders when conditions are reached
Checks for the total of open orders
Other Features:
It issuies visual alerts to the screen