//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2010, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ bool IsNewBar(ENUM_TIMEFRAMES period); bool DebugOrderSend(int line,MqlTradeRequest &tr,MqlTradeResult &res); bool DebugOrderCheck(int line,MqlTradeRequest &tr,MqlTradeCheckResult &tres); //------------------------------------------------------------------- class CExp { private: //... double getTP(); double getVol(); ENUM_ORDER_TYPE getOrderType(); double getDB(); public: CExp(){}; ~CExp() {/*...*/}; bool Init(string symbol,/*...*/); void DayTrade(); void IntraDayTrade(); }; //------------------------------------------------------------------- //.... bool IsNewBar(ENUM_TIMEFRAMES period) { static datetime prevTime[2]; datetime currentTime[1]; CopyTime(_Symbol,period,0,1,currentTime); int _=period==PERIOD_M30; if(currentTime[0]==prevTime[_])return(false); else { prevTime[_]=currentTime[0]; return(true); } } //------------------------------------------------------------------ bool DebugOrderSend(int line,MqlTradeRequest &tr,MqlTradeResult &res) { bool yes; double vol; int _; if(((OrdersTotal()==12) || (SymbolInfoDouble(tr.symbol,SYMBOL_VOLUME_MIN)>tr.volume) || (5=0;_--) if(OrderSelect(OrderGetTicket(_)) && (OrderGetString(ORDER_SYMBOL)==tr.symbol)) if(OrderGetInteger(ORDER_TYPE)==tr.type) vol+=OrderGetDouble(ORDER_VOLUME_INITIAL); if(vol+tr.volume>15) tr.volume=15-vol; if(tr.volume>5) return(false); if(tr.volume<0.1) return(false); } yes=OrderSend(tr,res); if(!yes) { Print("Ordersend Err:",res.retcode); Print("Line: ",line); Print("tr.symbol:", tr.symbol); Print("tr.volume:", tr.volume); Print("tr.type:",tr.type); Print("tr.price:",tr.price); Print("tr.action:",tr.action); Print("tr.tp:",tr.tp); } return(yes); } //------------------------------------------------------------------ bool DebugOrderCheck(int line,MqlTradeRequest &tr,MqlTradeCheckResult &tres) { if(((OrdersTotal()==12) || (SymbolInfoDouble(tr.symbol,SYMBOL_VOLUME_MIN)>tr.volume) || (SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX)