Ajuda urgente necessária com o tratamento de erros de fechamento de pedido!
Results 1 to 3 of 3

Thread: Ajuda urgente necessária com o tratamento de erros de fechamento de pedido!

  1. #1
    Preciso saber qual é o código de tratamento de erro ORDER CLOSE com MAGIC NUMBER.

    Eu sou capaz de fazer isso com o tratamento de erros Order OPEN.

    Mas preciso confirmar se meu código está correto com o tratamento de erros Order CLOSE.




    Este é o meu código de tratamento de erro Order OPEN para Buy Order, que funciona bem:


    //Comprar
    if (Order == SIGNAL_BUY ((EachTickMode !TickCheck) || (!EachTickMode (Bars != BarCount)))) {
    if(!IsTrade) {
    //Verifica margem livre
    if (AccountFreeMargin() lt; (1000 * Lotes)) {
    Print(Não temos dinheiro. Margem Livre = , AccountFreeMargin());
    retornar(0);
    }

    if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; senão StopLossLevel = 0,0;
    if (UseTakeProfit) TakeProfitLevel = Ask TakeProfit * Point; senão TakeProfitLevel = 0,0;

    Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, Buy(# MagicNumber ), MagicNumber, 0, DodgerBlue);
    if(Ticket gt; 0) {
    if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
    Print(ordem de COMPRA aberta: , OrderOpenPrice());
    if (SignalMail) SendMail([Signal Alert], [ Symbol() ] DoubleToStr(Ask, Digits) Open Buy);
    } outro {
    Print(Erro ao abrir ordem de COMPRA: , GetLastError());
    InTrade = falso;
    buyFlag = false;
    }
    }
    else/*** ADICIONADO ELSE a if (Ticket gt;0)
    {
    //Ocorreu um erro ao abrir a negociação, então lide com isso
    Print(Erro ao abrir ordem de COMPRA: , GetLastError());
    InTrade = falso;
    buyFlag = false;
    }
    if (EachTickMode) TickCheck = True;
    if (!EachTickMode) BarCount = Barras;
    retornar(0);
    }
    }



    Este é o código de tratamento de erro do meu pedido CLOSE para o pedido de compra:



    // ---------------------------------------------------- -------------------
    //| Fim do Sinal(Sair da Compra) |
    // ---------------------------------------------------- -------------------

    if (Order == SIGNAL_CLOSEBUY ((EachTickMode !TickCheck) || (!EachTickMode (Bars != BarCount)))) {
    for (cnt = Total; cnt gt;=0; cnt--)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    {
    if (OrderMagicNumber() == MagicNumber)
    {
    nomoretrades = verdadeiro;
    InTrade = falso;
    Ticket = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
    if(Ticket gt; 0) {
    if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
    Print(ordem de VENDA fechada: , OrderClosePrice());
    if (SignalMail) SendMail([Signal Alert], [ Symbol() ] DoubleToStr(Bid, Digits) Open Sell);
    } outro {
    Print(Erro ao fechar ordem de COMPRA: , GetLastError());
    nomoretrades = false;
    InTrade = verdadeiro;
    }
    }
    else/*** ADICIONADO ELSE a if (Ticket gt;0)
    {
    //Ocorreu um erro ao fechar a negociação, então lide com isso
    Print(Erro ao fechar ordem de COMPRA: , GetLastError());
    nomoretrades = false;
    InTrade = verdadeiro;
    }
    }
    }
    }
    if (SignalMail) SendMail([Signal Alert], [ Symbol() ] DoubleToStr(Bid, Digits) Close Buy);
    if (!EachTickMode) BarCount = Barras;
    IsTrade = Falso;
    Prosseguir;
    }
    //Trailing stop
    if(UseTrailingStop TrailingStop gt; 0) {
    if(Bid - OrderOpenPrice() gt; Point * TrailingStop) {
    if(OrderStopLoss() lt; Lance - Ponto * TrailingStop) {
    OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
    if (!EachTickMode) BarCount = Barras;
    Prosseguir;
    }
    }
    }
    } outro {



    Alguém pode me dizer se meu código de tratamento de erro ORDER CLOSE está correto?

    Além disso, parece que tenho um problema ao imprimir o OrderClosePrice() porque o preço impresso está errado. Não tenho problemas em imprimir o OrderOpenPrice() para o Código de Abertura do Pedido.

  2. #2
    Você tem que fechar este colchete if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) { antes } else {

  3. #3
    Na verdade, tenho este código antes disso:/Verificar posição bool IsTrade = False; for (int i = 0; i lt; Total; i ) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(OrderType() lt;= OP_SELL OrderSymbol() == Symbol()) { IsTrade = false; if(OrderType() == OP_BUY) {/Fechar/ ---------------------------------- -------------------------------- /| Início do Sinal(Sair da Compra) |/ ---------------------------------------------------- ------------------- if (buyFlag == false Close1 lt; Middle1) { Order = SIGNAL_CLOSEBUY; } if (Close[0] lt; Middle1) { Pedido = SIGNAL_CLOSEBUY; buyopenpoint = Abrir[0]; } Portanto, o } else{ final é, na verdade, o colchete de fechamento para if(OrderType() == OP_BUY) { Ou você está falando sobre o } else { que vem antes do Print(Error close BUY order : , GetLastError()); ?

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.