







serjloskut писал(а):Добрый день, коллеги. В "муках" познания mql4 вот такой вопрос появился. Как ограничить работу советника по месячной прибыли (в процентах)?
Например 1 апреля был запущен советник на счете в 1000 уе. Нам нужно, чтобы как только эквити (именно эквити) увеличится на 5%, советник прекратил работу до начала следующего месяца. Как только начинается следующий месяц, советник принимается за работу, пока эквити не будет увеличено еще на 5% и т.д.
Единоразово ограничить - проблем не возникает. А вот как сделать, чтоб советник сам понимал, когда остановиться каждый месяц без моего вмешательства?


Haos писал(а):serjloskut писал(а):Добрый день, коллеги. В "муках" познания mql4 вот такой вопрос появился. Как ограничить работу советника по месячной прибыли (в процентах)?
Например 1 апреля был запущен советник на счете в 1000 уе. Нам нужно, чтобы как только эквити (именно эквити) увеличится на 5%, советник прекратил работу до начала следующего месяца. Как только начинается следующий месяц, советник принимается за работу, пока эквити не будет увеличено еще на 5% и т.д.
Единоразово ограничить - проблем не возникает. А вот как сделать, чтоб советник сам понимал, когда остановиться каждый месяц без моего вмешательства?
Ограничение по времени указывается в условии.



Haos писал(а):Определить баланс на начала месяца как разность между текущим балансом, закрытыми позами за месяц и состоянием по средствам.


//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит в валюте депозита                  |
//|             закрытых с определённой даты позиций                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента             (""   - любой символ,         |
//|                                               NULL - текущий символ)       |
//|    op - операция                             (-1   - любая позиция)        |
//|    mn - MagicNumber                          (-1   - любой магик)          |
//|    dt - Дата и время в секундах с 1970 года  ( 0   - с начала истории)     |
//+----------------------------------------------------------------------------+
double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0)
{
  double p=0;
  int    i, k=OrdersHistoryTotal();
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (dt<OrderCloseTime()) {
              p+=OrderProfit()+OrderCommission()+OrderSwap();
            }
          }
        }
      }
    }
  }
  return(p);
}


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения