Tapochun: Вы, как мне кажется, не здесь вопрос задаете. Создайте отдельную тему, прикрепите туда код индикатора и надейтесь, что кто-нибудь поможет. Без кода... маловероятно, что Вам кто-то подскажет.
При написании ТЗ, столкнулся с ситуацией в которой не пойму как правильно описать алгоритм. Подскажите возможно частичное закрытие позиции в работе советника?
Nikolay Lampickiy: При написании ТЗ, столкнулся с ситуацией в которой не пойму как правильно описать алгоритм. Подскажите возможно частичное закрытие позиции в работе советника?
Для этого надо в приказе на закрытие указывать лот меньше, чем лот позиции (это если МТ4, в МТ5 можно открыть противоположную позицию с меньшим лотом, в итоге они перекрываются). В рынке останется позиция с остаточным лотом.
Nikolay Lampickiy: При написании ТЗ, столкнулся с ситуацией в которой не пойму как правильно описать алгоритм. Подскажите возможно частичное закрытие позиции в работе советника?
А что там сложного ? Цена проходит определенное расстояние пунктов в профит, закрывается половина позиции, если позиция не делится ровно (например 0.09) то закрывается большая часть (0.05) и стоп переносится в безубыток, далее проходим ещё расстояние закрывает опять половину от того что осталось (0.02) и стоп переносим на расстояние шага закрытия в плюс и так пока не закроется вся позиция или не выбьет по стопу. Шаг может быть фиксированный или каждый раз рассчитываться от какого либо диапазона, зависит от торговой системы.
Vladimir Zubov: А что там сложного ? Цена проходит определенное расстояние пунктов в профит, закрывается половина позиции, если позиция не делится ровно (например 0.09) то закрывается большая часть (0.05) и стоп переносится в безубыток, далее проходим ещё расстояние закрывает опять половину от того что осталось (0.02) и стоп переносим на расстояние шага закрытия в плюс и так пока не закроется вся позиция или не выбьет по стопу. Шаг может быть фиксированный или каждый раз рассчитываться от какого либо диапазона, зависит от торговой системы.
Я правильно понимаю? В программном языке MQL4 есть возможность формализовать закрытие только половины объёма рыночного ордера... типа лот 10 и при достижение ценой нужного уровня закрыть 5 лотов.
Или есть возможность 1/3?
Или проще реализовать эту идею, в советнике, через выставления разных ордеров. При достижении нужного уровня ценой закрывается один ордер, а другой остаётся, в место частичного закрытия объёма рыночного ордера. Что скажите?
Vitalie Postolache: Для этого надо в приказе на закрытие указывать лот меньше, чем лот позиции (это если МТ4, в МТ5 можно открыть противоположную позицию с меньшим лотом, в итоге они перекрываются). В рынке останется позиция с остаточным лотом.
противоположная позиция не устраивает... спасибо за ответ
Я правильно понимаю? В программном языке MQL4 есть возможность формализовать закрытие только половины объёма рыночного ордера... типа лот 10 и при достижение ценой нужного уровня закрыть 5 лотов.
Или есть возможность 1/3?
Или проще реализовать эту идею, в советнике, через выставления разных ордеров. При достижении нужного уровня ценой закрывается один ордер, а другой остаётся, в место частичного закрытия объёма рыночного ордера. Что скажите?
Можно конечно и открывать несколько ордеров с разными уровнями профита, в случае обрыва связи так будет даже надежнее, так как уровни тейкпрофита хранятся на сервере и исполнятся если их пересечет цена.
Можно конечно и открывать несколько ордеров с разными уровнями профита, в случае обрыва связи так будет даже надежнее, так как уровни тейкпрофита хранятся на сервере и исполнятся если их пересечет цена.
Всем доброго времени суток! Столкнулась с проблемой, хотелось бы услышать мнение профессионалов или более опытных пользователей МТ5. Написала индикатор, а также класс CEventBase, с помощью которого индикатор генерирует события. При запуске экспертов, обрабатывающих эти события, рано или поздно, при запуске в реальном времени, сыпятся ошибки: 4001, 4102, 4104. Начав "сыпаться" они уже не перестают этого делать) прикрепляю код функции Generate, которая собчтвенно и является источником всех этих бед. Буду очень рада услышать Ваше мнение на этот счет...)
Всем хорошего дня!
bool CEventBase::Generate(long _chart_id, int _id_ind, SEventData &_data,
constbool _is_custom=true)
{
bool is_generated = true;
// если индекс id события в массиве не веренif (_id_ind < 0 || _id_ind >= aEvents.Total())
{
Print("Не верно задан индекс ID события");
return (false);
}
// заполняем поля
CEvent *event = aEvents.At(_id_ind);
this._id = (ushort)(CHARTEVENT_CUSTOM+event.id);
this._data = _data;
this._data.sparam = event.name; // сохраняем имя событияif(_is_custom)
{
ResetLastError();
is_generated = EventChartCustom(_chart_id, event.id, this._data.lparam,
this._data.dparam, this._data.sparam);
if(!is_generated && _LastError != 4104)
{
Print("is_generated = ", is_generated);
PrintFormat("%s Error while generating a custom event: %d", __FUNCTION__,_LastError);
Print( ChartSymbol(_chart_id)," ",PeriodToString(ChartPeriod(_chart_id)), "Ошибка! _chart_id =", _chart_id, " event.id = ", event.id, " data.dparam = " ,this._data.dparam, " data.sparam = ", this._data.sparam);
}
}
return is_generated;
}
Всем доброго времени суток! Столкнулась с проблемой, хотелось бы услышать мнение профессионалов или более опытных пользователей МТ5. Написала индикатор, а также класс CEventBase, с помощью которого индикатор генерирует события. При запуске экспертов, обрабатывающих эти события, рано или поздно, при запуске в реальном времени, сыпятся ошибки: 4001, 4102, 4104. Начав "сыпаться" они уже не перестают этого делать) прикрепляю код функции Generate, которая собчтвенно и является источником всех этих бед. Буду очень рада услышать Ваше мнение на этот счет...)
Всем хорошего дня!
Очевидно что представленный вами метод является транзитным. Ошибка скорее всего не в нем. По представленным данным не понятно что происходит. Вариантов может быть несколько:
Неправильно указывается идентификатор графика (о чем и говорят ошибка 4101).
Слишком частые запросы;
Неверные другие параметры (идентификаторы событий например).
Судя по уровню написанного Вами кода можно сказать, что ошибка может быть где угодно и какая угодно.
Вы, как мне кажется, не здесь вопрос задаете. Создайте отдельную тему, прикрепите туда код индикатора и надейтесь, что кто-нибудь поможет. Без кода... маловероятно, что Вам кто-то подскажет.
При написании ТЗ, столкнулся с ситуацией в которой не пойму как правильно описать алгоритм. Подскажите возможно частичное закрытие позиции в работе советника?
При написании ТЗ, столкнулся с ситуацией в которой не пойму как правильно описать алгоритм. Подскажите возможно частичное закрытие позиции в работе советника?
А что там сложного ? Цена проходит определенное расстояние пунктов в профит, закрывается половина позиции, если позиция не делится ровно (например 0.09) то закрывается большая часть (0.05) и стоп переносится в безубыток, далее проходим ещё расстояние закрывает опять половину от того что осталось (0.02) и стоп переносим на расстояние шага закрытия в плюс и так пока не закроется вся позиция или не выбьет по стопу. Шаг может быть фиксированный или каждый раз рассчитываться от какого либо диапазона, зависит от торговой системы.
Я правильно понимаю? В программном языке MQL4 есть возможность формализовать закрытие только половины объёма рыночного ордера... типа лот 10 и при достижение ценой нужного уровня закрыть 5 лотов.
Или есть возможность 1/3?
Или проще реализовать эту идею, в советнике, через выставления разных ордеров. При достижении нужного уровня ценой закрывается один ордер, а другой остаётся, в место частичного закрытия объёма рыночного ордера. Что скажите?
Для этого надо в приказе на закрытие указывать лот меньше, чем лот позиции (это если МТ4, в МТ5 можно открыть противоположную позицию с меньшим лотом, в итоге они перекрываются). В рынке останется позиция с остаточным лотом.
Я правильно понимаю? В программном языке MQL4 есть возможность формализовать закрытие только половины объёма рыночного ордера... типа лот 10 и при достижение ценой нужного уровня закрыть 5 лотов.
Или есть возможность 1/3?
Или проще реализовать эту идею, в советнике, через выставления разных ордеров. При достижении нужного уровня ценой закрывается один ордер, а другой остаётся, в место частичного закрытия объёма рыночного ордера. Что скажите?
Можно и так и так. OrderClose позволяет закрывать объём который ему указывают. https://docs.mql4.com/ru/trading/orderclose
Можно конечно и открывать несколько ордеров с разными уровнями профита, в случае обрыва связи так будет даже надежнее, так как уровни тейкпрофита хранятся на сервере и исполнятся если их пересечет цена.
Можно и так и так. OrderClose позволяет закрывать объём который ему указывают. https://docs.mql4.com/ru/trading/orderclose
Можно конечно и открывать несколько ордеров с разными уровнями профита, в случае обрыва связи так будет даже надежнее, так как уровни тейкпрофита хранятся на сервере и исполнятся если их пересечет цена.
Всем доброго времени суток! Столкнулась с проблемой, хотелось бы услышать мнение профессионалов или более опытных пользователей МТ5. Написала индикатор, а также класс CEventBase, с помощью которого индикатор генерирует события. При запуске экспертов, обрабатывающих эти события, рано или поздно, при запуске в реальном времени, сыпятся ошибки: 4001, 4102, 4104. Начав "сыпаться" они уже не перестают этого делать) прикрепляю код функции Generate, которая собчтвенно и является источником всех этих бед. Буду очень рада услышать Ваше мнение на этот счет...)
Всем хорошего дня!
Всем доброго времени суток! Столкнулась с проблемой, хотелось бы услышать мнение профессионалов или более опытных пользователей МТ5. Написала индикатор, а также класс CEventBase, с помощью которого индикатор генерирует события. При запуске экспертов, обрабатывающих эти события, рано или поздно, при запуске в реальном времени, сыпятся ошибки: 4001, 4102, 4104. Начав "сыпаться" они уже не перестают этого делать) прикрепляю код функции Generate, которая собчтвенно и является источником всех этих бед. Буду очень рада услышать Ваше мнение на этот счет...)
Всем хорошего дня!
Очевидно что представленный вами метод является транзитным. Ошибка скорее всего не в нем. По представленным данным не понятно что происходит. Вариантов может быть несколько:
- Неправильно указывается идентификатор графика (о чем и говорят ошибка 4101).
- Слишком частые запросы;
- Неверные другие параметры (идентификаторы событий например).
Судя по уровню написанного Вами кода можно сказать, что ошибка может быть где угодно и какая угодно.