EA conta Real não executa mesmo com saldo em Garantia.

Para adicionar comentários, por favor Faça o login ou registrar
Ruy Christian Hoffmann
720
Ruy Christian Hoffmann  

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,

Ivan Ronchi
350
Ivan Ronchi  

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

Rogerio Giannetti Torres
3254
Rogerio Giannetti Torres  
Ruy Christian Hoffmann:


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...

Ruy Christian Hoffmann
720
Ruy Christian Hoffmann  
Rogerio Giannetti Torres:

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 Ronchi
350
Ivan Ronchi  

Melhor colocar a validação antes de cada nova compra/venda.

Ruy Christian Hoffmann
720
Ruy Christian Hoffmann  
Ivan Ronchi:

Melhor colocar a validação antes de cada nova compra/venda.

Ivan, acabei de colocar somente essa única linha antes da compra. To achando fácil demais, é só isso mesmo? rsrsrs


 double free_margin=AccountInfoDouble(ACCOUNT_FREEMARGIN);
Ruy Christian Hoffmann
720
Ruy Christian Hoffmann  
Ruy Christian Hoffmann:

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 :)


Ruy Christian Hoffmann
720
Ruy Christian Hoffmann  

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 :)

Ruy Christian Hoffmann
720
Ruy Christian Hoffmann  

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. 

Rogerio Giannetti Torres
3254
Rogerio Giannetti Torres  
Ruy Christian Hoffmann:


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.

Ruy Christian Hoffmann
720
Ruy Christian Hoffmann  

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?

12
Para adicionar comentários, por favor Faça o login ou registrar