Erros, bugs, perguntas - página 2400

 
Slava:

Se o OnTimer não estiver em loop, não deverá haver uma terminação anormal.

Pode dar ao seu perito para verificar o comportamento do terminal do cliente?

Há aí muito lixo, o código não é óptimo e é construído com base no modelo de 7000 linhas. Vou tentar descobrir por mim próprio e avisar-vos. A propósito, este é um construtor de objectos gráficos, não é um comércio.

Obrigado!

 
Vitaly Muzichenko:

É um construtor, a propósito, não é um comerciante.

Já está. Remoção de objectos gráficos em OnDeinit().

Isto já foi corrigido

 
Slava:

Já está. Remoção de objectos gráficos em OnDeinit().

Já está fixado.

Pode dizer-me quando haverá uma nova construção com reparações?

 
uint lev[1] = {};
ArrayInitialize(lev, UINT_MAX);  // warring: truncation of constant value
Alert(lev[0] == UINT_MAX);       // Alert: true
 

Tive de criar uma nova página na MQL5 para registar o sinal, mas não está activada

https://www.mql5.com/ru/signals/new

 

Pode dizer-me como formar correctamente o preço das encomendas de CFDs Nikkei (outros CFDs são abertos pelo bot).

Digamos que perguntamos 19661,15, tamanho do ticksize = 1.

Precisamos de o arredondar, mas em que direcção? Por exemplo, o códigoMathRound (preço / tickSize) * tickSize; dá o preço 19661, ou seja, melhor do que o mercado. Isto dá um erro.

A adição de um tickSize de cima também dá um erro.

Se eu tentar enviar um pedido como está, o mesmo erro.

O provador escreve em registos:

failed market buy 1.00 NI225 [Invalid price] // стандартный вывод
OrderSend failed NI225 0 1.0 19662.0 0.0 0.0 with error 4756 // бот выводит параметры ордера и код ошибки
 
Stanislav Korotky:

Que tipo de servidor com estas configurações?

 
fxsaber:

O que é o servidor com estas configurações?

LiteForexInvestments-MT5.com


 
Stanislav Korotky:

Pode dizer-me como formar correctamente o preço das encomendas de CFDs Nikkei (outros CFDs são abertos pelo bot).

Digamos que perguntamos 19661,15, tamanho do ticksize = 1.

Precisamos de o arredondar, mas em que direcção? Por exemplo, o códigoMathRound(preço / tickSize) * tickSize; dá o preço 19661, ou seja, melhor do que o mercado. Isto dá um erro.

A adição de um tickSize de cima também dá um erro.

Se eu tentar enviar um pedido como está, o mesmo erro.

Em logs tester diz:

Utilizar esta função (transfere pontos para o preço do instrumento).

//+------------------------------------------------------------------+
//| Expert Points to price function                                  |
//+------------------------------------------------------------------+
double PointsToPrice(const long a_points)
{
  double step_price = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);
  double a_price = (double(a_points) * Point() ) / step_price;
  if(a_points < 0)
  {
    a_price = MathFloor(a_price) * step_price;
  }
  else
  {
    a_price = MathCeil(a_price) * step_price;
  }
  return(NormalizeDouble(a_price, Digits()));
}

Depois, basta adicionar (subtrair) o que a funçãoPointsToPrice() volta ao preço

Adicionado por

Se não funcionar correctamente, então este símbolo

é traduzido porSYMBOL_TRADE_TICK_SIZE

 
Stanislav Korotky:

LiteForexInvestments-MT5.com

Portanto, são as mãos tortas do servidor, que o Testador não consegue endireitar agora. Ao mesmo tempo, no Terminal tudo se abrirá, uma vez que o TickSize não é aí tido em conta.

Razão: