指标: ZoomPrice tick 指标

ZoomPrice tick 指标:

本指标显示了任何缩放水平的价格图表。

作者: fxsaber

Automated-Trading:

Tick 指标 ZoomPrice

作者:fxsaber

是否可以将指标移动到图表窗口,而无需框架,否则会降低终端速度?

还有,是否可以在设置中切换线条[棕色、蓝色、红色]?

sober:

能否将指标移至图表窗口而不使用框架,否则会降低终端运行速度?

这是一个交互式图形对象,可以通过 CTRL+B 改变其某些属性(例如坐标)(如果按下 "全部 "键,将显示为图表)。因此,您可以用它完成标准图形对象的所有操作。尤其是可以将其放置在任何窗口(子窗口)中。

描述中的简短 EA 源代码就可以做到这一点。

在该变体中,您可以将图表切换到其他符号,而该对象将继续显示最初创建时的符号。

另外,能否在设置中将线条(棕色、蓝色、红色)设置为可切换的?

这些线条包含某些信息

  • 棕色(默认)--垂直线显示光标所在位置的时间位置,水平线显示价格。
  • 蓝色(默认)- 显示光标位置的买入价。同时,该刻度线的时间和价差显示在右侧(沿垂直刻度)。
  • 红色(默认)- 与卖出价相同。
无法通过输入参数删除这些线。可以通过将十字颜色设置为 "无 "来 "删除 "棕色线。同样,您也可以删除买入价/卖出价线,但这会影响相应历史断线的可见性。
fxsaber:

这是一个交互式图形对象,其某些属性可通过 CTRL+B 更改如坐标)(如果按 "全部 "键,将显示为图表)。因此,您可以对其进行与标准图形对象相同的操作。

还可以关闭垂直比例尺,并将对象置于图表背景上。

这样,您就可以得到一个比例可变的背景刻度图表(历史/实时)。

一般来说,如何使用该对象取决于想象力。

默认情况下,"在图表上显示交易水平(未平仓头寸、止损、止盈和挂单水平)"在勾选图表上是禁用的。

但启用该模式有时很有用

在屏幕上,您可以清楚地看到一个卖出头寸已开立,买入价(倒数第二栏)跌破了 TP 水平。不过,为什么没有触发 TP 也很清楚--卖出价(红色折线)没有达到 TP。


可以通过编辑源代码打开显示功能

this.SetProperty(CHART_SHOW_TRADE_LEVELS, false);        // 在图表上显示交易水平(未平仓头寸、止损、止盈和挂单水平)。

在这一行中,您需要将 false 替换为 true。或者,如果您希望 tick 图表获得与主图表相同的设置,请注释这一行。

fxsaber:

默认情况下,"在图表上显示交易水平(未平仓头寸、止损、止盈和挂单水平)"在勾选图表上是禁用的。

但启用该模式有时很有用

在屏幕上,您可以清楚地看到一个卖出仓位已开立,买入价(倒数第二栏)跌破了 TP 水平。不过,为什么没有触发 TP 也很清楚--卖出价(红色折线)没有达到 TP。


可以通过编辑源代码打开显示功能

this.SetProperty(CHART_SHOW_TRADE_LEVELS, false);        // 在图表上显示交易水平(未平仓头寸、止损、止盈和挂单水平)。

在这一行中,您需要将 false 替换为 true。或者,如果您希望勾选图表获得与主图表相同的设置,请注释这一行。

第一个tick 指标"fxsaber "功能更强、更方便。您可以在图表窗口中叠加标准指标。您可以在图表中应用 "每条按点数缩放"。一切都一目了然。在同一个指标 "zoomprice "中,一切都会跳跃和滑动,当你根据自己的需要进行调整时,一百年都会过去。十字线、蓝线和红线都是多余的,它们只会分散你的注意力。

zoomprice "的唯一优点是比 "fxsaber "看起来更快。

sober:

第一个勾选指标"fxsaber "功能更强,使用更方便。在图表窗口中,可以在其上叠加标准指标。可以在图表中应用 "每条按点数缩放"。一切都很清楚。

我是一个很弱的终端用户,所以我不知道高级用户需要什么。如果能知道您是如何使用的,那将会很有帮助。例如,"按每条线的点数缩放 "模式从未启用过,我不知道它有什么用处。总之,请分享您的经验。

在同一个指标 "zoomprice "中,所有的东西都在跳跃和滑动,而您自己调整它却要花上一百年的时间。

什么都不应该跳跃和滑动。了解交互界面。在我看来,这是非常直观的。我是用鼠标调整刻度的。如果有人有问题,请直说。到目前为止,我只有一个不满意的地方。

为了了解如何为对象设置相同的设置,下面是一个 EA 示例。

input int exX = 50;       // X 坐标
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(); // 需要物体的互动性
}

十字光标、蓝色和红色线条都是多余的,它们只会分散注意力。

要禁用线条和文本,您需要在源代码中找到一个函数

  void SetTextCross( const int X, const int Y )
  {
    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;
  }

并注释掉其正文。

  void SetTextCross( const int X, const int Y )
  {
/* 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.HLineCross = price;
        this.VLineCross = time;

并注释掉它们

// this.HLineCross = price;
// this.VLineCross = time;

zoomprice" 的唯一优点是似乎比 "fxsaber "更快。

ZoomPrice 对Ticks 来说是一个很好的补充--它可以让你深入了解 Ticks 所显示的内容。写完 ZoomPrice 后,我自己就不再使用 Ticks 了。

Тиковый индикатор Ticks
Тиковый индикатор Ticks
  • 投票: 19
  • 2016.10.14
  • //www.mql5.com/ru/users/fxsaber">
  • www.mql5.com
Показывает тиковую ценовую историю (Bid/Ask) внутри всех видимых баров.

下面是一个示例

我需要在ZoomPrice 指标 的基础上叠加另一个网格 指标,以直观地确定价格移动了多少点。相邻蓝线之间为 40 点,相邻橙线之间为 200 点。我不需要任何十字线,只需要与刻度相关联的网格水平线。只要看一眼,就足以评估形势。网格中的橙色线是图表的整数,如果该线位于图表值 1.10900,那么无论我们如何改变刻度,该线的值都不会改变。

我试着在ZoomPrice 上部添加一个网格指标,并将线条与刻度相连,但没有任何效果。我对代码知之甚少。

我注释掉了所有不必要的东西,现在只剩下制作网格了,这样就完美了。

在选项卡 "属性">"常规 "中设置了每条线按点缩放的比例。

sober:

我试过在ZoomPrice 的顶部叠加网格指标,并将线条与刻度相连,但没有任何效果。我不擅长写代码。

我注释掉了所有不必要的东西,现在我只需要制作一个网格就完美了。

你可以在这个图形对象上挂一个相应的指示器,来制作一个水平网格。不过,对于不懂代码的人来说,这可不是件小事。

在 "属性">"常规 "选项卡中设置了每条线的点数比例。

在 MQ 16 年的历史中,ZoomPrice 是唯一一个允许您进行任意级别缩放的指标。也就是说,不是六个明确定义的刻度,而是任何你想要的刻度。这就需要一些非标准的解决方案(这就是对象没有水平刻度的原因)。正是由于这些非标准解决方案,ZoomPrice 有一些限制,不允许在对象上叠加某些类型的指标(这不适用于水平网格)。而设置不同类型的缩放是我必须考虑的问题。即使阅读了帮助,我仍然不明白 "按每条线的点数缩放 "是什么意思。

事实上,在你自己都不明白的情况下,你已经触及了指标正确行为的话题。由于可能存在 OBJ_CHART 对象,因此可以不在图表本身,而是在OBJ_CHART 对象 上抛出一个指标。在这种情况下,完全在 OBJ_CHART 而不是主图表上运行指标是符合逻辑的。

请提供水平网格指标的链接。让我们看看你能想到什么。

fxsaber:


给我发一个水平网格指标的链接。看看我们能想到什么。

指标https://www.mql5.com/zh/code/14916
PriceGrid
PriceGrid
  • 投票: 17
  • 2016.02.29
  • Nikolay Kositsin
  • www.mql5.com
Индикатор строит ценовую сетку из округленных на несколько порядков уровней.
要添加评论,请登录注册