1.Thanks to the author for the article. 2..表达式 (int) 是什么意思,在 int 中取什么值 DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));if(DIGITS<0)DIGITS=0; 3. 4.交互代码是如何工作的? 当 EA 在同一工具上运行时,只需设置相同或不同的 EA 数字名称,交互代码是否重要。
例如,您有一个绝对可行的 EA,您不想在其中做任何更改,但您创建了一个跟踪 EA,并想测试它将如何与该 EA 一起工作。 您启动原始 EA 和跟踪 EA,并为这两个 EA 提供相同的交互代码,它们将把对方的操作视为自己的操作,而没有此类交互代码的第三个 EA 所做的更改将被忽略(对于选定的一对 EA 而言,这些更改将是不可见的)。
1.感谢作者的文章。 2..表达式 (int) 是什么意思,在 int 中取什么值 DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));if(DIGITS<0)DIGITS=0; 3. 4.交互代码是如何工作的? 当 EA 在同一工具上运行时,只需设置相同或不同的 EA 数字名称,交互代码是否重要。
据我所知,您不太理解代码的含义,让我们来详细了解一下会发生什么情况
int DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP)); if(DIGITS<0)DIGITS=0;
2.表达式 (int) 代表什么以及它在 int 中的取值 DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));如果(DIGITS<0)DIGITS=0;
1.Thanks to the author for the article.
2..表达式 (int) 是什么意思,在 int 中取什么值 DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));if(DIGITS<0)DIGITS=0;
3.
4.交互代码是如何工作的?
当 EA 在同一工具上运行时,只需设置相同或不同的 EA 数字名称,交互代码是否重要。
表达式 (int) 是将以下表达式转换为int 类型。
SYMBOL_VOLUME_STEP 表达式是 ENUM_SYMBOL_INFO_INTEGER 枚举的值之一。
上述表达式都不是变量,因此它们在 Debugger 中的值自然是 "未知标识符"、
字面意思是 "无法识别",Debugger 根本无法理解为跟踪而声明的变量属于哪种类型。
4.交互代码如何工作?
当EA在同一工具上工作时,只需设置相同或不同的EA数字名称,交互代码是否重要?
对不起,我走神了,没有回答第 4 个问题。
交互代码可用作多个可信智能交易系统的单一魔法。
例如,您有一个绝对可行的 EA,您不想在其中做任何更改,但您创建了一个跟踪 EA,并想测试它将如何与该 EA 一起工作。 您启动原始 EA 和跟踪 EA,并为这两个 EA 提供相同的交互代码,它们将把对方的操作视为自己的操作,而没有此类交互代码的第三个 EA 所做的更改将被忽略(对于选定的一对 EA 而言,这些更改将是不可见的)。
同时,由于 EA 识别代码(数字名称)不同,您可以单独处理某些数据、
一切都取决于您将提出的请求(例如,您可以仅就拖网工作提出报告)。
根据要求,同一笔交易可以定义为您自己的交易,也可以定义为他人的交易。
1.感谢作者的文章。
2..表达式 (int) 是什么意思,在 int 中取什么值 DIGITS=(int)-log10(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));if(DIGITS<0)DIGITS=0;
3.
4.交互代码是如何工作的?
当 EA 在同一工具上运行时,只需设置相同或不同的 EA 数字名称,交互代码是否重要。
据我所知,您不太理解代码的含义,让我们来详细了解一下会发生什么情况
1.我们得到该交易品种的手交易量步长,SYMBOL_VOLUME_STEP - 进行交易的最小交易量步长(通常为 0.01);
2.获取以 10 为底的对数 => -log10(0,01) = 2 或 -log10(0,10) = 1(对于 MQ,为 -log10(0,10) = 1);
3. 将结果(-2/-1)等同于 int 类型的变量 DIGITS。
4.4. 如果 DIGITS 的值<0,则赋值 = 0。
PS
(int) 用于将计算结果强制为 int 类型...
本文没有反映 "止损/止盈发生 "这一事件。这是一个非常严重的疏忽!
示例:Expert Advisor 有两个部分:第一个部分在给定符号和时间框架上的"虚拟仓位 " 等于 0 时工作,第二个部分在 "虚拟仓位 " 不等于 0 时工作;好吧,假设 Expert Advisor 关闭了这个仓位。让我们考虑这样一种情况:我们在某个信号上买入,"虚拟仓位 "的 值为 +100。触发止损后,实际"虚拟头寸 "的 值为 0。但在我们的情况下,它将等于 +100。Expert Advisor 会 "认为 "仓位是 +100,但实际上是 0,这将导致不理想的结果。
请向我解释这一点。
本文没有反映 "止损/止盈发生 "这一事件。这是一个非常严重的疏忽!
示例:Expert Advisor 有两个部分:第一个部分在给定符号和时间框架上的"虚拟仓位 " 等于 0 时工作,第二个部分在 "虚拟仓位 " 不等于 0 时工作;好吧,假设 Expert Advisor 关闭了这个仓位。让我们考虑这样一种情况:我们在某个信号上买入,"虚拟仓位 "的 值为 +100。触发止损后,实际"虚拟头寸 "的 值为 0。但在我们的情况下,它将等于 +100。Expert Advisor 会 "认为 "仓位是 +100,但实际上是 0,这将导致不理想的结果。
请向我解释这一点。
没错,这篇文章并不包含处理止损订单的模块。
它描述的是使用神奇数字的可能性。
要使用虚拟仓位,需要虚拟止损。
那我们为什么需要魔法呢?
因为如果我们用它来挖掘历史记录,就无法全面了解该智能交易系统下达的订单,因为我们无法识别止损和获利。
那我们为什么需要魔法呢?
因为如果我们用它来挖掘历史记录,就无法全面了解该智能交易系统下达的订单,因为我们无法识别止损和获利。
必须明白,将止损作为交易策略的一部分是错误的。存储在服务器上的止损单是在出现问题(与服务器通信中断、市场恐慌)时的保护性订单,在其他情况下,以 EA 信号形式出现的虚拟止损单非常合适。
但实践表明,程序员往往懒于虚拟止损。毕竟,使用现成的止损单要容易得多。
在计算时,有必要对所有交易进行检查,如果与某位魔术师进行交易 - 我们会考虑其交易量,所有其他交易都要检查是否有止损/止盈平仓,如果有,则有必要重新设置计算金额。在我的文章中,止损也没有考虑在内。谁能想到...这是个新话题,请原谅。
有了这个神奇的功能,还有一件事:EA开立头寸 后,您断开 EA 并手动平仓 - 就是这样,之后就会出现错误记账。
现在的情况是:假设一个 EA 开仓买入 0.1,第二个 EA 开仓卖出 0.1,累计仓位等于 0,这被视为有两个反向仓位。
除此以外,我们还需要一些控制手段,一些脚本来计算所有法师的计算量是否与真实量一致,我们还需要平仓手段--用一个法师开仓,用另一个法师平仓。
这就提出了一个很大的问题,即魔法的使用是否会有需求,如果有,又该如何面对....。
我们是否应该为每个顾问开设一个单独的账户?
新文章《使用 ORDER_MAGIC 在单一工具上使用不同的智能交易系统进行交易》 已发布:
作者:Николай
如果我说错了,请指正...
我必须在这里尝试与您的代码类似的东西,以区分不同 EA 的操作和位置。我有几个疑问。这段代码是否经过优化?我认为,如果您有很长的交易历史,并且有多个EA在运行这段代码,那么这段代码真的会拖慢计算机的运行速度--虽然我还没有证明这一点,但这只是我的想法。
例如,在文件magic_exp1_en.mq5 中,方法prHistory_Deals(ulong&buf[],int HTD) 将我们进行过的所有交易填入缓冲区 buf[]。
如果我们只存储尚未被交易输出填满的最后一个交易输入,对性能来说不是更好吗?
也许我没有真正理解代码的作用。我认为,magic_exp1_en.mq5 中的代码所做的是: 对于自古以来的整个交易历史:-)它检查所有 DEAL_TYPE_SELL 和 DEAL_TYPE_BUY 的交易量之和是否相同,在这种情况下,我们没有开仓。如果卖出的交易量大于买入的交易量,那么我们就有一个总的卖出头寸,如果买入的交易量大于卖出的交易量,那么我们就有一个买入头寸。
难道没有其他方法吗?