程序库: TradeTransactions - 页 6

 
大家好,我是通过 "典型错误和消除错误的方法 "这一主题的脚注来到这里的。

我想在异步发送市场订单后使用库和方法计算 "我的 "仓位。
大多数示例和讨论都没有考虑到在其他智能交易系统并行工作的账户上进行交易的情况,因此所有事件和OnTradeTransaction 结果都是共同的。
这种逻辑是否适用于有其他智能交易系统的 HEDGING 账户。特别是,如果专家们在同一工具上交易,但使用各自的 "魔术师"?
这个库能否与在不同工具上打开交易的多货币智能交易系统一起使用?
 
Sergey Genikhov:
多货币智能交易系统(Expert Advisor)会在不同的交易工具上打开交易,而不是在设定的交易工具上打开交易,那么这个库能否与多货币智能交易系统一起使用?

可以。

 
请提醒我一下,我想我已经纠正了一个类似的错误,但我又遇到了,损失了很多时间。在 Convert.mqh 中,目标数组的大小似乎变小了。我需要将 uchar[39] 数组放入资源中,但在 ArrayToStruct 函数中,uint[] 类型的 接收器被顽固地认为大小为 9,即缺少最后 3 个字符。
 
Stanislav Korotky:
请提醒我一下,我想我已经纠正了一个类似的错误,但我又遇到了,损失了很多时间。在 Convert.mqh 中,目标数组的大小似乎变小了。我本该将 uchar[39] 数组放入资源中,但 ArrayToStruct 函数始终认为uint[] 类型的 接收器大小为 9,即缺少最后 3 个字符。

是的,它被切断了。试试这个

    const int SizeTarget = ::ArrayResize(Dst_Array, SizeSource * sizeof(SOURCE) / sizeof(TARGET) +
                                                    (bool)(SizeSource * sizeof(SOURCE) % sizeof(TARGET)));
 

根据 MQ 的建议,在 ResourceData 文件的 GetFullName 方法中,应使用 TERMINAL_DATA_PATH 常量,而不是 TERMINAL_PATH。

对我来说,这两个路径都是一样的,尽管终端启动时没有便携模式(显然是因为 UAC 已禁用,而且我对程序文件有写入权限)。但如果通过 RDP 连接,所有源文件都会从漫游中获取。许多用户可能默认将所有源代码放在 TERMINAL_DATA_PATH(不同于 TERMINAL_PATH)中。

 
Stanislav Korotky:

根据 MQ 的建议,在 ResourceData 文件中,GetFullName 方法应使用 TERMINAL_DATA_PATH 常量,而不是 TERMINAL_PATH。

我想是的。我用的是便携式,所以没注意。这些代码是各单位使用的。和你一样,用户早就把路径更正为正确的路径了。

很难做 QB 支持,工作列表已经变得很厚了。

 
fxsaber:

是的,它被裁剪了。试试这个

我在调用代码中对齐(添加)了 4 个字节,而且我没有编辑 Convert.mqh--毕竟它是从您的 include 文件夹中获取的,可能会被覆盖,所以最好在 KB 中更正(顺便说一下,我不太清楚哪个项目 是头文件 Convert.mqh、Resource.mqh 和 ResourceData.mqh 的主要项目--也许我写错了地方)。

 
Stanislav Korotky:

我在调用代码中对齐(添加)了 4 个字节,而且我没有编辑 Convert.mqh,毕竟它是从您的 include 文件夹中获取的,可能会被覆盖,所以最好在 KB 中更正(顺便说一下,我不太清楚哪个项目是头文件 Convert.mqh、Resource.mqh 和 ResourceData.mqh 的主要项目,也许我写错了地方)。

没有使用 TradeTransactions。


HistoryTicks - 没有它,我无法想象在 MT4 中进行交易。也许,它应被视为主要工具。但我无法在 KB 中更新它。

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

库:HistoryTicks

fxsaber, 2020.01.09 14:43

没有注意到 KB 中的版本是旧版本。不幸的是,没有办法更新。知识库自动生成器给出了以下信息
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(110,14) : error 165: 'ArrayResize_Real' - function already defined and has body
MQL4\Include\fxsaber\HistoryTicks\ArrayResize.mqh(172,14) : error 165: 'ArrayResize_Real' - function already defined and has body
在 ME 中,一切编译都没有错误。


在 HistoryTicks 中,责任要大得多,因为它是真实的。在实践中它已经被舔过了。

 
fxsaber:

解决该错误,用 随附的 替换 Include\ fxsaber \ TradeTransactions \ Convert.mqh

const RESOURCEDATA<double>ResourceDouble("::Double_"+__FILE__);

const RESOURCEDATA<datetime>ResourceTime("::Time_"+__FILE__);

const RESOURCEDATA<string>ResourceString("::String_"+__FILE__);


数据' - 结构未定义 Convert.mqh 85 49

在模板'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' 中指定了 [SOURCE=uint,TARGET=datetime] Convert.mqh 70 14
Data' - 结构未定义 Convert.mqh 43 38
在模板'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' 中指定了 [SOURCE=datetime,TARGET=uint] Convert.mqh 29 14
字符串不能用作联合成员 Convert.mqh 11 12
在模板'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' 中指定了 [SOURCE=uint,TARGET=string] Convert.mqh 70 14
Data' - 结构未定义 Convert.mqh 85 49
在模板'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' 中指定了 [SOURCE=uint,TARGET=string] Convert.mqh 70 14
字符串不能用作联合成员 Convert.mqh 13 12
在模板'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' 中指定了 [SOURCE=uint,TARGET=string] Convert.mqh 29 14
字符串不能用作联合成员 Convert.mqh 13 12
在模板'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' 中指定了 [SOURCE=uint,TARGET=string] Convert.mqh 29 14
字符串不能用作联合成员 Convert.mqh 13 12
在模板'int CONVERT::ArrayToStruct(const SOURCE&[],TARGET&[])' 中指定了 [SOURCE=string,TARGET=uint] Convert.mqh 70 14
Data' - 结构未定义 Convert.mqh 43 38
在模板'int CONVERT::StructToArray(const SOURCE&[],TARGET&[])' 中指定了 [SOURCE=string,TARGET=uint] Convert.mqh 29 14



是否在 MT4 1320 版中不起作用?


 
roaddust:

它在 MT4 1320 版中不起作用吗?

试试这个