初学者的问题 MQL5 MT5 MetaTrader 5 - 页 33

 

晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓

'}'- 不是所有的控制路径都返回一个值 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); }

 }
 
Dimka-novitsek:

晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓

'}'- 不是所有的控制路径都返回一个值 htghtgfhthf.mq5 61 10 它在告诉她我的逻辑有问题,不是所有的返回都在那里指定。是的,他们是!相反,如果我们把它们放在if的每个运算符之后,那将是无稽之谈,程序将立即产生错误的结果。它很短,而且直奔主题。如果你能,你怎么能让它接受?

一个建议:学习一些技术英语。让我看一下代码。

至于主题:该函数必须返回一个字符串类型的值。在函数内部,我们使用if语句,它包含返回语句。 问题:如果if语句检测到Bull == false,函数应该返回什么?

 
当然,Si=""!空值。
 

啊哈!!!。谢谢你!!!。

谢谢!!!!

 
Dimka-novitsek:

晚上好!很确定这个功能将产生我想要的东西,好吧,几乎是这样。但机器无法编译,它像这样发誓

'}'- 不是所有的控制路径都返回一个值 htghtgfhthf.mq5 61 10 它在告诉我,我的逻辑有问题,不是所有的返回都在那里指定。是的,他们是!相反,如果我们把它们放在if的每个运算符之后,那将是无稽之谈,程序将立即产生错误的结果。它很短,而且直奔主题。如果它能,如何让它接受?

不是所有的控制路径都会返回一个值--对值的返回没有完全的控制。

这意味着在字符串 OrderType()中,由于类型与void不同,必须有一个返回值,但没有保证有返回值的输出。

虽然你设置了多达2个运算符的返回,但它们都受到if条件的保护。如果两个条件都是假的,会发生什么?

然后机器可以随意跳出窗外。

顺便说一下,在这个函数中,使用switch计数器更有意义,而不是一堆if,它们基本上与switch做同样的工作。

ZZZY 另外,我们不应忘记,必须预先选择好位置,也要选择好顺序。而且有一个标准函数EnumToString用于将枚举转换为字符串,所以没有必要重新发明车轮。

 
谢谢你!!!
 
//+------------------------------------------------------------------+
//|                                                  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

 
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

最后的价格更新时间是否也没有变化?
 
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

 
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,我想。这是谁的服务器?