新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1904

 
DanilaMactep 打开的图表 翻译成n1 期。我怎样才能重写代码,使脚本将指定名称的模板应用于所有打开的图表?

在这里,这将帮助你。

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 #:

你所要做的就是在你的代码中添加一行。或者甚至用一行代替两行

Alexey,非常感谢你的提示--增加了几行,一切都正常了,唯一的问题是--现在即使手动选择默认模板,终端也会挂起XD))))))))),看来是时候清理电脑了,但也有故障的迹象(