Определить общий профит (плюсы и минусы) по конкретному советнику

 

Добрый день!

Ни как не могу разобраться  в том как определить общий профит по все ордерам открытым именно одним советником‌ со своим магическим числом...

Вроде задача не сложная, но проблема в том что на счету торгует несколько советников, у всех свои магики, и все советники могут торговать одновременно по 72 позиции....

Задача в том чтобы советник искал свои ордера (все)‌ и складывал их профиты и выдавал общий PL по своим ордерам...

Может кто нибудь пользуется таким... 

Может кто нибудь поделится  информацией?

Спасибо!‌

 
Castyell: как определить общий профит по все ордерам открытым именно одним советником‌ со своим магическим числом...

Был в КодеБазе ProfitStat - прилагаю. Переделывал. Попробуйте сделать по-своему

‌Дает вчера, сегодня, сейчас

Файлы:
 
STARIJ:
Был в КодеБазе ProfitStat

Спасибо за помощь!

Просмотрел код, немного не то что мне нужно... Наверное просто не совсем точно обьяснил что хочу‌ )))....

 Нужен отдельный блок который будет вставлен в советник, который будет ‌считать разницу всех минусов и плюсов по своим ордерам которые на данный момент еще открыты и на выходе говорить какой сейчас результат...

Но все равно спасибо за помощь! ‌

 
Castyell:

Спасибо за помощь!

Просмотрел код, немного не то что мне нужно... Наверное просто не совсем точно обьяснил что хочу‌ )))....

 Нужен отдельный блок который будет вставлен в советник, который будет ‌считать разницу всех минусов и плюсов по своим ордерам которые на данный момент еще открыты и на выходе говорить какой сейчас результат...

Но все равно спасибо за помощь! ‌


Пробуй, думаю все понятно.

#property strict
int Magic = 100;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
Alert("Общий профит = ",GetProfitOpenPosInCurrency());
Alert("Общий профит покупок = ",GetProfitOpenPosInCurrency("",OP_BUY,-1));
Alert("Общий профит продаж = ",GetProfitOpenPosInCurrency("",OP_SELL,-1));
Alert("Общий профит по симвоу = ",GetProfitOpenPosInCurrency(Symbol(),-1,-1));
Alert("Общий профит по симвоу только покупок = ",GetProfitOpenPosInCurrency(Symbol(),OP_BUY,-1));
Alert("Общий профит по симвоу только продаж = ",GetProfitOpenPosInCurrency(Symbol(),OP_SELL,-1));
Alert("Общий профит по симвоу  с магиком = ",GetProfitOpenPosInCurrency(Symbol(),-1,Magic));
Alert("Общий профит по симвоу  покупок с магиком = ",GetProfitOpenPosInCurrency(Symbol(),OP_BUY,Magic));
Alert("Общий профит по симвоу  продаж с магиком = ",GetProfitOpenPosInCurrency(Symbol(),OP_SELL,Magic));
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p+=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}


 
Alekseu Fedotov:


Пробуй, думаю все понятно.

#property strict
int Magic = 100;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
Alert("Общий профит = ",GetProfitOpenPosInCurrency());
Alert("Общий профит покупок = ",GetProfitOpenPosInCurrency("",OP_BUY,-1));
Alert("Общий профит продаж = ",GetProfitOpenPosInCurrency("",OP_SELL,-1));
Alert("Общий профит по симвоу = ",GetProfitOpenPosInCurrency(Symbol(),-1,-1));
Alert("Общий профит по симвоу только покупок = ",GetProfitOpenPosInCurrency(Symbol(),OP_BUY,-1));
Alert("Общий профит по симвоу только продаж = ",GetProfitOpenPosInCurrency(Symbol(),OP_SELL,-1));
Alert("Общий профит по симвоу  с магиком = ",GetProfitOpenPosInCurrency(Symbol(),-1,Magic));
Alert("Общий профит по симвоу  покупок с магиком = ",GetProfitOpenPosInCurrency(Symbol(),OP_BUY,Magic));
Alert("Общий профит по симвоу  продаж с магиком = ",GetProfitOpenPosInCurrency(Symbol(),OP_SELL,Magic));
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p+=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}


‌Вот это было прям в точку! Спасибо... то что нужно!

Причина обращения: