Erreurs, bugs, questions - page 1151

 

J'ai un problème avec la fonction StringConcatenate() dans MQL4. Un bloc de zéros apparaît dans la chaîne. Ceci peut être observé lors de la sortie de la chaîne de résumé dans un fichier.

void OnStart()
  {
//---
  string sample = "0123456789ABCDEF";
  string s = "";
  for(int i=0;i<260;i++)
  {
   s = StringConcatenate(s, sample);
   Print(StringBufferLen(s), " ", StringLen(s), " ", s);
  } 
  Print(s);
  }

Voici ce qu'écrit le terminal

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily : 3872 3872 ? ??????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily : 3856 3856 ? ??????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily : 3840 3840 ? ??????????????

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily : 3824 3824 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily : 3808 3808 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

2014.06.05 12:28:25.378 String_concat_test EURUSD,Daily : 3792 3792 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123

 
Les zéros signifient des octets de quelques kilooctets.
 
Luckhuman:

J'ai un problème avec la fonction StringConcatenate() dans MQL4. Un bloc de zéros apparaît dans la chaîne. Cela peut être observé lors de la sortie de la chaîne de résumé dans un fichier.

Merci pour le post, corrigé. La correction sera incluse dans la prochaine version.
 
Veuillez expliquer pourquoi, dans l'onglet Trading, les prix actuels (c'est la colonne Prix à droite de SL/TP - à ne pas confondre avec le prix ouvert à gauche de SL/TP !) pour les positions de marché et les ordres en attente sont affichés différemment pour le même instrument, du même type (par exemple, achat) ? En théorie, le prix actuel du symbole devrait être le même, du moins pour plusieurs ordres ouverts, il change de manière synchrone (coïncidence).
 
marketeer:
Veuillez expliquer pourquoi, dans l'onglet Trading, les prix actuels (c'est la colonne Prix à droite de SL/TP - à ne pas confondre avec le prix ouvert à gauche de SL/TP !) pour les positions de marché et les ordres en attente sont affichés différemment pour le même instrument, du même type (par exemple, achat) ? Le prix actuel dans le symbole devrait être le même, au moins pour plusieurs ordres ouverts, il change de manière synchrone (coïncidence).

Parce qu'il y a un prix d'achat et un prix de vente :

Offre et demande

Dans l'image, il y a une position ouverte(vente) et deux ordres en attente(limite de vente et limite d'achat). Pour une position ouverte(vente), le prix actuel Ask est spécifié. Pour unelimite de vente, le prix actuel Bid est spécifié. Pour la limite d'achat , le coursvendeur actuel est spécifié.

 
Je n'ai pas d'onglet "Calendrier". Terminal MetaTrader 5 x64 build 946 démarré (MetaQuotes Software Corp.). Compte de démonstration sur le serveur MetaQuotes-Demo. De plus, il y a plusieurs comptes réels dans le terminal.

Et elle ne manque que sur l'ordinateur portable. Sur une tablette et un PC, il y a un onglet Calendrier.


 
Lors du démarrage de MT4 dans l'indicateur, init() échoue car MarketInfo(xxx, MODE_TICKVALUE) renvoie zéro (pour tous les symboles). Il est clair que la valeur du tick est liée à la devise du compte, mais le terminal affiche des fenêtres avant même la connexion. Il s'avère ensuite qu'aucun script lié à une valeur ne fonctionne correctement... Est-ce une fonctionnalité ou un bug ?
 
Comment puis-je savoir si un indicateur est placé sur le graphique par lui-même ou s'il est appelé depuis un autre indicateur via iCustom ?
 
marketeer:
Lorsque vous démarrez MT4 dans l'indicateur, init() n'a pas lieu, car MarketInfo(xxx, MODE_TICKVALUE) renvoie zéro (pour tous les symboles). Il est clair que la valeur du tick est liée à la devise du compte, mais le terminal affiche des fenêtres avant même la connexion. Il s'avère ensuite qu'aucun script lié à une valeur ne fonctionne correctement... Est-ce une fonctionnalité ou un bug ?

MetaTrader 4. Version : 4.00 Build 654.

Essayez d'utiliser Symbol() au lieu de xxx et utilisez OnInit() au lieu de init() :

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
//--- превращение динамических массивов в индикаторные буферы
   SetIndexBuffer(0,ExtMapBufferEMA,INDICATOR_DATA);
//--- MarketInfo
   Print("Symbol=",Symbol());
   Print("Минимальная дневная цена=",MarketInfo(Symbol(),MODE_LOW));
   Print("Максимальная дневная цена=",MarketInfo(Symbol(),MODE_HIGH));
   Print("Время поступления последней котировки=",(MarketInfo(Symbol(),MODE_TIME)));
   Print("Последняя поступившая цена предложения=",MarketInfo(Symbol(),MODE_BID));
   Print("Последняя поступившая цена продажи=",MarketInfo(Symbol(),MODE_ASK));
   Print("Размер пункта в валюте котировки=",MarketInfo(Symbol(),MODE_POINT));
   Print("Количество цифр после запятой в цене инструмента=",MarketInfo(Symbol(),MODE_DIGITS));
   Print("Спрэд в пунктах=",MarketInfo(Symbol(),MODE_SPREAD));
   Print("Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах=",MarketInfo(Symbol(),MODE_STOPLEVEL));
   Print("Размер контракта в базовой валюте инструмента=",MarketInfo(Symbol(),MODE_LOTSIZE));
   Print("Размер минимального изменения цены инструмента в валюте депозита=",MarketInfo(Symbol(),MODE_TICKVALUE));
   Print("Минимальный шаг изменения цены инструмента в пунктах=",MarketInfo(Symbol(),MODE_TICKSIZE));
   Print("Размер свопа для ордеров на покупку=",MarketInfo(Symbol(),MODE_SWAPLONG));
   Print("Размер свопа для ордеров на продажу=",MarketInfo(Symbol(),MODE_SWAPSHORT));
   Print("Календарная дата начала торгов (фьючерсы)=",MarketInfo(Symbol(),MODE_STARTING));
   Print("Календарная дата окончания торгов (фьючерсы)=",MarketInfo(Symbol(),MODE_EXPIRATION));
   Print("Разрешение торгов по указанному инструменту=",MarketInfo(Symbol(),MODE_TRADEALLOWED));
   Print("Минимальный размер лота=",MarketInfo(Symbol(),MODE_MINLOT));
   Print("Шаг изменения размера лота=",MarketInfo(Symbol(),MODE_LOTSTEP));
   Print("Максимальный размер лота=",MarketInfo(Symbol(),MODE_MAXLOT));
   Print("Метод вычисления свопов=",MarketInfo(Symbol(),MODE_SWAPTYPE));
   Print("Способ расчета прибыли=",MarketInfo(Symbol(),MODE_PROFITCALCMODE));
   Print("Способ расчета залоговых средств=",MarketInfo(Symbol(),MODE_MARGINCALCMODE));
   Print("Начальные залоговые требования для 1 лота=",MarketInfo(Symbol(),MODE_MARGININIT));
   Print("Размер залоговых средств для поддержки открытых ордеров в расчете на 1 лот=",MarketInfo(Symbol(),MODE_MARGINMAINTENANCE));
   Print("Маржа, взимаемая с перекрытых ордеров в расчете на 1 лот=",MarketInfo(Symbol(),MODE_MARGINHEDGED));
   Print("Размер свободных средств, необходимых для открытия 1 лота на покупку=",MarketInfo(Symbol(),MODE_MARGINREQUIRED));
   Print("Уровень заморозки ордеров в пунктах=",MarketInfo(Symbol(),MODE_FREEZELEVEL));
//---
   return(INIT_SUCCEEDED);
  }
 
Courtier :
Le serveur du courtier est incorrect

Saisissez une partie du nom du courtier pour sélectionner le serveur sur lequel les transactions seront copiées.
Le nom du serveur doit correspondreexactement à celui utilisé dans MetaTrader.

POUVEZ-VOUS ME DIRE CE QUE JE DOIS METTRE LÀ-DEDANS ?

Raison: