下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

程序库

aChartsAndMW5Class - MetaTrader 5程序库

| Chinese English Русский Español Deutsch 日本語 Português

显示:
301
等级:
投票: 14
已发布:
2017.03.23 08:48
已更新:
2017.03.23 08:49
\MQL5\Include\\MQL5\Experts\

该类可轻松地从您正在运行的 MQL5 程序里判断市场观察窗口中的任何变化 (品名排序变更, 添加, 删除一个或一组品名), 打开和关闭图表, 以及在当前图表上一键交易选项的可用性。该类将自定义事件发送到控制程序。

程序中提供了以下公有方法:

周期
 描述返回值
使用图表的方法
  
bool IsChartOneClick(void)
返回图表上一键交易面板的可用性标志
bool true/false
uchar GetChartNumbers(void)
返回终端中打开的图表数量
uchar The number of open charts
long GetOpenedChartID(void)
返回新打开的图表 ID
long ChartID()
string GetOpenedSymbol(void)
返回新打开的图表品名
string ChartSymbol()
ENUM_TIMEFRAMES GetOpenedTimeframe(void)
返回新打开的图表时间帧ENUM_TIMEFRAMES ChartPeriod()
long GetClosedChartID(void)
返回新关闭的图表 IDlong ChartID()
string GetClosedSymbol(void)
返回新关闭的图表品名string ChartSymbol()
ENUM_TIMEFRAMES GetClosedTimeframe(void)
返回新关闭的图表时间帧ENUM_TIMEFRAMES ChartPeriod()
bool IsOpenedIsObject(void)
返回打开的图表是一个对象的符号
bool true/false
bool IsClosedIsObject(void)返回关闭的图表是一个对象的符号bool true/false
bool CheckOpenChart(string symbol_name);
检查品种图表是否打开
bool true/false
bool CheckOpenChart(string symbol_name,ENUM_TIMEFRAMES timeframe)
检查指定时间帧的品种图表是否打开
bool true/false
long OpenChart(string symbol_name,ENUM_TIMEFRAMES timeframe)
打开品种图表
long ChartID()
bool IsOpenedAllCharts(void)
返回市场观察中所有品种打开图表的存在标志
bool true/false
操纵市场观察的方法


bool PutSymbolToMarketWatch(string symbol_name)
向市场观察添加品种
bool true/false
bool IsExistSymbolInMW(string symbol_name, bool select=false)
返回市场观察服务器上存在品种的标志
bool true/false
int GetNumSymbolsInMW(void)
返回市场观察中的品种数量
int The number of symbols in the Market Watch
int GetNumAllSymbols(void)
返回可用品种的数量
int The number of symbols on the server
void ClearMarketWatch(void)从市场观察中删除所有可能的符号void
类发送给控制程序的自定义事件:
标识符
数值
 描述
CHARTEVENT_CHART_OPEN32新图表打开事件
CHARTEVENT_CHART_CLOSE33图表关闭事件
CHARTEVENT_MW_SYMBOL_ADD34向市场观察添加品种的事件
CHARTEVENT_MW_FEW_SYMBOL_ADD35向市场观察添加多个品种的事件
CHARTEVENT_MW_SYMBOL_DEL36从市场观察中删除品种的事件
CHARTEVENT_MW_FEW_SYMBOL_DEL37从市场观察删除多个品种的事件
CHARTEVENT_MW_CHANGE_SORT38在市场观察中改变品种排序的事件
CHARTEVENT_CHART_CHANGE_ONE_CLICK39一键交易面板的打开/关闭事件

标识符值与来自 Anatoli Kazharski图形库 的标识符相对应, 虽然您可以自行设置它们。

数值将与事件一起传递给控制程序:

标识符
 lparamdparam
 sparam
CHARTEVENT_CHART_OPENlong 打开图表的 ChartID
ENUM_TIMEFRAMES 打开图表的周期
string 打开图表的品种
CHARTEVENT_CHART_CLOSElong 关闭图表的 ChartIDENUM_TIMEFRAMES 关闭图表的周期string 关闭图表的品种
CHARTEVENT_MW_SYMBOL_ADDint 当前品种编号
int 前一个品种编号
string 添加的品种
CHARTEVENT_MW_FEW_SYMBOL_ADDint 当前品种编号int 前一个品种编号string 最后使用的品种
CHARTEVENT_MW_SYMBOL_DELint 当前品种编号int 前一个品种编号string 已删除品种
CHARTEVENT_MW_FEW_SYMBOL_DELint 当前品种编号int 前一个品种编号string 最后使用的品种
CHARTEVENT_MW_CHANGE_SORTint 当前品种编号int 当前品种编号string 最后使用的品种
CHARTEVENT_CHART_CHANGE_ONE_CLICKint 面板右边界的 X 坐标
int 面板右边界的 Y 坐标
string 面板状态的描述:
"CHART_IS_ONE_CLICK_ON" - 这是一个面板
"CHART_IS_ONE_CLICK_OFF" - 这不是一个面板

为了将该类包括在程序中, 必须将该文件包含在全局区域中并创建一个类实例:

#include <aChartsAndMWClass.mqh>
CChartsMW   mw;

之后, 在程序的 OnTimer() 函数里, 添加类计时器:

//+------------------------------------------------------------------+
//| 计时器函数                                                         |
//+------------------------------------------------------------------+
void OnTimer()
  {
//--- 添加类计时器
   mw.OnTimerEvent();
  }

OnChartEvent() 里添加类事件处理器:

//+------------------------------------------------------------------+
//| ChartEvent 函数                                                   |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- 添加类事件处理器
   mw.OnEvent(id,lparam,dparam,sparam);

  }

现在, 通过类返回的事件可在程序的 OnChartEvent() 里被接收并处理。

从类中接收事件的示例在附带的智能交易系统 exTestChartsMWClass.mq5 中提供。

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/17448

SilverTrend v3 SilverTrend v3

SilverTrend v3 - 交易基于柱线最高价, 最低价和收盘价的分析。

新马丁 新马丁

新马丁智能交易系统启动时在两个相对方向开单。OnTradeTransaction 处理。当止盈触发, 它在同方向上开仓 (一个仓位)。两条均线指标的交叉点是大手数开单的信号。

阿尔法趋势观察者价格行为 阿尔法趋势观察者价格行为

基于价格行动策略的信号量信号指标, 搜寻最强的日内趋势, 可生成有关趋势变化的警报, 并向移动设备发送电子邮件或推送通知。

Exp_TDI-2_ReOpen Exp_TDI-2_ReOpen

基于 TDI-2 指标线的 Exp_TDI-2_ReOpen 交易系统, 增加了趋势跟踪仓位。