Как выбрать все цены по которым открывалась позиция
igor_m:
Вкратце. В MQL5 имеется функция HistorySelectByPosition(), которая возвращает из истории все сделки и ордера, которые связаны с конкретной позицией, указанной пользователем. Просматриваете все сделки, связанные с этой позицией, и анализируете у них объём сделки, цену сделки, направление сделки и пр. ...При желании можно отслеживать и ордера, на основании которых сделка была совершена.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, помоги пож-та с таким вопросом:
У меня есть советник в mql4. Там есть функция которая выбирает все открытые ордера и считает сумму цен по которым они открывались.
Функция имеет приблизительно такой вид:
int gi_312=0;
double gd_240 = 0;
for (gi_312 = OrdersTotal() - 1; gi_312 >= 0; gi_312--) {OrderSelect(gi_312, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
gd_240 += OrderOpenPrice();
}
}
}
Мне нужно переделать это под mql5, но я столкнулся со следующей проблемой - конечно предварительно изучив что в mql5 есть такие понятия как сделка, ордер, позиция, и что не может быть противоположных позиций, и что ордера - это вроде как только отложенники.
У меня не получается посчитать сумму цен открытий ордеров.
Код с позицией не дает нужного рез-та, т.к. PositionGetDouble(POSITION_PRICE_OPEN) возвращает усредненную цену, если открываешь разными объемами...
double gd_240=0;
if(PositionSelect(_Symbol))
{if (PositionGetString(POSITION_SYMBOL) == Symbol() && PositionGetInteger(POSITION_MAGIC) == MagicNumber) {
if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY || PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) {
gd_240 += PositionGetDouble(POSITION_PRICE_OPEN);
}
}
Помогите пож-та разобраться как мне сделать выборку всех цен, по которым открывалась данная позиция.
Спасибо