Здравствуйте, Артём! Столкнулся с одной проблемой в своём советнике, поэтому хочу досконально разобраться с этими транзакциями.
Суть проблемы такая:
советник открыл позицию. Насколько понимаю - это сделка должна добавиться в историю. В историю где? На сервере моего форекс-дилера или в терминале МТ5 на моём компьютере? Не понятно.
далее позиция останется открытой до тех пор, пока не сработает стоп-лосс или тейк-профит. Это понятно. Но если до закрытия позиции произойдёт отключение электроэнергии и допустим компьютер выключится, или просто по какой-то причине сам закрою терминал МТ5, то где тогда информация по этой сделке сохранится? И будет ливообще эта информация где-то хранится?
Можете более детально объяснить эти непонятные мне моменты.
С уважением, Владимир.
Данные хранятся на сервере. Терминал их получает в своё окружение и советник затем их использует.
Тогда странно, почему сегодня советник не нашёл сделку, открытую вчера? Раньше находил. Вот код:
Небольшое добавление. Может ли ролловер каким-то образом влиять на тикет открытой сделки, а именно менять его?
С уважением, Владимир.
Сервер при совершении сделки отправил в терминал «сообщение» о том что сделка заключена и забыл об этом. Ему, серверу, глубоко плевать получил терминал это или нет. Так-что если в момент совершения сделки терминал выключен, то о сделке можно узнать только прочитав историю с момента закрытия терминала до текущего момента.
Alexey Viktorov #: Так-что если в момент совершения сделки терминал выключен, то о сделке можно узнать только прочитав историю с момента закрытия терминала до текущего момента.
Привет, Алексей! В момент совершения сделки, а именно в момент открытия позиции, терминал был включен, т.к. советник её и открывал.
Тогда странно, почему сегодня советник не нашёл сделку, открытую вчера? Раньше находил. Вот код:
voidOnTradeTransaction(
constMqlTradeTransaction& trans, // структура торговой транзакцииconstMqlTradeRequest& request, // структура запросаconstMqlTradeResult& result // структура ответа
)
{
if(trans.type==TRADE_TRANSACTION_DEAL_ADD)
{
if(HistoryDealSelect(trans.deal) && HistoryDealGetInteger(trans.deal,DEAL_ENTRY)==DEAL_ENTRY_IN)
{
pos_ticket=trans.position;
pos_open=trans.price;
}
}
}
Небольшое добавление. Может ли ролловер каким-то образом влиять на тикет открытой сделки, а именно менять его?
С уважением, Владимир.
Так вчера он её и находил. А сегодня уже поезд ту-ту, далеко в пути…
Если вчера был ордер, отложенный, а сегодня уже позиция, о чём я и говорил, значит сделка была в момент когда терминал был закрыт… Соответственно ищите её по ID позиции, о чём и говорит Артём.
Тогда странно, почему сегодня советник не нашёл сделку, открытую вчера?
Алексей, возможно сложно выразил свою мысль, но суть её такова - вчера советник открыл позицию, т.е. совершил сделку, а не открыл сделку, как было написано мною ранее. Сегодня советник должен был согласно алгоритма увидеть открытую вчера позицию и выполнить определенные манипуляции. Но, советник, по непонятным пока мне причинам, не увидел уже открытую вчера позицию и, соответственно, не предпринял никаких действий. Надеюсь, сейчас более понятно выразил свою мысль?
Алексей, возможно сложно выразил свою мысль, но суть её такова - вчера советник открыл позицию, т.е. совершил сделку, а не открыл сделку, как было написано мною ранее. Сегодня советник должен был согласно алгоритма увидеть открытую вчера позицию и выполнить определенные манипуляции. Но, советник, по непонятным пока мне причинам, не увидел уже открытую вчера позицию и, соответственно, не предпринял никаких действий. Надеюсь, сейчас более понятно выразил свою мысль?
С уважением, Владимир.
Володь, мы с тобой много говорили об этом голосом. Я всё объяснил как мог, ты вроде всё понял, но вот опять…
Функция OnTradeTransaction это функция обработки события. Совершение сделки это событие которое было вчера. Вот вчера и должна была отработать функция OnTradeTransaction, а никак не сегодня. Сегодня уже нет события совершения ЭТОЙ сделки… Сегодня были и наверное ещё будут, но другие.
Здравствуйте, Артём! Столкнулся с одной проблемой в своём советнике, поэтому хочу досконально разобраться с этими транзакциями.
Суть проблемы такая:
Можете более детально объяснить эти непонятные мне моменты.
С уважением, Владимир.
Данные хранятся на сервере. Терминал их получает в своё окружение и советник затем их использует.
Данные хранятся на сервере. Терминал их получает в своё окружение и советник затем их использует.
Тогда странно, почему сегодня советник не нашёл сделку, открытую вчера? Раньше находил. Вот код:
Небольшое добавление. Может ли ролловер каким-то образом влиять на тикет открытой сделки, а именно менять его?
С уважением, Владимир.
Тогда странно, почему сегодня советник не нашёл сделку, открытую вчера? Раньше находил. Вот код:
Небольшое добавление. Может ли ролловер каким-то образом влиять на тикет открытой сделки, а именно менять его?
С уважением, Владимир.
По идентификатору открытой позиции Вы можете найти все её сделки и ордера.
Тогда странно, почему сегодня советник не нашёл сделку, открытую вчера? Раньше находил. Вот код:
Небольшое добавление. Может ли ролловер каким-то образом влиять на тикет открытой сделки, а именно менять его?
С уважением, Владимир.
Сервер при совершении сделки отправил в терминал «сообщение» о том что сделка заключена и забыл об этом. Ему, серверу, глубоко плевать получил терминал это или нет. Так-что если в момент совершения сделки терминал выключен, то о сделке можно узнать только прочитав историю с момента закрытия терминала до текущего момента.
Так-что если в момент совершения сделки терминал выключен, то о сделке можно узнать только прочитав историю с момента закрытия терминала до текущего момента.
Привет, Алексей! В момент совершения сделки, а именно в момент открытия позиции, терминал был включен, т.к. советник её и открывал.
С уважением, Владимир.
По идентификатору открытой позиции Вы можете найти все её сделки и ордера.
Понятно. Пошёл дальше изучать Справочник.
С уважением, Владимир.
Привет, Алексей! В момент совершения сделки, а именно в момент открытия позиции, терминал был включен, т.к. советник её и открывал.
С уважением, Владимир.
А как понять это
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Торговые транзакции. Структуры запросов и ответов, описание и вывод в журнал"
MrBrooklin, 2023.10.17 16:48
Тогда странно, почему сегодня советник не нашёл сделку, открытую вчера? Раньше находил. Вот код:
Небольшое добавление. Может ли ролловер каким-то образом влиять на тикет открытой сделки, а именно менять его?
С уважением, Владимир.
Так вчера он её и находил. А сегодня уже поезд ту-ту, далеко в пути…
Если вчера был ордер, отложенный, а сегодня уже позиция, о чём я и говорил, значит сделка была в момент когда терминал был закрыт… Соответственно ищите её по ID позиции, о чём и говорит Артём.
Соответственно ищите её по ID позиции, о чём и говорит Артём.
Алексей, мы, что, уже перешли на Вы? ))
Да, по поводу ID позиции уже понял. Попробую разобраться самостоятельно при помощи:
С уважением, Владимир.
Тогда странно, почему сегодня советник не нашёл сделку, открытую вчера?
Алексей, возможно сложно выразил свою мысль, но суть её такова - вчера советник открыл позицию, т.е. совершил сделку, а не открыл сделку, как было написано мною ранее. Сегодня советник должен был согласно алгоритма увидеть открытую вчера позицию и выполнить определенные манипуляции. Но, советник, по непонятным пока мне причинам, не увидел уже открытую вчера позицию и, соответственно, не предпринял никаких действий. Надеюсь, сейчас более понятно выразил свою мысль?
С уважением, Владимир.
Алексей, возможно сложно выразил свою мысль, но суть её такова - вчера советник открыл позицию, т.е. совершил сделку, а не открыл сделку, как было написано мною ранее. Сегодня советник должен был согласно алгоритма увидеть открытую вчера позицию и выполнить определенные манипуляции. Но, советник, по непонятным пока мне причинам, не увидел уже открытую вчера позицию и, соответственно, не предпринял никаких действий. Надеюсь, сейчас более понятно выразил свою мысль?
С уважением, Владимир.
Володь, мы с тобой много говорили об этом голосом. Я всё объяснил как мог, ты вроде всё понял, но вот опять…
Функция OnTradeTransaction это функция обработки события. Совершение сделки это событие которое было вчера. Вот вчера и должна была отработать функция OnTradeTransaction, а никак не сегодня. Сегодня уже нет события совершения ЭТОЙ сделки… Сегодня были и наверное ещё будут, но другие.