本帖最后由 shawnyau 于 2009-10-27 21:07 编辑 -*xm<R],
t^eWFX
Mql5-TradingControler-II /5cFa
zN}1Qh
//+------------------------------------------------------------------+ ;',hwo_LBf
//| ManualTrading.mqh | -L%J,f[&,
//+------------------------------------------------------------------+ @J J,$?
class CManualTrading u!kC+0Y
{ IQn|0$':Z
private: >q W_%
MqlTradeRequest request; yGGQ;!/
MqlTradeResult result; m417=wf
public: ,-!h
CManualTrading(){}; LOm*=MVex
bool CloseAll(); z4qw*. 5
bool CloseProfit(); B 4s^X`?z
bool CloseLoss(); sZ~q|}D-
bool OpenBuy(string symbol,double lots,int tp,int sl); +|Tz<\.C
bool OpenSell(string symbol,double lots,int tp,int sl); 4J #F;#iA
}; N0Y$QWr_$
//+------------------------------------------------------------------+ l/=2P_8+Z
bool CManualTrading::CloseAll() ;3\oU$'
{
%[1\d)
string symbol; i}fAjS:W
int positions=PositionsTotal(); ,'FH[2
for(int ip=0;ip<positions;ip++) x2q6y
{ X#625h
symbol=PositionGetSymbol(ip); IJWUNKqo=
if(PositionSelect(symbol)==true) VnZRsFY<^
{ h=:*cqp4
request.action=TRADE_ACTION_DEAL; dC&OjBQ
request.symbol=symbol; 3YKJN4
request.volume=PositionGetDouble(POSITION_VOLUME); Dd: TFZo
request.tp=0.0; n\-nBrVSf
request.sl=0.0; }9Th`
request.deviation=(ulong)(SymbolInfoInteger(symbol,SYMBOL_SPREAD)); Ofx]
if(request.deviation==0) _1c0pQ ^}3
request.deviation=(ulong)((SymbolInfoDouble(symbol,SYMBOL_ASK)-SymbolInfoDouble(symbol,SYMBOL_BID))/SymbolInfoDouble(symbol,SYMBOL_POINT)); O/(QLgUr
request.type_filling=ORDER_FILLING_CANCEL; s6U$]9 `
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) p\'0m0*
{ L:.z
FW,
request.type=ORDER_TYPE_SELL; Q.U
wtH
request.price=SymbolInfoDouble(symbol,SYMBOL_BID); 6YHQ/#'G~
} \80W?9qj
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) #`HY"-7m_
{ #VvU8"u
request.type=ORDER_TYPE_BUY; f} !Eu
request.price=SymbolInfoDouble(symbol,SYMBOL_ASK); @^2?97i
c
} ;
u@& [
OrderSend(request,result); G%HuB5:u
} n^t!+
} @2`$ XWD
return(true); 4Zn" K}q
} JW}O`H9
//+------------------------------------------------------------------+ ls@j8bVv^
bool CManualTrading::CloseProfit() -<{;.~nI.
{ I^l\<1"]
string symbol; X-<l+WP
int positions=PositionsTotal(); >X_5o^s2s
for(int ip=0;ip<positions;ip++) Fz {T;
{ o JX4+uJ
symbol=PositionGetSymbol(ip); vACJE
if(PositionSelect(symbol)==true && PositionGetDouble(POSITION_PROFIT)>0.0) a{@gzB
{ ".7\>8A#a
request.action=TRADE_ACTION_DEAL; #GuN.`__n,
request.symbol=symbol; IKVFbTX:y
request.volume=PositionGetDouble(POSITION_VOLUME); WNSY@q
request.tp=0.0; ez14f$cJ+
request.sl=0.0; )m$MC25
request.deviation=(ulong)(SymbolInfoInteger(symbol,SYMBOL_SPREAD)); ugzrG0=lx
if(request.deviation==0) d]K$0HY
request.deviation=(ulong)((SymbolInfoDouble(symbol,SYMBOL_ASK)-SymbolInfoDouble(symbol,SYMBOL_BID))/SymbolInfoDouble(symbol,SYMBOL_POINT)); PJL
[En*
request.type_filling=ORDER_FILLING_CANCEL; ML.|\:r*
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) X@ S~D7|ja
{ PYiO l
request.type=ORDER_TYPE_SELL; >BZ,g!N,J}
request.price=SymbolInfoDouble(symbol,SYMBOL_BID); gKP=@v%-
} \U>|^$4 #5
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) _%u t#
{ -TS5g1
request.type=ORDER_TYPE_BUY; M<r]a{Yv
request.price=SymbolInfoDouble(symbol,SYMBOL_ASK); ~KczP1p
} FXul
u6"SX
OrderSend(request,result); &