Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1904

 
DanilaMactep gráficos abiertos en el periodo n1. ¿Cómo puedo reescribir el código para que el script aplique una plantilla con el nombre especificado a todos los gráficos abiertos?

Aquí, esto te ayudará.

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

Aquí, esto te ayudará.

Y para una persona especialmente "dotada", ¿podría explicar la función
ChartApplyTemplate()
¿en qué parte del guión debe ser sustituido?
 
DanilaMactep #:
¿Pueden explicar a un "superdotado" la función en la que se debe sustituir el guión?

aquí está el guión

//+------------------------------------------------------------------+
//|                                           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++;
     }
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
 
137 Matrix #:

aquí está el guión

Muchas gracias por el código - lo añadiré al meta editor mañana, hoy se hace tarde.

 
137 Matrix #:

aquí está el guión

Buenas tardes. Transfiriendo el código al script así.
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           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++;
     }
  }
//+------------------------------------------------------------------+

Cuando lo arrastro y lo suelto en el gráfico e introduzco el nombre de la plantilla en los parámetros de entrada, el terminal deja de responder y no pasa nada. Las plantillas no se aplican a todos los gráficos :-( ¿He copiado mal el código o hay algún otro problema? He comprobado dos veces el nombre de la plantilla: introduzco sólo el nombre sin el punto tpl
 
DanilaMactep #:
Hola. Puse el código en el script así.
Cuando lo arrastro y lo suelto en el gráfico e introduzco el nombre de la plantilla en los parámetros de entrada, el terminal deja de responder y no pasa nada. Las plantillas no se aplican a todos los gráficos :-( ¿He copiado mal el código o hay algún otro problema? He comprobado dos veces el nombre de la plantilla: introduzco sólo el nombre sin el punto tpl

introduzca el nombre y esta plantilla se abrirá en todos los gráficos abiertos.

por ejemplo - guardar la plantilla con el nombre de plantilla y escribir la plantilla en la configuración del script

 
DanilaMactep #:
Buenas tardes. He transferido el código al script así.
Cuando lo arrastro y lo suelto en el gráfico e introduzco el nombre de la plantilla en los parámetros de entrada, el terminal deja de responder y no pasa nada. Las plantillas no se aplican a todos los gráficos :-( ¿He copiado mal el código o hay algún otro problema? He comprobado dos veces el nombre de la plantilla: introduzco sólo el nombre sin el punto tpl

Todo lo que tenías que hacer era añadir una línea a tu código. O incluso sustituir dos líneas por una

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****************************/
 

Buenas tardes, la situación es la siguiente: tengo dos gráficos idénticos abiertos en el terminal. Un robot se instala en uno y el otro en el otro. ¿Cómo puedo escribir en el código (si existe la posibilidad) que la posición abierta por el robot 1 también se abra en el gráfico donde se coloca el robot 2? O mejor aún, ¿cómo hacer que el robot-1 abra una posición sólo en el gráfico con el robot-2? Mis "conocimientos" no son suficientes.

Mis "conocimientos" no son suficientes. Gracias.

 
novichok2018 #:

Buenas tardes, la situación es la siguiente: tengo dos gráficos idénticos abiertos en el terminal. Un robot se instala en uno y el otro en el otro. ¿Cómo puedo escribir en el código (si existe la posibilidad) que la posición abierta por el robot 1 también se abra en el gráfico donde se coloca el robot 2? O mejor aún, ¿cómo hacer que el robot-1 abra una posición sólo en el gráfico con el robot-2? Mis "conocimientos" no son suficientes.

Mis "conocimientos" no son suficientes. Gracias.

Si los gráficos son los mismos, las órdenes son visibles en ambos. Las órdenes se abren por el símbolo, no por el gráfico.
 
Alexey Viktorov #:

Todo lo que tenías que hacer era añadir una línea a tu código. O incluso sustituir dos líneas por una

Alexey, muchas gracias por el consejo - líneas añadidas y todo funcionó, el único problema - ahora, incluso cuando se selecciona manualmente la plantilla por defecto el terminal hangsXD))))))))) parece que es hora de limpiar el equipo, pero hay signos de fallos (
Razón de la queja: