H
Nao rodrigo, quando quero fehcar uma posição aberta eu mando uma ordem contraria a mercado (DEAL), do mesmo jeito que vc faz.
Se usar a classe CTrade, existe um método chamado PositionClose.
Para cancelar as ordens pendentes, eu mando um novo MqlTradeRequest do tipo TRADE_ACTION_REMOVE, daí tem que passar o número da ordem que vc quer alterar.
Hugo