Errori, bug, domande - pagina 2400

 
Slava:

Se OnTimer non è in loop, non ci dovrebbe essere nessuna terminazione anomala.

Potete dare il vostro esperto per controllare il comportamento del terminale client?

C'è un sacco di spazzatura lì, il codice non è ottimale ed è costruito sulla base di 7000 linee di template. Cercherò di capirlo da solo e vi farò sapere. Questo è un costruttore di oggetti grafici a proposito, non è commercio.

Grazie!

 
Vitaly Muzichenko:

È un costruttore, comunque, non è un commerciante.

Capito. Rimozione di oggetti grafici in OnDeinit().

Questo è già stato risolto

[Eliminato]  
Slava:

Capito. Rimozione di oggetti grafici in OnDeinit().

È già fissato.

Potete dirmi quando ci sarà una nuova build con le correzioni?

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

Ho dovuto creare una nuova pagina in MQL5 per registrare il segnale, ma non è abilitato

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

 

Potete dirmi come formare correttamente il prezzo per gli ordini CFD Nikkei (gli altri CFD sono aperti dal bot).

Diciamo che abbiamo chiesto 19661.15, ticksize = 1.

Dobbiamo arrotondare, ma in quale direzione? Per esempio, il codiceMathRound (price / tickSize) * tickSize; dà il prezzo 19661, cioè meglio del mercato. Questo dà un errore.

Anche l'aggiunta di un tickSize dall'alto dà un errore.

Se provo a inviare ask così com'è, stesso errore.

Il tester scrive nei log:

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:

Che tipo di server con queste impostazioni?

 
fxsaber:

Qual è il server con queste impostazioni?

LiteForexInvestments-MT5.com


 
Stanislav Korotky:

Potete dirmi come formare correttamente il prezzo per gli ordini CFD Nikkei (gli altri CFD sono aperti dal bot).

Diciamo che abbiamo chiesto 19661.15, ticksize = 1.

Dobbiamo arrotondare, ma in quale direzione? Per esempio, il codiceMathRound(price / tickSize) * tickSize; dà il prezzo 19661, cioè meglio del mercato. Questo dà un errore.

Anche l'aggiunta di un tickSize dall'alto dà un errore.

Se provo a inviare ask così com'è, stesso errore.

Nei registri il tester dice:

Usa questa funzione (trasferisce i punti al prezzo dello strumento).

//+------------------------------------------------------------------+
//| 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()));
}

Poi, basta aggiungere (sottrarre) ciò che la funzionePointsToPrice() ha restituito al prezzo

Aggiunto da

Se non funziona correttamente, allora questo simbolo

è tradotto daSYMBOL_TRADE_TICK_SIZE

 
Stanislav Korotky:

LiteForexInvestments-MT5.com

Quindi sono le mani storte del server, che il Tester non è in grado di raddrizzare in questo momento. Allo stesso tempo in Terminale tutto si aprirà, dato che TickSize non è preso in considerazione lì.