Ruy,
Acredito que tem que ter Margem Livre positiva no saldo do MT5.
O CheckMoneyForTrade usa AccountInfoDouble(ACCOUNT_MARGIN_FREE) para validar e apresentar a mensagem "Not enough money for...."
Ivan
Bom dia Ruy,
o Sr. já ligou para corretora e eles não resolveram ou não te orientaram o que fazer?
Tá falando sério, foi isso mesmo? Que absurdo...
Bom dia Ruy,
o Sr. já ligou para corretora e eles não resolveram ou não te orientaram o que fazer?
Tá falando sério, foi isso mesmo? Que absurdo...
Rogério, acabei de ligar e lá está tudo ok.
Parece que no EA preciso colocar a solução do Ivan, alguma coisa para ler o saldo novamente. Vou tentar aqui. Obrigado.
Ivan, acabei de colocar somente essa única linha antes da compra. To achando fácil demais, é só isso mesmo? rsrsrs
Eu mudei meu código, coloquei isso abaixo. Compilou mas ainda não sei se está funcionando, estou esperando ele tentar entrar numa operação para saber se vai continuar o erro ou não:
bool CheckMoneyForTrade(string symb,double lots,ENUM_ORDER_TYPE type) { //--- obtemos o preço de abertura MqlTick mqltick; SymbolInfoTick(symb,mqltick); double price=mqltick.ask; if(type==ORDER_TYPE_SELL) price=mqltick.bid; //--- valores da margem necessária e livre double margin,free_margin=AccountInfoDouble(ACCOUNT_FREEMARGIN); //--- chamamos a função de verificação if(!OrderCalcMargin(type,symb,lots,price,margin)) { //--- algo deu errado, informamos e retornamos false Print("Error in ",__FUNCTION__," code=",GetLastError()); return(false); } //--- se não houver fundos suficientes para realizar a operação if(margin>free_margin) { //--- informamos sobre o erro e retornamos false Print("Not enough money for ",EnumToString(type)," ",lots," ",symb," Error code=",GetLastError()); return(false); } //--- a verificação foi realizada com sucesso return(true); } double CheckQtdAberto() { double vQtd = PositionGetDouble(POSITION_VOLUME); // Print("Quantidade Ruy: ",vQtd); return vQtd; }
... e lá na hora de comprar eu faço a checagem:
void Venda() { if(CheckMoneyForTrade(_Symbol,1,ORDER_TYPE_SELL)) { // double free_margin=AccountInfoDouble(ACCOUNT_FREEMARGIN); double price=simbolo.Ask(); double stoploss = simbolo.NormalizePrice(price + SL); double takeprofit = simbolo.NormalizePrice(price - TP); negocio.Sell(Volume, NULL, price, stoploss, takeprofit, "Venda Cruzamento"); } }
Dai falo para vocês se deu certo ou não :)
Não deu certo... :( meu código ainda está pegando em algum lugar o saldo errado ou não está conseguindo ver o saldo :( ... vou desativar essa checagem até descobrir o que é.
Se alguém conseguir ver o erro nesse código acima, me ajude aeeeeê por favor :)
Primeiro agradecer mais uma vez Ivan :) :) :) Você tava certo amigo!!!
Segundo agradecer Rogério que deu atenção ao meu post e tentou me ajudar :) :) Obrigado também :) :)
O meu código acima estava com erro, no meu ... OrderCalcMargin ... estava buscando o saldo acumulado e não o saldo do dia apenas.
Corrigido, então não era problema com a corretora nem falta de saldo, é meu código que conferia o saldo que tava errado mesmo.
Obrigado e grande abraço.
Opa Ruy, que bom que resolveu o problema eu respondi sem saber que estava testando o saldo antes de fazer a operação, mas repare bem num fato, para não ter surpresas depois. Cada corretora tem suas próprias regras de risco para operações com derivativos e operações alavancadas, tanto daytrade como swing trade!
Sugiro você conhecer as regras da sua corretora, pois para algumas, o que impede de você operar 1000 contratos de mini índice não é o saldo apresentado do MT5 mas sim são os limites que foram alocados para sua conta.
Rogério,
Obrigado pela dica. Mas sim, está alocado em Garantia para Plataformas, no caso como exige a Clear.
Mas resolvi em partes... resolvi uma parte do código que estava com erro, agora estou com outro problema.
Por acaso a guia Negociação não deveria ser o mesmo saldo da Corretora? Pois olhe o que me apresenta
E não deveria ser "Margem Livre: " = Saldo em Garantia ainda não utilizado na Corretora?
É eu que atualizo isso por código ou é automático?
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Pessoal, bom dia,
Mais uma vez preciso de ajuda de vocês...
Tenho conta na Clear-PRD (conta real). Ocorre que antes de ontem tive uma perda, ficou lá negativo, alguns reais aparecem no meu MT5 como pode ver na figura abaixo.
Porém na corretora já cobri o saldo, já coloquei uma grana bem acima do que o necessário, já aloquei em Garantia Plataforma, consigo abrir ordem no MT5 manualmente, enfim, parece tudo ok. Mas o EA não roda, toda vez que vai abrir ordem é como se ele ainda estivesse considerando essa margem de 2 dias atrás, ele dá a mensagem:
Não sei mais onde procurar, já fui no google, já liguei para a corretora, to batendo cabeça a 2 dias sem saber o que é.
Alguém tem uma ajudinha?
Obrigado,