Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 100
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
int index // номер сделки
);
Что такое номер сделки?
Как выбрать последнюю сделку? Индекс 0?
Есть счет с открытой позицией и с историей сделок. Хочу выбрать последнюю сделку:
#include <Trade\DealInfo.mqh>
CDealInfo deal;
for(int n=20;n>=0;n--)
{
deal.SelectByIndex(n);
Print("Тикет сделки=",deal.Ticket()," n=",n);
}
Все тикеты 0...
int index // номер сделки
);
Что такое номер сделки?
См. описание функции HistoryDealGetTicket(). Там же пример работы со списком сделок.
Я попробовал подсказать ответ на Ваш вопрос "Что такое номер сделки?". Можно ли считать, что с этим вопросом Вы разобрались?
1. К сожалению, я стараюсь не пользоваться Стандартной библиотекой, поэтому не смогу правильно подсказать, как работать с методом SelectByIndex(). Можно только отметить, что сам класс CDealInfo позиционируется как класс работы со свойствами сделки, т.е. вопросы получения списка сделок вроде бы остаются за бортом.
2. Как Вы сами знаете, метод SelectByIndex() просто использует функцию HistoryDealGetTicket(). Из описания этой функции следует, что перед обращением к сделке необходимо получить список всех сделок. В частности,
С год назад я задавал на форуме вопрос, можно ли считать, что последняя сделка в списке всегда имеет индекс HistoryDealsTotal()-1, но ответа не получил (или не заметил, что вряд ли). Методом научного тыка опровержение данному тезису не нашёл. Так что по логике, каждая новая сделка, сведения о которой поступают в базу терминала, должна просто увеличивать список сделок на единицу и, соответственно, индексы в списке сделок могли бы присваиваться каждой новой сделке по возрастанию. Как оно обстоит на самом деле - не знаю.
3. Советую также ознакомиться со статьёй Ордерa, позиции и сделки в MetaTrader 5 и (сам не читал) - Как использовать торговые классы Стандартной библиотеки при написании советника.
Фсё :)
Знатоки, помогите, пожалуйста. Соединял два советника для, так сказать, синергического эффекта, одни, которые по проще вроде соединяются, ну а вот этот что-то не компилируется, хотя все сделал правильно как с предыдущим. Вот что выдает
'Supervisor' - function can be declared only in the global scope 20_200_pips_MQL5_v1.mq5 360 18
'Perceptron' - function can be declared only in the global scope 20_200_pips_MQL5_v1.mq5 418 8
'basicTradingSystem' - function can be declared only in the global scope 20_200_pips_MQL5_v1.mq5 434 6
функция может быть объявлена только в глобальной области видимости
Я в полном ступоре где эта глобальна область
'Supervisor' - function can be declared only in the global scope 20_200_pips_MQL5_v1.mq5 360 18
'Perceptron' - function can be declared only in the global scope 20_200_pips_MQL5_v1.mq5 418 8
'basicTradingSystem' - function can be declared only in the global scope 20_200_pips_MQL5_v1.mq5 434 6
функция может быть объявлена только в глобальной области видимости
Я в полном ступоре где эта глобальна область
Такие сообщения появляются, например, когда одна функция объявляется внутри другой. Посмотрите, нет ли в коде чего-нибудь подобного: