//+------------------------------------------------------------------+ //| exp_Amstell.mq4 | //| Copyright © 2009, Yuriy Tokman | //| yuriytokman@gmail.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, Yuriy Tokman" #property link "yuriytokman@gmail.com" //òîðãîâëÿ áåç ñòîï ëîñîâ,ïåðèîä day,ïîêóïàòü ,åñëè öåíà îòêðûòèÿ ïîñëåäíåãî //îòêðûòîãî îðäåðà âûøå òåêóùåé öåíû,è çàêðûâàòü îðäåð ïî äîñòèæåíèè 1000 ïóíêòîâ, //òî æå è ñ ïðîäàæåé.îòêðûâàòü îðäåð sell,åñëè ïîñëåäíèé îòêðûòûé sell íèæå òåêóùåé //öåíû. îòêðûâàòü ïîçèöèè ïî öåíàì îòêðûòèÿ extern int TakeProfit = 30; // Ðàçìåð òåéêà â ïóíêòàõ extern int StopLoss = 30; // Ðàçìåð ñòîïà â ïóíêòàõ extern double Lots = 0.01; // Ðàçìåð ëîòà //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int Magic=0; for(int cnt=0;cnt<OrdersTotal();cnt++)// Ïåðåáèðàåì âñå îðäåðà { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);//îðäåð âûáèðàåòñÿ ñðåäè îòêðûòûõ è îòëîæåííûõ îðäåðîâ if( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)// Ñîâïàäàåò ëè ñèìâîë îðäåðà( Çäåñü ïî íàäîáíîñòè åù¸ ìàãèê ìîæíî ïðîâåðèòü) { if(OrderType()==OP_BUY)//Îòáèðàåì ïîçèöèþ áàé { if(Bid-OrderOpenPrice()>TakeProfit*Point || OrderOpenPrice()-Ask>StopLoss*Point)// { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //çàêðûâàåì îðäåð return(0); // âûõîäèì }//StopLoss } if(OrderType()==OP_SELL)//Îòáèðàåì ïîçèöèþ ñåëë { if(OrderOpenPrice()-Ask>TakeProfit*Point || Bid-OrderOpenPrice()>StopLoss*Point)// { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //çàêðûâàåì îðäåð return(0); // âûõîäèì } } } } //---- int buy = 0, sell = 0; //---- if(!ExistPositions(NULL,OP_BUY))buy=1; else if(PriceOpenLastPos(NULL,OP_BUY)-Ask>10*Point)buy=1; if(!ExistPositions(NULL,OP_SELL))sell=1; else if(Bid-PriceOpenLastPos(NULL,OP_SELL)>10*Point)sell=1; //---- if(buy==1) OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",0,0,Green); if(sell==1) OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",0,0,Red); //---- return(0); } //+------------------------------------------------------------------+ //| Îïèñàíèå : Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèé | //+----------------------------------------------------------------------------+ //| Ïàðàìåòðû: | //| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, | //| NULL - òåêóùèé ñèìâîë) | //| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) | //| mn - MagicNumber (-1 - ëþáîé ìàãèê) | //| ot - âðåìÿ îòêðûòèÿ ( 0 - ëþáîå âðåìÿ îòêðûòèÿ) | //+----------------------------------------------------------------------------+ 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); } //+----------------------------------------------------------------------------+ //| Âåðñèÿ : 19.02.2008 | //| Îïèñàíèå : Âîçâðàùàåò öåíó îòêðûòèÿ ïîñëåäíåé îòêðûòîé ïîçèöèé. | //+----------------------------------------------------------------------------+ //| Ïàðàìåòðû: | //| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, | //| NULL - òåêóùèé ñèìâîë) | //| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) | //| mn - MagicNumber (-1 - ëþáîé ìàãèê) | //+----------------------------------------------------------------------------+ double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) { datetime t; double r=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 (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderOpenPrice(); } } } } } } } return(r); }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It automatically opens orders when conditions are reached
Other Features: