//+-------------------------------------------------------------------------------------+ //| TECH_ANALYST’S_NIGHTMARE v1-2 25-03-2006.mq4 | //| free, Ñåðãåé Ìàðêîâ| //| msm023@rambler.ru | //+-------------------------------------------------------------------------------------+ extern double BALANCE_INIT = 2000; /*Ìèíèìàëüíûé íà÷àëüíûé äåïîçèò, ïîçâîëÿþùèé ðåàëèçîâàòü «àëüòåðíàòèâíóþ» òîðãîâóþ ñòðàòåãèþ (öåíòû)*/ extern double Lots = 0.1; //Ìèíèìàëüíûé ðàçìåð ëîòà extern int StepTP = 11; //Øàã äëÿ TakeProfit îò «ðûíêà» (íå áëèæå 10) extern int total = 6; //Ðàçðåøåííîå êîëè÷åñòâî ïîçèöèé (ôàêóëüòàòèâíî) extern bool doClose = true; // çàêðûâàòü ïîçû èëè íåò extern double XL = 0.87; /*Êîýôôèöèåíò «ýêñïîíåíöèàëüíîñòè» (ýìïèðè÷åñêè âûâåäåííûé ïàðàìåòð)*/ //+------------------------------------------------------------------------------------------------+ bool k=false; double profB, profS, posB, posS, resB, resS; int start() //--îòêðûòèå ïîç { if (OrdersTotal() < total) //Âîçìîæíû èíûå óñëîâèÿ èëè ïîëíîå èõ îòñóòñòâèå :) { Lots = MathFloor (AccountEquity() * XL / BALANCE_INIT) / 10; /*Ðàçìåð ëîòà âûïîëíåí äèíàìè÷íûì, ãèáêî ìåíÿþùèìñÿ ñîîòâåòñòâåííî èçìåíåíèþ êàïèòàëà. Çäåñü – òîëüêî äëÿ ëîòà â äèàïàçîíå îò 0.1 äî 0.9*/ if (Lots < 0.1) Lots = 0.1; //Ìèíèìàëüíûé ðàçìåð êîíòðàêòà if (Lots > 0.9) Lots = 0.9; //Ìàêñèìàëüíûé ðàçìåð êîíòðàêòà { OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"SELL",0,0,Red); OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"BUY",0,0,Blue); } return(0); } //ðàñ÷åò êîëè÷åñòâà ïîç è ïðîôèòà ïî íèì if (OrdersTotal() >= total) { posB=0; posS=0; profB=0; profS=0; resB=0; resS=0; for(int pos=total-1;pos>=0;pos--) { if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue; if (OrderType()==OP_BUY) { posB=OrderLots()+posB; profB=OrderProfit()+profB; } if (OrderType()==OP_SELL) { posS=OrderLots()+posS; profS=OrderProfit()+profS; } } if (posB!=0) resB=profB/(posB*10); if (posS!=0) resS=profS/(posS*10); //Print("resB ",resB," profB ",profB, " posB ",posB," resS ",resS, " profS ",profS," posS ",posS); //çàêðûâàåì ïîçû if (doClose) { if (resB>=StepTP) { for(pos=total-1;pos>=0;pos--) { if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue; if (OrderType()==OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Gold); } } } if (resS>=StepTP) { for(pos=total-1;pos>=0;pos--) { if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue; if (OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Gold); } } } } } return(0); } //+-----------------------------------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
It Closes Orders by itself
Other Features: