脚本: sChartsSynchroScroll

 

sChartsSynchroScroll:

此脚本可同步翻卷客户终端内所有打开的图表。

作者: Dmitry Fedoseev

[删除]  

我的理解是否正确,这个脚本可以同时使用不同时间框架的图表(就像这里所 做的)?

代码风格让人想起 MQL4。这不是坏事。谢谢!

[删除]  

总时间线左右两侧的图表存在不同步问题。我希望整个图表宽度 上的柱形图都能按时间同步。

我建议开发人员再考虑一下(也许可以讨论一下)有无 "孔 "柱状图的可视化可能性。在这种情况下,它将只是可视化,也就是说,"孔 "条在 MQL5 中将不可用。

 

德米特里,通过CHARTEVENT_CLICK(图表事件) 而不是循环来实现可能会更容易些...

以下是同步一种货币图表的示例

//------------------------------------------------------------------ OnChartEvent
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam)
{
 if (id==CHARTEVENT_CLICK)
 {
   long cid=ChartFirst();
   long fbar=ChartGetInteger(ChartID(), CHART_FIRST_VISIBLE_BAR);
   datetime tm[], tm1[];
   int rez=CopyTime(Symbol(), Period(), 0, fbar, tm); if (rez<fbar) return;
   while (cid!=-1)
   {
    ChartSetInteger(cid, CHART_AUTOSCROLL, false); ChartSetInteger(cid, CHART_SHIFT, false);
    if (cid!=ChartID() && ChartSymbol(cid)==Symbol()) 
    {
     rez=CopyTime(ChartSymbol(cid), ChartPeriod(cid), TimeCurrent(), tm[0], tm1); if (rez<0) break;
     ChartNavigate(cid, CHART_END, rez-ChartGetInteger(cid, CHART_WIDTH_IN_BARS)+2);
     ChartRedraw(cid);
    }
    cid=ChartNext(cid);
   }
 }
}

就是这样!

 
getch:

我的理解是否正确,即该脚本可以同时使用不同时间框架的图表(就像这里所 做的)?

代码风格让人想起 MQL4。这不是坏事。谢谢!


它可以在不同的时间框架下工作。
 
sergeev:

迪米特里,通过 CHARTEVENT_CLICK(图表事件点击)而不是循环来实现可能会更容易些...

以下是同步一种货币图表的示例

就是这样!

并非一切都那么简单。您的功能将柱形图同步到了图表的左侧边缘,这对于历史的视觉研究并不十分方便。您还应该禁用图表偏移,这也不太方便(不过,这是个品味问题)。开发人员应该增加从右边获取和设置缩进的功能,或者按时间进行导航,因为很多函数都是通用的,可以传递条形图编号或时间。此外,该事件只针对脚本工作的图表进行处理。

----------------------------------------------------------------------------------------------------------------

图表事件

OnChartEvent() 是 ChartEvent 事件组的处理程序:

...

...

该函数只能在 EA 中调用,且必须具有 void 类型和 4 个参数:

----------------------------------------------------------------------------------------------------------------

事件处理 仅在智能交易系统中有效。一个图表上只能有一个智能交易系统,您不应该用实际上无用的辅助工具代替智能交易系统。我坚信,与交易执行无直接关系的辅助工具不应以智能交易系统的形式出现,极少数必要的例外情况除外。

 
Integer:

图表事件

OnChartEvent() 是 ChartEvent 事件组的处理程序:

...

...

函数只能在 Expert Advisors 中调用,必须为 void 类型,有 4 个参数:

----------------------------------------------------------------------------------------------------------------

事件处理仅在智能交易系统中有效。一个图表上只能有一个智能交易系统,您不应该用实际上无用的辅助工具代替智能交易系统。我深信,与交易执行无直接关系的辅助工具不应以智能交易系统的形式出现,极少数必要的例外情况除外。

现在情况不再是这样了,请关注公告 -https://www.mql5.com/ru/forum/23/page4:

MetaTrader 5 客户端第 245 版

  1. 终端:修正了在资产中(在 "Exposure "选项卡中)计算自由保证金资金的错误。
  2. 终端:修复了 "前景上的图表 "图表属性的操作。
  3. 终端:修正并重新设计了图表的打印预览窗口。
  4. 终端:修复了使用临时全局变量时的一个错误。
  5. 终端:合并 "标准 "和 "图表 "工具栏。
  6. MQL5:关于崩溃和论坛信息的更正
  7. MQL5: 更改了 Expert Advisors 和脚本的 Copy* 功能的操作原则 - 现在功能将等待下载和构建请求的数据。请求数据的等待时间不会超过 30 秒。在不久的将来,MQL5 帮助中将提供更详细的说明。
  8. MQL5:增加了自定义指标事件处理的 可能性,类似于专家顾问。近期将在 MQL5 帮助中提供更详细的说明。

.

 
Integer писал(а) :

没那么简单。您的功能将柱状图同步到图表的左侧边缘,这对于直观研究历史不是很方便。

但可以在任何边缘同步柱形图。并为交易者提供选择按钮--居中、居右、居左....。

还应该禁用图表位移功能,这也不是很方便(尽管这是个品味问题)。

开发人员应增加从右边获取和设置缩进的可能性,或按时间进行导航,因为许多功能都是通用的,可以通过条形图编号或时间进行设置。

顺便说一下,这个功能是可用的。图表移动大小

参见示例 ObjChartSample.mq5

 

CHART_FIRST_VISIBLE_BAR 似乎有问题。

如果将 ChartNavigate() 设置为一个明显大于可以查看图表的数字,那么

ChartGetInteger(ChartID(),CHART_FIRST_VISIBLE_BAR) 会大于 Bars(ChartSymbol(ChartID()),ChartPeriod(ChartID())).

脚本 2.mq5 中的示例。运行脚本,稍等。

附加的文件:
2.mq5  2 kb
 

有东西告诉我,终端机的速度不够快。

因为如果立即再次运行脚本,第一次就会成功。

也许我们需要控制时间

也许SeriesInfoInteger 会有帮助?

[删除]  
Integersergeev,从你们的帖子中,我得到了一个极其不愉快的印象,那就是 MQL5 和 MT5 非常原始。