// Because of my dismal stupidity not even named this EA #property copyright "RamilT" #property link "RamilT@bk.ru" //-----------------------------------Òèïà ïåðåìåííûå----------------------------------------------------------- extern int Magic = 1111; extern int pr=11; extern int sl=35; extern int tp=75; extern int tz=60; extern int mm=1; extern int qq=10; extern int chas1=5; extern int chas2=17; extern double Lots=0.1; extern double TrailingStop = 0; double BuyStop=0, PrevBuyStop=0, SellStop=0, PrevSellStop=0; double Slippage =3; //------------------------------------------------------------------------------------------------------------- int start() { if(Hour()<=chas1||Hour()>=chas2)return(0); if(Bars<100) { Print("bars less than 100"); return(0); } //-----------------------------------Ìîíýé ìåíäæìåíò----------------------------------------------------------- if (ScanTrades()>0 && TrailingStop > 0) HideTrailStop(); if (mm==1) { if(Lots<(MathCeil((AccountFreeMargin()/1000)*qq)/10)){Lots=(MathCeil((AccountFreeMargin()/10000)*qq)/10);if(Lots>100){Lots=100;}} } //------------------------------------------------------------------------------------------------------------- //----------------------------------Ãëàâíûé àëãîðèòì----------------------------------------------------------- if(Month()!=12 && DayOfWeek()!=1 && ScanTrades()<1) { if (((iOpen(NULL,5,1)-iClose(NULL,5,pr))>(Point*tz))&&(Ask>iOpen(NULL,5,1))) { if( tp>0 ) double TakeProfit = NormalizeDouble(Ask+tp*Point,Digits); else TakeProfit = 0; if( sl>0 ) double StopLoss = NormalizeDouble(Ask-sl*Point,Digits); else StopLoss = 0; OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit,"qq-buy60",Magic,0,Blue); } if (((iOpen(NULL,5,1)-iClose(NULL,5,pr))<(-Point*tz))&&(Bid<iOpen(NULL,5,1))) { if( tp>0 ) TakeProfit = NormalizeDouble(Bid-tp*Point,Digits); else TakeProfit = 0; if( sl>0 ) StopLoss = NormalizeDouble(Bid+sl*Point,Digits); else StopLoss = 0; OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,TakeProfit,"qq-sell60",Magic,0,Red); } } return(0); } //------------------------------------------------------------------------------------------------------------- int ScanTrades() { int total = OrdersTotal(); int numords = 0; for(int cnt=0; cnt<total; cnt++) { OrderSelect(cnt, SELECT_BY_POS); if(OrderSymbol() == Symbol() && OrderType()<=OP_SELLSTOP && OrderMagicNumber() == Magic) numords++; } return(numords); } void HideTrailStop() { for (int cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS); int mode=OrderType(); if ( OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if (mode==OP_BUY) { BuyStop = NormalizeDouble(Bid - TrailingStop*Point, Digits); if (BuyStop > OrderStopLoss()) { if( OrderOpenPrice() <= BuyStop ) { OrderModify(OrderTicket(),OrderOpenPrice(), BuyStop, OrderTakeProfit(),0,Yellow); return(0); } } } // - SELL Orders if (mode==OP_SELL) { SellStop = NormalizeDouble(Ask + TrailingStop*Point, Digits); if (SellStop < OrderStopLoss()) { if( OrderOpenPrice() >= SellStop) { OrderModify(OrderTicket(),OrderOpenPrice(), SellStop, OrderTakeProfit(),0,Yellow); return(0); } } } } } }
Sample
Analysis
Market Information Used:
Series array that contains open prices of each bar
Series array that contains close prices for each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
It automatically opens orders when conditions are reached
Checks for the total of open orders
It can change open orders parameters, due to possible stepping strategy
Other Features: