[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 502
Com quaisquer valores de SL e TP, ele dá 134, muitas vezes não faz nenhum pedido.
abre com a condição se(NumberOfOrders(NULL)==0)
No testador, em vez de uma ordem, sempre coloca um monte, ou seja, não consigo entender porque deveria fazer uma ordem se não há outras ordens em aberto neste par
Com quaisquer valores de SL e TP, ele dá 134, muitas vezes não faz nenhum pedido.
abre com a condição se(NumberOfOrders(NULL)==0)
No testador, em vez de uma ordem, sempre coloca um monte, ou seja, não consigo entender porque deveria fazer uma ordem se não há outras ordens em aberto neste par
ERR_NOT_ENOUGH_MONEY 134 Não há dinheiro suficiente para completar a transação
Bom dia. Estou fazendo um EA, ele abre 2 pedidos em uma determinada condição (figurativamente falando: quando o preço sobe e desce). Quando o preço sobe, abre 2, quando o preço desce, fecha esses 2 e abre um novo 2. Uma ordem vai sem lucro, a segunda ordem com lucro. Há um problema com o segundo. No momento de sua morte, não é selecionado, aqui está o código para remover ordens:
for (int a = 0; a < OrdersTotal()-1; a++)
if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES))
if (OrderComment() == "MyOrd" && OrderType() == OP_SELL)
OrderClose(OrderTicket(), NormalizeDouble(OrderLots(), Digits), NormalizeDouble(Ask, Digits), 0);
O mesmo para OP_BUY. Estou comparando comentários para ter certeza de que é uma ordem aberta por minha EA e não manualmente ou por outra EA. Aqui está o problema com o OrderSelect, ele simplesmente não quer selecionar um pedido com lucro. Quando chega a seu número, OrderSelect retorna falso. Não há erro no registro do testador, GetLastError também diz que tudo está bem (devolve 0). Por que ele não está sendo selecionado? Por que nenhum erro se ele não pôde selecioná-lo? Obrigado a todos vocês.
Pergunta de acompanhamento. Por que no testador, quando eu defino o período para mês+, então cinco dígitos aparecem nos resultados? Onde quer que os preços sejam estabelecidos, eu coloco NormalizeDouble(SomeValue, Digits). E somente nos resultados, o tronco não jura, embora quando eu não sabia sobre a função de arredondamento, então ele jurou.
Além disso - não é tão fácil normalizar o lote. Você precisa levar em conta o passo permitido de mudança de lote. Por exemplo, se a etapa for 0,01, então normalize em 2 e se a etapa for 0,1, então a normalização deve ser 1
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
editar | apagar Ajuda para encontrar uma função para colocar pedidos que leve em conta o escorregamento e sem erros 130-134.
Mostre-me sua variante.
Print(GetLastError());
Com quaisquer valores de SL e TP, ele dá 134, muitas vezes não faz nenhum pedido.
abre com a condição se(NumberOfOrders(NULL)==0)
No testador, em vez de uma ordem, sempre coloca um monte, ou seja, não consigo entender porque deveria fazer uma ordem se não há outras ordens em aberto neste par
NumderOrder=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-SL*Point,Ask+TP*Point, "BUY",0,0,Red);
Print(GetLastError());
Com quaisquer valores de SL e TP, ele dá 134, muitas vezes não faz nenhum pedido.
abre com a condição se(NumberOfOrders(NULL)==0)
No testador, em vez de uma ordem, sempre coloca um monte, ou seja, não consigo entender porque deveria fazer uma ordem se não há outras ordens em aberto neste par
ERR_NOT_ENOUGH_MONEY 134 Não há dinheiro suficiente para completar a transação
Bom dia. Estou fazendo um EA, ele abre 2 pedidos em uma determinada condição (figurativamente falando: quando o preço sobe e desce). Quando o preço sobe, abre 2, quando o preço desce, fecha esses 2 e abre um novo 2. Uma ordem vai sem lucro, a segunda ordem com lucro. Há um problema com o segundo. No momento de sua morte, não é selecionado, aqui está o código para remover ordens:
O mesmo para OP_BUY. Estou comparando comentários para ter certeza de que é uma ordem aberta por minha EA e não manualmente ou por outra EA. Aqui está o problema com o OrderSelect, ele simplesmente não quer selecionar um pedido com lucro. Quando chega a seu número, OrderSelect retorna falso. Não há erro no registro do testador, GetLastError também diz que tudo está bem (devolve 0). Por que ele não está sendo selecionado? Por que nenhum erro se ele não pôde selecioná-lo? Obrigado a todos vocês.
a condição
é verificado a cada iteração.
Pense no que um igual e o que OrdensTotal() -1 é igual após a primeira iteração
OrderClose(OrderTicket(), NormalizeDouble(OrderLots(), Digitos), NormalizeDouble(Ask, Digitos), 0);
Solree:
NormalizeDouble(OrderLots(), Dígitos)
Você precisa levar em conta o passo permitido de mudança de lote.
Por exemplo, se a etapa for 0,01, então normalize em 2
e se a etapa for 0,1, então a normalização deve ser 1