文章 "使用 CGraphic 开发库实现一个剥头皮市场深度" - 页 2

 
Konstantin Seredkin:

您能告诉我如何在您的实现中找到玻璃中最大体积的 价格吗? 我找到了体积本身,一切都很清楚,但如何找到这个最大 密度 价格呢?

我对软件实现感兴趣?价格剥头皮器基于CMarketBook 类。它允许您获得包括最大成交量价格在内的常用属性。
 
Vasiliy Sokolov:
对软件实施感兴趣?价格剥头皮器基于CMarketBook 类。它允许您获取常用属性,包括最大成交量的价格。

啊哈,在这个类中找到了最大成交量本身,我感兴趣的是如何对其进行补充,使其也能根据找到的最大成交量确定价格。

这个话题非常有趣,例如,你可以制作一个指标,其中有一个变量 Volume = 1000,只要最接近价格的成交量 >=1000 出现在图表的玻璃上,这个价格就会出现一个条形图。您可以做出很多有趣的东西,我想知道是否有可能扩展功能类,我看到有一些数据您的堆栈没有使用,双向开仓订单的 OI 和最大值等也是必要的,但价格不是....。我从来没有使用过堆栈数据,但在这里我遇到了您的主题,并对此产生了兴趣,此外,您将一切都处理得如此得心应手。

 

晚上好,瓦西里

我对这篇文章很感兴趣,所以决定注册并留下我的评论(#1)。

我正在尝试算法交易,但感觉自己还是个初学者。

我在测试模式下运行了所附代码,以熟悉其工作。但不知什么原因,赌注没有完整显示,即右边的框架和图例打开了,但图表和按钮不见了。测试仪正常工作,日志中也没有显示错误。我做错了什么?

非常感谢、

亚历山大

 
AMK_robot:

晚上好,瓦西里

我对这篇文章很感兴趣,所以决定注册并留下我的评论(#1)。

我正在尝试算法交易,但感觉自己还是个初学者。

我在测试模式下运行了所附代码,以熟悉其工作。但由于某些原因,赌注没有完整显示,即右边的框架和图例打开了,但图表和按钮不见了。测试仪正常工作,日志中也没有显示错误。 我做错了什么? 请帮我连接。

非常感谢、

亚历山大

下午好。感谢您对这篇文章和我们社区的关注。您问题的答案就隐藏在其中。策略测试器 并不代表投注的历史,因此您只能在实时模式下的图表上运行投注。此外,在测试模式下,图形组件的显示功能有限,因此您无论如何都无法在测试器中显示价格堆栈。只能在图表中使用价格玻璃。此外,并非所有市场都有价格玻璃,因此您应连接莫斯科交易所或使用 MetaQuotes 模拟账户。

 

感谢 Vasily 所做的工作,一个月前我在我的机器人中实现了你的类,当然,也不是没有全面改进,因为缺少了一些方法,但一切都解决了,并能正常工作。

我有一个问题

您的例子

//+------------------------------------------------------------------+
//|MarketBook.mq5
//| 版权所有 2017, MetaQuotes Software Corp.
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
#include <MarketBook.mqh>

CMarketBook MarketBook.mqh
double fake_buffer[];
//+------------------------------------------------------------------+
//| 自定义指示器初始化函数
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBook.SetMarketBookSymbol(Symbol());
//--- 指示器缓冲区映射
   SetIndexBuffer(0,fake_buffer,INDICATOR_CALCULATIONS);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| MarketBook 更改事件|
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
   if(symbol != MarketBook.GetMarketBookSymbol())
      return;
   MarketBook.Refresh();
   ChartRedraw();
}

去初始化杯子的正确方法是什么?

哪种变体更正确?

void OnDeinit(const int reason)
 {

//|----------- 
   if(!MarketBookRelease((string)m_book_market.SetMarketBookSymbol(Symbol())))
   {
   if(Debug){Print("Error MarketBookRelease ",m_symbol.Name());}}
//|-----------


//|----------- 
   if(!m_book_market.SetMarketBookSymbol(Symbol()))  
   {
   if(Debug){Print("Error MarketBookRelease ",m_symbol.Name());}}
//|-----------

 }
 
Konstantin Seredkin:

感谢瓦西里的辛勤工作,一个月前我在我的机器人中实现了你的类,当然,由于缺少了一些方法,还需要全面改进,但一切都很顺利,也很有效。

我有一个问题

您的示例

消除翻滚器初始化的正确方法是什么?

哪种方法更正确?

我不明白,这是什么?

CMarketBook MarketBook.mqh
 
Konstantin:

我不明白,这是什么?

某行代码...
 
Konstantin Seredkin:
有一行代码...

你给我看了这段代码,所以我想知道它是什么,因为语法不清楚。

//+------------------------------------------------------------------+
//|MarketBook.mq5
//| 版权所有 2017, MetaQuotes Software Corp.
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots 0
#include <MarketBook.mqh>

CMarketBook MarketBook.mqh
double fake_buffer[];
//+------------------------------------------------------------------+
//| 自定义指示器初始化函数
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBook.SetMarketBookSymbol(Symbol());
//--- 指示器缓冲区映射
   SetIndexBuffer(0,fake_buffer,INDICATOR_CALCULATIONS);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| MarketBook 更改事件|
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
   if(symbol != MarketBook.GetMarketBookSymbol())
      return;
   MarketBook.Refresh();
   ChartRedraw();
}
 
Konstantin:

你给我看了这段代码,所以我问你这是什么,因为语法不清楚。

我在问题中写的字难道没有任何意义吗?

您的示例

这段代码是由该主题的作者在类https://www.mql5.com/zh/articles/3336 的描述中发布的。

因此,这个问题至少不应该向我提出...

Пишем скальперский стакан цен на основе графической библиотеки CGraphic
Пишем скальперский стакан цен на основе графической библиотеки CGraphic
  • 2017.06.23
  • Vasiliy Sokolov
  • www.mql5.com
Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
 

一定是复制粘贴。就是这样。作者很可能是在浏览器中编写了部分代码。

而不是

CMarketBook MarketBook.mqh

写入

CMarketBook MarketBook.mqh