MMA_Breakout_strategy_volume I (没有MM或MF) - 由WhooDoo22编码 - 页 4

 

西蒙。

1. . .它选择的是什么票号?

RE 1.:我在使用OrderSelect()函数和OrdersHistoryTotal()函数的过程中产生了一个误解。这两个函数都与另一个函数没有关系。明白了这一点,我就可以简单地把OrderSelect()函数从第一个订单发送代码块的开头删除。它是不必要的(记住,这段代码是严格为测试目的而写的,不是为了在演示或现场运行。显然,最终它必须被纠正,以便它可以在模拟和真实账户上使用)。

另外,我相信我得到了你重复的观点,"用GetLastError()函数 检查返回值。"明白了。哈哈 :)

2.如果你理解OrderHistoryTotal(),你...

RE 2.: 我理解OrdersHistoryTotal()函数的目的。我对OrderSelect()函数与OrdersHistoryTotal()函数的结合使用有误解。

3.如果你了解 { } 大括号的作用...

RE 3.: 我相信我确实了解大括号的正确用法。我也明白,在这种情况下,大括号可以是不必要的------。

if(OrderType()==OP_BUY)  
   OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue);

我决定使用不必要的大括号,以确保每个代码块的表达式都能将其函数调用隔离到正在使用的每个特定代码块。非常整洁的东西,我不希望EA的代码块由于缺乏大括号而意外地跳过其函数调用。

4.使用变量i 作为票号。

RE 4.: 我有点惊讶,你不理解我对使用i变量作为假票号而不是票号的解释。变量i只是一个数字,在每次执行OrderClose()函数时被添加。变量i没有被定义为一个实际的票号。 我正在处理部分订单关闭的问题。这是我所知道的完成这一任务的唯一方法。我 对不同的解决方案持开放态度。你有更好的解决方案吗?) 我相信可能有另一种方法,但目前,我看不出有什么理由要改变正在使用的程序。同样,我对有成效的想法持开放态度。

5. . . . 如果OrderSend()失败,ticket 将=-1。

RE 5:请具体说明你指的是哪个OrderSend()函数(要么是 "滚球", 第一个订单发送订单关闭函数调用内的订单发送),这种澄清将引导我们的想法向同一方向发展,并将加强本次讨论中双方成员之间的沟通。

1.为什么第一或第二(请纠正这一点)订单发送会失败?(也许是因为误用了OrderSelect()和OrdersHistory...()函数?这将被纠正)。

2.如果订单发送失败,为什么票据变量会代表-1?我相信如果订单发送失败,票据变量仍将代表0而不是-1。请解释一下。

谢谢你。

 
WhooDoo22:

西蒙。

RE 5..:请具体说明你指的是哪个OrderSend()函数(要么是 "滚球", 第一个订单发送订单关闭函数调用内的订单发送),这种澄清将引导我们的想法向同一方向发展,并将加强本次讨论中双方成员的沟通。

1.为什么第1个或第2个(请纠正这一点)命令的发送会失败?(也许是因为误用了OrderSelect()和OrdersHistory...()函数?这将被纠正)。

2.如果订单发送失败,为什么票据变量会代表-1?我相信如果订单发送失败,票据变量仍将代表0而不是-1。请解释一下。

谢谢你。

如果OrderSend()失败,无论什么原因......。."返回交易服务器分配给订单的票据号码 ,如果失败则为-1。"取自文档。 你使用变量ticket 来保留返回值。所以如果OrderSend()失败了(无论什么原因),你的票据号码现在是-1 ......你不检查,你只是希望最好的结果,并使用你得到的任何东西。


你正在使用变量i 作为票号 .. 在这段代码中 .. .

OrderClose(i, 0.01, Ask, 30, CLR_NONE);

......从OrderClose() 的文档中,函数调用的第一个变量是一个int......ticket - 订单票据的唯一号码。因此,让我们假设你刚刚关闭了编号为34282694的 订单,是什么让你认为做i++;接下来会以任何方式帮助你? 也许你可以回答这个特别的问题,并解释它是如何工作的?



"我不希望EA的代码块由于缺少大括号而意外地跳过他们的函数调用。"......意外地跳过?你认为这可能会发生吗?"CPU陷入了咳嗽或感冒?


好吧,你是说你完全理解所有的问题,但是你没有写出可以在策略测试器 真实/演示环境中工作的代码,而是专门选择了削弱你的代码,把它写成只能在策略测试器中工作,这就是你所说的?

 

西蒙。

1.如果OrderSend()失败,无论什么原因..

RE 1.: 假设,让我们只说一个订单失败...如果你说的是真的,那么票据数量要减去1(票据总数的-1)。所以,EA发送并关闭了25个成功的订单。发送订单的信号到达,OrderSend()函数失败。当前的票数是24吗?如 果是的话,i变量会显示一个错误的票数,因为i变量不会减去1(-1)。i变量不会增加,现在有一个错误的票数。正确的票数是24,而i变量的票数是25。OrderSelect()函数 现在正在选择错误的票数。我们达成共识了吗?) 这样看来,如果OrderSend()函数失败,明显的解决办法是在i变量中减去1 呜......。擦了擦额头上的汗水:)。

2.CPU进入咳嗽状态或感冒了?

RE 2.: 通常情况下,如果我感染了流感病毒,我说话时往往会跳过一些合理的想法。我想这也适用于CPU :)撇开幽默不谈,我相信任何由于缺少"{ }"而跳过函数调用的可能性,都是一个可以解决的简单问题。为什么不加倍小心呢?如果真的不存在函数调用被跳过的问题,那么我认为没有理由不删除大括号。

3.好的,那么你是说...

RE 3.: 我相信我明白你到目前为止向我提出的问题。

4.你特别选择削弱你的代码,把它写成只能在策略测试器中工作?

回复4:我选择牺牲我认为最不重要的东西,保留我认为最重要的东西。这是在时间限制和优先级的基础上做出的选择。

谢谢你。

 
WhooDoo22:

西蒙。

1.如果OrderSend()失败,无论什么原因..

RE 1.: 假设,让我们只说一个订单失败...如果你说的是真的,那么票据数量要减去1(票据总数的-1)。所以,EA发送并关闭了25个成功的订单。发送订单的信号到达,OrderSend()函数失败。当前的票数是24吗?如 果是的话,i变量会显示一个错误的票数,因为i变量不会减去1(-1)。i变量不会增加,现在有一个错误的票数。正确的票数是24,而i变量的票数是25。OrderSelect()函数现在正在选择错误的票数。我们达成共识了吗?) 因此,如果OrderSend()函数失败,明显的解决办法是在i变量中减去1 呜......。擦了擦额头上的汗:)。

如果我说的是真的,你自己读一下文档,我给了你一个链接,点击它并阅读 ......

你完全误解了它的工作原理......对不起,但你确实误解了。 票数在策略测试器中只按顺序运行......票数不被减去......你用来保存票数的变量=-1,你的代码中从未减去变量票数。. .

"发送订单的信号到达,OrderSend()函数 失败。当前的票数是24吗?" 不是,ticket 变量持有数字-1,不是2524,它持有 -1,所以任何OrderSelect(ticket, . .然后任何OrderType()的调用也会失败,因为OrderSelect()失败了 . . . . 然后OrderModify(ticket, . . )也失败了 . . .

正如你所说,你了解所有这些问题,但却选择忽视它们,并将这段代码提交给codebasee ......我想我不需要再浪费时间来解释这些,因为你已经很好地掌握了这些。 抱歉给你带来不便,我不会再占用你的时间来帮助你。

 

西蒙。

我将按照你的要求阅读文件。

1.你用来保存票号的变量=-1

RE 1:你指出的是哪个变量? 变量i还是变量ticket?

2. 你用来保存票号的变量=-1

RE 2:这是否也可以说,"当订单发送失败时,票据号码是减一(-1)?"

如果是这样的话,如果EA发送并关闭了24个成功的订单,而发送第25个订单失败,那么当前的票据号就是减一(-1)。正确吗?:)

很明显,任何包含OrderSelect()函数的 代码块都会因为 "无效票号 "错误而失败。我认为它的错误号是4108,正如你之前写的那样,文档中也是这样写的。

我没有写,"我了解所有这些问题"。我写的是,"我相信我理解 你到目前为止向我提出的问题"。

3."正如你所说,你了解所有这些问题,但选择忽视它们,并将这段代码提交给codebasee ......我想我不需要再浪费时间来解释这些了,因为你已经很好地掌握了这些问题。 抱歉给你带来不便,我不会再占用你的时间来帮助你了。"

回复3:我目前并没有忽视这些问题。我与你的讨论表明了这一点。我对你提出的和继续提出的所有观点感兴趣。另外,我尊重你对MQL4文档的了解,并感谢你的帮助愿望。这一点没有被忽视,我为此感谢你。

谢谢你。

 

大家好。

在这段代码中,我意识到我不能改变任何批次的价格....,为什么呢...。

在我尝试这样做的时候,我得到一个错误....

谢谢......并等待你的回答....

非常好的工作 WhooDoo22!!!!;)