Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1388

 
Artyom Trishkin:

Essayez-le.

Je l'essaie. La première impression est que 3 ou 4 outils sont chargés, alors qu'il en faut 10.
Les histoires sont téléchargées pour chacun d'entre eux.
 
Valeriy Yastremskiy:
Je l'essaie. La première impression est que 3 ou 4 outils se chargent, mais j'ai besoin de 10
.
Les histoires sont chargées sur chacun d'entre eux.

Je ne sais pas alors - il y a longtemps que je n'ai pas ouvert un quad.

 

J'ai ouvert mt4 pour vérifier l'algorithme rapidement.

Il est très étrange qu'il fonctionne correctement dans le testeur, mais après l'avoir installé sur un compte réel, il inverse les transactions. Le code est simple, seulement 2 tampons indicateurs


 
MakarFX:
Merci beaucoup pour votre aide. J'ai remanié cette partie du code et avec le filtre de prix activé, les ordres en attente sont maintenant définis sans erreur. Seuls ces signaux sont ignorés lorsque l'ordre en attente est toujours en suspens. Comme prévu. Merci beaucoup encore une fois)))) J'ai juste une question - il y a certains endroits où il y avait un signal mais celui en attente n'était pas défini et il n'y avait pas d'erreurs. Donc, il n'y avait pas de conditions appropriées à cet endroit et c'est OK, vous pouvez vivre avec confiance ?))) Et il n'y avait pas non plus d'ordres en attente à cet endroit...
 
DanilaMactep:
Merci beaucoup pour votre aide. J'ai remanié cette partie du code et avec le filtre de prix activé, les ordres en attente sont maintenant définis sans erreur. Seuls ces signaux sont ignorés lorsque l'ordre en attente est toujours en suspens. Comme prévu. Merci beaucoup encore une fois)))) J'ai juste une question - il y a certains endroits où il y avait un signal mais celui en attente n'était pas défini et il n'y avait pas d'erreurs. Donc, il n'y avait pas de conditions appropriées dans cet endroit et c'est bon, vous pouvez vivre sans vous inquiéter ? )))) Et il n'y avait pas non plus de commandes en cours dans cet endroit...
S'il n'y avait pas de conditions appropriées et que c'est normal, vous pouvez vivre avec.
 
Artyom Trishkin:

Alors je ne sais pas - ça fait longtemps que je n'ai pas ouvert un quadrant.

Faux, les données des autres instruments que le testeur prend sont actuelles. Juste à partir d'ici (à partir d'autres instruments), vous pouvez calculer la différence par rapport à l'heure actuelle. Si l'heure est proche de l'heure actuelle et que l'historique est chargé, vous pouvez passer à l'heure du testeur. C'est une béquille).

 

Question : un panneau est créé avec une taille de 370, comment puis-je le redimensionner à 200 lors de la compression du graphique ?

#property strict

#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0

#include "PanelDialog.mqh"
//+------------------------------------------------------------------+
//| Global Variables                                                 |
//+------------------------------------------------------------------+
CPanelDialog ExtDialog;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- create application dialog
   if(!ExtDialog.Create(0,"Spread",0,12,12,250,370))
     return(INIT_FAILED);
//--- run application
   if(!ExtDialog.Run())
     return(INIT_FAILED);
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy application dialog
   ExtDialog.Destroy(reason);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
 
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko:

Question : un panneau est créé avec une taille de 370, comment puis-je le redimensionner à 200 lors de la compression du graphique ?

Et comment définissez-vous la compression des graphiques ?
 
MakarFX:
Et comment définissez-vous la compression des graphiques ?
   if(id==CHARTEVENT_CHART_CHANGE) {
      // ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS); // Высота графика
   }
 
Vitaly Muzichenko:

Si compression en hauteur

   int ChartHigh=(ChartGetDouble(0,CHART_PRICE_MAX,0)-ChartGetDouble(0,CHART_PRICE_MIN,0))/Point; //высота графика в пунктах
   if(ChartHigh>500)  
      ExtDialog.Create(0,"Spread",0,12,12,250,200)
   else
      ExtDialog.Create(0,"Spread",0,12,12,250,370)

si compression dans la largeur

   if(ChartGetInteger(0,CHART_SCALE,0)>2) 
      ExtDialog.Create(0,"Spread",0,12,12,250,200)
   else
      ExtDialog.Create(0,"Spread",0,12,12,250,370)
dans la largeur vous pouvez aussi CHART_VISIBLE_BARS
Raison: