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

 
DanilaMactep graphiques ouverts à la période n1. Comment puis-je réécrire le code de sorte que le script applique un modèle avec le nom spécifié à tous les graphiques ouverts ?

Tiens, ça va t'aider.

ChartApplyTemplate(0,"..........tpl"))
 
Alekseu Fedotov #:

Tiens, ça va t'aider.

Et pour une personne particulièrement "douée", pouvez-vous s'il vous plaît expliquer la fonction
ChartApplyTemplate()
où dans le script doit être substitué ?
 
DanilaMactep #:
Pouvez-vous expliquer à un "surdoué" la fonction dans laquelle il faut substituer l'écriture ?

voici le script

//+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template = "ADX"; // Имя шаблона(without '.tpl')
//----
ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;  //
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long currChart, prevChart = ChartFirst();
   int i = 0, limit = 100;
   bool errTemplate;
   while(i < limit)
     {
      currChart = ChartNext(prevChart);
      if(TimeFrame != PERIOD_CURRENT)
        {
         ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate(prevChart, Template + ".tpl");
      if(!errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
      if(currChart < 0)
         break;
      Print(i, ChartSymbol(currChart), " ID =", currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+
Dossiers :
 
137 Matrix #:

voici le script

Merci beaucoup pour le code - je l'ajouterai à l'éditeur de méta demain, il se fait tard aujourd'hui.

 
137 Matrix #:

voici le script

Bon après-midi. J'ai transféré le code dans le script comme ceci.
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           ChartApplyTemplate.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "АВТОР - КОПИЯ 1"
#property link      "https://vk.com/danila_mastep"
#property version   "1.00"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//----
sinput string Template = "default"; // Имя шаблона(without '.tpl')
//----
ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;  //
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long currChart, prevChart = ChartFirst();
   int i = 0, limit = 100;
   bool errTemplate;
   while(i < limit)
     {
      currChart = ChartNext(prevChart);
      if(TimeFrame != PERIOD_CURRENT)
        {
         ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), TimeFrame);
        }
      errTemplate = ChartApplyTemplate(prevChart, Template + ".tpl");
      if(!errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
      if(currChart < 0)
         break;
      Print(i, ChartSymbol(currChart), " ID =", currChart);
      prevChart = currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+

Lorsque je le glisse et le dépose sur le graphique et que j'entre le nom du modèle dans les paramètres de saisie, le terminal ne répond plus et rien ne se passe. Les modèles ne sont pas appliqués à tous les graphiques :-( Ai-je mal copié le code ou y a-t-il un problème avec quelque chose d'autre ? J'ai vérifié le nom du modèle - je n'ai entré que le nom sans le point tpl.
 
DanilaMactep #:
Bonjour. J'ai mis le code dans le script comme ceci.
Lorsque je le glisse et le dépose sur le graphique et que j'entre le nom du modèle dans les paramètres de saisie, le terminal ne répond plus et rien ne se passe. Les modèles ne sont pas appliqués à tous les graphiques :-( Ai-je mal copié le code ou y a-t-il un problème avec quelque chose d'autre ? J'ai vérifié le nom du modèle - je n'ai entré que le nom sans le point tpl.

Entrez le nom et ce modèle s'ouvrira sur tous les graphiques ouverts.

par exemple - enregistrer le modèle avec le nom modèle et écrire le modèle dans les paramètres du script

 
DanilaMactep #:
Bon après-midi. J'ai transféré le code dans le script comme ceci.
Lorsque je le glisse et le dépose sur le graphique et que j'entre le nom du modèle dans les paramètres de saisie, le terminal ne répond plus et rien ne se passe. Les modèles ne sont pas appliqués à tous les graphiques :-( Ai-je mal copié le code ou y a-t-il un problème avec quelque chose d'autre ? J'ai vérifié le nom du modèle - je n'ai entré que le nom sans le point tpl.

Tout ce que vous aviez à faire était d'ajouter une ligne à votre code. Ou même remplacer deux lignes par une seule

string tplName = "name.tpl";
/********************Script program start function*******************/
void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0)
   {
    //if(ChartPeriod(prevChart) != PERIOD_H1)
    //  ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_H1);
    ChartApplyTemplate(prevChart, tplName);
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/
 

Bonjour, la situation est la suivante : j'ai deux graphiques identiques ouverts dans le terminal. Un robot est installé sur l'un et l'autre sur l'autre. Comment puis-je écrire dans le code (s'il y a une possibilité) que la position ouverte par le robot 1 s'ouvre également dans le graphique où le robot 2 est placé ? Ou mieux encore, comment faire pour que le robot-1 ouvre une position uniquement sur le graphique avec le robot-2 ? Mes "connaissances" ne sont pas suffisantes.

Mes "connaissances" ne sont pas suffisantes. Merci.

 
novichok2018 #:

Bonjour, la situation est la suivante : j'ai deux graphiques identiques ouverts dans le terminal. Un robot est installé sur l'un et l'autre sur l'autre. Comment puis-je enregistrer dans le code (si c'est possible), pour que la position ouverte par le robot 1 soit également ouverte dans le graphique où est placé le robot 2 ? Ou mieux encore, comment faire pour que le robot-1 ouvre une position uniquement sur le graphique avec le robot-2 ? Mes "connaissances" ne sont pas suffisantes.

Mes "connaissances" ne sont pas suffisantes. Merci.

Si les graphiques sont les mêmes, les ordres sont visibles sur les deux. Les ordres sont ouverts par le symbole, et non par le graphique.
 
Alexey Viktorov #:

Tout ce que vous aviez à faire était d'ajouter une ligne à votre code. Ou même remplacer deux lignes par une seule

Alexey, merci beaucoup pour le conseil - j'ai ajouté des lignes et tout a fonctionné, le seul problème - maintenant, même en sélectionnant manuellement le modèle par défaut, le terminal se bloqueXD))))))))) semble qu'il est temps de nettoyer l'ordinateur, mais il y a des signes de problèmes (
Raison: