Logo

Вход

Войти с помощью соц. сетей
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения
ТОП СООБЩЕНИЙ
02.12.2016, 13:16
Лучший ответ
Накопленные выплаты: 44 RUB
Сообщение от dantetemp Посмотреть сообщение
не правильно делает подсчет. что нет так?
Почему неправильно? На мой взгляд, все правильно.
У меня функция так-же выглядит, см. пост #1.


У Вас ошибка в принте. Выводится суммарный объем сделок, а не отдельно взятой.
Для отображения объема отдельно взятой сделки и вывода в лог, принт должен быть таким
MQL код:
Print(
"position #"+IntegerToString(i)+
", lot: "+DoubleToString(PositionGetDouble(POSITION_VOLUME ),2)+
", summ. lot: "+DoubleToString(volumex,2)
);
05.12.2016, 17:00
Лучший ответ
Сообщение от Gold Посмотреть сообщение
Почему неправильно? На мой взгляд, все правильно.
У меня функция так-же выглядит, см. пост #1.


У Вас ошибка в принте. Выводится суммарный объем сделок, а не отдельно взятой.
Для отображения объема отдельно взятой сделки и вывода в лог, принт должен быть таким
MQL код:
Print(
"position #"+IntegerToString(i)+
", lot: "+DoubleToString(PositionGetDouble(POSITION_VOLUME ),2)+
", summ. lot: "+DoubleToString(volumex,2)
);

спасибо за ответ!

мне тоже, кажется, что с кодом все в порядке. считает только неправильно! уже десятки раз проверял.

например, сейчас открыл позиции в следующей последовательности: 0.03 лота, 0.03 лота, 1 лот, 2 лота.

не важно, какой код принта использовать, показывает общую сумму неправильно: 0.03, 0.06, 0.09, 0.12.

соответственно, размер лотов также показывает неправильно: 0.03 лота, 0.03 лота, 0.03 лота, 0.03 лота.

ошибка возникает, как только начинаешь открывать позиции разного размера.
05.12.2016, 20:46
Лучший ответ
Накопленные выплаты: 44 RUB
Сообщение от dantetemp Посмотреть сообщение
мне тоже, кажется, что с кодом все в порядке. считает только неправильно! уже десятки раз проверял.
Да, действительно, считает неправильно. Видимо, из-за недавних изменений в платформе, появления возможности открывать несколько позиций по одному инструменту, как в МТ4, и соотв. появления Hedge счетов - для нового типа счетов нужен другой подход.
06.12.2016, 03:10
Лучший ответ
Накопленные выплаты: 44 RUB
Сообщение от dantetemp Посмотреть сообщение
ошибка возникает, как только начинаешь открывать позиции разного размера.
Теперь правильно считает общий объем открытых сделок на хеджинговом счете.

MQL код:
double OpenPositionTotalVolume()
{
double volume = 0.0;

//Если хеджинговый счет
if(AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUN T_MARGIN_MODE_RETAIL_HEDGING)
{
for(int i=PositionsTotal()-1;i>=0;i--)
{
if(PositionSelectByTicket(PositionGetTicket(i)))
{
volume += PositionGetDouble(POSITION_VOLUME);
}
}
}

//Если неттинговый счет
if(AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUN T_MARGIN_MODE_RETAIL_NETTING || AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_M ARGIN_MODE_EXCHANGE)
{
for(int i=PositionsTotal()-1;i>=0;i--)
{
if(PositionSelect(PositionGetSymbol(i)))
{
volume += PositionGetDouble(POSITION_VOLUME);
}
}
}
return(NormalizeDouble(volume,2));
}
15.08.2017, 02:43
Лучший ответ
Накопленные выплаты: 789 RUB
подскажите скрипт подсчета сделок. Типа сколько лотов сделано за неделю/месяц.

Нашел подсчет профитов и прочие тики , но почему то просто объемов проторгованных не нашел.
Нужно поработать с историей сделок.
Сори если не сюда написал, так как история к открытым не относится.
16.08.2017, 08:58
Лучший ответ
Накопленные выплаты: 182 RUB
Сообщение от Galaxy Посмотреть сообщение
подскажите скрипт подсчета сделок. Типа сколько лотов сделано за неделю/месяц.

Нашел подсчет профитов и прочие тики , но почему то просто объемов проторгованных не нашел.
Нужно поработать с историей сделок.
Сори если не сюда написал, так как история к открытым не относится.
Для какого терминала, МТ4 или МТ5?
Я себе делал для МТ4 советник, где то по перекликающейся задаче.
Пример журнала прилагается.
  • #1 Свернуть

    что не так с подсчетом общего объема открытых позиций?

    не работает код почему-то (не правильно делает подсчет). что нет так?



    MQL код:
    int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spreads[])
    {

    int positions=PositionsTotal();

    double volumex = 0.00;

    for(int i=0; i<positions; i++)
    {
    //Определение символа по которому открыта позиция и выбор позиции для дальнейшей работы
    if(PositionSelect(PositionGetSymbol(i)))
    {
    //Берем нужную информацию по выбранной позиции
    volumex+= PositionGetDouble(POSITION_VOLUME);
    Print("position #"+IntegerToString(i)+": "+DoubleToString(volumex,2));
    }
    }

    return(rates_total);
    }
    Последний раз редактировалось Gold; 02.12.2016, 13:04.
  • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
  • #2 Свернуть

    Сообщение от dantetemp Посмотреть сообщение
    не правильно делает подсчет. что нет так?
    Почему неправильно? На мой взгляд, все правильно.
    У меня функция так-же выглядит, см. пост #1.


    У Вас ошибка в принте. Выводится суммарный объем сделок, а не отдельно взятой.
    Для отображения объема отдельно взятой сделки и вывода в лог, принт должен быть таким
    MQL код:
    Print(
    "position #"+IntegerToString(i)+
    ", lot: "+DoubleToString(PositionGetDouble(POSITION_VOLUME ),2)+
    ", summ. lot: "+DoubleToString(volumex,2)
    );
    Последний раз редактировалось Gold; 01.02.2018, 15:30.
    Правила форума | КИСА | Акция «Деньги за посты» | Как вставить картинку?

    Комментарий

    • #3 Свернуть

      Сообщение от Gold Посмотреть сообщение
      Почему неправильно? На мой взгляд, все правильно.
      У меня функция так-же выглядит, см. пост #1.


      У Вас ошибка в принте. Выводится суммарный объем сделок, а не отдельно взятой.
      Для отображения объема отдельно взятой сделки и вывода в лог, принт должен быть таким
      MQL код:
      Print(
      "position #"+IntegerToString(i)+
      ", lot: "+DoubleToString(PositionGetDouble(POSITION_VOLUME ),2)+
      ", summ. lot: "+DoubleToString(volumex,2)
      );

      спасибо за ответ!

      мне тоже, кажется, что с кодом все в порядке. считает только неправильно! уже десятки раз проверял.

      например, сейчас открыл позиции в следующей последовательности: 0.03 лота, 0.03 лота, 1 лот, 2 лота.

      не важно, какой код принта использовать, показывает общую сумму неправильно: 0.03, 0.06, 0.09, 0.12.

      соответственно, размер лотов также показывает неправильно: 0.03 лота, 0.03 лота, 0.03 лота, 0.03 лота.

      ошибка возникает, как только начинаешь открывать позиции разного размера.

      Комментарий

      • #4 Свернуть

        Сообщение от dantetemp Посмотреть сообщение
        мне тоже, кажется, что с кодом все в порядке. считает только неправильно! уже десятки раз проверял.
        Да, действительно, считает неправильно. Видимо, из-за недавних изменений в платформе, появления возможности открывать несколько позиций по одному инструменту, как в МТ4, и соотв. появления Hedge счетов - для нового типа счетов нужен другой подход.
        Последний раз редактировалось Gold; 05.12.2016, 20:56.
        Правила форума | КИСА | Акция «Деньги за посты» | Как вставить картинку?

        Комментарий

        • #5 Свернуть

          Сообщение от dantetemp Посмотреть сообщение
          ошибка возникает, как только начинаешь открывать позиции разного размера.
          Теперь правильно считает общий объем открытых сделок на хеджинговом счете.

          MQL код:
          double OpenPositionTotalVolume()
          {
          double volume = 0.0;

          //Если хеджинговый счет
          if(AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUN T_MARGIN_MODE_RETAIL_HEDGING)
          {
          for(int i=PositionsTotal()-1;i>=0;i--)
          {
          if(PositionSelectByTicket(PositionGetTicket(i)))
          {
          volume += PositionGetDouble(POSITION_VOLUME);
          }
          }
          }

          //Если неттинговый счет
          if(AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUN T_MARGIN_MODE_RETAIL_NETTING || AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_M ARGIN_MODE_EXCHANGE)
          {
          for(int i=PositionsTotal()-1;i>=0;i--)
          {
          if(PositionSelect(PositionGetSymbol(i)))
          {
          volume += PositionGetDouble(POSITION_VOLUME);
          }
          }
          }
          return(NormalizeDouble(volume,2));
          }
          Правила форума | КИСА | Акция «Деньги за посты» | Как вставить картинку?

          Комментарий

          • #6 Свернуть

            подскажите скрипт подсчета сделок. Типа сколько лотов сделано за неделю/месяц.

            Нашел подсчет профитов и прочие тики , но почему то просто объемов проторгованных не нашел.
            Нужно поработать с историей сделок.
            Сори если не сюда написал, так как история к открытым не относится.

            Комментарий

            • <a href="https://www.instaforex.org/ru/?x=ruforum">InstaForex</a>
            • #7 Свернуть

              Сообщение от Galaxy Посмотреть сообщение
              подскажите скрипт подсчета сделок. Типа сколько лотов сделано за неделю/месяц.

              Нашел подсчет профитов и прочие тики , но почему то просто объемов проторгованных не нашел.
              Нужно поработать с историей сделок.
              Сори если не сюда написал, так как история к открытым не относится.
              Для какого терминала, МТ4 или МТ5?
              Я себе делал для МТ4 советник, где то по перекликающейся задаче.
              Пример журнала прилагается.

              Комментарий

              X