Как на MQL 5 получить данные по времени и цене открытия и времени и цене закрытия сделки? - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ребята, а если такая ситуация.
Имеем временной диапазон
Нужна функция которая внутри этого диапазона должна определить, была ли в истории закрытая позиция, если была, то возвращаем true, если не было то false
Ребята, а если такая ситуация.
Имеем временной диапазон
Нужна функция которая внутри этого диапазона должна определить, была ли в истории закрытая позиция, если была, то возвращаем true, если не было то false
Вы задали время. Чтобы провести поиск в торговой истории нужна ДАТА.
Ребята, а если такая ситуация.
Имеем временной диапазон
Нужна функция которая внутри этого диапазона должна определить, была ли в истории закрытая позиция, если была, то возвращаем true, если не было то false
Пример работы с торговой историей в заданном диапазоне ДАТ: History Deals and Orders.
Скрипт "History Deals and Orders" выводит абсолютно все свойства для сделок и ордеров из торговой истории в заданном временном интервале.
Доступен вывод как во вкладку "Эксперты" терминала, так и в текстовой файл (текстовой файл располагается в папке [data folder]\MQL5\Files). Если вывод осуществляется в текстовый файл, то алгоритм следующий:
Чтобы увидеть и открыть текстовой файл, нужно:
Пример текстового файла:
Вы задали время. Чтобы провести поиск в торговой истории нужна ДАТА.
Дата сегодняшняя к примеру с 00:00 по 23:59
Смысл самой идеи
есть временной фильтр в котором устанавливается временной диапазон, роботу разрешено торговать только в этом диапазоне
но как только в этом диапазоне появилась закрытая позиция, то робот прекращает дальнейшую торговлю
то есть мы по сути разрешаем всего одну позицию - вход в рынок в этом временном диапазоне, открылись, закрылись - ждем следующий день или если есть второй временной диапазон, ждем его и в нем все теже действия,вход, выход, увидели в истории закрытую позу, если ее время попадает в диапазон, торговлю прекращаем.
Вот и встал по сути вопрос, как в сегодняшний день, в установленном временном диапазоне отслеживать появление закрытой позы что бы прекратить торговлю
За скрипт спасибо, посмотрю, может чего подойдет.
Дата сегодняшняя к примеру с 00:00 по 23:59
Смысл самой идеи
есть временной фильтр в котором устанавливается временной диапазон, роботу разрешено торговать только в этом диапазоне
но как только в этом диапазоне появилась закрытая позиция, то робот прекращает дальнейшую торговлю
то есть мы по сути разрешаем всего одну позицию - вход в рынок в этом временном диапазоне, открылись, закрылись - ждем следующий день или если есть второй временной диапазон, ждем его и в нем все теже действия,вход, выход, увидели в истории закрытую позу, если ее время попадает в диапазон, торговлю прекращаем.
Вот и встал по сути вопрос, как в сегодняшний день, в установленном временном диапазоне отслеживать появление закрытой позы что бы прекратить торговлю
За скрипт спасибо, посмотрю, может чего подойдет.
В таком случае Вам лучше работать с OnTradeTransaction - отлавливать сделки, которые записались в торговую историю.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как на MQL 5 получить данные по времени и цене открытия и времени и цене закрытия сделки?
Vladimir Karputov, 2017.02.05 15:42
Поможет функция OnTradeTransaction. Пример ниже обработает вход или выход из позиции для сделок на данном символе (m_symbol - объект торгового класса CSymbolInfo) и для данного Magic:
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//--- get transaction type as enumeration value
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
if(type==TRADE_TRANSACTION_DEAL_ADD)
{
string deal_symbol ="";
long deal_magic =0;
long deal_entry =0;
long deal_type =0;
double deal_price =0.0;
double deal_profit =0.0;
if(HistoryDealSelect(trans.deal))
{
deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
deal_type=HistoryDealGetInteger(trans.deal,DEAL_TYPE);
deal_price=HistoryDealGetDouble(trans.deal,DEAL_PRICE);
deal_profit=HistoryDealGetDouble(trans.deal,DEAL_PROFIT);
}
else
return;
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
{
if(deal_entry==DEAL_ENTRY_IN) // это вход в позицию
{
}
if(deal_entry==DEAL_ENTRY_IN) // это выход из позиции
{
}
}
}
}
здесь Вы можете получить цену "deal_price" - в зависимости от того, вход это или выход, это будет цена входа или выхода, а также можете получить значения прибыли "deal_profit".
Можно отлавливать сделки ENUM_DEAL_ENTRY
ENUM_DEAL_ENTRY
Идентификатор
Описание
DEAL_ENTRY_IN
Вход в рынок
DEAL_ENTRY_OUT
Выход из рынка
DEAL_ENTRY_INOUT
Разворот
DEAL_ENTRY_OUT_BY
Закрытие встречной позицией
и вести учёт количества, при необходимости.
Дата сегодняшняя к примеру с 00:00 по 23:59
Смысл самой идеи
есть временной фильтр в котором устанавливается временной диапазон, роботу разрешено торговать только в этом диапазоне
но как только в этом диапазоне появилась закрытая позиция, то робот прекращает дальнейшую торговлю
то есть мы по сути разрешаем всего одну позицию - вход в рынок в этом временном диапазоне, открылись, закрылись - ждем следующий день или если есть второй временной диапазон, ждем его и в нем все теже действия,вход, выход, увидели в истории закрытую позу, если ее время попадает в диапазон, торговлю прекращаем.
Вот и встал по сути вопрос, как в сегодняшний день, в установленном временном диапазоне отслеживать появление закрытой позы что бы прекратить торговлю
За скрипт спасибо, посмотрю, может чего подойдет.
Вот так вроде заработала как надо
Вот так вроде заработала как надо
- неправильно.
Цикл тоже неверный: Вы будете на КАЖДОЙ итерации получать HistoryDealsTotal.
Лучше не отклоняться от классики: