错误、漏洞、问题 - 页 1815

 
编译错误
template<typename T>
class A { public:
    A( const T * ) {} //Error: 'T' - unexpected token
};
class B {};
void OnStart()
{
    A<const B> a( new B );
}
 

你好,我在Otkritie的模拟账户中出现了以下情况

发生了以下情况:如果我成功地修改和删除了一个订单

属于ORDER_FILLING_RETURN 类型(普通限价单)。

来自MqlTradeResult结构 的变量量稳定地等于初始订单量(在这种情况下,订单根本就没有被执行)。

似乎它应该给出一个执行量(在我的例子中是0),还是我搞错了?

 
Sergey Kudryavtsev:

我认为它应该给出一个执行量(在我的例子中为0),还是我错了?

原本是这样的

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

图书馆: MT4Orders

fxsaber, 2017.02.10 12:01

脚本的结果
OrderSend(NULL,OP_BUYLIMIT,1,Ask-100*Point,100,0,0,My Order)
Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURUSD
Request.volume = 1.0
Request.price = 1.06356
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_IOC (1)
Request.type_time = ORDER_TIME_GTC (0)
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 = 57777
Result.volume = 1.0
Result.price = 1.06356
Result.bid = 0.0
Result.ask = 0.0
Result.comment = My Order
Result.request_id = 592
Result.retcode_external = 0
现在,我们很容易理解如何在MT5中正确形成相关的交易请求
 
fxsaber:
从一开始就是这样的!
谢谢你!
 
搜索 "MqlTradeResult"不能产生与帮助中描述的链接。
 

在OrderSend执行期间,不可能退出调试模式或删除EA/脚本

有时OrderSend运行180秒,有Request超时。如果脚本是在调试模式下运行的话,你必须等待三分钟才能在编辑器中进行编译。

 

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

虫子,虫子,问题

fxsaber, 2017.02.16 07:55

2017.02.16 08:53:03.158 Network '2250': disconnected from FXOpen-MT5
2017.02.16 08:53:03.285 MQL5    wrong type, loading of Test failed
2017.02.16 08:53:03.813 Network '5122740': authorized on MetaQuotes-Demo through Access Point EU Amsterdam (ping: 50.93 ms)

它是什么?

唯一的图表上没有任何东西在运行。每当我切换账户时,这条信息就会弹出来。

删除了所有Test.ex*文件。这条信息不断弹出。
 

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

疯狂缓存的测试剂

Renat Fatkhullin, 2017.02.21 04:04

试试周五新构建的MT5 1545--有些东西已经得到了改进。

还要注意的是,我们在MetaQuotes-Demo MT5上有超过23万个永久活跃账户,这是一个真正的交易狂欢节。

我认为在交流会上,百家争鸣更有力量,但要应对。

1545年--似乎正在变得更好。但所有的人都从裂缝中溜走了。

要求/回应。

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = EURCAD
Request.volume = 0.01
Request.price = 1.39016
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 = 134821044
Request.position_by = 0
Result.retcode = 10009
Result.deal = 118450870
Result.order = 134821045
Result.volume = 0.01
Result.price = 1.39016
Result.bid = 1.39016
Result.ask = 1.39043
Result.comment = Request executed 57.225 + 18.108 ms
Result.request_id = 4096
Result.retcode_external = 0

突出显示--这是在成功发送订单后,一个条目在订单和交易历史中出现的时间。很多!

纪录

NO      0       08:51:22.422    Trades  '5245006': instant sell 0.01 EURCAD at 1.39016, close #134821044 buy 0.01 EURCAD 1.39043 (deviation: 100)
MM      0       08:51:22.480    Trades  '5245006': accepted instant sell 0.01 EURCAD at 1.39016, close #134821044 buy 0.01 EURCAD 1.39043 (deviation: 100)
LH      0       08:51:22.480    Trades  '5245006': deal #118450870 sell 0.01 EURCAD at 1.39016 done (based on order #134821045)
EQ      0       08:51:22.480    Trades  '5245006': order #134821045 sell 0.01 / 0.01 EURCAD at 1.39016 done in 57.165 ms

而另一个案例是同一脚本 的运行。

请求/回应

Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURCZK
Request.volume = 0.01
Request.price = 27.043
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_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = Benchmark_Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 134821281
Result.volume = 0.01
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 392.585 + 0.299 ms
Result.request_id = 4457
Result.retcode_external = 0

纪录

HP      0       08:51:43.740    Trades  '5245006': buy limit 0.01 EURCZK at 27.04300
RE      0       08:51:44.133    Trades  '5245006': accepted buy limit 0.01 EURCZK at 27.04300
JS      0       08:51:44.133    Trades  '5245006': order #134821281 buy limit 0.01 / 0.01 EURCZK at market done in 392.533 ms

Ping ~54 ms。

 

不可能从警报窗口复制任何东西。

请在警报窗口增加选择几行的可能性,通过右击菜单 "复制 "和 "转到日志"--在专家日志中显示与警报对应的行。

 

下午好。

我遇到了对象指针的不正确行为(在我看来)。它与MT5和MT4都有关系。请澄清这是一个错误还是一个功能。以下是代码。

class CBaseObject { };

class CDescObject:public CBaseObject { };

void OnStart()
  {
      CDescObject *obj1 = new CDescObject(), *obj2;
      CBaseObject *baseObj1 = obj1;
      
      obj2 = baseObj1;//Пока не грохнули объект - no problem
      delete(obj1);

      //Если добавить эти строки, ошибки в последней строке не будет
      //if(CheckPointer(baseObj1)==POINTER_INVALID)
         //baseObj1 = NULL;
      
      obj2 = obj1;//Указатели одного типа - no problem
      obj2 = baseObj1;//здесь ошибка "Invalid pointer access"
  }

我理解这里的指针与C语言不一样,但有一个丰富的内部世界。不过,如果最后一行的任务能和平地通过,那就更符合逻辑了。在我的例子中,对POINTER_INVALID 的检查是在赋值之后,所以我一下子不明白为什么会出现 "无效的指针访问",尽管没有人进行任何访问。

P.S.: 以防万一 - Metatrader 5 build 1545, Win 7 SP1 x86