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

 
Natashe4ka:

如果 "cnt "被设置为零,这也是正确的,但这样一来,数值又无法理解了,如截图3(应该是利润值4.27)。

double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  int cnt=0;
  double LastProfit=0;
   for(i=0;i<OrdersHistoryTotal();i++)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
       if ((op<0 || OrderType()==op) && cnt==0) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); cnt++;} else {cnt=0;}
       }
  return(LastProfit);
   }

当我没有逻辑思维的时候,这不是好事(

你看,在真实的市场上,这种逻辑下的存款会在3天内融化。

 
Vitaly Muzichenko:
当你不按逻辑思考的时候,这是很糟糕的(

这就对了。

待定订单已被删除

 
Natashe4ka:

这就对了。

待定订单已被删除

这是可以理解的,因为它是。
 

好的,那么你如何返回等于OrderCloseTime()的已关闭订单的票据,并计算其利润?
像这样。

if (t<OrderCloseTime()) {t=OrderCloseTime();r=OrderTicket();profit+=OrderProfit()+OrderCommission()+OrderSwap();}
 
Natashe4ka:

好的,那么你如何返回等于OrderCloseTime()的已关闭订单的票据,并计算其利润?
类似这样的事情。

if (t<OrderCloseTime()) {t=OrderCloseTime();r=OrderTicket();profit+=OrderProfit()+OrderCommission()+OrderSwap();}


如果它在停止时关闭怎么办?

ticket=OrderClose(......);

if(ticket>0){//увеличить размер массива на один и записать тикет закрытого ордера}

 
我写了一个记录累计缩减或利润的系统--它看起来是这样的。对于开盘期间的每个市场订单,都会创建一个带有该订单票面名称的全局变量,当我们需要重新计算累计盈亏时,我们只需对照全局变量 列表检查当前的订单列表,通过删除不必要的变量并将利润直接添加到票面名称中进行计算。
 
Renat Akhtyamov:

如果它在停止时关闭怎么办?

ticket=OrderClose(......);

if(ticket>0){//увеличить размер массива на один и записать тикет закрытого ордера}

那么,什么数组,什么票,什么订单?

在终端的第一次重启后,或在周末关机后,你将简单地失去所有的数据,这将是所有写入和计算的结束。

 
Aleksey Semenov:
例如,当我为自己编写计算累计缩减或利润的系统时,它看起来像这样。对于开盘期间的每个市场订单,都会创建一个带有该订单票面名称的全局变量,当我们想重新计算盈亏时,我们只需对照全局变量 列表检查当前订单列表,并通过删除多余的变量来进行计算,并将利润直接加入票面名称中。

这对系统来说是一个沉重的负担,在一个指标中它工作得很好,但在一个EA中,几十个全局变量的列举可能会导致终端的挂起。

有一个开放和关闭的时间,你必须与它合作,而且没有任何困难,只要有一次记录,你就可以得到关于账户状态的所有信息,而且你不需要自行车。

 
Vitaly Muzichenko:

什么数组,什么票,什么订单?

在终端第一次重启后,或周末关机后,你将简单地失去所有的数据,这将是所有写入和计算的结束。

是可以解决的

我没有必要向你解释。

 
Vitaly Muzichenko:

这对系统来说是一个沉重的负担,在一个指标中工作正常,但在一个EA中,几十个全局变量的枚举会导致终端冻结。

有开盘和收盘时间,这就是你需要的工作,而且没有任何困难,只要有一次记录,你就可以得到所有关于账户状态的信息,而且你不需要骑自行车。

如果你有一个充满数百个未使用的glob变量的终端,那么是的--重建将悲哀地结束,如果没有,那么它的工作速度相当快,如果写得正确的话。