初学者的问题 MQL5 MT5 MetaTrader 5 - 页 33 1...262728293031323334353637383940...1503 新评论 Dimka-novitsek 2012.09.07 16:36 #321 晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓'}'- 不是所有的控制路径都返回一个值 htghtgfhthf.mq5 61 10 它在告诉她我的逻辑有问题,不是所有的返回都在那里指定。是的,他们是!相反,如果我们把它们放在if的每个运算符之后,那将是无稽之谈,程序将立即产生错误的结果。它很短,而且直奔主题。如果你能,你怎么能让它接受呢?string OrderType() { string Si=""; long lo; bool Bull=false; Bull =PositionGetInteger(POSITION_TYPE,lo); if ( Bull ) { if ( lo==POSITION_TYPE_BUY) Si="OP_BUY"; if ( lo==POSITION_TYPE_SELL) Si="OP_SELL"; return (Si); } // ENUM_ORDER_TYPE ORType; Bull =OrderGetInteger(ORDER_TYPE,lo); if ( Bull ) { if ( lo==ORDER_TYPE_BUY_LIMIT) Si="OP_BUY_LIMIT"; if ( lo==ORDER_TYPE_SELL_LIMIT) Si="OP_SELL_LIMIT"; if ( lo==ORDER_TYPE_BUY_STOP) Si="OP_BUY_STOP"; if ( lo==ORDER_TYPE_SELL_STOP) Si="OP_SELL_STOP"; return (Si); } } Yedelkin 2012.09.07 16:55 #322 Dimka-novitsek:晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓'}'- 不是所有的控制路径都返回一个值 htghtgfhthf.mq5 61 10 它在告诉她我的逻辑有问题,不是所有的返回都在那里指定。是的,他们是!相反,如果我们把它们放在if的每个运算符之后,那将是无稽之谈,程序将立即产生错误的结果。它很短,而且直奔主题。如果你能,你怎么能让它接受? 一个建议:学习一些技术英语。让我看一下代码。至于主题:该函数必须返回一个字符串类型的值。在函数内部,我们使用if语句,它包含返回语句。 问题:如果if语句检测到Bull == false,函数应该返回什么? Dimka-novitsek 2012.09.07 18:07 #323 当然,Si=""!空值。 Dimka-novitsek 2012.09.07 18:08 #324 啊哈!!!。谢谢你!!!。谢谢!!!! Mykola Demko 2012.09.07 19:14 #325 Dimka-novitsek:晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓'}'- 不是所有的控制路径都返回一个值 htghtgfhthf.mq5 61 10 它在告诉我,我的逻辑有问题,不是所有的返回都在那里指定。是的,他们是!相反,如果我们把它们放在if的每个运算符之后,那将是无稽之谈,程序将立即产生错误的结果。它很短,而且直奔主题。如果它能,如何让它接受?不是所有的控制路径都会返回一个值--对值的返回没有完全的控制。这意味着在字符串 OrderType()中,由于类型与void不同,必须有一个返回值,但没有保证有返回值的输出。虽然你设置了多达2个运算符的返回,但它们都受到if条件的保护。如果两个条件都是假的,会发生什么? 然后机器可以随意跳出窗外。顺便说一下,在这个函数中,使用switch计数器更有意义,而不是一堆if,它们基本上与switch做同样的工作。ZZZY 另外,我们不应忘记,必须预先选择好位置,也要选择好顺序。而且有一个标准函数EnumToString用于将枚举转换为字符串,所以没有必要重新发明车轮。 Dimka-novitsek 2012.09.09 14:22 #326 谢谢你!!! Denis Timoshin 2012.09.10 13:12 #327 //+------------------------------------------------------------------+ //| Sample_Tick.mq5 | //| Copyright 2012, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" int Tick_All; MqlTick last_tick; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Tick_All=0; //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if(!SymbolInfoTick(_Symbol,last_tick)) { Print("Failed to get Symbol info!"); } Tick_All++; Print(Tick_All," ",last_tick.bid," ",last_tick.ask," ",last_tick.last," ",last_tick.volume); } //+------------------------------------------------------------------+ 我不明白为什么在价格没有变化的情况下调用OnTick?????。 2012.09.10 11:52:11 Sample_Tick (EURUSD,M5) 493 1.2787 1.2789 1.2788 300000 2012.09.10 11:52:10 Sample_Tick (EURUSD,M5) 492 1.2787 1.2789 1.2788 300000 2012.09.10 11:52:09 Sample_Tick (EURUSD,M5) 491 1.2787 1.2789 1.2788 300000 2012.09.10 11:52:07 Sample_Tick (EURUSD,M5) 490 1.2787 1.2789 1.2788 300000 Yedelkin 2012.09.10 13:33 #328 dentraf: 我不明白为什么虽然价格没有变化,但OnTick却被触发了?????。 2012.09.10 11:52:11 Sample_Tick (EURUSD,M5) 493 1.2787 1.2789 1.2788 300000 2012.09.10 11:52:10 Sample_Tick (EURUSD,M5) 492 1.2787 1.2789 1.2788 300000 2012.09.10 11:52:09 Sample_Tick (EURUSD,M5) 491 1.2787 1.2789 1.2788 300000 2012.09.10 11:52:07 Sample_Tick (EURUSD,M5) 490 1.2787 1.2789 1.2788 300000 最后的价格更新时间是否也没有变化? Denis Timoshin 2012.09.10 13:37 #329 Yedelkin: 最后一次价格更新的时间也没有变化? 2012.09.10 15:37:20 Sample_Tick (EURUSD.m,M5) 20 1.27841 1.27852 1.27841 2000000 2012.09.10 14:37:19 2012.09.10 15:37:20 Sample_Tick (EURUSD.m,M5) 19 1.27841 1.27852 1.27841 2000000 2012.09.10 14:37:19 2012.09.10 15:37:20 Sample_Tick (EURUSD.m,M5) 18 1.27841 1.27852 1.27841 2000000 2012.09.10 14:37:18 或 2012.09.10 15:37:12 Sample_Tick (EURUSD.m,M5) 6 1.27835 1.27845 1.27835 1000000 2012.09.10 14:37:11 2012.09.10 15:37:12 Sample_Tick (EURUSD.m,M5) 5 1.27835 1.27845 1.27835 1000000 2012.09.10 14:37:11 2012.09.10 15:37:12 Sample_Tick (EURUSD.m,M5) 4 1.27835 1.27845 1.27835 1000000 2012.09.10 14:37:10 Yedelkin 2012.09.10 13:44 #330 dentraf: 2012.09.10 15:37:20 Sample_Tick (EURUSD.m,M5) 20 1.27841 1.27852 1.27841 2000000 2012.09.10 14:37:19 价格变化时间是GMT+3,我想。这是谁的服务器? 1...262728293031323334353637383940...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓
'}'- 不是所有的控制路径都返回一个值 htghtgfhthf.mq5 61 10 它在告诉她我的逻辑有问题,不是所有的返回都在那里指定。是的,他们是!相反,如果我们把它们放在if的每个运算符之后,那将是无稽之谈,程序将立即产生错误的结果。它很短,而且直奔主题。如果你能,你怎么能让它接受呢?
晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓
'}'- 不是所有的控制路径都返回一个值 htghtgfhthf.mq5 61 10 它在告诉她我的逻辑有问题,不是所有的返回都在那里指定。是的,他们是!相反,如果我们把它们放在if的每个运算符之后,那将是无稽之谈,程序将立即产生错误的结果。它很短,而且直奔主题。如果你能,你怎么能让它接受?
一个建议:学习一些技术英语。让我看一下代码。
至于主题:该函数必须返回一个字符串类型的值。在函数内部,我们使用if语句,它包含返回语句。 问题:如果if语句检测到Bull == false,函数应该返回什么?
啊哈!!!。谢谢你!!!。
谢谢!!!!
晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓
'}'- 不是所有的控制路径都返回一个值 htghtgfhthf.mq5 61 10 它在告诉我,我的逻辑有问题,不是所有的返回都在那里指定。是的,他们是!相反,如果我们把它们放在if的每个运算符之后,那将是无稽之谈,程序将立即产生错误的结果。它很短,而且直奔主题。如果它能,如何让它接受?
不是所有的控制路径都会返回一个值--对值的返回没有完全的控制。
这意味着在字符串 OrderType()中,由于类型与void不同,必须有一个返回值,但没有保证有返回值的输出。
虽然你设置了多达2个运算符的返回,但它们都受到if条件的保护。如果两个条件都是假的,会发生什么?
然后机器可以随意跳出窗外。
顺便说一下,在这个函数中,使用switch计数器更有意义,而不是一堆if,它们基本上与switch做同样的工作。
ZZZY 另外,我们不应忘记,必须预先选择好位置,也要选择好顺序。而且有一个标准函数EnumToString用于将枚举转换为字符串,所以没有必要重新发明车轮。
我不明白为什么在价格没有变化的情况下调用OnTick?????。
2012.09.10 11:52:11 Sample_Tick (EURUSD,M5) 493 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:10 Sample_Tick (EURUSD,M5) 492 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:09 Sample_Tick (EURUSD,M5) 491 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:07 Sample_Tick (EURUSD,M5) 490 1.2787 1.2789 1.2788 300000
我不明白为什么虽然价格没有变化,但OnTick却被触发了?????。
2012.09.10 11:52:11 Sample_Tick (EURUSD,M5) 493 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:10 Sample_Tick (EURUSD,M5) 492 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:09 Sample_Tick (EURUSD,M5) 491 1.2787 1.2789 1.2788 300000
2012.09.10 11:52:07 Sample_Tick (EURUSD,M5) 490 1.2787 1.2789 1.2788 300000
最后一次价格更新的时间也没有变化?
2012.09.10 15:37:20 Sample_Tick (EURUSD.m,M5) 20 1.27841 1.27852 1.27841 2000000 2012.09.10 14:37:19
2012.09.10 15:37:20 Sample_Tick (EURUSD.m,M5) 19 1.27841 1.27852 1.27841 2000000 2012.09.10 14:37:19
2012.09.10 15:37:20 Sample_Tick (EURUSD.m,M5) 18 1.27841 1.27852 1.27841 2000000 2012.09.10 14:37:18
或
2012.09.10 15:37:12 Sample_Tick (EURUSD.m,M5) 6 1.27835 1.27845 1.27835 1000000 2012.09.10 14:37:11
2012.09.10 15:37:12 Sample_Tick (EURUSD.m,M5) 5 1.27835 1.27845 1.27835 1000000 2012.09.10 14:37:11
2012.09.10 15:37:12 Sample_Tick (EURUSD.m,M5) 4 1.27835 1.27845 1.27835 1000000 2012.09.10 14:37:10
2012.09.10 15:37:20 Sample_Tick (EURUSD.m,M5) 20 1.27841 1.27852 1.27841 2000000 2012.09.10 14:37:19