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

 
Renat Akhtyamov:

不,我不是指你已经写过的东西。
请用文字告诉我--你对哪些平仓订单感兴趣的利润计算方法
- 每日
- 亏损
- 最后一个订单
还是别的什么?
描述一下这个系列

一系列 "暂时 "关闭的最后订单

 
Natashe4ka:

"目前 "最后关闭的一系列订单

也就是说,你需要关于最近关闭的一系列订单的信息,如果我理解正确的话?

为了实现这种方法,你应该首先在每次成功关闭时填写订单 数组,然后以你需要的形式拉出已关闭订单的信息

你能自己做吗?

 

尝试


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);
}
 
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);
}

如果不在同一时间关闭怎么办?

不太对。

如果你在提交平仓单时记住了这一点,那么就可以了。

但这句话...

t=OrderCloseTime();

是不需要的。

它将拉出整个系列的总数

但夫人想要更详细的信息,正如我从第一个帖子中了解的那样

 
Renat Akhtyamov:
如果不在同一时间关闭怎么办?
如果函数关闭,一切都会顺利进行
 
Renat Akhtyamov:

所以,如果我理解正确的话,你需要的是关于最后关闭的一系列订单的信息?

为了实现这种方法,你应该首先在成功收盘时创建一个订单 数组,然后拉出已关闭订单的信息

你能自己做吗?

请建议我们使用一个例子。

I.e.

if (cnt>0) Ticket=OrderTicket()-1;

然后再进行比较?

 
Natashe4ka:

最好 给我一个例子

I.e.

if (cnt>0) Ticket=OrderTicket()-1;

然后再进行比较?

没问题。

现在唯一需要澄清的是,该系列的平仓订单信息应该是什么样子?

是转帐还是应该用+和-来划分金额?

 

有一个指标用于

i-Profit

输出今天、周、月、年的当前利润

 
Natashe4ka:

一个更好的例子是

下面是一个例子。

int ClosePosition(int type=-1,int mg=-1) {
GlobalVariableSet(GetGlobalVariableName("LastProfit"), TimeCurrent()); // запомним время закрытия
// здесь код закрытия всех и сразу, нужен цикл, чтоб не выходил с функции до полного закрытия всех
}

故事的其余部分

//+----------------------------------------------------------------------------+
//|    Возвращает суммарный профит в валюте депозита серии закрытых позиций    |
//+----------------------------------------------------------------------------+
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);
}

//===============================================================================================
//----------------------- Создает и возвращает имя глобальной переменной -----------------------+
//===============================================================================================
string GetGlobalVariableName(string name="", string symb="0") {
if(symb=="0") { symb=Symbol();}
  if(!MQLInfoInteger(MQL_TESTER)) {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+MQLInfoString(MQL_PROGRAM_NAME)+"_"+name);
  } else {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+MQLInfoString(MQL_PROGRAM_NAME)+"_tester"+"_"+name);
}}


即使我们重新启动终端,也会得到它

void OnTick()
{
   Comment( LastProfitCL(-1, (datetime)GlobalVariableGet(GetGlobalVariableName("LastProfit"))) );
}
 
Alekseu Fedotov:

有一个指标用于

i-Profit

输出今天、周、月、年的当前利润

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