Em relação à função OrderTicket ()
Results 1 to 3 of 3

Thread: Em relação à função OrderTicket ()

  1. #1
    Eu quero que o meu EA verifique e garanta que ele possa ter apenas uma ordem pendente no pool a qualquer momento, então eu escrevi o seguinte código para fazer isso:

    int CheckOrders ()
    {
    //----
    int i, encomendas;
    bilhetes int [];
    //----
    ticket int = 0;
    int total = OrdersTotal ();
    //----
    para (i = total; igt; = 0; i--) tickets [i] = 0;
    //----
    para (i = total; igt; = 0; i -) {
    if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
    if (OrderMagicNumber () == magic_base OrderType () gt; 1) {
    encomendas ;
    tickets [i] = OrderTicket ();
    Imprimir (tickets =, tickets [i]);
    }
    }
    }
    Imprimir (total =, total, ordens =, pedidos);
    while (ordersgt; 1) {
    para (i = total; igt; = 0; i -) {
    if (ticket == 0 tickets [i] gt; 0) ticket = tickets [i];
    if (ticketgt; tickets [i]) ticket = bilhetes [i];
    }
    if (OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES)) {
    OrderDelete (ticket);
    }
    ordens--;
    }
    Imprimir (ticket = bilhete);
    //----
    retorno (0);
    }


    Ele exibe o número de pedidos pendentes no pool pelo mesmo EA corretamente, mas não excluirá os pedidos pendentes indesejados, pois sempre mostra os tickets [i] = 0. e, por isso, o OrderDelete (ticket) ganhou não funciona. Poderia por favor me dizer por que isso aconteceria?

  2. #2
    Obrigado tesla! essa foi exatamente a principal razão pela qual o código não funcionou! obrigado por apontar
    . aqui está a nova versão e funciona! int CheckOrders () {//---- int i, res, pendente, tenta; bilhetes int [99];/---- int ticket = 0; int total = OrdersTotal ();/---- para (i = total; igt; = 0; i--) tickets [i] = 0;/---- para (i = total; igt; = 0; i -) {se (OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {se (OrderMagicNumber () == magic_base OrderType () gt; 1) { pendente ; tickets [i] = OrderTicket (); }}/else Print (OrderSelect retornou o erro de, GetLastError ()); } while (pendinggt; 1) {para (i = total; igt; = 0; i -) {if (tickets [i] gt; 0) ticket = tickets [i]; if (tickets [i] gt; 0 tickets [i] lt; ticket) ticket = tickets [i]; } tentativas = 0; if (ticketgt; 0) {while (tentativaslt; tempo limite) {res = OrderDelete (ticket); if (resgt; 0) {tenta = tempo limite; Imprimir (myHL_ HL Symbol () _ Período () ; Ordem Pendente_ ticket Excluído!); } else {tenta ; Imprimir (OrderDelete retornou o erro de, GetLastError ()); Sono (orderinterval); } } } pendente--; }/---- return (0); }

  3. #3
    De relance, acho que o problema é que você não está dimensionando a matriz de tickets. Aposto que você está recebendo muitos erros de ERR_ARRAY_INDEX_OUT_OF_RANGE.

Permissões de Publicação

  • Não pode publicar novos tópicos
  • Não pode publicar respostas
  • Não pode publicar anexos
  • Não pode editar as suas publicações
  •  
  • Código BB está Ativo
  • Smilies estão Ativos
  • Código [IMG] está Ativo
  • Código [VIDEO] está Ativo
  • Código HTML está Desligado
O site da tradingintuitivo utiliza cookies
O site da tradingintuitivo utiliza cookies, alguns já foram definidos. Pode ler sobre a nossa utilização de cookies aqui. Por favor, clique no botão à direita para aceitar os nossos cookies. Se continuar a usar o site da tradingintuitivo, vamos supor que aceita os nossos cookies.