错误、漏洞、问题 - 页 436 1...429430431432433434435436437438439440441442443...3184 新评论 [删除] 2011.06.27 21:50 #4351 Interesting:1.这是为什么呢?有害的症状需要得到治疗,而且要果断地治疗。2.变量、数组和其他东西的命名不应一致,也不应使用语言关键词(但数组 "Symbol "非常醒目,在代码中你无法分辨它是一个数组还是其他东西)。1.那么,首先你需要真正确定症状学是属于积极还是消极表现。根据我的经验,我曾经遇到过这样的情况:我试图在一个不应该这样做的函数中改变一个全局变量的值(该死的复制粘贴)。我花了几天时间才发现这个错误。从那时起,我就开始在原则上不能没有全局变量的情况下使用全局变量。2.我同意。但如果它们是在一个函数内使用,我就不会感到困扰。但是,具有这样名字的全局变量确实是未来混乱的根源。 Документация по MQL5: Глобальные переменные терминала / GlobalVariableGet www.mql5.com Глобальные переменные терминала / GlobalVariableGet - Документация по MQL5 [删除] 2011.06.27 21:51 #4352 不过我还是要重复我的问题。有没有可能在OnTick里面确定OnInit的触发? 例如,我可以在OnTick里面声明一个静态变量,存储EA被初始化的次数(如果MQL5有这样的属性或类似的属性)? Renat Fatkhullin 2011.06.27 21:51 #4353 voix_kas:我一定是个偏执狂。我不喜欢公共(全局)变量。我认为这是一个穆维顿。全局变量 至少可以从远处看到。但在静力学中把严重的累积变量隐藏在函数里面,是一种为自己小心翼翼地摊开耙子的方式。这是我第一次看到以这样的方式将一个累积的静态数组隐藏在一个函数里面。这是一个火热的耙子。 使用类--它们会使全局水平干净,隐藏所有的内脏,摆脱拐杖。 Документация по MQL5: Основы языка / Переменные / Глобальные переменные www.mql5.com Основы языка / Переменные / Глобальные переменные - Документация по MQL5 [删除] 2011.06.27 21:59 #4354 voix_kas:不过我还是要重复我的问题。是否可以在OnTick里面确定OnInit的触发? 例如,我们能否在OnTick里面声明一个静态变量,存储EA的初始化数量(如果在MQL5中有这样或类似的变量)?不仅可以计算OnInit触发器的数量,还可以确定初始化发生的原因(实现是另一个问题)。例如,你熟悉_UninitReason吗? [删除] 2011.06.27 22:07 #4355 你可以在OnInit中读取它,但我需要在另一个事件中读取这个数据(不使用全局变量)。无论你怎么看,这都是一个实施的问题。这与OnDenit的情况相同。 Документация по MQL5: Основы языка / Переменные / Глобальные переменные www.mql5.com Основы языка / Переменные / Глобальные переменные - Документация по MQL5 [删除] 2011.06.27 22:18 #4356 我从来没有写过的课。如果有人能帮助我,我将不胜感激。需要写一个WorkSymbols类。方法。string GetSymbol[];bool UpdateSymbols(inWorkSymbols)。bool UpdateSymbolsStatus()。int GetSymbolCount()。 如果这个要求是厚颜无耻的,请原谅......我也会自己想办法解决的。 Vladimir Gomonov 2011.06.27 23:10 #4357 Renat:是的,把符号变化和时间框架条件结合起来似乎是个错误。我也赞成把它们分成两个条件。这张票已经放在服务台了。 谢谢你! [删除] 2011.06.28 19:24 #4358 算是熟能生巧吧。欢迎提出批评。input string inWorkSymbols = "USDCHF; GBPUSD; EURUSD; USDJPY; USDCAD; AUDUSD; EURGBP; EURAUD; EURCHF; EURJPY; GBPJPY; GBPCHF"; // Рабочие инструменты class CSymbolList { private: string Symbols[]; public: void CSymbolList() { SetSymbols(""); } void ~CSymbolList() { ArrayFree(Symbols); } int GetSymbolCount() { return ArraySize(Symbols); } void SetSymbols(string); string GetSymbolName(int); }; void CSymbolList::SetSymbols(string Source) { ArrayFree(Symbols); for (int count = 1, i = 0; i < SymbolsTotal(false); i++) if (StringFind(Source, SymbolName(i, false)) != -1) { if (ArrayResize(Symbols, count) != count) { ArrayFree(Symbols); return; } Symbols[count-1] = SymbolName(i, false); count++; } } string CSymbolList::GetSymbolName(int Item) { if (Item < 0 || !ArraySize(Symbols) || Item >= ArraySize(Symbols)) return ""; return Symbols[Item]; } void OnStart() { CSymbolList slMain; slMain.SetSymbols(inWorkSymbols); for (int i = 0; i < slMain.GetSymbolCount(); i++) Print(slMain.GetSymbolName(i)); } [删除] 2011.06.28 19:29 #4359 我唯一不喜欢的是对包含工作数据的数组进行 "实时 "调整大小。 问一下开发人员,在以下条件下,是否能保证被修改 的 动态数组 中先前输入的用户数据会被保留下来?if (ArrayResize(Symbols, count) == count) Документация по MQL5: Основы языка / Типы данных / Объект динамического массива www.mql5.com Основы языка / Типы данных / Объект динамического массива - Документация по MQL5 Vladimir Gomonov 2011.06.28 19:32 #4360 voix_kas:我唯一不喜欢的是对包含工作数据的数组进行 "实时 "调整大小。 问一下开发人员,在以下条件下,是否能保证被修改 的 动态数组 中先前输入的用户数据会被保留下来? 我敢打赌,这是有保证的。至少我一直指望着它,而且问题从未出现过。 1...429430431432433434435436437438439440441442443...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1.这是为什么呢?有害的症状需要得到治疗,而且要果断地治疗。
2.变量、数组和其他东西的命名不应一致,也不应使用语言关键词(但数组 "Symbol "非常醒目,在代码中你无法分辨它是一个数组还是其他东西)。
1.那么,首先你需要真正确定症状学是属于积极还是消极表现。根据我的经验,我曾经遇到过这样的情况:我试图在一个不应该这样做的函数中改变一个全局变量的值(该死的复制粘贴)。我花了几天时间才发现这个错误。从那时起,我就开始在原则上不能没有全局变量的情况下使用全局变量。
2.我同意。但如果它们是在一个函数内使用,我就不会感到困扰。但是,具有这样名字的全局变量确实是未来混乱的根源。
不过我还是要重复我的问题。
有没有可能在OnTick里面确定OnInit的触发?
例如,我可以在OnTick里面声明一个静态变量,存储EA被初始化的次数(如果MQL5有这样的属性或类似的属性)?
我一定是个偏执狂。我不喜欢公共(全局)变量。我认为这是一个穆维顿。
全局变量 至少可以从远处看到。但在静力学中把严重的累积变量隐藏在函数里面,是一种为自己小心翼翼地摊开耙子的方式。这是我第一次看到以这样的方式将一个累积的静态数组隐藏在一个函数里面。这是一个火热的耙子。
使用类--它们会使全局水平干净,隐藏所有的内脏,摆脱拐杖。
不过我还是要重复我的问题。
是否可以在OnTick里面确定OnInit的触发?
例如,我们能否在OnTick里面声明一个静态变量,存储EA的初始化数量(如果在MQL5中有这样或类似的变量)?
不仅可以计算OnInit触发器的数量,还可以确定初始化发生的原因(实现是另一个问题)。
例如,你熟悉_UninitReason吗?
需要写一个WorkSymbols类。
方法。
string GetSymbol[];
bool UpdateSymbols(inWorkSymbols)。
bool UpdateSymbolsStatus()。
int GetSymbolCount()。
如果这个要求是厚颜无耻的,请原谅......我也会自己想办法解决的。
是的,把符号变化和时间框架条件结合起来似乎是个错误。
我也赞成把它们分成两个条件。这张票已经放在服务台了。
算是熟能生巧吧。欢迎提出批评。
我唯一不喜欢的是对包含工作数据的数组进行 "实时 "调整大小。
问一下开发人员,在以下条件下,是否能保证被修改 的 动态数组 中先前输入的用户数据会被保留下来?
我唯一不喜欢的是对包含工作数据的数组进行 "实时 "调整大小。
问一下开发人员,在以下条件下,是否能保证被修改 的 动态数组 中先前输入的用户数据会被保留下来?