错误、漏洞、问题 - 页 1832

 
Vladislav Andruschenko:


在mt5中?

是的,有点。

我已经很久没有在mt5中使用extern了。


好的。那么我如何在不打开交易面板的情况下改变输入参数的值?毕竟,如果它们被显示出来,就意味着它们不能被改变。
 
Alexander Fedosov:

好的。那么我如何在不打开交易面板的情况下改变输入参数的值?毕竟,如果它们被显示出来,就意味着它们不能被改变。

老实说,不知道。


但输入参数中没有显示外部设备--这种情况已经存在很长时间了吗? 你可以说从mt5终端开始就这样了。

 
Vladislav Andruschenko:

老实说,不知道。


但是输入参数中没有显示外部设备--从mt5开始就是这种情况吗?


那么现在是时候了,可能是在SD中,因为我有一个比1550更早的编译版本,在那里通过面板改变变量,如extern,并在输入参数中显示。
 
Alexander Fedosov:

好吧,一定是时间问题,显然是在SD中,因为我有一个1550年以前的编译版本,并且在那里通过面板改变变量,如extern,并在输入参数中显示。

也许它们是后来被引入的,然后又被删除了? 自从2012年以来,我就明白extern被input取代了,实际上把所有东西都改成了input。
 

你好,我有2个终端mt5 Alpari和mt5 broker Otkritie。\

我在Otkritie中安装了12个工具+指标。 CPU负载5-10%。

在Alpari中有3个打开的窗口,指标相同,CPU负载25-30%。

这两个人的历史设置都有5000条
即使关闭所有图表和市场符号窗口,Alpari也有14%的负载。

我想打开更多的符号,但加载的这个故障不允许我这样做。

最小化窗口时,CPU负载为8-9%。

我猜这是图表渲染方面的一个小故障?但是,为什么发现经纪人就没有这样的问题呢?


 
Alexander Fedosov:

那么现在是时候了,显然是在SD中,因为我有一个在1550之前的版本上的编译,并且在那里通过面板改变外部类型的变量并显示在输入参数中。


这本来是为这种类型的数据写的,为什么你让它们作为输入参数工作,这一点不清楚。

外部变量

关键字 extern 被用来声明变量标识符为具有全局寿命的静态内存类的标识符 这种变量在程序执行开始时就存在,并在程序执行开始后立即被分配和初始化。

可以创建由多个源文件组成的程序--为此目的,使用了#include预处理器指令。以相同类型和标识符声明为extern的变量可以存在于同一项目的不同源文件中。

当整个项目被编译时,所有具有相同类型和标识符的外部变量都与全局变量的内存池的同一区域相关。外部变量对于单独编译源文件 很有用。外来变量可以被初始化,但只能被初始化一次--不能接受同一类型、同一标识符的多个初始化外来变量的存在。

 
它是什么?
2017.03.14 09:51:34.866 Trades  use Hosting Service to speed up the execution - 0.31 ms via 'MQL5 Amsterdam 2 (MQL5 Ltd.)' instead of 72.36 ms
 
fxsaber:
这是什么?
广告:)
 

以前没有注意到1554年的请求国

有趣的是,即使在所要求的状态之前,保证金数据也是完全可用的。

 

关于交易、自动交易系统和交易策略测试的论坛

mql5语言的特点、微妙之处以及技巧

fxsaber, 2017.03.14 08:38

  • 在MT4/5中,挂单不可能改变魔法、评论 和数量。
交易服务器FXOpen-MT5,启动脚本
void OnStart()
{
  MqlTradeRequest Request = {0};
  
  Request.action = TRADE_ACTION_PENDING;
  Request.symbol = _Symbol;
  Request.volume = 1;
  Request.price = SymbolInfoDouble(Request.symbol, SYMBOL_ASK) - 100 * _Point;
  Request.type = ORDER_TYPE_BUY_LIMIT;
  Request.type_filling = ORDER_FILLING_IOC;
  Request.comment = "FirstComment";
  
  MqlTradeResult Result;
  
  if (OrderSend(Request, Result))
  {        
    Request.action = TRADE_ACTION_MODIFY;
    Request.order = Result.order;
    Request.type_time = ORDER_TIME_SPECIFIED;
    Request.expiration = TimeCurrent() + 1000;
    Request.comment = "NewComment";    

    OrderSend(Request, Result);  
  }
}

它放置一个待定订单,并通过设置一个新的Request.comment字段来修改它。

脚本执行日志

2017.03.14 11:33:47.642 Trades  '10127': buy limit 1.00 EURUSD at 1.06314
2017.03.14 11:33:47.775 Trades  '10127': accepted buy limit 1.00 EURUSD at 1.06314
2017.03.14 11:33:47.777 Trades  '10127': buy limit 1.00 EURUSD at 1.06314 placed for execution
2017.03.14 11:33:47.797 Trades  '10127': order #61938 buy limit 1.00 / 1.00 EURUSD at 1.06314 done in 154.608 ms (FirstComment)
2017.03.14 11:33:47.797 Trades  '10127': modify order #61938 buy limit 1.00 EURUSD at 1.06314 sl: 0.00000 tp: 0.00000 -> 1.06314, sl: 0.00000 tp: 0.00000
2017.03.14 11:33:47.930 Trades  '10127': accepted modify order #61938 buy limit 1.00 EURUSD at 1.06314 sl: 0.00000 tp: 0.00000 -> 1.06314, sl: 0.00000 tp: 0.00000
2017.03.14 11:33:47.930 Trades  '10127': modify order #61938 buy limit 1.00 EURUSD at 1.06314 sl: 0.00000 tp: 0.00000 -> 1.06314, sl: 0.00000 tp: 0.00000 placed for execution
2017.03.14 11:33:47.950 Trades  '10127': modify #61938 buy limit 1.00 EURUSD -> price: 1.06314, sl: 0.00000, tp: 0.00000) done in 154.566 ms (NewComment)

终端显示

现在,手动 删除待定订单,并获得适当的日记账。

2017.03.14 11:35:01.198 Trades  '10127': cancel order #61938 buy limit 1.00 EURUSD at 1.06314
2017.03.14 11:35:01.330 Trades  '10127': accepted cancel order #61938 buy limit 1.00 EURUSD at 1.06314
2017.03.14 11:35:01.333 Trades  '10127': cancel order #61938 buy limit 1.00 EURUSD at 1.06314 placed for execution
2017.03.14 11:35:01.465 Trades  '10127': cancel #61938 buy limit 1.00 EURUSD at 1.06314 done in 268.415 ms (NewComment)

终端显示




即,待定订单的评论实际上已经改变。但终端只能在日志和历史中显示这一点 - BAG!