Erreurs, bugs, questions - page 2400

 
Vitaly Muzichenko:

C'est un constructeur, d'ailleurs, ce n'est pas un commerçant.

Je l'ai. Suppression des objets graphiques dans OnDeinit().

Cela a déjà été corrigé

[Supprimé]  
Slava:

Je l'ai. Suppression des objets graphiques dans OnDeinit().

C'est déjà réparé.

Pouvez-vous me dire quand il y aura une nouvelle version avec des corrections ?

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

J'ai dû créer une nouvelle page dans MQL5 pour enregistrer le signal, mais il n'est pas activé.

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

 

Pouvez-vous me dire comment former correctement le prix pour les ordres CFD Nikkei (les autres CFD sont ouverts par le bot).

Disons que nous avons la demande 19661.15, ticksize = 1.

Nous devons l'arrondir, mais dans quelle direction ? Par exemple, le codeMathRound (price / tickSize) * tickSize ; donne le prix 19661, c'est-à-dire meilleur que le marché. Cela donne une erreur.

L'ajout d'une tickSize par rapport à ce qui précède donne également une erreur.

Si j'essaie d'envoyer la demande telle quelle, même erreur.

Le testeur écrit dans les journaux :

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:

Quel type de serveur avec ces paramètres ?

 
fxsaber:

Quel est le serveur avec ces paramètres ?

LiteForexInvestments - MT5.com


 
Stanislav Korotky:

Pouvez-vous me dire comment former correctement le prix pour les ordres CFD Nikkei (les autres CFD sont ouverts par le bot).

Disons que nous avons la demande 19661.15, ticksize = 1.

Nous devons l'arrondir, mais dans quelle direction ? Par exemple, le codeMathRound(price / tickSize) * tickSize ; donne le prix 19661, c'est-à-dire meilleur que le marché. Cela donne une erreur.

L'ajout d'une tickSize par rapport à ce qui précède donne également une erreur.

Si j'essaie d'envoyer la demande telle quelle, même erreur.

Dans les journaux, le testeur dit :

Utilisez cette fonction (transfert des points au prix de l'instrument).

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

Ensuite, il suffit d'ajouter (soustraire) au prix ce que la fonctionPointsToPrice() a retourné.

Ajouté par

Si cela ne fonctionne pas correctement, alors ce symbole

est traduit parSYMBOL_TRADE_TICK_SIZE

 
Stanislav Korotky:

LiteForexInvestments - MT5.com

Il s'agit donc des mains tordues du serveur, que le Testeur est incapable de redresser pour le moment. En même temps, dans le Terminal, tout s'ouvrira, car TickSize n'y est pas pris en compte.

 
prostotrader:

Utilisez cette fonction

Ensuite, il suffit d'ajouter (soustraire) au prix ce quePointsToPrice() a retourné.

Ajouté

Si cela ne fonctionne pas correctement, alors par ce symbole

est la traduction deSYMBOL_TRADE_TICK_SIZE

Pardon, mais je ne comprends pas quels points longs doivent être saisis, surtout si l'on considère que ce paramètre peut être positif ou négatif.