Discussão do artigo "Que testes deve passar o robô de negociação antes da publicação no Mercado" - página 17

 
Meu robô falha na validação devido ao erro de dinheiro insuficiente. Tentei usar o lote mínimo permitido e ele continua falhando.
Arquivos anexados:
 
dinheiro insuficiente. Tentei usar o lote mínimo permitido e ele continua falhando.

Você não está calculando corretamente os requisitos de margem. Use o OrderCalcMargin para ajustar adequadamente o volume da ordem ou até mesmo para não colocar a ordem, se a exigência de margem for maior do que o volume mínimo permitido.

Isso é discutido no segundo ponto do artigo ... Fundos insuficientes para realizar a operação de negociação

 

Hi,

Alguém pode me ajudar a corrigir o erro de validação? O EA pode trabalhar em uma conta de negociação ativa com negociações abertas e fechadas, mas não pode passar por isso. Por favor, informe quais códigos devem ser adicionados, obrigado.


 

Olá a todos, alguma ideia de por que estou recebendo as seguintes mensagens: "no trading operations" e "tester takes too long time"? Já afrouxei minhas configurações para que as negociações sejam acionadas. Também não encontro problemas quando estou usando o testador de estratégia, GetLastError() sempre me dá um retorno "0". A validação é feita com base em preços históricos, como no testador, ou em preços gerados aleatoriamente?



 
Alexey Viktorov #:

Procurem e vocês encontrarão. Última pista: verificação do mandado.

Você está se referindo à função OrderCheck()? A documentação diz que ela verifica se há fundos suficientes para a transação. Eu também gostaria de ter uma função para verificar o fechamento do mercado, inclusive para o MT4

 
Ivan Titov #:

Você está se referindo à função OrderCheck()? A documentação diz que ela verifica se há fundos suficientes para uma transação. Eu também gostaria de ter uma função para verificar o fechamento do mercado, inclusive para o MT4

Não apenas a suficiência de fundos. Aqui, por exemplo

ENUM_ORDER_TYPE order_type;
double tp = 0.0,
       price = 0.0;
MqlTick mqlTick;
MqlTradeRequest           my_request;               // dados da solicitação
MqlTradeResult            my_result;                // dados do resultado
MqlTradeCheckResult       my_check_result;          // dados de verificação de resultados
long chart_id = ChartID();
/********************Script função de início do programa*******************/
void OnStart()
 {
  ZeroMemory(my_request);
  ZeroMemory(my_check_result);
//--- configuração de my_request
  int k = order_type%2 == ORDER_TYPE_BUY ? 1 : -1;
  double pr = price != 0.0 ? price : order_type == ORDER_TYPE_BUY ? mqlTick.ask : mqlTick.bid;
  ENUM_TRADE_REQUEST_ACTIONS action = order_type == ORDER_TYPE_BUY || order_type == ORDER_TYPE_SELL ? TRADE_ACTION_DEAL : TRADE_ACTION_PENDING;
  my_request.action     = action;
  my_request.symbol     = _Symbol;
  my_request.volume     = 0.1;
  my_request.type       = order_type;
  my_request.price      = pr;
  my_request.sl         = 0.0;
  my_request.tp         = tp > 0.0 ? pr+tp*k : 0.0;
//my_request.magic = Magic;
  my_request.deviation  = 10;
  bool check = OrderCheck(my_request, my_check_result);
  if(!check)
    Print(my_check_result.retcode);
  DebugBreak();
 }/******************************************************************/

10027

TRADE_RETCODE_CLIENT_DISABLES_AT

A negociação automática é proibida pelo terminal do cliente


Também há um preço errado na solicitação,


paradas erradas e muitas outras coisas, e quanto ao erro 10018, sim, eu me apressei com a resposta e não verifiquei. E acabou sendo tudo menos 10018....

 
Olá, como posso passar pela verificação se o Exper Advisor é apenas para um símbolo... mas isso não é verificado e, portanto, nenhuma negociação é executada na verificação automática?
 
@Darius Elias Rey #: Olá, como posso passar pela verificação se o Expert Advisor é apenas para um símbolo... mas isso não é verificado e, portanto, nenhuma negociação é executada na verificação automática?

De acordo com as regras do produto Market, você não tem permissão para restringir ou limitar seu EA a um único símbolo. Seu EA deve funcionar para todos os símbolos, mesmo que seu uso pretendido seja para um único símbolo.

 

Olá,

Eu estava enviando uma nova versão 1.28 do meu EA e ele não está sendo validado com o erro "not enough money error", primeiro achei estranho porque implementei a função CheckMoneyForTrade desde a versão 1.0 e nem sequer recebi o erro antes. Também fiz meu teste antes de enviar o EA, e ele é conclusivo, não está realizando uma negociação se não houver margem livre para cobri-la. Alguma ideia?

O erro que estou recebendo:

Registro do meu teste durante o mesmo período acima, nenhuma ordem é colocada quando não há dinheiro/margem detectada

\

Alguém mais se deparou com esse caso? Desde já, obrigado.

Com os melhores cumprimentos

 
Haidar, Lionel Haj Ali #: Estava enviando uma nova versão 1.28 do meu EA e ele não está sendo validado com o erro "not enough money error". Primeiro achei estranho porque implementei a função CheckMoneyForTrade desde a versão 1.0 e nem sequer recebi o erro antes. Também fiz meu teste antes de enviar o EA, e ele é conclusivo, não está realizando uma negociação se não houver margem livre para cobri-la. Alguma ideia?

O erro que estou recebendo: Registro do meu teste durante o mesmo período que o acima, nenhuma ordem é colocada quando não há dinheiro/margem detectada \ Mais alguém nesse caso?

É possível ver claramente em sua primeira imagem que, antes da negociação, a margem livre disponível era de -10,36. Se seu código não identificou isso corretamente, então o problema está em seu código.