是否可以将指标移动到图表窗口,而无需框架,否则会降低终端速度?
还有,是否可以在设置中切换线条[棕色、蓝色、红色]?
能否将指标移至图表窗口而不使用框架,否则会降低终端运行速度?
这是一个交互式图形对象,可以通过 CTRL+B 改变其某些属性(例如坐标)(如果按下 "全部 "键,将显示为图表)。因此,您可以用它完成标准图形对象的所有操作。尤其是可以将其放置在任何窗口(子窗口)中。
描述中的简短 EA 源代码就可以做到这一点。

在该变体中,您可以将图表切换到其他符号,而该对象将继续显示最初创建时的符号。
另外,能否在设置中将线条(棕色、蓝色、红色)设置为可切换的?
这些线条包含某些信息
- 棕色(默认)--垂直线显示光标所在位置的时间位置,水平线显示价格。
- 蓝色(默认)- 显示光标位置的买入价。同时,该刻度线的时间和价差显示在右侧(沿垂直刻度)。
- 红色(默认)- 与卖出价相同。
默认情况下,"在图表上显示交易水平(未平仓头寸、止损、止盈和挂单水平)"在勾选图表上是禁用的。
但启用该模式有时很有用
在屏幕上,您可以清楚地看到一个卖出仓位已开立,买入价(倒数第二栏)跌破了 TP 水平。不过,为什么没有触发 TP 也很清楚--卖出价(红色折线)没有达到 TP。
可以通过编辑源代码打开显示功能
在这一行中,您需要将 false 替换为 true。或者,如果您希望勾选图表获得与主图表相同的设置,请注释这一行。
。
第一个tick 指标"fxsaber "功能更强、更方便。您可以在图表窗口中叠加标准指标。您可以在图表中应用 "每条按点数缩放"。一切都一目了然。在同一个指标 "zoomprice "中,一切都会跳跃和滑动,当你根据自己的需要进行调整时,一百年都会过去。十字线、蓝线和红线都是多余的,它们只会分散你的注意力。
zoomprice "的唯一优点是比 "fxsaber "看起来更快。
我是一个很弱的终端用户,所以我不知道高级用户需要什么。如果能知道您是如何使用的,那将会很有帮助。例如,"按每条线的点数缩放 "模式从未启用过,我不知道它有什么用处。总之,请分享您的经验。
在同一个指标 "zoomprice "中,所有的东西都在跳跃和滑动,而您自己调整它却要花上一百年的时间。
什么都不应该跳跃和滑动。了解交互界面。在我看来,这是非常直观的。我是用鼠标调整刻度的。如果有人有问题,请直说。到目前为止,我只有一个不满意的地方。
为了了解如何为对象设置相同的设置,下面是一个 EA 示例。
input int exY = 50; // Y 坐标
input int exWidth = 450; // 宽度
input int exHeight = 300; // 高度
input bool exShowGrid = true; // 网格
input color exColorBackGround = clrSnow; // 背景颜色
input bool exTradeLevels = true; // 订单
input bool exPriceScale = true; // 价格表
#include <fxsaber\ChartObjects\ChartObject_ZoomPrice.mqh>
// CHARTOBJECT_ZOOMPRICE 图表对象;
CHARTOBJECT* ChartObject;
void OnInit( void )
{
ChartObject = new CHARTOBJECT_ZOOMPRICE; // 创建缩放价格对象
// 可以通过枚举设置和读取任何对象属性(F1 - 帮助)
// enum_object_property_integer, enum_object_property_double, enum_object_property_double
// enum_chart_property_integer, enum_chart_property_double, enum_chart_property_string
// 通过 ChartObject.SetProperty 写属性
ChartObject.SetProperty(OBJPROP_XDISTANCE, exX); // 以像素为单位的 X 轴与捕捉角度的距离
ChartObject.SetProperty(OBJPROP_YDISTANCE, exY); // 以像素为单位,沿 Y 轴与捕捉角度的距离
ChartObject.SetProperty(OBJPROP_XSIZE, exWidth); // 物体沿 X 轴的宽度(像素)。
ChartObject.SetProperty(OBJPROP_YSIZE, exHeight); // 物体沿 Y 轴的高度(以像素为单位)。
ChartObject.SetProperty(CHART_SHOW_GRID, exShowGrid); // 在图表上显示网格
ChartObject.SetProperty(CHART_COLOR_BACKGROUND, exColorBackGround); // 图表的背景颜色
ChartObject.SetProperty(CHART_SHOW_TRADE_LEVELS, exTradeLevels); // 在图表上显示交易水平(未平仓头寸、止损、止盈和挂单水平)。
ChartObject.SetProperty(OBJPROP_PRICE_SCALE, exPriceScale); // "图表 "对象的价格标尺显示符号
#define TOSTRING(A) #A + " = " + (string)(A)
// 通过 ChartObject.GetProperty 读取属性
Print(TOSTRING(ChartObject.GetProperty(OBJPROP_XDISTANCE)));
Print(TOSTRING(ChartObject.GetProperty(CHART_COMMENT)));
}
void OnDeinit( const int Reason )
{
delete ChartObject; // 删除图形对象
}
void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam )
{
EVENTBASE::MyEvent(id, lparam, dparam, sparam); // 需要物体的互动性
}
void OnTimer( void )
{
EVENTBASE::MyEventTimer(); // 需要物体的互动性
}
void OnTick( void )
{
EVENTBASE::MyEventTick(); // 需要物体的互动性
}
十字光标、蓝色和红色线条都是多余的,它们只会分散注意力。
要禁用线条和文本,您需要在源代码中找到一个函数
{
if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;
const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
this.GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));
this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));
this.TextCross = CHARTOBJECT::TimeToString(TimeCross);
this.SetTextPrices(TimeCross, Y);
return;
}
并注释掉其正文。
{
/* if (this.GetProperty(CHART_WIDTH_IN_PIXELS) == 0)
return;
const ulong TimeCross = (ulong)(this.Ticks.GetTime() + this.Ticks.GetInterval() *
((double)(X - (int)CHARTOBJECT::GetProperty(OBJPROP_XDISTANCE) - OBJ_CHART_BORDER_SIZE) /
这。GetProperty(CHART_WIDTH_IN_PIXELS) - 0.5));
this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME));
this.TextCross.SetProperty(OBJPROP_TIME, (int)this.VLineCross.GetProperty(OBJPROP_TIME))SetProperty(OBJPROP_PRICE, this.GetProperty(CHART_PRICE_MIN));
this.TextCross = CHARTOBJECT::TimeToString(TimeCross);
this.SetTextPrices(TimeCross, Y);
*/.
return;
}
要禁用十字准线,需要找到线条
this.VLineCross = time;
并注释掉它们
// this.VLineCross = time;
zoomprice" 的唯一优点是似乎比 "fxsaber "更快。
ZoomPrice 对Ticks 来说是一个很好的补充--它可以让你深入了解 Ticks 所显示的内容。写完 ZoomPrice 后,我自己就不再使用 Ticks 了。
- 投票: 19
- 2016.10.14
- //www.mql5.com/ru/users/fxsaber">
- www.mql5.com
我试过在ZoomPrice 的顶部叠加网格指标,并将线条与刻度相连,但没有任何效果。我不擅长写代码。
我注释掉了所有不必要的东西,现在我只需要制作一个网格就完美了。
你可以在这个图形对象上挂一个相应的指示器,来制作一个水平网格。不过,对于不懂代码的人来说,这可不是件小事。
在 "属性">"常规 "选项卡中设置了每条线的点数比例。
在 MQ 16 年的历史中,ZoomPrice 是唯一一个允许您进行任意级别缩放的指标。也就是说,不是六个明确定义的刻度,而是任何你想要的刻度。这就需要一些非标准的解决方案(这就是对象没有水平刻度的原因)。正是由于这些非标准解决方案,ZoomPrice 有一些限制,不允许在对象上叠加某些类型的指标(这不适用于水平网格)。而设置不同类型的缩放是我必须考虑的问题。即使阅读了帮助,我仍然不明白 "按每条线的点数缩放 "是什么意思。
事实上,在你自己都不明白的情况下,你已经触及了指标正确行为的话题。由于可能存在 OBJ_CHART 对象,因此可以不在图表本身,而是在OBJ_CHART 对象 上抛出一个指标。在这种情况下,完全在 OBJ_CHART 而不是主图表上运行指标是符合逻辑的。
请提供水平网格指标的链接。让我们看看你能想到什么。
给我发一个水平网格指标的链接。看看我们能想到什么。
- 投票: 17
- 2016.02.29
- Nikolay Kositsin
- www.mql5.com





ZoomPrice tick 指标:
本指标显示了任何缩放水平的价格图表。
作者: fxsaber