А давайте сделаем из этого "мультик" (мультивалютник) - страница 4

 
rid писал(а) >>

может вот такая подойдет, -

Функция PriceOpenLastPos().
Эта функция возвращает цену открытия последней открытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.

https://forum.mql4.com/ru/11287/page24

Спасибо, попробую, а эта функция работает и в индикаторе?

 

Не могу сказать. Ведь индикатор не открывает позиции . Зачем индюку цена открытых или закрытых позиций?

У него другие задачи.

Думаю, что будет работать и в индюке.

 
rid писал(а) >>

Не могу сказать. Ведь индикатор не открывает позиции . Зачем индюку цена открытых или закрытых позиций?

У него другие задачи.

Думаю, что будет работать и в индюке.

Подскажите, а как правильно вставить эту функцию в индикатор?

При компиляции редактор выдает ошибку на первую скобку и последующие переменные.

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)
и т.д.

 

Затрудняюсь сказать. Я не спец. по индюкам.

Да и непонятно мне, зачем в индюке учитывать цену открытия ордера.

Вы уверены, что для ваших целей нужен именно такой индюк?

Может,  проще нужные вам функции реализовать в отдельном советнике, кот. учитывает ордера?

 
rid писал(а) >>

Затрудняюсь сказать. Я не спец. по индюкам.

Да и непонятно мне, зачем в индюке учитывать цену открытия ордера.

Вы уверены, что для ваших целей нужен именно такой индюк?

Может, проще нужные вам функции реализовать в отдельном советнике, кот. учитывает ордера?

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

Для принятия некоторых решений мне нужна цена открытия ордера, вот я и пытаюсьрешить эту проблему, на демо работает конструкция которую я привела в начале, в тесторе не работает. У меня индикатор - динамический, можно отлаживать только в демо, или в тесторе в режиме визуализации.

 

Я вот сейчас вставил эту фунцию в первый попавшийся индюк (ATR)  и у меня всё скомпеллировалось.

(1 предупреждение только, как и положено) 

А вы в какую часть кода вставляете эту функцию? Нужно вставлять в самый конец кода, вне функции СТАРТ.

А уж потом, в функции СТАРТ вызывать её для расчетов ваших

 
rid писал(а) >>
Я вот сейчас вставил эту фунцию в первый попавшийся индюк (ATR) и у меня всё скомпеллировалось.

Как вставили? Весь вышеприведенный текст один к одному, или в виде подфункции void?

 
Один к одному.
 
rid писал(а) >>
Один к одному.

Странно, у меня выдаются ошибки при компиляции.

 
rid писал(а) >>

Я вот сейчас вставил эту фунцию в первый попавшийся индюк (ATR) и у меня всё скомпеллировалось.

(1 предупреждение только, как и положено)

А вы в какую часть кода вставляете эту функцию? Нужно вставлять в самый конец кода, вне функции СТАРТ.

А уж потом, в функции СТАРТ вызывать её для расчетов ваших

Получилось, вставила вне старт, компиляция прошла.

Спасибо.

Причина обращения: