/**
* Rotate a 32 bit integer value bit-wise
* the specified number of bits to the right.
* This function is needed for calculations
* in the hash function makeMacicNumber()
*/int bitRotate(intvalue, int count){
int i, tmp, mask;
mask = MathPow(2, count) - 1;
tmp = value & mask;
value = value >> count;
value = value | (tmp << (32 - count));
return(value);
}
我不需要MathPow(),为什么没有人看到这个?
/**
* Rotate a 32 bit integer value bit-wise
* the specified number of bits to the right.
* This function is needed for calculations
* in the hash function makeMacicNumber()
*/int bitRotate(intvalue, int count){
int i, tmp, mask;
mask = (0x00000001 << count) - 1;
tmp = value & mask;
value = value >> count;
value = value | (tmp << (32 - count));
return(value);
}
不,它们可以是任何你想要的东西。就像评论一样。把它们看作某种数字评论。所有用普通MT4用户界面打开的手动交易都会有神奇的数字0,所以你可以在所有订单上进行循环,关闭/删除所有手动交易和订单,而不触动所有EA交易。
为了唯一地识别某个订单,有一个票据号码。
谢谢你的澄清和分享你的观点。 总之,我学到了很多。
我不需要MathPow(),为什么没有人看到这个?
现在更新第一篇帖子。
我不需要MathPow(),为什么没有人看到这一点?
我想到了三个主要原因。
我不会说它降低了清晰度。 我的主要意图是清晰、优雅和准确,而不是性能。
我也可以使用幂、乘、除(和模)来做实际的位移,而不使用任何位运算符。但为了优雅(也为了清晰),我应该只用一种或另一种来做,但不能混合使用。因为这个函数的含义是移位,如果我用乘法来移位,只会使代码变得混乱。
另外,虽然加法和乘法可以用整数完成,但MathPow()函数 在内部使用了对数,闻起来像近似值,而且与我需要的东西相比复杂得令人难以置信,它使用并返回一个双倍的值,而这与一个只应该移动n位的整数函数没有关系。
也许我应该问一个问题,为什么我 没有看到这一点。我为什么一开始就使用MathPow()呢?我不知道它。我最后一次做汇编是在15年前,今天我已经习惯于用更高的抽象概念来思考问题。也许这就是原因。在我大脑的某个地方,与第n位是2^n有很强的联系,我只是把这个写下来,没有考虑一秒钟。一个汇编程序员绝不会这样做。左移就是乘以2,乘以2就是左移。
我的持久性解决方案是使用int的32位来保存我使用的tf(10个),专家版本或开单的交易方法(我有4个)。如果我需要的话,还有很多位可以使用。我使用位操作和一些转换函数 来处理这个问题。我知道其他人也是这样做或类似的,但由于这似乎不足以满足你的情况,我仍在努力想办法解决我问的问题。
在你的例子中,符号()如何成为MN的一部分?你有一个EA号码和一个时间框架号码,但是符号呢?
我可以看到你的方法的优点,并可能在未来的某个时候利用它。 但是,作为一个NuB,我正在利用MQL4.Com中的代码基础的MM。因此,在我的编程学习曲线中,MM不是我的重点。 如果我可以找到一个更好的方法,我就会加入,直到MM成为我的首要任务,我不反对使用它。我们NuBs需要所有我们能得到的帮助!
关于名称和/或版本号,MN只允许数字,不允许字母。
我没有浏览你的代码,但我假设你的算法是将名字转换成MN的一部分,在这种情况下,它不会立即告诉你你正在处理哪种货币对。
你的算法是将名称转换为你的MN的一部分,在这种情况下,它不会立即告诉你你正在处理哪个货币对。
它将可靠地把任何字符串转换为一个唯一的整数。这种转换是单向的,但我永远都不需要把它转换回来。
我所需要知道的是,这些具有相同编号的交易是属于一起的。 这只是一个ID号码,只需在循环中使用一个if(),就可以轻松找到这个特定的EA/符号/TF组合的所有交易。唯一需要知道的是,这个数字对每个EA/符号/时间框架组合都是唯一的,而且它是确定的,如果我的电脑决定崩溃,它也不会改变。
所有在逻辑上属于一起的交易都会有相同的MN。如果我以后需要知道这些交易是在哪个符号上进行的(例如在月末做一些统计),我可以简单地对这些订单使用OrderSymbol()。
嘿,伙计们,我只是好奇,为什么你需要一个以上的专家运行相同的tf,以及相同设置的符号?
我的持久性解决方案是使用int的32位来保存我使用的tf(10个),专家版本或开单的交易方法(我有4个)。如果我需要的话,还有很多位可以使用。我使用位操作和一些转换函数来处理这个问题。我知道其他人也是这样做或类似的,但由于这似乎不足以满足你的情况,我仍在努力想办法解决我问的问题。
我不能代表其他人,但我有一个EA,它可能需要一段时间来关闭一个订单,它错过了新的进入点,因为它仍然没有从以前的订单中关闭。 我希望它能独立处理每个进场点,并根据每个交易的规则(移动滑点,当第一次达到目标时关闭一半,等等)跟踪每个交易。
我不能代表其他人,但我有一个EA,它可能需要一段时间来关闭一个订单,它错过了新的进入点,因为它仍然没有从以前的订单中关闭。 我希望它能独立处理每个进场点,并根据每个交易的规则(移动sl,在第一次达到tp时关闭一半,等等)来跟踪每个交易。我明白了。所以它被捆绑起来,等待服务器的响应,同时你可以打开其他订单?
但是,交易背景繁忙时不是会停止任何与订单有关的行动吗?
我想只要它能工作,这就是所有真正重要的。
与其说是服务器响应,不如说是订单打开。因此,EA可能得到一个买入信号 并买入,然后保持开放。几个小时后,另一个买入信号出现,但由于已经有一个开放的头寸,它没有买入,因为它在等待关闭第一个订单。但没有理由认为第一个买入信号会比第二个更有利可图,也没有理由认为等待第一个信号关闭后再让EA开出更多订单会有什么好处。 但我仍在努力,所以对我来说,这仍然是理论。)