错误、漏洞、问题 - 页 1723

 

如何复制(保持相对路径)所有项目 文件到一个单独的文件夹。

例如,我想分享一个代码。它从不同的地方提取了十几个mqh文件。

现在我不得不手动搜索这些文件,往往你不能找到所有的文件,或者拿一些不必要的东西。如何使这一过程自动化,以便能够共享来源?

 

如何删除一个项目 及其所有文件?

我从kodobase终端下载了一个有十几个文件的项目,但我如何删除它?

 

编译错误

class A {};
template<typename T> //---------------------------------------------------//(1)
T *f( T* t ) { return t; }              //      A *f(       A* )          //(2)
                                        //const A *f( const A* )          //(3)
template<typename T> //---------------------------------------------------//(4)
 T *f( T* t, const T* ) { return t; }    //      A *f(       A*, const A* )//(5)
void OnStart()
{
    const A *a;
    const A *a1 = f( a );    // ошибка не обоснована: T -> const A, и в отсутствии (6) применимо (3)
          A *a2 = f( a );    //ошибка    обоснована, но по другой причине: A* = const A*
                  f( a, a ); //ошибка    обоснована, но по другой причине: T -> A, и отсутствует f(const A*,const A*)
}

(*) 一般来说,在模式(1)中,A->(2)和const A->(3)都可以被替换为T。与例如模板(4)不同,其中只有A->(5)可以替换为T。

现在只有A->(2)的替换有效,所以为了充分使用,我们必须做两个模板而不是一个。

template<typename T> //---------------------------------------------------//(1)
      T *f(       T* t ) { return t; }
template<typename T> //---------------------------------------------------//(6)
const T *f( const T* t ) { return t; }

注:明确的定义(6)比一般情况(*)具有更高的优先权

共计:在没有模式(6)的情况下,预计将适用 带有签名(3)的模式(1)。

 
A100:
我真的要求你在kodobase上发布一些信息!用于教育目的。
 
1) MT5在调用OrderSend 后更新未结头寸和交易历史,是否有一些延迟?如果是,建议等待的超时时间是多少?

2) 对MT4也有同样的问题,以便比较。
 

RickD:
1) Обновление открытых позиций и торговой истории в MT5 после вызова OrderSend происходит с некоторой задержкой? Если да, какой рекомендуется timeout для ожидания?

MT5-OrderSend不是完全同步的 - 没有与交易环境同步。这意味着历史读数不符合真实情况。

没有超时是不可能的。这个问题没有可靠的解决方案,因为你必须在终端层面处理同步问题,而不是在服务器层面。

事实上,MT5用户正面临着MT4桥梁开发者所面临的问题。

如果发送了OrderSend,你必须记住(这就是潜在的漏洞所在),它已经完成了。然后忽略当前历史(交易环境),直到OnTrade中出现相应的信息。一旦到了,要记得忘记。

当没有REMEMBER时,你可以像MT4一样相信历史。

2) 对MT4也有同样的问题,以便比较。
MT4-OrderSend是完全同步的。
 

Версия и битность терминала

版本:5.00,build 1445 (07.10.2016),32位。

问题描述

该指标未能从另一个时间框架(与安装该指标的图表的当前时间框架不同)复制标准指标(内置MT5)的数据。同时可以获得标准指示器的 "句柄",但CopyBuffer()函数总是返回-1。在测试器的可视化模式下,问题不会发生,但在图表的终端(指标所连接的),问题总是存在。

行动的顺序

上述内容。

获得的结果

上述描述。

预期的结果

正确地将标准(最好是自定义)指标的数据从其他时间段复制到该指标。

其他信息

在早期的 "构建 "中,这个问题并没有发生。

有人遇到过这样的问题吗?这是一个终端的 "错误 "还是我的?

 

fxsaber:

...如果发送了OrderSend,你必须记住(这就是潜在的漏洞所在),它已经完成。接下来,在适当的OnTrade消息到来之前,不考虑当前的历史(交易环境)。只要一到,就应该禁止REQUIRED...。

要么是我的记忆有问题,要么是OnTrade 部分的文件 已经更新。

...如果OrderSend()函数调用成功并返回true,这意味着交易服务器已将订单排队执行,并为其分配了一个票号。一旦服务器处理这个订单,就会产生贸易事件。如果用户记得票据的价值,他/她可以在处理OnTrade()事件时,用这个票据找出订单到底发生了什么。

换句话说,在第i步触发OnTrade是保证该订单在服务器上被接受。

 
Dennis Kirichenko:

要么是我的记忆模糊了,要么是文件 中的OnTrade 部分已经更新。

换句话说,在第i步触发OnTrade是保证该订单在服务器上被接受。

记住票据(而不是它将被OrderSend退回的事实)或带有true-return的OrderSend的事实本身就是真实的。
 
fxsaber:
记住票据(而不是它将被OrderSend退回的事实)或带有true-return的OrderSend的事实是必须的。

那里一切正常,下单应该通过OnTradeTransaction 来控制,顺便说一下,如果你通过Plaza2直接连接到交易所,情况也一样--你需要控制关于下单的消息的到来。在MT4中,该功能是同步的,但在MT5中也有同样的选项,只是在这种情况下,逻辑将停止,直到该功能没有收到回应。

如果你需要,那么我可以把控制类发给你,虽然它是为市场投放而写的,但很快我就会把它定下来用于限制器。