文章 "利用 CCanvas 类开发自定义指标" - 页 2 12 新评论 Andrey Khatimlianskii 2017.06.19 12:06 #11 fxsaber:这是好消息!你有什么想法?用自定义时间序列代替刻度线历史记录?不,在刻度线历史记录旁边画一个刻度线速率柱状图。这样,在使用参数时,您就可以直观地确定活动时间段,或许还能发现一些规律。 Alexander Fedosov 2017.06.19 12:07 #12 Dennis Kirichenko:好主题。感谢作者,我将在 canvas..... 上制作一个tick 指标。我注意到这一点。有一个私有 数据成员m_canvas_name,但设置其值的方法Name() 是公共的。我认为这违反了封装原则。我将把这个方法设为私有。也许受保护?因为所有其他方法都继承了 CCanvasBase。这样就无法在它们中使用该方法了。虽然我不知道,但也许您在总体结构中做了其他改动。 Denis Kirichenko 2017.06.19 12:13 #13 Alexander Fedosov:也许是受保护的?因为所有其他方法都继承了 CCanvasBase。这样你就不能在它们中使用这个方法了。虽然我不知道,但也许你在总体结构上做了其他改动。所以是的,受保护。然后是这里:bool CCanvasBase::DeleteCanvas() { return(ObjectDelete(0,m_canvas_name)?true:false); }//+------------------------------------------------------------------+ //| 自定义指标去初始化功能 //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ind.Delete(); ChartRedraw(); }指标为何如此复杂?我认为有必要对画布本身进行清理。我会在 DeleteCanvas() 方法中 添加ChartRedraw()。 Denis Kirichenko 2017.06.19 12:15 #14 fxsaber:如果您有草图,请发送截图/视频。我自己也发布过这样一个指标,但它没有被人们接受。虽然我还没有找到更好的方案。在 kanvas 上看到其他解决方案很有意思。我正在为 FORTS 制作一个。我是按照常规格式制作的,但在测试器中,从 EA 主体调用时效果很差。现在我将把所有代码转移到 EA 中... Alexander Fedosov 2017.06.19 12:17 #15 Dennis Kirichenko: 是的,没错。那这里为什么指标如此复杂?在我看来,有必要对画布本身进行清理。我会 在 DeleteCanvas() 方法中 添加ChartRedraw()。是的,这样可以减少不必要的线条。我们让画布变得整洁,然后在那里进行重绘。 Denis Kirichenko 2017.06.19 16:56 #16 这并不是真正的方法://+------------------------------------------------------------------+ //|| 删除图形资源| //+------------------------------------------------------------------+ bool CCanvasBase::DeleteCanvas() { return(ObjectDelete(0,m_canvas_name)?true:false); }为什么要用三元运算符?- 你可以直接做啊//+------------------------------------------------------------------+ //|| 删除图形资源| //+------------------------------------------------------------------+ bool CCanvasBase::DeleteCanvas() { return ObjectDelete(0,m_canvas_name); }我是这样做的://+------------------------------------------------------------------+ //|| 删除图形资源| //+------------------------------------------------------------------+ bool CCanvasBase::DeleteCanvas() { if(ObjectFind(0,m_canvas_name)>-1) if(ObjectDelete(0,m_canvas_name)) { ChartRedraw(); return true; } return false; }但画布有自己的删除方法 CCanvas::Destroy()。我们为什么还要添加其他东西呢? Denis Kirichenko 2017.06.19 17:22 #17 我在垂直缩放方面遇到一个问题。我想在 RTS 上制作一个刻度线图,其中 Y 轴的最大值为 97784.0,最小值为 97756.0。我在代码中这样做了://--- 更新图表 double min_y=NormalizeDouble(min_pr-0.2*diff,_Digits); double max_y=NormalizeDouble(max_pr+0.2*diff,_Digits); ticks_ind.YMin(min_y); ticks_ind.YMax(max_y); ticks_ind.SetArrayValue(prices);结果如下https://www.mql5.com/ru/charts/7227612/rts-9-17-m1-ao-otkritie-broker最小值显示正确,但随后出现了一些啸叫。显然,CLineGraph::VerticalScale() 方法并不像我想象的那样经过微调,或者更糟糕的是,它不应该经过微调。 График RTS-9.17, M1, 2017.06.19 15:22 UTC, АО ''Открытие Брокер'', MetaTrader 5, Real www.mql5.com Символ: RTS-9.17. Период графика: M1. Брокер: АО ''Открытие Брокер''. Торговая платформа: MetaTrader 5. Режим торговли: Real. Дата: 2017.06.19 15:22 UTC. Anatoli Kazharski 2017.06.19 17:26 #18 Dennis Kirichenko:...试试这个类 >>>CGraphic可视化它!MQL5 中的图形库,与 R 中的 plot 类似测试 CGraphic - 问题和建议 Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic www.mql5.com Стандартная библиотека / Научные графики / CGraphic - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Denis Kirichenko 2017.06.19 18:01 #19 Anatoli Kazharski:试试这个类 >>>CGraphic可视化它!MQL5 中的图形库,与 R 中的 plot 类似测试 CGraphic - 问题和建议Anatoly,谢谢你的建议,我会使用它的。很遗憾,这个想法变成了不友好的代码... 12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是好消息!你有什么想法?用自定义时间序列代替刻度线历史记录?
不,在刻度线历史记录旁边画一个刻度线速率柱状图。
这样,在使用参数时,您就可以直观地确定活动时间段,或许还能发现一些规律。
好主题。感谢作者,我将在 canvas..... 上制作一个tick 指标。
我注意到这一点。
有一个私有 数据成员m_canvas_name,但设置其值的方法Name() 是公共的。我认为这违反了封装原则。我将把这个方法设为私有。
也许受保护?因为所有其他方法都继承了 CCanvasBase。这样就无法在它们中使用该方法了。虽然我不知道,但也许您在总体结构中做了其他改动。
也许是受保护的?因为所有其他方法都继承了 CCanvasBase。这样你就不能在它们中使用这个方法了。虽然我不知道,但也许你在总体结构上做了其他改动。
所以是的,受保护。
然后是这里:
指标为何如此复杂?我认为有必要对画布本身进行清理。我会在 DeleteCanvas() 方法中 添加ChartRedraw()。
如果您有草图,请发送截图/视频。我自己也发布过这样一个指标,但它没有被人们接受。虽然我还没有找到更好的方案。在 kanvas 上看到其他解决方案很有意思。
我正在为 FORTS 制作一个。我是按照常规格式制作的,但在测试器中,从 EA 主体调用时效果很差。现在我将把所有代码转移到 EA 中...
是的,没错。
那这里
为什么指标如此复杂?在我看来,有必要对画布本身进行清理。我会 在 DeleteCanvas() 方法中 添加ChartRedraw()。
是的,这样可以减少不必要的线条。我们让画布变得整洁,然后在那里进行重绘。
这并不是真正的方法:
为什么要用三元运算符?- 你可以直接做啊
我是这样做的:
但画布有自己的删除方法 CCanvas::Destroy()。
我们为什么还要添加其他东西呢?
我在垂直缩放方面遇到一个问题。
我想在 RTS 上制作一个刻度线图,其中 Y 轴的最大值为 97784.0,最小值为 97756.0。
我在代码中这样做了:
结果如下
https://www.mql5.com/ru/charts/7227612/rts-9-17-m1-ao-otkritie-broker
最小值显示正确,但随后出现了一些啸叫。
显然,CLineGraph::VerticalScale() 方法并不像我想象的那样经过微调,或者更糟糕的是,它不应该经过微调。
...
试试这个类 >>>CGraphic
可视化它!MQL5 中的图形库,与 R 中的 plot 类似
测试 CGraphic - 问题和建议
试试这个类 >>>CGraphic
可视化它!MQL5 中的图形库,与 R 中的 plot 类似
测试 CGraphic - 问题和建议
Anatoly,谢谢你的建议,我会使用它的。很遗憾,这个想法变成了不友好的代码...