关闭订单的利润计算 "HELP" - 页 9

 
Natashe4ka:

我也认为它的计数是正确的。
我不应该把这些信息放在代码中,我的生活就会变得更容易))

现在我在想,这个功能怎么会一直不能正常工作!!?

我明白了,我必须去掉利润=正数的检查,因为这个原因,账户后来停止了,我只是不得不把我之前的损失也考虑在内。

double lastloss()
{
double lastlos=0.0,lastlot=0.0,op=0.0;
int cnt=0;
datetime time=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
         {
            if(cnt==0 && OrderCloseTime()!=0) time=OrderCloseTime();
            if(OrderCloseTime()+PeriodSeconds()<time/* && op>0.0*/) break;
            op=OrderProfit()+OrderSwap()+OrderCommission();
            lastlos+=op;
            cnt++;
         }
      }
}
return(lastlos);
}
 
Natashe4ka:

在我看来也是如此,一切都算得上是应该的。
我不应该把这些信息放在代码中,生活就会变得更简单))

而现在令人费解的是,这个功能怎么一直没有正常工作!!!。

你正在使用你的初学者书的第一页的功能来关闭。在测试器中,它几乎会正常收盘,但在真实交易中,机器人经常会以红色收盘,特别是在它获得小幅利润的情况下。

你有没有试过在真实市场上交易,还是只在测试器中交易?

你是否见过这样的情况,当一系列的头寸被关闭时?注意从信号到平仓的点数差异,以及关闭最后一个位置的点数差异

为了避免垃圾邮件,我将只附上3张截图,尽管实际上有一百多张截图可用。


所有的功能对每个人都能正常工作,但只有你不能正常工作。你有没有想过为什么?

最后,你需要问自己的问题,我们不需要答案:你是否要在任何时候重新启动终端,或在周末关闭它,......?如果是这样,如果你不想把它保存在任何地方,你将如何在下一次启动终端 时获得利润,以继续专家顾问在系列的最后一次关闭时完成的工作?

 

还有更多。

我为什么要问在平仓之间删除订单有什么作用?


现在我们有一个情况:一个EA在达到盈利时开始平仓,然后它得到一个根本没有用的订单,也就是说它既没有盈利也没有亏损,但是一个删除这个订单的订单被发送,当它被删除时,价格离开,EA继续进一步平仓。结果如下:我们已经开始平仓获利,但由于我们平仓都是错的,最终以亏损平仓系列。这是否正常?不要只为测试员写代码,至少要写一个在模拟账户上工作的代码。

 
Vitalie Postolache:

明白了,我需要去掉利润=正数的检查,它使账户后来停止,我只是需要把我之前的损失也考虑进去。

double lastloss()
{
double lastlos=0.0,lastlot=0.0,op=0.0;
int cnt=0;
datetime time=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2)
         {
            if(cnt==0 && OrderCloseTime()!=0) time=OrderCloseTime();
            if(OrderCloseTime()+PeriodSeconds()<time/* && op>0.0*/) break;
            op=OrderProfit()+OrderSwap()+OrderCommission();
            lastlos+=op;
            cnt++;
         }
      }
}
return(lastlos);
}

它是有效的,算得上是应该的,是天才,真棒!!!。
谢谢你 - 谢谢你 - 谢谢你 !!!!!!!!!!!!)))))))))))))

你做得很好))。

 
Vitaly Muzichenko:

还有更多。

我为什么要问在平仓之间删除订单有什么作用?


现在我们有一个情况:一个EA在达到盈利时开始平仓,然后它得到一个根本没有用的订单,也就是说它既没有盈利也没有亏损,但是一个删除这个订单的订单被发送,当它被删除时,价格离开,EA继续进一步平仓。结果如下:我们已经开始平仓获利,但由于我们平仓都是错的,最终以亏损平仓系列。这是否正常?不要只为测试员写代码,至少要写一个在模拟账户上工作的代码。

是的,他们不按顺序关闭,如果关闭周期从零开始,就会发生这种情况。
 
Vitalie Postolache:
它们不按任何顺序关闭,如果关闭周期从零开始,就会发生这种情况。

从哪个零开始?

那么,为什么要在电网关闭的那一刻把时间浪费在订单的删除上呢?你自己也知道,删除一个订单需要时间,那么为什么要浪费时间呢? 而且,如果你的经纪公司速度不快,我们就完蛋了。我展示了一张在1分34秒内关闭了15个头寸的截图,我们必须认识到,在这段时间内,价格可能会经历十几个点,如果它朝着我们的方向发展而不是对我们不利,我们将是幸运的。

 
Vitaly Muzichenko:

从哪个零开始?

那么,为什么要在电网关闭的那一刻把时间浪费在订单的删除上呢?你自己也知道,删除一个订单需要时间,那么为什么要浪费时间呢? 而且,如果你的经纪公司速度不快,我们就完蛋了。我曾经贴出一张截图,15个头寸在1分34秒内被关闭。

从这个零点开始 for(int i=0;i<OrdersHistoryTotal();i++)- 这样一来,如果按序号选择,订单将在最佳情况下逐一关闭。

是的,我知道,在关闭一个系列的过程中,不能删除 一个挂单,最好是按顺序关闭,但这是随着经验而来的。