Erreurs, bugs, questions - page 2391

 
Merci pour votre réponse au dernier commentaire. Il y a encore une question. MT5. J'ai créé un modèle d'interface, sans "grille" sur le graphique, j'ai appelé ce modèle "Default" pour qu'il soit activé par défaut, tout fonctionne dans MT lui-même, mais pas dans la fenêtre de visualisation EA. Merci.
 
Kisolen:
Merci pour votre réponse au commentaire précédent. Il y a encore une question. MT5. Je crée un modèle d'interface, sans la "grille" sur le graphique, j'appelle ce modèle "Default" pour qu'il soit activé par défaut, dans le MT lui-même tout fonctionne, mais il ne fonctionne pas dans la fenêtre de visualisation de l'EA. Merci.

Le modèle de graphique "default.tpl" s'applique lorsque vous ouvrez un nouveau graphique dans le terminal, tandis que le modèle de graphique "tester.tpl" s'applique lorsque vous exécutez un testeur de stratégie en mode visuel.

Cliquez ici pour plus d'informations : Modèles et profils - Fonctions avancées - Cotes, graphiques d'analyse technique et fondamentale

 

Bonjour à tous.

Je voudrais attirer l'attention des développeurs sur le bogue suivant dans MT5 (build 2006). Lors de l'appel de la fonctionChartGetInteger avec les identifiants de propriétéCHART_WIDTH_IN_BARS ouCHART_VISIBLE_BARS, si une autre fenêtre est active avec le même symbole mais un TF plus petit, la fonction renvoie des valeurs incorrectes. Si le graphique a l'échelle maximale (5), la valeur renvoyée est inférieure de 5 à la valeur réelle. Si l'échelle est de 4, la valeur renvoyée est inférieure de 10. Si la mise à l'échelle est de 3, alors respectivement par 20, etc. Le code pour l'indicateur de test, pour reproduire le problème, est ci-dessous. Ce bug est reproduit de manière stable sur le TF D1 et l'instrument RTS-3.19. J'ai également enregistré une vidéo avec la démonstration du bug pour plus de clarté. Dans la version 274(à en juger par l'historique), un bogue similaire avait déjà été corrigé, mais apparemment pas jusqu'au bout. :)

//+------------------------------------------------------------------+
//|                                                     DBS_Bug2.mq5 |
//|                                            Copyright © 2019, DBS |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1                                         //количество индикаторных буферов
#property indicator_plots   1                                         //количество графических построений
//+------------------------------------------------------------------+ 
//| Функция инициализации индикатора                                 | 
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+ 
//| Функция расчёта индикатора                                       | 
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,                                //количество истории в барах на текущем тике
                const int prev_calculated,                            //количество истории в барах на предыдущем тике
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---Debug
   int chart_bars=int(ChartGetInteger(0,CHART_WIDTH_IN_BARS));     //к-во баров на экране
   int vis_bars=int(ChartGetInteger(0,CHART_VISIBLE_BARS));        //к-во баров видимых на экране
   PrintFormat("%s: Debug #2! rates_total=%i chart_bars=%i vis_bars=%i",__FUNCTION__,rates_total,chart_bars,vis_bars);
   return(rates_total);
  }
//+------------------------------------------------------------------+

J'avais l'habitude d'obtenir une valeur de retour encore plus amusante de cette fonction (surtout lors du chargement du terminal). À l'échelle maximale du graphique (5), la valeur de retour =5 (quel que soit le nombre réel de barres sur le graphique). Si le zoom est de 4, alors la valeur de retour =10. Si l'échelle est de 3, alors respectivement =20, etc. Malheureusement, je n'ai pas réussi à capturer ce problème en vidéo. Cependant, j'ai passé toute la journée à comprendre pourquoi mon indicateur ne fonctionne pas correctement sur D1, alors qu'il est OK sur les autres TFs.


P.S. Journal de bord du même graphique (RTS-3.19, D1) après quelques heures (après interruption de la connexion). En réalité, le graphique comporte 55 barres. Et MT5, dans le journal, indique que seulement 5 s'affichent à l'écran, et qu'il n'y a pas de barres visibles du tout:)Capture d'écran

2019.02.24 21:27:09.692 DBS_Volume (RTS-3.19,D1)        DBS Volume (VOLUME_REAL): SetVolScale: Debug #1!  max_vol_idx=3 max_vol=402550 time=2019.02.19 00:00 rates_total=220 chart_bars=5 vis_bars=0
MetaTrader 5 Client Terminal build 274
MetaTrader 5 Client Terminal build 274
  • 2010.05.15
  • MetaQuotes Software Corp.
  • www.metatrader5.com
Terminal: Исправлено отображение истории торговли на чарте. Terminal: Исправлена ошибка в навигации чарта (при отключеном сдвиге и автоскроле). Terminal: Исправления по сообщениям на форуме и крешлогам. Terminal: В файл помощи добавлено описание Тестера Стратегий MetaTester: Исправлена ошибка в загрузке параметров тестирования при смене...
 
Dmitriy Burlachenko:

Bonjour aux développeurs.

L'aide de la bibliothèque standard MQL5 contient la fonction WindowHandle, mais lorsqu'on l'utilise, le compilateur indique 'WindowHandle' - fonction non définie'. Question : Qui est à l'origine du problème, le code ou le compilateur ? :)

C'est SB.

int CChart::WindowHandle(void) const;
 
Dmitriy Burlachenko:

Bonjour aux développeurs.

L'aide de la bibliothèque standard MQL5 contient la fonction WindowHandle, mais lorsqu'on l'utilise, le compilateur indique 'WindowHandle' - fonction non définie'. Question : Qui est à l'origine du problème, le code ou le compilateur ? :)


Vous utilisez l'aide de manière incorrecte.

Regardez de près :Référence MQL5Bibliothèque standardGraphiques de prixWindowHandle

Revenez un peu en arrière et lisez la section surles graphiques de prix.


Ajouté :

Exemple de cas d'utilisation (remarque - vous devez d'abord exécuter la méthodeAttach) et ensuite seulement travailler avec l'objet.

//+------------------------------------------------------------------+
//|                       Gets window handle of the chart (HWND).mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property description "Gets window handle of the chart (HWND)"
//---
#include <Charts\Chart.mqh>
CChart   m_chart;                      // CChart object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

   m_chart.Attach(); // assigns the current chart to the class instance

   Print("CChart.WindowHandle: ",m_chart.WindowHandle());
   Print("CChart.ChartId: ",m_chart.ChartId());
  }
//+------------------------------------------------------------------+

Résultat :

2019.02.25 16:01:32.165 Gets window handle of the chart (HWND) (GBPUSD,H1)      CChart.WindowHandle: 13830128
2019.02.25 16:01:32.165 Gets window handle of the chart (HWND) (GBPUSD,H1)      CChart.ChartId: 131571247244850547
 
Dmitriy Burlachenko:

Bonjour aux développeurs.

L'aide de la bibliothèque standard MQL5 contient la fonctionWindowHandle, mais lorsqu'on l'utilise, le compilateur indique 'WindowHandle' - fonction non définie'. Question : Qui est à l'origine du problème, le code ou le compilateur ? :)

utiliser :

ChartGetInteger(0,CHART_WINDOW_HANDLE,0);
 
Vladimir Karputov:

Vous utilisez la mauvaise aide.

Regardez attentivement :MQL5 ReferenceStandard LibraryPrice ChartsWindowHandle

Revenez un peu en arrière et lisez lesgraphiques de prix


Ajouté :

Exemple de cas d'utilisation (remarque - vous devez d'abord exécuter la méthodeAttach) et ensuite seulement travailler avec l'objet.

Résultat :

Merci.

 
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2019.02.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

MQL5 ME 2006

#property strict

class A
 { 
public:
  int f();
 };

void OnStart()
  {
   A a;
   a.f();
  }

Le même code dans MQL4 comme il devrait être,"la fonction 'f' doit avoir un corps".

 

Où pouvez-vous voir l'implémentation du niveau de négociation via des objets graphiques ?

Il faut être aussi proche que possible de ce que fait le terminal lui-même.