初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1308 1...130113021303130413051306130713081309131013111312131313141315...1503 新评论 Kira27 2021.05.21 20:07 #13071 你好!!你能告诉我如何将枚举数据类型传递给类方法 吗? 比方说,我想传递一个时间框架,我在顾问的头部创建一个枚举 enum frame1 // перечисление именованных констант { PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1, PERIOD_W1, PERIOD_MN1 }; 然后我在一个类中声明一个方法。 public: Signal_Line(); ~Signal_Line(); double Time_Frame(double &Trend_Line_Down[][], int Frame, int Down); int Short_Proboy(double &Trend_Line_Down[][], string Name_Static, int Down, ENUM_TIMEFRAMES); 而当从EA中调用一个方法时,如果我需要从枚举中传递第三个值--框架--PERIOD_M30,我在下面的代码问题中应该怎么写? Trend_Line_Down[Timer_Down][1]=Signal.Short_Proboy(Trend_Line_Down, Name_Static, ???); // Флаг пробоя трендовой нулевой свечой Kira27 2021.05.21 20:33 #13072 如果你想一想,这有点诱人,可以写道 Trend_Line_Down[Timer_Down][1]=Signal.Short_Proboy(Trend_Line_Down, Name_Static, frame1 3); // Флаг пробоя трендовой нулевой свечой但它在编译时写了一个错误。可能会有什么收获? Vladimir Karputov 2021.05.22 04:33 #13073 Kira27: 你好!!你能告诉我如何在类方法 中传递枚举数据类型吗? 比方说,我想传递一个时间框架。我在枚举的EA标题中创建 ,然后我在类中声明方法。而当从EA中调用一个方法时,如果我需要从枚举中传递第三个值--框架--PERIOD_M30,我在下面的代码问题中应该怎么写? 问题1:既然有标准的ENUM_TIMEFRAMES,为什么还要创建自己的枚举? Maksim Emeliashin 2021.05.22 06:41 #13074 一个关于蜱虫的费用问题。 这个值是针对哪种合约大小(手数)计算的? 例如,对于欧元兑美元货币对,该脚本给出了相同的数值,但对于金属来说,差别是10倍。如何,为什么,以及我怎么知道? int OnStart() { //--- // цена тика для символа double symb_tick_price = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); // рассчитаная цена символа (для Forex, CFD - формула из справки) // Profit = (close_price - open_price) * Contract_Size * Lots // т.е. берем размер тика и считаем по этой формуле // -> TickPrice = TickSize * Contract_Size * Lots double symb_lot_size = 1.0; double symb_tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); double symb_contract_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE); double calc_symb_tick_price = symb_tick_size * symb_contract_size * symb_lot_size; PrintFormat("Цена тика SYMBOL_TRADE_TICK_VALUE=%f, Цена тика ВЫЧИСЛЕННАЯ=%f", symb_tick_price, calc_symb_tick_price); //--- return(INIT_SUCCEEDED); } NG 0 13:31:42.450 testTickPrice (EURUSD,H1) Цена тика SYMBOL_TRADE_TICK_VALUE=1.000000, Цена тика ВЫЧИСЛЕННАЯ=1.000000 OE 0 13:31:56.924 testTickPrice (XAGUSD,H1) Цена тика SYMBOL_TRADE_TICK_VALUE=0.500000, Цена тика ВЫЧИСЛЕННАЯ=5.000000 CE 0 13:40:00.848 testTickPrice (XAUUSD,H1) Цена тика SYMBOL_TRADE_TICK_VALUE=0.100000, Цена тика ВЫЧИСЛЕННАЯ=1.000000 Alexey Viktorov 2021.05.22 06:59 #13075 Kira27: 如果你想一想,这似乎是在要求书写 但它在编译时写了一个错误。能有什么收获呢? 如果你做这个枚举 enum frame1 // перечисление именованных констант { m1 = PERIOD_M1, m5 = PERIOD_M5, m15 = PERIOD_M15, m30 = PERIOD_M30, h1 = PERIOD_H1, h4 = PERIOD_H4, d1 = PERIOD_D1, W1 = PERIOD_W1, MN1 = PERIOD_MN1 }; 那么你可以试着这样写 Trend_Line_Down[Timer_Down][1]=Signal.Short_Proboy(Trend_Line_Down, Name_Static, (ENUM_TIMEFRAMES)m30); // Флаг пробоя трендовой нулевой свечой Igor Makanu 2021.05.22 07:22 #13076 Alexey Viktorov:如果你做这个枚举你可以试着这样写 ...然后在一个月内,你会试图理解它的含义))))。 如果你一定要写这样的代码,至少要用int来写吧 enum frame1 // перечисление именованных констант { m1 = (int)PERIOD_M1, m5 = (int)PERIOD_M5, m15 = (int)PERIOD_M15, m30 = (int)PERIOD_M30, h1 = (int)PERIOD_H1, h4 = (int)PERIOD_H4, d1 = (int)PERIOD_D1, W1 = (int)PERIOD_W1, MN1 = (int)PERIOD_MN1 }; 所以你至少可以理解作者在输出中得到了什么 ...虽然这是一种变态的行为 )))) Alexey Viktorov 2021.05.22 07:34 #13077 Igor Makanu:...然后一个月后,你会试图理解它的含义 ))))如果你一定要写这样的代码,至少要用int来写吧所以你至少可以理解作者在输出中得到了什么...虽然这是一种变态的行为 )))) 为什么要把它转换为int?因为在mql5中,从H1开始,枚举值就 不等于分钟数了。而恰恰相反,我认为这将造成很多混乱。 Igor Makanu 2021.05.22 09:19 #13078 Alexey Viktorov:为什么要转换为int?因为在mql5中,从H1开始,枚举值就 不等于分钟数了。而在我看来,恰恰相反,这将造成很多混乱。 因为枚举是一个命名为4字节的常数 = int 而不是分钟数 Kira27 2021.05.22 09:55 #13079 Vladimir Karputov:问题1:如果有标准的ENUM_TIMEFRAMES,为什么还要创建自己的枚举?答案))绘制一个图形对象,在对象的名称中有一个子串M30,说这个对象是在哪里创建的,当把对象数据写入数组double时,利用名称的划分子串,我把数组的0-索引与一个破碎的名称进行比较,通过强行枚举与数组//____________________string Массив таймфреймов______________________________ NameFrame_Trend_Line[1]="M1"; NameFrame_Trend_Line[2]="M5"; NameFrame_Trend_Line[3]="M15"; NameFrame_Trend_Line[4]="M30"; NameFrame_Trend_Line[5]="H1"; NameFrame_Trend_Line[6]="H4"; NameFrame_Trend_Line[7]="Daily"; NameFrame_Trend_Line[8]="Weekly"; NameFrame_Trend_Line[9]="Monthly"; 寻找数组中 相等字符串 的索引NameFrame_Trend_Line将索引与int数组相关联//___________________int Массив таймфреймов__________________________________________ TimeFrame[1]=1; TimeFrame[2]=5; TimeFrame[3]=15; TimeFrame[4]=30; TimeFrame[5]=60; TimeFrame[6]=240; TimeFrame[7]=1440; TimeFrame[8]=10080; TimeFrame[9]=43200; 然后,为了跟踪分解、固定和测试线,我使用了一个方法,在这个方法中,我应该从写好的双数组中传递时间框架参数;因为线是在不同的时间框架上创建的,分解计算、固定、测试应该根据创建对象的时间框架来计算,而不管此刻图表上是什么时期。 我计划将数组的值关联到TimeFrame写入图形对象的特征数组,通过索引从数组中拉出 enum frame1 // перечисление именованных констант { PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1, PERIOD_W1, PERIOD_MN1 }; 并转入分解、锚定和试验计算方法。 Alexey Viktorov 2021.05.22 09:57 #13080 Igor Makanu:因为枚举是一个命名为4字节的常数 = int而不是分钟数。 那么?他们在ENUM_TIMEFRAMES枚举中有什么不同吗?还是担心内存 不够用?我不知道如何像这样乱来...... ps; 啊,我打字好慢啊...))))当我在打单行字的时候,Kira27打了很多.........,还有一些我怀疑这将在mql4中使用。 1...130113021303130413051306130713081309131013111312131313141315...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
然后我在一个类中声明一个方法。
而当从EA中调用一个方法时,如果我需要从枚举中传递第三个值--框架--PERIOD_M30,我在下面的代码问题中应该怎么写?
但它在编译时写了一个错误。可能会有什么收获?
你好!!你能告诉我如何在类方法 中传递枚举数据类型吗? 比方说,我想传递一个时间框架。我在枚举的EA标题中创建 ,然后我在类中声明方法。而当从EA中调用一个方法时,如果我需要从枚举中传递第三个值--框架--PERIOD_M30,我在下面的代码问题中应该怎么写?
问题1:既然有标准的ENUM_TIMEFRAMES,为什么还要创建自己的枚举?
一个关于蜱虫的费用问题。
这个值是针对哪种合约大小(手数)计算的?
例如,对于欧元兑美元货币对,该脚本给出了相同的数值,但对于金属来说,差别是10倍。如何,为什么,以及我怎么知道?
如果你想一想,这似乎是在要求书写
但它在编译时写了一个错误。能有什么收获呢?
如果你做这个枚举
那么你可以试着这样写
如果你做这个枚举
你可以试着这样写
...然后在一个月内,你会试图理解它的含义))))。
如果你一定要写这样的代码,至少要用int来写吧
所以你至少可以理解作者在输出中得到了什么
...虽然这是一种变态的行为 ))))
...然后一个月后,你会试图理解它的含义 ))))
如果你一定要写这样的代码,至少要用int来写吧
所以你至少可以理解作者在输出中得到了什么
...虽然这是一种变态的行为 ))))
为什么要把它转换为int?因为在mql5中,从H1开始,枚举值就 不等于分钟数了。而恰恰相反,我认为这将造成很多混乱。
为什么要转换为int?因为在mql5中,从H1开始,枚举值就 不等于分钟数了。而在我看来,恰恰相反,这将造成很多混乱。
因为枚举是一个命名为4字节的常数 = int
而不是分钟数
问题1:如果有标准的ENUM_TIMEFRAMES,为什么还要创建自己的枚举?
答案))绘制一个图形对象,在对象的名称中有一个子串M30,说这个对象是在哪里创建的,当把对象数据写入数组double时,利用名称的划分子串,我把数组的0-索引与一个破碎的名称进行比较,通过强行枚举与数组
寻找数组中 相等字符串 的索引
将索引与int数组相关联
然后,为了跟踪分解、固定和测试线,我使用了一个方法,在这个方法中,我应该从写好的双数组中传递时间框架参数;因为线是在不同的时间框架上创建的,分解计算、固定、测试应该根据创建对象的时间框架来计算,而不管此刻图表上是什么时期。 我计划将数组的值关联到
写入图形对象的特征数组,通过索引从数组中拉出
并转入分解、锚定和试验计算方法。因为枚举是一个命名为4字节的常数 = int
而不是分钟数。
那么?他们在ENUM_TIMEFRAMES枚举中有什么不同吗?还是担心内存 不够用?我不知道如何像这样乱来......
ps; 啊,我打字好慢啊...))))当我在打单行字的时候,Kira27打了很多.........,还有一些我怀疑这将在mql4中使用。