Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1903

 
Alekseu Fedotov #:

Aqui, isto o ajudará.

E para uma pessoa particularmente "talentosa", você pode explicar a função
ChartApplyTemplate()
onde no roteiro deve ser substituído?
 
DanilaMactep #:
Você pode explicar a uma pessoa especial "dotada" a função na qual o lugar do roteiro deve ser substituído?

aqui está o roteiro

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

aqui está o roteiro

Muito obrigado pelo código - amanhã vou adicioná-lo ao meta editor, hoje está ficando tarde.

 
137 Matrix #:

aqui está o roteiro

Boa tarde. Transferiu o código para o roteiro desta forma.
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
//|                                           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 eu arrasto e solto na tabela e digito o nome do modelo nos parâmetros de entrada, o terminal pára de responder e nada acontece. Os modelos não são aplicados a todos os gráficos :-( Eu copiei o código incorretamente ou há um problema com alguma outra coisa? Verifiquei duas vezes o nome do modelo - digito apenas o nome sem o ponto tpl
 
DanilaMactep #:
Olá. Eu coloquei o código no roteiro assim.
Quando eu arrasto e solto na tabela e digito o nome do modelo nos parâmetros de entrada, o terminal pára de responder e nada acontece. Os modelos não são aplicados a todos os gráficos :-( Eu copiei o código incorretamente ou há um problema com alguma outra coisa? Verifiquei duas vezes o nome do modelo - digito apenas o nome sem o ponto tpl

digite o nome e este modelo será aberto em todos os gráficos abertos.

por exemplo - salvar o modelo com o nome do modelo e escrever o modelo nas configurações do script

 
DanilaMactep #:
Boa tarde. Eu transferi o código para o roteiro desta forma.
Quando eu arrasto e solto na tabela e digito o nome do modelo nos parâmetros de entrada, o terminal pára de responder e nada acontece. Os modelos não são aplicados a todos os gráficos :-( Eu copiei o código incorretamente ou há um problema com alguma outra coisa? Verifiquei duas vezes o nome do modelo - digito apenas o nome sem o ponto tpl

Tudo que você tinha que fazer era adicionar uma linha ao seu código. Ou até mesmo substituir duas linhas por uma

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

Boa tarde! A situação é a seguinte: tenho duas cartas idênticas abertas no terminal. Um robô é instalado sobre um e o outro sobre o outro. Como posso me registrar no código (se for possível), para que a posição aberta pelo robô 1 também seja aberta no gráfico onde o robô 2 é colocado? Ou melhor ainda, como fazer o Robot-1 abrir uma posição apenas na tabela com o Robot-2? Meu "conhecimento" não é suficiente.

Meu "conhecimento" não é suficiente. Obrigado.

 
novichok2018 #:

Boa tarde! A situação é a seguinte: tenho duas cartas idênticas abertas no terminal. Um robô é instalado sobre um e o outro sobre o outro. Como posso escrever no código (se houver a possibilidade) de que a posição aberta pelo robô 1 também se abra no gráfico onde o robô 2 é colocado? Ou melhor ainda, como fazer o Robot-1 abrir uma posição apenas na tabela com o Robot-2? Meu "conhecimento" não é suficiente.

Meu "conhecimento" não é suficiente. Obrigado.

Se os gráficos forem os mesmos, as ordens são visíveis em ambos. As ordens são abertas pelo símbolo, não pelo gráfico.
 
Alexey Viktorov #:

Tudo que você tinha que fazer era adicionar uma linha ao seu código. Ou até mesmo substituir duas linhas por uma

Alexey, muito obrigado pela dica - linhas adicionadas e tudo funcionou, o único problema - agora mesmo ao selecionar manualmente o modelo padrão o terminal penduraXD))))))))) parece que é hora de limpar o computador, mas há sinais de problemas (
 
Tretyakov Rostyslav #:
Se os gráficos forem os mesmos, as ordens são visíveis em ambos. As ordens são abertas pelo símbolo, não pelo gráfico.

Isto é compreensível, mas preciso que a ordem não só esteja visível no segundo gráfico, mas que seja aberta nele. Não é necessário que ela se abra no primeiro gráfico. Parece que, porque eu poderia simplesmente combinar dois códigos em um e depois não haveria necessidade de abrir o segundo gráfico, mas a questão é que o segundo robô é de outra pessoa e eu não tenho acesso a seu código.