谢谢。信息量很大。
我试图在本文中理解这段代码的含义,为什么要在 CINDICATOBUFFER 附近加上 *,然后使用 at。
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
请提供详细解释
谢谢
rodlivar:<br/ translate="no">
* 表示指针。详细解释请参阅本文在 MQL5 中使用对象指针
我试图在这篇文章中理解这段代码的意思,为什么我们要在 CINDICATOBUFFER 附近加上 *,然后使用 at。
((CIndicatorBuffer*)At(0)).Name("ZIGZAG");
((CIndicatorBuffer*)At(1)).Name("HIGH");
((CIndicatorBuffer*)At(2)).Name("LOW");
请提供详细解释
谢谢
Tango_X:
字符串
m_handle=iCustom(symbol,period,zigzag,depth,deviation_create,backstep);
我找不到指标的路径。
我试图调用的指标位于标准文件夹中,在此指定路径的正确方法是什么?
标准 Zigzag 位于 Examples 文件夹中 - 您需要在路径中添加文件夹名称
我输入 NULL - 有效,我输入 "EURUSD" - 无效!!!!
bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- 检查历史记录 if(!SetSymbolPeriod(symbol,period)) return(false); //--- 创建 //m_handle=iCustom(symbol,period, "Examples\\ZigZag",depth,deviation_create,backstep); //m_handle=iCustom("EURUSD",period, "Examples\\ZigZag",depth,deviation_create,backstep); -不起作用 m_handle=iCustom(NULL,period,"Examples\\ZigZag",depth,deviation_create,backstep); - работает //--- 检查结果 if(m_handle==INVALID_HANDLE) return(false); //--- 指标创建成功 if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- 初始化错误 IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); } IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
//+------------------------------------------------------------------+ //|| 创建 "之 "字形指示器| //+------------------------------------------------------------------+ bool CiZigZag::Create(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_create,const int backstep) { //--- 检查历史记录 if(!SetSymbolPeriod(symbol,period)) return(false); //--- 创建 m_handle=iCustom(symbol,period,"zigzag",depth,deviation_create,backstep); //--- 检查结果 if(m_handle==INVALID_HANDLE) return(false); //--- 指标创建成功 if(!Initialize(symbol,period,depth,deviation_create,backstep)) { //--- 初始化错误 IndicatorRelease(m_handle); m_handle=INVALID_HANDLE; return(false); } //--- ok return(true); }
bool CiZigZag::Initialize(const string symbol,const ENUM_TIMEFRAMES period, const int depth,const int deviation_init,const int backstep) { if(CreateBuffers(symbol,period,3)) { //--- 渲染状态行 m_name ="ZigZag"; m_status="("+symbol+","+PeriodDescription()+","+ IntegerToString(depth)+","+IntegerToString(deviation_init)+","+ IntegerToString(backstep)+") H="+IntegerToString(m_handle); //--- 保存设置 m_depth=depth; m_deviation=deviation_init; m_backstep=backstep; //--- 创建缓冲区 ((CIndicatorBuffer*)At(0)).Name("ZIGZAG"); ((CIndicatorBuffer*)At(1)).Name("HIGH"); ((CIndicatorBuffer*)At(2)).Name("LOW"); //--- ok return(true); } //--- 错误 return(false); }
请帮助我理解这里如何设置 指标缓冲数组的索引方向,即与 ArraySetAsSeries 相同。默认方向是从现在到过去,但我需要从过去到现在。从昨天开始,我就一直在纠结这个问题!求助!
新文章 扩展 MQL5 标准库和重用代码已发布:
作为一名开发人员,MQL5 标准库让您的工作变得更加容易。然而,它无法实现世界上所有开发人员的全部需求,所以,如果您觉得您需要更多的自定义程序,您可以对标准库进行进一步的扩展。本文指导您完成将 MetaQuotes 的峰谷技术指标集成至标准库。我们从 MetaQuotes 的设计理念获得启发以实现我们的目标。
简而言之,MQL5 API 旨在让您从代码重用、可靠性、灵活性和易于维护中受益。这是从理论上而言,但除了这一切,如果您计划在 MQL5 中更进一步,开发出更复杂的工具,例如多货币“EA 交易”,首先您应该能够以标准库的方式来编写代码,以便您的应用程序保证成功。
作者:Jordi Bassaganas