继续...
我想到了转换这个示例的行数:
if(m_method_fast!=MODE_SMA&& m_method_fast!=MODE_EMA&& m_method_fast!=MODE_SMMA&& m_method_fast!=MODE_LWMA)
if(m_method_slow!=MODE_SMA && m_method_slow!=MODE_EMA && m_method_slow!=MODE_SMMA && m_method_slow!=MODE_LWMA)
进入算法:
1) 两个数组:
第一个数组包含 m_method_fast 和 m_method_slow
第二个数组 包含ENUM_MA_METHOD 枚举 值。
2) 在一个循环中,取第一个数组的值,检查是否在第二个数组中找到该值。
您能告诉我如何实现这一点吗?
我知道有必要连接 CArray。但是什么类型呢?
请问谁能写出一部分代码,因为初级的基础知识和语法我还不会。
谢谢!

- www.mql5.com
继续...
我想到了转换这个示例的行数:
if(m_method_fast!=MODE_SMA&& m_method_fast!=MODE_EMA&& m_method_fast!=MODE_SMMA&& m_method_fast!=MODE_LWMA)
if(m_method_slow!=MODE_SMA && m_method_slow!=MODE_EMA && m_method_slow!=MODE_SMMA && m_method_slow!=MODE_LWMA)
进入算法:
1) 两个数组:
第一个数组包含 m_method_fast 和 m_method_slow
第二个数组 包含ENUM_MA_METHOD 枚举 值。
2) 在一个循环中,取第一个数组的值,检查是否在第二个数组中找到该值。
您能告诉我如何实现这一点吗?
我知道有必要连接 CArray。但是什么类型呢?
请问谁能写出一部分代码,因为初级的基础知识和语法我还不会。
谢谢!
像这样
func(int& array1[],int& array2[]) { int total1=ArraySize(array1); int total2=ArraySize(array2); //--- for(int i=0;i<total1;i++) { for(int j=0;j<total2;j++) { if(array1[i]==array2[j]) { // 找到了 } } } }
是的,我在《C++ 入门》中已经讲到这一点了 :-)
除了没有 ENUM_MA_METHOD 这种数据类型之外
我怎样才能知道这个枚举包含什么类型的数据?是否可以循环ENUM_MA_METHOD枚举 本身?
我现在看到两种方法:
//描述两个数组的第一种方法 ENUM_MA_METHOD l_array_enum_ma_method[3]; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; print("array size %d", ArraySize(l_array_enum_ma_method)); print("ENUM_MA_METHOD size %d", ArraySize(ENUM_MA_METHOD)); ENUM_MA_METHOD l_array_select_method[1]; l_array_select_method[0]=m_MethodFast; l_array_select_method[1]=m_MethodSlow; //根据计划进一步 //第二种方法,连接图书馆 //#include <Arrays\ArrayInt.mqh> CArrayInt *l_array_enum_ma_method=new CArrayInt; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; l_array_enum_ma_method.Sort(); //--- 搜索元素 if(l_array_enum_ma_method.Search(m_MethodFast)!=-1) printf("Element found"); else printf("Element not found"); //--- 删除数组 delete l_array_enum_ma_method;
第二种方法需要连接特定类型的库,而 ENUM_MA_METHOD 是什么类型?
嗯......奇怪,我点击了回复,结果是一个新的帖子....
是的,我在《C++ 入门》中已经讲到这一点了 :-)
除了没有 ENUM_MA_METHOD 这种数据类型之外
我怎样才能知道这个枚举包含什么类型的数据?是否可以循环ENUM_MA_METHOD枚举 本身?
我现在看到两种方法:
第二种方法需要连接特定类型的库,而 ENUM_MA_METHOD 是什么类型?
嗯......奇怪,我点击了回复,结果是一个新的帖子....
第一种方法
ENUM_MA_METHOD l_array_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; //--- 再往下
第二种方法
#include <Arrays\ArrayInt.mqh> CArrayInt l_array_enum_ma_method; //--- l_array_enum_ma_method.Add(MODE_SMA); l_array_enum_ma_method.Add(MODE_EMA); l_array_enum_ma_method.Add(MODE_SMMA); l_array_enum_ma_method.Add(MODE_LWMA); //--- 再往下
我不明白为什么需要这么多步骤?
哎呀......非常感谢,这就是我想做的......关。
在第一种情况下,我已经看到了这种记录方式,但我还没有意识到我需要什么、
至于第二种情况,我对 ArrayInt 感到困惑。我以为既然是 Int,就意味着只存储数值,但 、
编译器似乎将 MODE_SMA 转换成了数字,而在取回数值时,有必要将其隐式转换(使用括号)为类型(ENUM_MA_METHOD),即类似下面的内容。
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
附注:在第三节 3.参数设置方法 中,我们应该删除过早声明的行,我认为
:
CiCustom m_fast_ma; // 指标作为一个对象 CiCustom m_slow_ma; // 指标作为一个对象
附注:在第三节 3.参数设置方法 中,我认为应该删除过早声明的行:
我正兴奋不已,但却无法解决这个问题(通讯--我读到过内存地址转移的信息,但也没有用):
编译器返回错误信息 "m_MethodFast" - 需要常量表达式,"m_MethodSlow" - 需要常量表达式。
当然,这些都是傻瓜才会问的问题。也许我应该在另一个主题中提出这样的问题,这样就不会堵塞这篇文章了?
//描述两个数组的第一种方法 //int *Finger_m_MethodFast; //int *Finger_m_MethodSlow; //Finger_m_MethodFast=&m_MethodFast; //Finger_m_MethodFast=&m_MethodSlow; // int l_array1_select_method[]={Finger_m_MethodFast,Finger_m_MethodFast}; ENUM_MA_METHOD l_array1_select_method[]={m_MethodFast,m_MethodSlow}; ENUM_MA_METHOD l_array2_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; int total_array1=ArraySize(l_array1_select_method); int total_array2=ArraySize(l_array2_enum_ma_method); bool NoErrorsFlag=false; for(int i_array1=0;i_array1<total_array1;i_array1++) { for(int i_array2=0;i_array2<total_array2;i_array2++) { if(l_array1_select_method[i_array1]=l_array2_enum_ma_method[i_array2]) { NoErrorsFlag=true; } } if(!NoErrorsFlag) { PrintFormat("平滑类型 %s 移动平均无效!",EnumToString(l_array1_select_method[i_array1])); } } if(!NoErrorsFlag) { return(false); }
新文章 6 步创建您自己的交易机器人!已发布:
如果您不清楚交易类如何构造,而且一看到面向对象编程之类的词就害怕,那么,本文正适合您。实际上,那些编写您自己的交易信号模块的细节,您无需知道。只需遵循几条简单法则即可。MQL5 向导会完成所有其余工作,而您则会得到一个即用型的交易机器人!
作者:MetaQuotes Software Corp.