MT4 专家交易小组 - "OBJ_RECTANGLE_LABEL"
MT4 expert trade panel - "OBJ_RECTANGLE_LABEL"
MetaTrader4 交易面板专家顾问。
我怎样才能 link 一些 OBJ_RECTANGLE_LABEL
与另一个单个对象一起移动?
Link 他们是间接的
不直接支持链接几个 GUI-对象与另一个对象一起移动。
这并不意味着,它不可能像这样工作。
在一个 Augmented Trader UI-工具中,我需要让所有 GUI-组件和一些计算值在某种类似逻辑下运行(保留所有线条、矩形、文本标签和热图颜色,在一些常见的 UI-control-logic 下)。所有 live-interactive-GUI 编排都被锁定在一些允许的用户-机器交互上,用户可以使用一组 UI-control-objects 移动,其中一些是自由的可以修改,而有些被限制(使用增强现实控制器)只能垂直或水平移动,或者只是被锁定为从布林带边缘切线开始,在这样的地方,垂直线UI-control-object 被用户移动等
Live-interactive-GUI解决方案很简单:
除了 [ Expert Advisor ] 创建和 运行 另一个进程,[ 负责 GUI-对象自动化的脚本 ]。在此脚本中,使用来自对象的一些只读值,比方说一条蓝色垂直线,作为 SENSOR_x1
,GUI 组合的输入.
如果某人或某物移动了这条蓝色垂直线,脚本内的事件监视循环将检测 SENSOR_x1
的新值并且
重新处理所有UI-布局方案,通过添加刚刚观察/检测到的SENSOR_x1_delta = SENSOR_x1 - SENSOR_x1_previous;
这个运动方式,可以在 [ 脚本 ] 中更新运动检测器循环,追踪所有 SENSOR_*
实际值并将检测到的 SENSOR_*_delta
-s 提升到 GUI-布局组合中使用的所有对象上。
最后,值得在 Live-交互式-GUI.
来自 PoC 演示程序的代码
人们可能会注意到,代码采用了 New-MQL4.56789
之前的语法,使用了一些允许的变量命名约定,现在不再被允许。事件监视器功能的范围(一个独立的功能,针对处理 MVC 框架所有三个角落的最大速度/最小延迟进行了优化(Model-is Live-G UI 项目特定,Visual-是 Live-GUI 增强特定,Controller-灵活且作为一种有限状态机组成,由主要构建块组成,并通过 "object.method"
在 switch(){}
中调用实现。循环采样率在低到很少的情况下都能很好地工作数十毫秒,因此 Live-GUI 稳健且平稳地漂浮在交易员的桌面上。
这不是最好的方法,但示意性地显示了该怎么做。
string mainObjectNAME,
dependantObjectNAME; // dependant - your obj label
void OnChartEvent( const int id,
const long &lparam,
const double &dparam,
const string &sparam
){
if ( id == CHARTEVENT_OBJECT_DRAG
|| id == CHARTEVENT_OBJECT_ENDEDIT
){
if ( StringCompare( sparam, mainObjectNAME ) == 0 ){
datetime time1 = (datetime) ObjectGetInteger( 0, mainObjectNAME, OBJPROP_TIME1 );
double price1 = ObjectGetDouble( 0, dependantObjectNAME, OBJPROP_PRICE1 );
if ( !ObjectMove( 0, dependantObjectNAME, 0, time1, price1 ) )
Print( __LINE__,
"failed to move object ",
dependantObjectNAME
);
}
ChartRedraw();
}
}
如果您通过任何公认的方式(通过拖动或传递其他参数)修改 mainObject
- 然后从属对象(OBJ_RECT_LABEL
在您的case ) 使用 ObjectMove()
或 ObjectSet()
函数移动。
MetaTrader4 交易面板专家顾问。
我怎样才能 link 一些 OBJ_RECTANGLE_LABEL
与另一个单个对象一起移动?
Link 他们是间接的
不直接支持链接几个 GUI-对象与另一个对象一起移动。
这并不意味着,它不可能像这样工作。
在一个 Augmented Trader UI-工具中,我需要让所有 GUI-组件和一些计算值在某种类似逻辑下运行(保留所有线条、矩形、文本标签和热图颜色,在一些常见的 UI-control-logic 下)。所有 live-interactive-GUI 编排都被锁定在一些允许的用户-机器交互上,用户可以使用一组 UI-control-objects 移动,其中一些是自由的可以修改,而有些被限制(使用增强现实控制器)只能垂直或水平移动,或者只是被锁定为从布林带边缘切线开始,在这样的地方,垂直线UI-control-object 被用户移动等
Live-interactive-GUI解决方案很简单:
除了 [ Expert Advisor ] 创建和 运行 另一个进程,[ 负责 GUI-对象自动化的脚本 ]。在此脚本中,使用来自对象的一些只读值,比方说一条蓝色垂直线,作为 SENSOR_x1
,GUI 组合的输入.
如果某人或某物移动了这条蓝色垂直线,脚本内的事件监视循环将检测 SENSOR_x1
的新值并且
重新处理所有UI-布局方案,通过添加刚刚观察/检测到的SENSOR_x1_delta = SENSOR_x1 - SENSOR_x1_previous;
这个运动方式,可以在 [ 脚本 ] 中更新运动检测器循环,追踪所有 SENSOR_*
实际值并将检测到的 SENSOR_*_delta
-s 提升到 GUI-布局组合中使用的所有对象上。
最后,值得在 Live-交互式-GUI.
来自 PoC 演示程序的代码
人们可能会注意到,代码采用了 New-MQL4.56789
之前的语法,使用了一些允许的变量命名约定,现在不再被允许。事件监视器功能的范围(一个独立的功能,针对处理 MVC 框架所有三个角落的最大速度/最小延迟进行了优化(Model-is Live-G UI 项目特定,Visual-是 Live-GUI 增强特定,Controller-灵活且作为一种有限状态机组成,由主要构建块组成,并通过 "object.method"
在 switch(){}
中调用实现。循环采样率在低到很少的情况下都能很好地工作数十毫秒,因此 Live-GUI 稳健且平稳地漂浮在交易员的桌面上。
这不是最好的方法,但示意性地显示了该怎么做。
string mainObjectNAME,
dependantObjectNAME; // dependant - your obj label
void OnChartEvent( const int id,
const long &lparam,
const double &dparam,
const string &sparam
){
if ( id == CHARTEVENT_OBJECT_DRAG
|| id == CHARTEVENT_OBJECT_ENDEDIT
){
if ( StringCompare( sparam, mainObjectNAME ) == 0 ){
datetime time1 = (datetime) ObjectGetInteger( 0, mainObjectNAME, OBJPROP_TIME1 );
double price1 = ObjectGetDouble( 0, dependantObjectNAME, OBJPROP_PRICE1 );
if ( !ObjectMove( 0, dependantObjectNAME, 0, time1, price1 ) )
Print( __LINE__,
"failed to move object ",
dependantObjectNAME
);
}
ChartRedraw();
}
}
如果您通过任何公认的方式(通过拖动或传递其他参数)修改 mainObject
- 然后从属对象(OBJ_RECT_LABEL
在您的case ) 使用 ObjectMove()
或 ObjectSet()
函数移动。