В статье рассказывается о том, как использовать основной функционал торговых классов Стандартной библиотеки при написании советников, в которых применяется открытие, закрытие и модификация позиции, проверка свободной маржи перед размещением торговых ордеров, размещение и удаление отложенных ордеров. Показано, как использовать торговые классы для получения свойств ордеров и сделок.
beginner: Да, в этом и проблема, т.е надо найти последнюю сделку по нужному инструменту и получить ее время, а попроще можно?
Интересует какая-то конкретная позиция (известен символ и ее Id) или общий случай для всех позиций?
Если просто рыться в истории и анализировать сделки (при помощи mydeal), то примерно так:
1. Получаем общее количество сделок за период, перебирая их выбирая только те что по символу/или те которые участвовали в формировании позы
if (HistorySelect(0,TimeCurrent()))
ulong d_ticket;// deal ticket
{
// Получить общее количество сделок в историиint tot_deals = HistoryDealsTotal();
for(int j=0; j<tot_deals; j++)
{
d_ticket = HistoryDealGetTicket(j);
if(d_ticket>0)
{
mydeal.Ticket(d_ticket)
if(mydeal.Symbol()==SymbolTitle)
{
//формируем список сделок и анализируем его (если я правильно понял последняя сделка наша)
}
}
}
}
2. отбирать сделки луче не по символу, а по идентификатору конкретной позиции (так проще и надежней).
Хотя уверен есть более правильные и простые решения.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
и т.д. и т.п.
Вот код в советнике (много функций испробовал для определения равенства линии индикатора 0)
взял самую простую
здесь у нас значения линии индикатора вот из лога тестера через принт
нуля нет, а смотришь на индикатор - явный ноль - и в значениях
индюка тоже ноль
что за?
Вот такая ерунда полезла в журнале после выполнения команды обновить на графике:
2011.02.03 02:24:51 HistoryBase '#IBM' 1 invalid bars removed
2011.02.03 02:24:50 HistoryBase '#IBM' 1 invalid bars removed
2011.02.03 02:24:49 HistoryBase '#IBM' 1 invalid bars removed
2011.02.03 02:24:48 HistoryBase '#IBM' 1 invalid bars removed
2011.02.03 02:24:47 HistoryBase '#IBM' 1 invalid bars removed
2011.02.03 02:24:46 HistoryBase '#IBM' 1 invalid bars removed
и т.д. через каждую секунду.
ТФ часовой
одни замарочки - перерисовка не будет влиять на работу советника
и т.д. и т.п.
Вот код в советнике (много функций испробовал для определения равенства линии индикатора 0)
взял самую простую
здесь у нас значения линии индикатора вот из лога тестера через принт
нуля нет, а смотришь на индикатор - явный ноль - и в значениях
индюка тоже ноль
что за?
массив перевернуть не забыли, случаем?
Интересно, получается Советник один и тотже на разных компьютерах добавляет шаблоны к графику из разных мест:
на 1 компе из MetaTrader 5\Profiles\Templates
на 2 компе из MetaTrader 5\MQL5\Files
строка добавления в советнике ChartApplyTemplate(handle_Chart,"Sova15_30.tpl")
В чем дело, кто поможет разобратся?
Подскажите как получить время последнего изменения позиции?
Подскажите как получить время последнего изменения позиции?
Определить какая сделка по символу была последней.
Можно или отлавливать в OnTrade() или в истории.
https://www.mql5.com/ru/articles/138 там найдите myposition.Time()
Так возвращается время открытия позиции, если я все правильно помню (т.е. на сколько я понимаю вернется время первой сделки, которая позицию открыла).
Что касается указанной статьи, могут пригодиться myhistory и mydeal (может еще что подойдет).
Определить какая сделка по символу была последней.
Можно или отлавливать в OnTrade() или в истории.
Так возвращается время открытия позиции, если я все правильно помню (т.е. на сколько я понимаю вернется время первой сделки, которая позицию открыла).Да, в этом и проблема, т.е надо найти последнюю сделку по нужному инструменту и получить ее время, а попроще можно?
Интересует какая-то конкретная позиция (известен символ и ее Id) или общий случай для всех позиций?
Если просто рыться в истории и анализировать сделки (при помощи mydeal), то примерно так:
1. Получаем общее количество сделок за период, перебирая их выбирая только те что по символу/или те которые участвовали в формировании позы
2. отбирать сделки луче не по символу, а по идентификатору конкретной позиции (так проще и надежней).
Хотя уверен есть более правильные и простые решения.