Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1903

 
DanilaMactep #:

Всем добрый день. Помогите пожалуйста переделать код скрипта. Сейчас скрипт переводит все открытые графики на период н1. А как переделать код чтобы скрипт на все открытые графики применил шаблон с указанным именем?

Вот, это вам поможет.

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

Вот, это вам поможет.

А особо "одарённому" человеку объясните пожалуйста функцию
ChartApplyTemplate()
в какое место скрипта надо подставить?
 
DanilaMactep #:
А особо "одарённому" человеку объясните пожалуйста функцию в какое место скрипта надо подставить?

вот скрипт

//+------------------------------------------------------------------+
//|                                           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++;
     }
  }
//+------------------------------------------------------------------+
Файлы:
 
137 Matrix #:

вот скрипт

Огромное спасибо за код- завтра буду прикручивать в метаэдиторе, поздно уже сегодня.

 
137 Matrix #:

вот скрипт

Добрый день. Перенёс код в скрипт вот таким макаром.
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           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++;
     }
  }
//+------------------------------------------------------------------+

При перетаскивании на график и вводе имени шаблона во входных параметрах терминал перестаёт отвечать и ничего не происходит. Шаблоны ко всем графикам не применяются:-( Это я код не верно перенёс или в чём-то другом проблема? Имя шаблона перепроверял- вписываю только имя без точка tpl
 
DanilaMactep #:
Добрый день. Перенёс код в скрипт вот таким макаром.
При перетаскивании на график и вводе имени шаблона во входных параметрах терминал перестаёт отвечать и ничего не происходит. Шаблоны ко всем графикам не применяются:-( Это я код не верно перенёс или в чём-то другом проблема? Имя шаблона перепроверял- вписываю только имя без точка tpl

имя впишите и на всех открытых графиках - откроется этот шаблон. 

например - сохраните шаблон с именем шаблон ну и в настройках скрипта так и впишите   шаблон

 
DanilaMactep #:
Добрый день. Перенёс код в скрипт вот таким макаром.
При перетаскивании на график и вводе имени шаблона во входных параметрах терминал перестаёт отвечать и ничего не происходит. Шаблоны ко всем графикам не применяются:-( Это я код не верно перенёс или в чём-то другом проблема? Имя шаблона перепроверял- вписываю только имя без точка tpl

Вам достаточно было в свой код дописать одну строку. Или даже заменить две строки одной

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

Добрый день! Ситуация такая: в терминале открыты два одинаковых графика. На одном установлен один робот, на другом другой. Как прописать в коде (если такая возможность существует), чтобы позиция, открытая роботом-1, открывалась и на графике, где установлен робот-2? Или даже лучше, чтобы позиция открывалась по условию робота-1 только на графике, где установлен робот-2. Моих "знаний" не хватает.

Спасибо.

 
novichok2018 #:

Добрый день! Ситуация такая: в терминале открыты два одинаковых графика. На одном установлен один робот, на другом другой. Как прописать в коде (если такая возможность существует), чтобы позиция, открытая роботом-1, открывалась и на графике, где установлен робот-2? Или даже лучше, чтобы позиция открывалась по условию робота-1 только на графике, где установлен робот-2. Моих "знаний" не хватает.

Спасибо.

Если графики одинаковые, то ордера видны на обоих. Ордера открываются по символу, а не по графику.
 
Alexey Viktorov #:

Вам достаточно было в свой код дописать одну строку. Или даже заменить две строки одной

Алексей, большое спасибо за подсказку- добавил строки и всё заработало, единственная проблема- теперь даже при ручном выборе дефаулт шаблона терминал виснитХД))))))))) походу пора компьютер почистить, а то есть признаки неполадок(
Причина обращения: