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

 
DanilaMactep #:
如果我没有记错的话,它就是这样开始的,而且在我的记忆中它并不奏效;-)

我已经给你看过了--我不知道为什么它对你不起作用--它在mt4和mt5上对我都有效。

\\\\\\\\\\\\\\\\\\\\

你也可以改变图表的颜色

//+------------------------------------------------------------------+
//|                                       CHART_COLOR_BACKGROUND.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 color Backclr = clrWhite; // Цвет фона графика.
sinput color Foreclr = clrBlack; // Цвет осей, шкалы и строки OHLC графика.
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
//--- переменные для идентификаторов графиков
   long currChart, prevChart = ChartFirst();
   int i = 0, limit = 100;
   bool errTemplate;
   Print("ChartFirst = ", ChartSymbol(prevChart), " ID = ", prevChart);
   while(i < limit) // у нас наверняка не больше 100 открытых графиков
     {
      currChart = ChartNext(prevChart); // на основании предыдущего получим новый график
      errTemplate = ChartBackColorSet(Backclr, prevChart);
      errTemplate = ChartForeColorSet(Foreclr, prevChart);
      if(errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
      if(currChart < 0)
         break;          // достигли конца списка графиков
      Print(i, ChartSymbol(currChart), " ID =", currChart);
      prevChart = currChart; // запомним идентификатор текущего графика для ChartNext()
      i++;// не забудем увеличить счетчик
     }
  }
//+------------------------------------------------------------------+
//| Функция устанавливает цвет фона графика.                         |
//+------------------------------------------------------------------+
bool ChartBackColorSet(const color clr, const long chart_ID = 0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим цвет фона графика
   if(!ChartSetInteger(chart_ID, CHART_COLOR_BACKGROUND, clr))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__ + ", Error Code = ", GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Функция устанавливает цвет осей, шкалы и строки OHLC графика.    |
//+------------------------------------------------------------------+
bool ChartForeColorSet(const color clr, const long chart_ID = 0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим цвет осей, шкалы и строки OHLC графика
   if(!ChartSetInteger(chart_ID, CHART_COLOR_FOREGROUND, clr))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__ + ", Error Code = ", GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
 
137 Matrix #:

我已经给你看过了--我不知道为什么它对你不起作用--它在mt4和mt5上对我都有效。

\\\\\\\\\\\\\\\\\\\\

这里有另一种改变图表颜色的方法。

这只是一种不可避免的不可抗力,它只是一个中风--我可能看不到一些东西,仅此而已。但非常感谢你的帮助。

 
DanilaMactep #:

这只是一种不可抗力--我中风的后遗症--我可能看不到一些东西,就是这样。但非常感谢你的帮助。

你不需要在代码中添加一个.tpl,它已经为你做了。

你只需要输入模板的名称。

 Template + ".tpl"

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

sinput string Template           = "ADX";          // Имя шаблона(without '.tpl')
      errTemplate = ChartApplyTemplate(prevChart, Template + ".tpl");
      if(!errTemplate)
        {
         Print("Error ", ChartSymbol(prevChart), "-> ", GetLastError());
        }
 
137 Matrix #:

你不需要在代码中添加(.tpl),它已经为你规定好了。

你只需要在.NET中输入模板的名称。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

我想我已经弄明白了--下次请给我使用说明,因为没有半升)))))),你不会明白的。;-)非常感谢你的帮助 :-)
 
137 Matrix #:

我已经给你看过了--我不知道为什么它对你不起作用--它在mt4和mt5上对我都有效。

\\\\\\\\\\\\\\\\\\\\

你也可以改变图表的颜色

萨沙,你想不出有什么比使用文档中的例子或tumblr的例子更糟糕。而且你也在某处丢失了强制终止while循环的标志。总而言之......无话可说。
 
DanilaMactep #:
这个选项完全没有作用--我在图表上释放脚本,什么也没有发生。

对不起,失去了逻辑上的否定符号!。

void OnStart()
 {
  long prevChart = ChartFirst();
  while(prevChart >= 0 && !IsStopped())
   {
    //if(ChartPeriod(prevChart) != PERIOD_H1)
      ChartSetSymbolPeriod(prevChart, ChartSymbol(prevChart), PERIOD_H1);// или PERIOD_D1
      ChartApplyTemplate(prevChart, tplName);
    prevChart = ChartNext(prevChart);
   }
 }/******************************************************************/
/*****************************End program****************************/
 
Alexey Viktorov #:
萨沙,你想不出有什么比使用文档中的例子或tumblr的例子更糟糕的了。哦,在某处他失去了强制终止while循环的标志。嗯......没话说。

例如,我的任务是找到一个满足我的任务的函数,我搜索它,如果它符合我的任务--不管它有多少行--我就使用它。

最主要的是,该功能以我想要的方式工作。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

我这样做是为了自我发展,没有别的,纯粹是为了自己。我不认为我必须给任何人写什么。

 
137 Matrix #:

例如,我的任务是找到一个满足我的任务的函数,我搜索它,如果它符合我的任务--不管它有多少行--我就使用它。

最主要的是,该功能以我想要的方式工作。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

我这样做是为了自我发展,没有别的,纯粹是为了自己。我不认为我在给任何人写什么。

当你给别人提供建议时,这不是为你自己。

尤其是这样的错误......什么是PERIOD_CURRENT,条件中的结果是什么?

      if(TimeFrame != PERIOD_CURRENT)
 
Alexey Viktorov #:

当你给别人提供建议时,并不是为了自己。

尤其是这样的错误......什么是PERIOD_CURRENT,条件中的结果是什么?

我不知道,这很有效!

它通过设置中恢复的周期来切换图表。

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

当有人提出问题时,我试图站在他的立场上,达到所需的结果。

如果你没有注意到,我已经尽我所能完成了这项任务,并张贴了完成的脚本--它可能不正确--但它达到了目的。

 
Alexey Viktorov #:

当你给别人提供建议时,并不是为了自己。

尤其是这样的错误......什么是PERIOD_CURRENT,条件中的结果是什么?

 if(TimeFrame != PERIOD_CURRENT)

我在这里没有看到任何错误。