我希望同步不同时间框架上的支撑位和阻力位,即在一个时间框架上添加的支撑位会出现在所有其他时间框架的图表上
Tapani:
我希望同步不同时间框架上的支撑位和阻力位,即在一个时间框架上添加的支撑位会出现在所有其他时间框架的图表上。
我希望同步不同时间框架上的支撑位和阻力位,即在一个时间框架上添加的支撑位会出现在所有其他时间框架的图表上。
您好,
您是如何在图表上添加阻力位的?是水平线还是矩形框?
您好,yousurfer。
如果您想通过某些属性选择对象,可以在此函数中添加。
string CCopyObject::CreateMessage(long chart) { string result = NULL; int total = ObjectsTotal(chart, 0); for(int i=0;i<total;i++) { string name = ObjectName(chart, i, 0); // // if(!( 检查要复制的对象属性) ) // 如果你不想复制这个对象 // 继续;// 转到下一个对象 // switch((ENUM_OBJECT)ObjectGetInteger(chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_HLINE)+"|"+HLineToString(chart, name)+"}"; break; case OBJ_VLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_VLINE)+"|"+VLineToString(chart, name)+"}"; break; case OBJ_TREND: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_TREND)+"|"+TrendToString(chart, name)+"}"; break; case OBJ_RECTANGLE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_RECTANGLE)+"|"+RectangleToString(chart, name)+"}"; break; } } return result; }
Dmitriy。
您能为 MT4 做一个吗?最好能按对象进行过滤(只克隆水平或趋势......)。有一个类似的 MT4 版本,但代码是封闭的,无法附加过滤功能。
Kofa:
您能为 MT4 做一个吗?最好能对对象进行过滤(仅克隆水平或趋势......)。MT4 也有类似的指标,但代码已关闭,无法添加过滤功能。
您能为 MT4 做一个吗?最好能对对象进行过滤(仅克隆水平或趋势......)。MT4 也有类似的指标,但代码已关闭,无法添加过滤功能。
要在 MT4 上使用,只需将指标文件扩展名从 mq5 改为 mq4,然后重新编译指标即可。
要添加对象过滤功能,需要添加参数
sinput bool CloneHLine = true; sinput bool CloneVLine = true; sinput bool CloneTrend = true; sinput bool CloneRectangle = true;
并更正OnChartEvent,添加CheckToClone 函数。
//+------------------------------------------------------------------+ //| 图表事件函数| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- string message1=NULL; string message2=NULL; int total=0; //--- switch(id) { case CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_OBJECT_DRAG: if(!CheckToClone(sparam)) return; message1=CloneObjects.CreateMessage(l_Chart,sparam,0); message2=CloneObjects.CreateMessage(l_Chart,sparam,1); total=ArraySize(ar_Charts); for(int i=0;i<total;i++) { EventChartCustom(ar_Charts[i],(ushort)id,0,0,message1); EventChartCustom(ar_Charts[i],(ushort)id,0,0,message2); } break; //--- case CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; total=ArraySize(ar_Charts); for(int i=0;i<total;i++) EventChartCustom(ar_Charts[i],(ushort)id,0,0,sparam); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DRAG: CloneObjects.DrawObjects(l_Chart,sparam); ChartRedraw(l_Chart); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; ObjectDelete(l_Chart,sparam); ChartRedraw(l_Chart); break; } } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ bool CheckToClone(string name) { bool result = false; if(l_Chart>=0 && ObjectFind(l_Chart,name)==0) { switch((ENUM_OBJECT)ObjectGetInteger(l_Chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result=CloneHLine; break; case OBJ_VLINE: result=CloneVLine; break; case OBJ_TREND: result=CloneTrend; break; case OBJ_RECTANGLE: result=CloneRectangle; break; } } return result; }
Dmitriy Gizlyk:
要在 MT4 上使用,只需将指标文件扩展名从 mq5 改为 mq4,然后重新编译指标即可。
感谢您的快速回复和帮助。mq4 不支持ChartIndicatorGet、CloneAllObjects 和其他函数。一般来说,编译过程中会出现 9 个错误。我的编程能力为零。请帮助我。
新文章 同步多个相同交易品种而时段不同的图表已发布:
当做交易决定时,我们经常必须在多个时段分析图表,同时,这些图表常常包含着图形对象,把相同的对象应用到所有图表中会不大方便,在本文中,我提出了一种自动克隆将要显示在图表中对象的方法。
在本文中,我们已经提出了方法来开发指标,可以自动在终端图表之间实时自动复制图形对象,这种方法实现了在终端打开的图表之间做双向数据交换的机制,它对用户没有同步图表数量的限制,同时,用户可以在任何同步的图表上创建,修改和删除图形对象。指标的操作在视频中做了展示:
作者:Dmitriy Gizlyk