Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1904

 
DanilaMactep grafici aperti nel periodo n1. Come posso riscrivere il codice in modo che lo script applichi un modello con il nome specificato a tutti i grafici aperti?

Ecco, questo vi aiuterà.

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

Ecco, questo vi aiuterà.

E per una persona particolarmente "dotata", potete spiegare la funzione
ChartApplyTemplate()
dove deve essere sostituito nello script?
 
DanilaMactep #:
Potete per favore spiegare a una persona speciale "dotata" la funzione in quale posto dello script deve essere sostituita?

ecco lo 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++;
     }
  }
//+------------------------------------------------------------------+
File:
 
137 Matrix #:

ecco lo script

Grazie mille per il codice - lo aggiungerò al meta editor domani, oggi si sta facendo tardi.

 
137 Matrix #:

ecco lo script

Buon pomeriggio. Ho trasferito il codice nello script in questo modo.
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           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++;
     }
  }
//+------------------------------------------------------------------+

Quando lo trascino sul grafico e inserisco il nome del modello nei parametri di input, il terminale smette di rispondere e non succede nulla. I modelli non vengono applicati a tutti i grafici :-( Ho copiato male il codice o c'è un problema con qualcos'altro? Ho ricontrollato il nome del modello - inserisco solo il nome senza il punto tpl
 
DanilaMactep #:
Salve. Ho messo il codice nello script in questo modo.
Quando lo trascino sul grafico e inserisco il nome del modello nei parametri di input, il terminale smette di rispondere e non succede nulla. I modelli non vengono applicati a tutti i grafici :-( Ho copiato male il codice o c'è un problema con qualcos'altro? Ho ricontrollato il nome del modello - inserisco solo il nome senza il punto tpl

inserire il nome e questo modello si aprirà su tutti i grafici aperti.

per esempio - salvare il modello con il nome template e scrivere il modello nelle impostazioni dello script

 
DanilaMactep #:
Buon pomeriggio. Ho trasferito il codice nello script in questo modo.
Quando lo trascino sul grafico e inserisco il nome del modello nei parametri di input, il terminale smette di rispondere e non succede nulla. I modelli non vengono applicati a tutti i grafici :-( Ho copiato male il codice o c'è un problema con qualcos'altro? Ho ricontrollato il nome del modello - inserisco solo il nome senza il punto tpl

Tutto quello che dovevate fare era aggiungere una linea al vostro codice. O anche sostituire due linee con una sola

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

La situazione è la seguente: ho due grafici identici aperti nel terminale. Un robot è installato su uno e l'altro sull'altro. Come posso registrare nel codice (se è possibile), in modo che la posizione aperta dal robot 1 sia aperta anche nel grafico dove si trova il robot 2? O meglio ancora, come fare in modo che robot-1 apra una posizione solo sul grafico con Robot-2? La mia "conoscenza" non è sufficiente.

La mia "conoscenza" non è sufficiente, grazie.

 
novichok2018 #:

La situazione è la seguente: ho due grafici identici aperti nel terminale. Un robot è installato su uno e l'altro sull'altro. Come posso registrare nel codice (se è possibile), in modo che la posizione aperta dal robot 1 sia aperta anche nel grafico dove si trova il robot 2? O meglio ancora, come fare in modo che robot-1 apra una posizione solo sul grafico con Robot-2? La mia "conoscenza" non è sufficiente.

La mia "conoscenza" non è sufficiente, grazie.

Se i grafici sono uguali, gli ordini sono visibili su entrambi. Gli ordini sono aperti dal simbolo, non dal grafico.
 
Alexey Viktorov #:

Tutto quello che dovevate fare era aggiungere una linea al vostro codice. O anche sostituire due linee con una sola

Alexey, grazie mille per il suggerimento - ha aggiunto le linee e tutto ha funzionato, l'unico problema - ora anche quando si seleziona manualmente il modello predefinito il terminale si bloccaXD))))))))) sembra che sia il momento di pulire il computer, ma ci sono segni di problemi (