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

 
Vitaly Muzichenko:
它不适合,没有10年的信息。

这对你来说也不一样。

t变量将发生变化,你将会受到影响。

在你开始关闭系列之前,必须要记住它

color ProfitColor;
datetime t;


// START //
//t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров

   if(LastProfitCL(-1)<0) ProfitColor=Red;
   if(LastProfitCL(-1)>0) ProfitColor=LimeGreen;
   if(LastProfitCL(-1)==0)ProfitColor=DarkGray;
   ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
   ObjectSet("Last Profit", OBJPROP_CORNER, 1);
   ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
   ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
   ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);
// END START //

//+----------------------------------------------------------------------------+
//|    Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=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 (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
    
       if (op<0 || OrderType()==op)

        {

          if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
       }

       }
  return(LastProfit);
   }

 
Renat Akhtyamov:

这对你来说也不一样。

t变量会发生变化,你会大吃一惊。

必须在系列赛结束前把它背下来。

你试过吗?

在收盘前,在发出收盘信号的那一刻,它就被记住了。

 
Vitaly Muzichenko:
这是不合适的,没有10年的信息。

目前的利润, ,所有的历史。

顺便说一下,它可以被设置为任何日期和时间。

 
Vitaly Muzichenko:

尝试


Comment( LastProfitCL(-1, 0) );

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

 return(LastProfit);
}

利润记住了每一个新的,但后来有些东西算得上是未知。在3号屏幕中,它应该是4,而不是190

 
Vitaly Muzichenko:

你试过吗?

它在关闭前就记住了,在收到关闭信号的那一刻。

只需阅读代码。
 

这也是190

if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
 
Natashe4ka:

利润记住了每一个新的,但后来有些东西算得上是未知。在3号屏幕中,它应该是4,而不是190

以下是代码,对我来说工作正常,但也许是因为系列被正确关闭了

附加的文件:
info.mq4  9 kb
 
Natashe4ka:

所以也是190

if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();


关闭订单的命令位于哪里?

你在里面写了变量t吗?

t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров
 
Renat Akhtyamov:

关闭订单的命令位于哪里?

你在里面写了变量t吗?

t=TimeCurrent();//放在信号块中,用于关闭一系列的订单

当然,这一切都在那里。

if(t<=OrderCloseTime()) {
       t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
 
Natashe4ka:

当然,这一切都在那里。

if(t<=OrderCloseTime()) {
       t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();


不,这一行被删除。这已经是利润计算了,不会有这样的效果。

在代码中关闭的命令 - 有,但没有这样的行

阅读上文。