Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
может вот такая подойдет, -
Функция PriceOpenLastPos().
Эта функция возвращает цену открытия последней открытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
https://forum.mql4.com/ru/11287/page24
Спасибо, попробую, а эта функция работает и в индикаторе?
Не могу сказать. Ведь индикатор не открывает позиции . Зачем индюку цена открытых или закрытых позиций?
У него другие задачи.
Думаю, что будет работать и в индюке.
Не могу сказать. Ведь индикатор не открывает позиции . Зачем индюку цена открытых или закрытых позиций?
У него другие задачи.
Думаю, что будет работать и в индюке.
Подскажите, а как правильно вставить эту функцию в индикатор?
При компиляции редактор выдает ошибку на первую скобку и последующие переменные.
double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0;
int k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}
return(r);
}
}
'(' - function definition unexpected D:\MT4\experts\indicators\Astrea.mq4 (627, 24)
'sy' - variable not defined D:\MT4\experts\indicators\Astrea.mq4 (632, 7)
и т.д.
Затрудняюсь сказать. Я не спец. по индюкам.
Да и непонятно мне, зачем в индюке учитывать цену открытия ордера.
Вы уверены, что для ваших целей нужен именно такой индюк?
Может, проще нужные вам функции реализовать в отдельном советнике, кот. учитывает ордера?
Затрудняюсь сказать. Я не спец. по индюкам.
Да и непонятно мне, зачем в индюке учитывать цену открытия ордера.
Вы уверены, что для ваших целей нужен именно такой индюк?
Может, проще нужные вам функции реализовать в отдельном советнике, кот. учитывает ордера?
Логику формирования торговых сигналов я реализую в индикаторе, а в советник через глобальную переменную отправляю уже сформированный сигнал открытия\закрытия ордеров.
Для принятия некоторых решений мне нужна цена открытия ордера, вот я и пытаюсьрешить эту проблему, на демо работает конструкция которую я привела в начале, в тесторе не работает. У меня индикатор - динамический, можно отлаживать только в демо, или в тесторе в режиме визуализации.
Я вот сейчас вставил эту фунцию в первый попавшийся индюк (ATR) и у меня всё скомпеллировалось.
(1 предупреждение только, как и положено)
А вы в какую часть кода вставляете эту функцию? Нужно вставлять в самый конец кода, вне функции СТАРТ.
А уж потом, в функции СТАРТ вызывать её для расчетов ваших
Я вот сейчас вставил эту фунцию в первый попавшийся индюк (ATR) и у меня всё скомпеллировалось.
Как вставили? Весь вышеприведенный текст один к одному, или в виде подфункции void?
Один к одному.
Странно, у меня выдаются ошибки при компиляции.
Я вот сейчас вставил эту фунцию в первый попавшийся индюк (ATR) и у меня всё скомпеллировалось.
(1 предупреждение только, как и положено)
А вы в какую часть кода вставляете эту функцию? Нужно вставлять в самый конец кода, вне функции СТАРТ.
А уж потом, в функции СТАРТ вызывать её для расчетов ваших
Получилось, вставила вне старт, компиляция прошла.
Спасибо.