错误、漏洞、问题 - 页 1797

 
fxsaber:
为什么双斜杠会作用于反斜杠?还有,为什么一个宏在激活时带有双斜线的注释?
评论不是宏的一部分。宏观应该是连续的。反斜线(backslash)从下一行继续执行宏。//在行的开头会中断宏,因为这样的行不能用反斜杠结束。
 
A100:
评论不是宏的一部分。一个宏必须是连续的。inverse (反转)从下一行继续执行宏。在行首的//会中断宏,因为这样的行不能以反斜杠结束。
这就是我想问的,为什么一个宏必须考虑有双斜线的行?应该如此。
 

Metaquotes-Demo

SYMBOL_SESSION_PRICE_LIMIT_MIN == 1199.2. 但即使在较高的价格下,我也不能设置BuyLimit。

 
fxsaber:
所以我问,为什么宏会认为有双斜线的行?应该如此。

在这种情况下,注释被替换为一个空字符串(注释文本 被忽略,而字符串本身仍然存在),空字符串中断了宏

#define MACRO  \
  if (true)    \
  {            \
    Print(""); \

  }
 
A100:

在这种情况下,注释被一个空行 所取代

#define MACRO  \
  if (true)    \
  {            \
    Print(""); \

  }
我觉得这不符合逻辑。甚至不应该有一个空行。
 
fxsaber:
如果你写一个合格的脚本,刹车似乎并不难解决。以下是在50ms的ping下出现的相当快的内容
2017.02.10 21:32:42.726 Trades  '5122740': exchange buy 1.00 Si-3.17 at market
2017.02.10 21:32:42.796 Trades  '5122740': accepted exchange buy 1.00 Si-3.17 at market
2017.02.10 21:32:42.806 Trades  '5122740': deal #117193624 buy 1.00 Si-3.17 at 58810 done (based on order #133580668)
2017.02.10 21:32:42.808 Trades  '5122740': order #133580668 buy 1.00 / 1.00 Si-3.17 at 58810 done in 81.663 ms
2017.02.10 21:32:42.810 Trades  '5122740': modify #133580668 buy 1.00 Si-3.17 sl: 0, tp: 0 -> sl: 58710, tp: 58910
2017.02.10 21:32:42.886 Trades  '5122740': accepted modify #133580668 buy 1.00 Si-3.17 sl: 0, tp: 0 -> sl: 58710, tp: 58910
2017.02.10 21:32:42.888 Trades  '5122740': modify #133580668 buy 1.00 Si-3.17 -> sl: 58710, tp: 58910 done in 78.188 ms
2017.02.10 21:32:42.888 Trades  '5122740': exchange sell 1.00 Si-3.17 at market, close #133580668 buy 1.00 Si-3.17 58810
2017.02.10 21:32:43.079 Trades  '5122740': accepted exchange sell 1.00 Si-3.17 at market, close #133580668 buy 1.00 Si-3.17 58810
2017.02.10 21:32:43.079 Trades  '5122740': deal #117193626 sell 1.00 Si-3.17 at 58810 done (based on order #133580670)
2017.02.10 21:32:43.080 Trades  '5122740': order #133580670 sell 1.00 / 1.00 Si-3.17 at 58810 done in 192.146 ms
2017.02.10 21:32:43.081 Trades  '5122740': buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.221 Trades  '5122740': accepted buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.222 Trades  '5122740': order #133580671 buy limit 1.00 / 1.00 Si-3.17 at market done in 141.851 ms
2017.02.10 21:32:43.222 Trades  '5122740': cancel order #133580671 buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.652 Trades  '5122740': accepted cancel order #133580671 buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.653 Trades  '5122740': cancel #133580671 buy limit 1.00 Si-3.17 at market done in 430.484 ms
提醒一下,这里是Metaquotes-Demo。由于某种原因,不能处理MT5的负载。
同样地
2017.02.13 12:44:48.104 Trades  '5122740': buy limit 1.00 RTS-12.17 at 114430
2017.02.13 12:44:48.737 Trades  '5122740': accepted buy limit 1.00 RTS-12.17 at 114430
2017.02.13 12:44:48.739 Trades  '5122740': order #133670570 buy limit 1.00 / 1.00 RTS-12.17 at market done in 634.624 ms
这是对这样一个请求的回应。
Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = RTS-12.17
Request.volume = 1.0
Request.price = 114430.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_DAY (1)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 133670570
Result.volume = 1.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 634.708 + 0.002 ms
Result.request_id = 5827
Result.retcode_external = 0
不幸的是,MT5的速度正在减慢。
 
fxsaber:
不幸的是,MT5的速度正在减慢。

更酷的是--演示的是1.5秒的行进过程!

'5122740': accepted exchange sell 1.00 DINRM at market, close #133675792 buy 1.00 DINRM 149.07
'5122740': deal #117297621 sell 1.00 DINRM at 149.07 done (based on order #133675793)
'5122740': order #133675793 sell 1.00 / 1.00 DINRM at 149.07 done in 1596.317 ms

查询

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = DINRM
Request.volume = 1.0
Request.price = 149.04
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_SELL (1)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 133675792
Request.position_by = 0
Result.retcode = 10009
Result.deal = 117297621
Result.order = 133675793
Result.volume = 1.0
Result.price = 149.07
Result.bid = 149.04
Result.ask = 149.06
Result.comment = Request executed 1596.364 + 0.209 ms
Result.request_id = 13486
Result.retcode_external = 0
 
无法查出悬挂的市场订单的滑点参数,该参数在Request.deviation中设置。
 
fxsaber:
我觉得这不符合逻辑。甚至不应该有一个空字符串。
//意味着注释在后面,而不是整个字符串都是注释。删除//,你会得到一个空字符串。为了便于比较,在//的前面加上空格
 
A100:
//意味着注释在它后面,而不是整个字符串都是注释。如果你删除//,你会得到一个空字符串

同意!但在宏的情况下,这是不方便的。

想象一下,你拿着一段代码,想让它成为一个宏。例如,用一个宏来代替一个函数。

看起来,你在每一行的末尾放一个反斜杠,就可以了。但是没有!你应该用/* */代替双斜线。而如果/* */不在一行中,那就太糟糕了。

原因: