[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 176

 
eddy:
你如何定义最后一个订单? 按时间。 好吧,在代码中查看哪一个订单是最近的时间点


我已经自己想出了办法。但我还是不明白你的最后一个建议。有没有可能调出所有的订单,看看哪一个是时间上最新的?那么,你想拉出所有的订单,比较所有订单的收盘时间?告诉我如何做这个的代码。

我是这样解决的。

int z;
int _bar;

int start()

{

z=OrdersHistoryTotal()-1;
OrderSelect(z,SELECT_BY_POS,MODE_HISTORY);
if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)
{
if(OrderProfit() > 0)
PlaySound(" profit.wav";
if(OrderProfit()==0)
PlaySound("zero.wav");
if(OrderProfit()<0)
PlaySound("loss.wav");
}

事实证明,如果用1代替z,最早的订单就会被选中,而从逻辑上讲,这是最新的订单,所以我取了OrdersHistoryTotal()(它返回历史上的订单数),用它代替了索引。然而,事实证明,OrdersHistoryTotal()的返回值比实际值多1。我的历史有6个订单,但OrdersHistoryTotal()返回7个订单。因此,我写了z=OrdersHistoryTotal()-1;。但我以前不知道在索引中用什么来选择最后一个。我不得不自己想办法,因为没有人告诉我任何事情。

 
Reaktiv:

如果(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)

这从根本上说是错误的,即使在测试器中也不会一直工作。
 
sergeev:
从根本上说是错误的,即使在测试器中也不一定能工作。

所以,请告诉我如何做对。 你知道,教科书上有很多例子是不存在的。
 
Reaktiv:

所以请告诉我如何正确操作,因为你知道教科书中没有很多例子。

任何解决方案都取决于设定的目标。

如果你想找到历史上的最后一笔订单是一回事,但如果你想确定你的EA的最后一笔订单是如何关闭的,那是另一回事。

 
sergeev:

任何解决方案都取决于你设定的目标。

如果你想在历史上找到最后一笔订单是一回事,但如果你只是给出你的EA的最后一笔订单是如何关闭的,那又是另一回事。


我想让音乐在订单关闭后开始播放,根据利润是多少,音乐就会播放。在我的例子中,我想让它在订单关闭后的1到7秒内播放。
 

那么,该计划应该是这样的

1.在成功发送订单 时,你必须记住订单票(GlobalVariableSet)。

2.在每次打勾时,检查这个被记住的订单(GlobalVariableGet)的票据是否关闭(OrderCloseTime)。

如果订单被关闭,那么给一个适当的利润声音并删除记忆中的票据(GlobalVariableDel)。

4.如果你仍然想检查1-7秒,那么这个检查可以包括在分析中,但你必须记住,刻度线可能会有10秒或更多的延迟,你会错过信号。

 
sergeev:

那么,该计划应该是这样的

1.在成功发送订单 时,你必须记住订单票(GlobalVariableSet)。

2.在每次打勾时,检查这个被记住的订单(GlobalVariableGet)的票据是否关闭(OrderCloseTime)。

如果订单被关闭,那么给一个适当的利润声音并删除记忆中的票据(GlobalVariableDel)。

4.如果你仍然想检查1-7秒,那么这个检查可以包括在分析中,但你必须记住,刻度线可能会有10秒或更多的延迟,你会错过信号。



OrderSend 是否必须由专家顾问发送,还是没有区别?这个系统是基于我自己手动打开交易的事实。专家顾问在开仓后修改订单(设置止损),然后在关闭头寸时播放音乐。至于蜱虫可能延迟10秒的事实,我理解。我不打算在现在这样的时候使用EA。我在EUROBAX上使用我的EA,从早上9点到晚上18点,这种延迟是不可能的。
 
Reaktiv:

当交易开始时,顾问本身会修改订单(设置止损)。

那么在你的情况下,这一点将是订单票 的拍摄点。
 
sergeev:
那么在你的情况下,这就是采取订单票的时间点。

谢谢
 
Reaktiv:
我想让音乐在订单关闭后的1到7秒内播放。
为什么? 一旦订单结束,你可以直接播放音乐