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);
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения