[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 39

 
artem86:

Você pode, por favor, me ajudar? Como fechar 5 pedidos pendentes com a mesma magia quando um determinado preço é alcançado.

Agradecemos antecipadamente!


if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderClose(OrderTicket(),LOT,price,3)==true)
            {  Print("Error = ",GetLastError()); return(0);
}  }  }  }  }
Se todas estas ordens foram abertas para vender então price=Ask, se para comprar então price=Bid.
 
paladin80:
Se o pedido foi aberto para vender então price=Ask, se para comprar então price=Bid.


Errado, você deveria

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {  if(OrderMagicNumber()==magic_number)
         {  if (OrderDelete(OrderTicket())==true)
              {  
              Print("Error = ",GetLastError()); return(0);
              } 
         } 
      }  
   }  
}
 
r772ra:


Errado, você tem que

Merda, não percebi que eu deveria ter fechado as ordens pendentes, estava pensando em fechar posições.
 

Rapazes - digam-me, no testador, e então, ao negociar na conta de negociação, inclusive manualmente, acontece que é possível NÃO NORMALIZAR o volume da posição aberta, enquanto será aberta pelo volume requerido. Por exemplo, se eu abrir um pedido com 0,1210 lotes, o terminal abrirá com 0,12, ou seja, a parte fracionária "extra" é descartada por padrão.

Por favor, informe se esta é outra "atualização" do terminal ou se foi possível originalmente.

Eu já usei este método de normalização de volume antes, mas perdi este ponto em uma de minhas operações e as ordens continuam abrindo e a guia Expert Advisors me dá antes de abrir uma posição o volume preliminar a ser aberto, particularmente, 0,121 lotes - estou testando isto em uma conta demo.

Função da normalização do lote:

//+------------------------------------------------------------------+
//| Нормализация лота                                                |
//+------------------------------------------------------------------+

double NormalizeLots(double lot)
{
   double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   double lots = NormalizeDouble(lot / lotStep, 0) * lotStep;   
   lots = MathMax(lots, MarketInfo(Symbol(), MODE_MINLOT));
   lots = MathMin(lots, MarketInfo(Symbol(), MODE_MAXLOT));   
   return (lots);
}

Chamando-a desde o início da EA:

// ---------НОРМАЛИЗУЕМ НОВЫЕ РАСЧЕТНЫЕ ЛОТЫ И ОТКРЫВАЕМ ОЧЕРЕДНУЮ ПОЗИЦИЮ...            
                    Lots_New = NormalizeLots(Lots_New);
                    if (lastType == OP_SELL) WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask, 0, 0, "итерация" , MagicNumber);
                    if (lastType == OP_BUY)  WmOrderSend(Symbol(), OP_SELL,Lots_New, Bid, 0, 0, "итерация" , MagicNumber);

Quem está ciente disso - comente, plz...

P.S. verificado novamente - aparentemente existe uma situação que quando se tenta abrir um volume de 0,1466 - abre 0,14, ou seja, rejeita tudo à direita do 2º sinal após o ponto decimal.

Se você fizer a normalização, parece que abrirá 0,15 lote - ou seja, com arredondamento.

Vou ter que verificar...

P.P.S. Mesmo assim: Quem sabe - comente, por favor...

 

Ignorar, porra.

 
AJUDA...POR FAVOR...Estou executando o Expert Advisor em uma demonstração e uma conta real, ele diz: será iniciado com o próximo tick...O tick vem mas não vai começar embora a opção "permitir que a EA negocie" esteja marcada, a EA está habilitada, nenhum erro no log, a Internet funciona e outros EAs também funcionam.Este conselheiro funciona bem no testador.Se ajudar: a EA parou de funcionar depois que eu adicionei a função de filtro deste artigo
 
sellena:
Se ajudar: a EA parou de ligar depois que eu adicionei a função de filtro deste artigo

Se isso ajudar, fale com um dos funcionários aqui.
 
sergeev:

Se isso ajudar, fale com um dos trabalhadores aqui.
Alex, dê uma olhada na minha pergunta se você tiver tempo... Obrigado.
 
Roman.:
Alex, dê uma olhada na minha pergunta se você tiver tempo... Obrigado.

Posso lhe dizer uma coisa - já entrei em contato com o serviço (em outra ocasião) e eles me disseram: "confiar na inadimplência é prejudicial, use seus próprios filtros e tratamentos se você quiser ter certeza". Portanto, é com você...
 
Roman.:
Alex, veja a minha pergunta se você tiver tempo... Obrigado.

O FAQ diz o que é certo. Você não pode confiar em "inadimplências". Porque eu me lembro que 131 erros (lote errado) muitas vezes surgiram, se você não fizer uma normalização antes de enviar um pedido.
Talvez agora os MMOs tenham feito sua própria verificação de lote padrão nos servidores ao enviar uma ordem para execução.

Portanto, você deve sempre fazer sua própria normalização de preço e lote antes de enviar.

Isto é para você as regras de boa codificação e a promessa de menos aborrecimentos com problemas potenciais no futuro.

Razão: