Расчёты Deposit/Withdrawal

 

Скрипт.

Отлично считает раздельно сколько введено на счёт (Deposit) и сколько выведено (Withdrawal)

//+------------------------------------------------------------------+
int start()
  {
  double depo, widt;
  int cnt = OrdersHistoryTotal();
  for (int i=0; i < cnt; i++) {
    OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
    if (OrderComment() == "поступило на счет (WMZ)") depo += OrderProfit();
    if (OrderComment() == "web перевод") widt += OrderProfit();
    }
Alert("s: ",depo," w: ",widt," итого: ",depo+widt);
   return(0);
  }
//+------------------------------------------------------------------+

Но как всегда без НО не обошлось... :(((

Выборка основана на сравнении записи в комментарии, но там каждый ДЦ пишет по разному.

Как в скрипте выше например "поступило на счет (WMZ)" имеет другие варианты:

- просто "поступило на счет"

- или "поступило на счет (WMR)"

- и т.д...

Таже ситуация и с формулировкой вывода...

Можно конечно "подстроиться" под все возможные варианты, однако это не выход.

*

Есть мыслЯ производить выборку по balance, с ориентированием на знак суммы,

т.е. положительная это был ввод, отрицательная вывод, но решения пока нет...

*

Попутно вспомнил математику :))) когда получил результат depo-widt отличный от ожидаемого.

Что минус на минус дают плюс... и правильно надо писать так: depo+widt

*

Разработчикам!!!

- если возможно ввести подсветку кода для устаревших функций красным цветом.

- им же раскрасить вэб-ссылки и ! как отрицание

Мне кажется так будет информативней и читабельней...

 

Я не пробовал, но может сработает вместо комментариев вставить строку:

    if(OrderType() > 5)
    {
       .....
    }
проверил для баланса работает...
 

в альпарях вот так работает:

void start() {
  double depo=0, widt=0;
  int    i, k=OrdersHistoryTotal();

  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderType()==6) {
        if (OrderProfit()>0) depo+=OrderProfit();
        if (OrderProfit()<0) widt+=OrderProfit();
      }
    }
  }
  Print("s: ",depo," w: ",widt," итого: ",depo+widt);
}
 

Пробовал, правда ставил 6

выдаёт общий результат, а надо раздельный по операциям ввода\вывода!

Как-то непотно реализовано OrderType(), в справке только торг.типы перечислены,

а писать туда могут и другое, balance например (больше других вроде не встречал)

-

if (OrderType() == 6 && OrderProfit() >=0) depo += OrderProfit();
ковыряю пока в этом направлении...
 
ещё проверил у водяных и в фибо... тоже работает...
 
и у лайтов тоже работает...
 

Игорь, спасибо!

тоже вариант... к нему и склоняюсь...

Первоначально предполагал что Deposit и Withdrawal будет достаточно.

Однако вот про макроподстановку "*" чёт забыл что не прокатит... ;)))

 
kombat писал (а):
Однако вот про макроподстановку "*" чёт забыл что не прокатит... ;)))

о чём это Вы?

 

С учётом коррекции. Это когда впадаем в "технический минус баланса".

//+------------------------------------------------------------------+
int start()
  {
  double depo, widt, korr;
  int cnt = OrdersHistoryTotal();
  for (int i=0; i < cnt; i++) {
    OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
    if (OrderType() == 6 && OrderProfit() > 0) depo += OrderProfit();
    if (OrderType() == 6 && OrderProfit() < 0) widt += OrderProfit();
    if (OrderComment() == "коррекция") korr += OrderProfit();
    }
Alert("s: ",depo-korr," w: ",widt," итого: ",depo-korr+widt," корр: ",korr," i: ",i);
   return(0);
  }
//+------------------------------------------------------------------+

правда не знаю как выглядит коррекция при разного рода "форс-мажоров",

но думаю при тех же комметариях можно просто реализовать так-же ориентируясь на знак суммы.

 
KimIV:
kombat писал (а):
Однако вот про макроподстановку "*" чёт забыл что не прокатит... ;)))

о чём это Вы?

Ну Вы наверняка знаете когда например в поиске вводим: прото* или прото??

и получаем результат слов протоплазма, протокол

тоже самое и с ?? где не любое количество а два символа после...

В общем что-бы не смущать народ замнём эту тему подстановок.

Хотя в мкл4 очень бы пригодился этот механизм...

 
понятно... макроподстановка - это другое, это подстановка имени переменной, в которой содержится имя другой переменной, значение которой и подставляется фактически.
Причина обращения: