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

 
Aleksey Semenov:
例如,如果你有一个充满了数百个未使用的glob变量的终端,那么是的--隔板将可悲地结束,如果不是这样,如果写得正确的话,它工作得相当快。
你可以建立你自己的日志
 
Aleksey Semenov:
例如,如果你的终端充满了数百个未使用的glob变量,那么是的--矫枉过正会让人难过,如果不是这样,如果你写得正确,它的工作速度相当快
我不反对,但如果可能的话,最好能找到更容易的方法。或者我们不是在寻找简单的方法)?
 
Vitaly Muzichenko:
我不介意,但如果可能的话,最好能找到更容易的方法。还是我们没有寻找到简单的方法?
最重要的是自己开始写作
 
Vitaly Muzichenko:
我不介意,但如果可能的话,最好能找到更容易的方法。或者说我们不是在寻找一个简单的方法吗?
因此,哪里是简单的方法,这个问题仍然没有答案。
 

我们仍然没有解决这个问题,而这是一个必要的功能,许多交易者使用它而不知道它不能正确计算平仓订单的利润。
这就是为什么一个简单的解决方案: LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); 不会起作用,而每个人都在他们的代码中不断地与历史订单 作斗争。

甚至在整个网络上都没有合格的解决方案--"谷歌 "说。所以,事实证明,每个人都在使用标准的不正确的解决方案,或正确的解决方案,但只有最后一个订单?

 
Natashe4ka:

我们还没有解决这个问题,而这是一个必要的功能,许多人使用它,不知道平仓订单的利润没有被正确考虑。
这就是为什么一个简单的解决方案: LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); 不会起作用,而每个人都在他们的代码中不断地与历史订单 作斗争。

甚至在整个网络上都没有合格的解决方案--"谷歌 "说。所以,事实证明,每个人都在使用标准的不正确的解决方案,或正确的解决方案,但只有最后一个订单?

我们建议,你没有得到它....
 
Renat Akhtyamov:
我们建议,你不理解....

好吧,那我们就分解一下:有一个订单的关闭时间,有一个与关闭时间相吻合的票据或订单数量。我们如何合并和计算这些订单的利润?
这似乎很简单,但我们还是不明白。

 

它计算正确,但只有在1-3个订单被关闭的情况下,如果超过3个,则会获得价值不明确的利润。
我们在这里还能补充什么呢?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;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 (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }
 
Natashe4ka:

它计算正确,但只有在1-3个订单被关闭的情况下,如果超过3个,那么利润就会有一个不明确的值。
我们在这里还能补充什么呢?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;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 (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }

你有没有试过问自己 "为什么要写在我的代码里,写了什么?

我已经在上面三次告诉你该做什么和怎么做。

你将无法从死穴中移动,否则你将无法做到这一点。

 
Natashe4ka:

好吧,那我们来分解一下:有一个订单的关闭时间,有一个与关闭时间相吻合的票据或订单数量。我们如何合并和计算这些订单的利润?
这似乎很容易,但我还是不明白。

你是把这些东西都保存在一个变量里还是在一个数组里? 先告诉我们你把它保存在哪里,然后我们再看下一步该怎么做。