Сохранить уровень цены позиции через клиринг (можно?) - страница 3

 
mr.plugged:

блин, неужели сложно внимательно прочитать вопрос?

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

А по поводу других терминалов, так точно могу сказать, что это особенность именно МТ. Да брокер закрывает позу а потоп открывает снова (если я правильно понял), но другие терминалы это как бы не замечают.

К сожалению, Вы не читаете, что Вам пишут.

Другие терминалы (на ФОРТС) делают тоже самое.

Если Вы хотите контролировать "чистую" цену, то ВЫ правильно указали функцию в первом посте.

Обратитесь во Фриланс, чтобы Вам её вставили в Ваш советник. 

 
mr.plugged:

блин, неужели сложно внимательно прочитать вопрос?

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

А по поводу других терминалов, так точно могу сказать, что это особенность именно МТ. Да брокер закрывает позу а потоп открывает снова (если я правильно понял), но другие терминалы это как бы не замечают.

Я же вам ответил в самом начале ветки. Функция, код которой вы привели, - правильная, берите и пользуйтесь. А советы про сохранение данных в CSV даже не читайте. :)
 
Sergei Vladimirov:
Я же вам ответил в самом начале ветки. Функция, код которой вы привели, - правильная, берите и пользуйтесь. А советы про сохранение данных в CSV даже не читайте. :)
Спасибо! будем пробовать!
 

функция на форсе выдает отрицательный результат (т.е. позицию с минусом...) после клиринга

какая же она рабочая, или я что то не так сделал)) ...

 
dhicksy:

функция на форсе выдает отрицательный результат (т.е. позицию с минусом...) после клиринга

какая же она рабочая, или я что то не так сделал)) ...


Вы не прошли верификацию на этом сайте, поэтому для вас выдает отрицательный результат.

 
Сегодня первый раз (случайно) столкнулся с сабжем. Выдрал код отсюда и немного подрихтовал
// Возвращает цену открытия выбранной позиции без учета клиринга
double GetSummaryPositionPrice()
{
  double TotalVolume = 0;
  double TotalDealPrice = 0;
  
  if (HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)))
  {
    const int DealsTotal = HistoryDealsTotal();
    
    for (int i = 0; i < DealsTotal; i++)
    {
      const ulong DealTicket = HistoryDealGetTicket(i);
      
      if (HistoryDealGetInteger(DealTicket, DEAL_ORDER))
      {
        const double DealVolume = (HistoryDealGetInteger(DealTicket, DEAL_TYPE) ? -1 : 1) * HistoryDealGetDouble(DealTicket, DEAL_VOLUME);
        const double DealPrice = HistoryDealGetDouble(DealTicket, DEAL_PRICE);
  
        if (TotalVolume * DealVolume >= 0)
          TotalDealPrice = (TotalDealPrice * TotalVolume + DealPrice * DealVolume) / (TotalVolume + DealVolume);
        else if (MathAbs(DealVolume) - MathAbs(TotalVolume) > 0.005)
          TotalDealPrice = DealPrice;
          
        TotalVolume += DealVolume;
      }      
    }
  }
  
  return(TotalDealPrice);
}


Потом уже обнаружил, что функции с тем же функционалом, что нашел на форуме, выдают совершенно другие значения. Если кто может проверить, дайте знать, есть баги или нет.


Сам проверял так

#include <MT4Orders.mqh>

#define PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS) && (OrderType() <= OP_SELL))
    {
      OrderPrint();
      
      PRINT(OrderOpenPrice());      
      PRINT(GetSummaryPositionPrice());
    }
}


Результат

#278975644 2018.07.17 21:16:12 sell 4.88 EURGBP 0.88805 0.00000 0.00000 0.88856 0.00 0.00 -281.89 0
OrderOpenPrice() = 0.8880467213114754
GetSummaryPositionPrice() = 0.8880467213114754
SlipPage
SlipPage
  • www.mql5.com
Exp_i-SpectrAnalysis_WPR Эксперт Exp_i-SpectrAnalysis_WPR построен на основе изменения направления движения индикатора i-SpectrAnalysis_WPR. BalanceOfPower_Histogram Индикатор Balance of Power (BOP) в виде цветной гистограммы силы и направления действующего тренда. wlxBW5ZoneAlert Семафорный сигнальный индикатор с...
Причина обращения: