Просадка в пунктах

 

тут решаю задачку с просадкой в пунктах.  При чем пункты могут не соответствовать реальным пунктам.

Проблема с в следующем есть 3 массива . 1-ый это массив потерь (или прироста)  денег , 2- лоты каждого прироста, Посчитал третий массив. Т.е. каждый следующий элемент = баланс+прирост. Поэтому получаем массив изменения баланса.
Считаем справа налево. допустим макс Баланс был на 5 элементе массива к примеру 1200. На текущем элементе баланс = 900. Лот для 5 элемента = 2,5, при 'этом лот 2 -го элемента = 0,04 и 3-го элемента = 0,01. т.е. их надо как то проигнорировать. и на последней сделке лот был к примеру 1,5. Как посчитать просадку в пунктах ?

 
Dmitiry Ananiev:

тут решаю задачку с просадкой в пунктах.  При чем пункты могут не соответствовать реальным пунктам.

Проблема с в следующем есть 3 массива . 1-ый это массив потерь (или прироста)  денег , 2- лоты каждого прироста, Посчитал третий массив. Т.е. каждый следующий элемент = баланс+прирост. Поэтому получаем массив изменения баланса.
Считаем справа налево. допустим макс Баланс был на 5 элементе массива к примеру 1200. На текущем элементе баланс = 900. Лот для 5 элемента = 2,5, при 'этом лот 2 -го элемента = 0,04 и 3-го элемента = 0,01. т.е. их надо как то проигнорировать. и на последней сделке лот был к примеру 1,5. Как посчитать просадку в пунктах ?

Просто от цены открытия в зависимости от типа ордера (Buy или Sell), программа должна запоминать в отдельную переменную максимальную разницу между ценой открытия и ценой Bid для ордеров Buy или ценой Ask для ордеров Sell. Но программа должна запоминать максимальную разницу только при отрицательном значении прибыли. Потом значение этой переменной после закрытия ордера подставляете для своих вычислений и обнуляете для аналогичных действий со следующим ордером
 
Alexandr Davydovskyi:
Просто от цены открытия в зависимости от типа ордера (Buy или Sell), программа должна запоминать в отдельную переменную максимальную разницу между ценой открытия и ценой Bid для ордеров Buy или ценой Ask для ордеров Sell. Но программа должна запоминать максимальную разницу только при отрицательном значении прибыли. Потом значение этой переменной после закрытия ордера подставляете для своих вычислений  и обнуляете для аналогичных действий со следующим ордером
, и что вы получите? Чистый убыток в пунктах. При этом объем никак не учитывается. Задача состоит в другом,  как убыток в деньгах привести к убытки в пунктах но фиксированный лотом. Торговля при этом ведётся разными людьми лота и и 2.5 и 3.5 и 0.01
 
Dmitiry Ananiev:
, и что вы получите? Чистый убыток в пунктах. При этом объем никак не учитывается. Задача состоит в другом,  как убыток в деньгах привести к убытки в пунктах но фиксированный лотом. Торговля при этом ведётся разными людьми лота и и 2.5 и 3.5 и 0.01
Так вы же спрашивали как посчитать просадку в пунктах. По тексту видно что вы плохо понимаете русский, возможно из-за этого вы точно смысл не передали

Например что вы имеете ввиду когда говорили:

убыток в деньгах привести к убытки в пунктах но фиксированный лотом
 
Dmitiry Ananiev:

тут решаю задачку с просадкой в пунктах.  При чем пункты могут не соответствовать реальным пунктам.

Проблема с в следующем есть 3 массива . 1-ый это массив потерь (или прироста)  денег , 2- лоты каждого прироста, Посчитал третий массив. Т.е. каждый следующий элемент = баланс+прирост. Поэтому получаем массив изменения баланса.
Считаем справа налево. допустим макс Баланс был на 5 элементе массива к примеру 1200. На текущем элементе баланс = 900. Лот для 5 элемента = 2,5, при 'этом лот 2 -го элемента = 0,04 и 3-го элемента = 0,01. т.е. их надо как то проигнорировать. и на последней сделке лот был к примеру 1,5. Как посчитать просадку в пунктах ?

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

1. разница в пунктах = текущая цена - цена открытия
2. цена открытия для совокупной позиции = (Лот 1 * Цена Откр. 1 + Лот 2 * Цена 2 + Лот 3 * Цена 3) / (Лот 1 + Лот 2 + Лот 3)
3. разница в пунктах для совокупной позиции = текущая цена - цена открытия для совокупной позиции 
4. если нужна своя мера измерения, то можно смотреть на график, как на уравнение Ньютона :) 

- расстояние = количество пунктов между двумя ценами 
- ускорение = лот 
- время = время 
- скорость = переменная 

5. два кусочка, которые когда-то использовал, но не помню зачем :) 
double pipsToMoney(
  const string symbol, 
  const double pips)
{
  double step = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE);
  double value = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE);
  return NormalizeDouble(pips * value / step, 2);
}

double moneyToPips(
  const string symbol, 
  const double amount)
{
  double step = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE);
  double value = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE);

  if (value == 0)
  {
    return 0;
  }

  return NormalizeDouble(amount * step / value, 5);
}
если лоты разные, то во втором кусочке вроде надо TICK VALUE или результат функций домножить на лот, AMOUNT - пипсы, integer, например, 10, 20, а не 0.00010