Sergei Samokhin #: Посмотрите мой ответ выше с моим кодом. Что надо исправить в коде что бы профит сделки считался?
Если что брокер RoboForex . На МТ4 все нормально считается. На МТ5 все выводит кроме профита сделки
Андрей выше уже правильно подметил - неправильный тип переменной для типа сделки. Таким образом, строка получения типа сделки должна быть следующей:
ENUM_DEAL_ENTRY type = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(posTicket, DEAL_ENTRY);
Также еще немного уточню по поводу своего предыдущего поста, просто для того, чтобы быть точным. Типов сделок не два, а четыре. На netting-счетах есть еще сделка разворота (DEAL_ENTRY_INOUT). Такое происходит, когда при имеющейся позиции совершается противоположная по направлению операция с бОльшим (по сравнению с имеющейся) объемом. Например, есть Sell 1 лот, а совершается операция Buy 3 лота. В таком случае Sell закрывается и открывается Buy 2 лота.
Также на hedge-счетах возможна сделка встречного закрытия - DEAL_ENTRY_OUT_BY. Она возникает, когда операция закрытия основана на взаимном гашении позиций противоположных типов. В таком случае можно закрыть обе позиции не двумя торговыми операциями (заплатив два спреда), а одной (заплатив при этом только один спред).
Такая же ошибка в строке 232 для первой точки графика.
Ещё баг в файле ChartCanvas.mqh:
При установке параметра grid(количество горизонтальных линий сетки) в 1 или меньше метода CChartCanvas::VScaleParams(const double max,const double min,const uint grid), обновление отображаемого графика CChartCanvas::DrawChart(void) зависает. И принудительное завершение индикатора с этим кодом не завершает зависший поток.
Добрый день! Приложите пожалуйста более кокретный код на котором вы словили ошибки.
При вызове CChartCanvas::VScaleParams(const double max,const double min,const uint grid)
grid = 0 метод игнорирует такой вызов
grid = 1 метод работает нормально на простых примерах
string type = HistoryDealGetInteger(posTicket, DEAL_ENTRY);
Это не string должен быть
Разбирался с этим Дил_Энтри.
Оказалось что в цикле у меня идёт проверка на комментарий в котором я сравниваю коммент сделки с комментом при создании сделки определенным для каждой стратегии. У меня несколько стратегий работают одновременно на одном терминале, и разграничиваю их коментами вида "xxx_yyy_zzz".
Но что оказалось, что ХисториГет выдает сделки и с комментами и без комментов. Пока до конца не разобрался, но судя по всему просто дублированные исторические сделки но без комментов. Те я на торговал в сумме по всем системам 300 сделок, а Хистори выдает 600 сделок, но половину с комментами моими, половина без комментов. Где без комментов там Профит присутствует!🙈🙈 А где коммент нудный есть то присутствует все кроме профита 🙈🙈😂
В итоге пока ресерч оф ситуэшн на этом закончился. Потому что из Хистори ордеров нужные ордера с нужными комментами не содержат итоговый Профит.
По поводу Дил_Интри не понимаю зачем они на Форексе? Если хисториордер содержит как вход так и выход. Так было как минимум в мт4. Переиграли в мт5 как типа на биржах бумаг? Те есть сделка открывающая, есть закрывающая?
Как тогда вытаскивать из истории нужные ордера для статистики ?
Пока не понял зачем Дил_Интри_Аут использовать, потому что он вообще отсекает все ордера.
Возможно не правильно его использую.
П.С. пришла мысль, возможно в ордерах где нет коммента можно получать тикет или ещё какой нибудь АйДи сделки и потом искать по АйДи среди тех где есть комменты для сравнения и при нахождении считать что Профит с этим АйДи равен сделке с искомым комментом? Тогда получается систему Хистори ордеров усложнили и извратили до уровня бреда🙈🐺 ))
Подскажите плиз кто нибудь где ошибаюсь или не прав в рассуждениях))
П.п.с. ещё одна мысль появилась, что в комментариях при выставлении ордера присутствует точки с цифрами, типа "3000.0_5000.0_1500.0" возможно такой формат выдает внутренний эксэпшн в запросах Хистори? Но в платформе и компиляторах не было алерта по этому поводу.
Спасибо что почитали этот длинный текст вопрос😁
Просто уже не понимаю куда копать.
Вроде простой запрос а так система работы с Хистори изменилась что голова кругом😁
Андрей выше уже правильно подметил - неправильный тип переменной для типа сделки. Таким образом, строка получения типа сделки должна быть следующей:
Также еще немного уточню по поводу своего предыдущего поста, просто для того, чтобы быть точным. Типов сделок не два, а четыре. На netting-счетах есть еще сделка разворота (DEAL_ENTRY_INOUT). Такое происходит, когда при имеющейся позиции совершается противоположная по направлению операция с бОльшим (по сравнению с имеющейся) объемом. Например, есть Sell 1 лот, а совершается операция Buy 3 лота. В таком случае Sell закрывается и открывается Buy 2 лота.
Также на hedge-счетах возможна сделка встречного закрытия - DEAL_ENTRY_OUT_BY. Она возникает, когда операция закрытия основана на взаимном гашении позиций противоположных типов. В таком случае можно закрыть обе позиции не двумя торговыми операциями (заплатив два спреда), а одной (заплатив при этом только один спред).
Оказалось что в цикле у меня идёт проверка на комментарий в котором я сравниваю коммент сделки с мэджиком определенным для каждой стратегии. У меня несколько стратегий работают одновременно на одном терминале, и разграничиваю их коментами вида "xxx_yyy_zzz".
Но что оказалось, что ХисториГет выдает сделки и с комментами и без комментов. Пока до конца не разобрался, но судя по всему просто дублированные исторические сделки но без комментов. Те я на торговал в сумме по всем системам 300 сделок, а Хистори выдает 600 сделок, но половину с комментами моими, половина без комментов. Где без комментов там Профит присутствует!🙈🙈 А где коммент нудный есть то присутствует все кроме профита 🙈🙈😂
В итоге пока ресерч оф ситуэшн на этом закончился. Потому что из Хистори ордеров нужные ордера с нужными комментами не содержат итоговый Профит.
По поводу Дил_Интри не понимаю зачем они на Форексе? Если хисториордер содержит как вход так и выход. Так было как минимум в мт4. Переиграли в мт5 как типа на биржах бумаг? Те есть сделка открывающая, есть закрывающая?
Как тогда вытаскивать из истории нужные ордера для статистики ?
Пока не понял зачем Дил_Интри_Аут использовать, потому что он вообще отсекает все ордера.
Возможно не правильно его использую.
П.С. пришла мысль, возможно в ордерах где нет коммента можно получать тикет или ещё какой нибудь АйДи сделки и потом искать по АйДи среди тех где есть комменты для сравнения и при нахождении считать что Профит с этим АйДи равен сделке с искомым комментом? Тогда получается систему Хистори ордеров усложнили и извратили до уровня бреда🙈🐺 ))
Подскажите плиз кто нибудь где ошибаюсь или не прав в рассуждениях))
П.п.с. ещё одна мысль появилась, что в комментариях при выставлении ордера присутствует точки с цифрами, типа "3000.0_5000.0_1500.0" возможно такой формат выдает внутренний эксэпшн в запросах Хистори? Но в платформе и компиляторах не было подарила по этому поводу.
Спасибо что почитали этот длинный текст вопрос😁
Просто уже не понимаю куда копать.
Вроде простой запрос а так система работы с Хистори изменилась что голова кругом😁
Посмотрите мой ответ выше с моим кодом. Что надо исправить в коде что бы профит сделки считался?
Если что брокер RoboForex . На МТ4 все нормально считается. На МТ5 все выводит кроме профита сделки
string type = HistoryDealGetInteger(posTicket, DEAL_ENTRY);
Это не string должен быть
Посмотрите мой ответ выше с моим кодом. Что надо исправить в коде что бы профит сделки считался?
Если что брокер RoboForex . На МТ4 все нормально считается. На МТ5 все выводит кроме профита сделки
Андрей выше уже правильно подметил - неправильный тип переменной для типа сделки. Таким образом, строка получения типа сделки должна быть следующей:
Также еще немного уточню по поводу своего предыдущего поста, просто для того, чтобы быть точным. Типов сделок не два, а четыре. На netting-счетах есть еще сделка разворота (DEAL_ENTRY_INOUT). Такое происходит, когда при имеющейся позиции совершается противоположная по направлению операция с бОльшим (по сравнению с имеющейся) объемом. Например, есть Sell 1 лот, а совершается операция Buy 3 лота. В таком случае Sell закрывается и открывается Buy 2 лота.
Также на hedge-счетах возможна сделка встречного закрытия - DEAL_ENTRY_OUT_BY. Она возникает, когда операция закрытия основана на взаимном гашении позиций противоположных типов. В таком случае можно закрыть обе позиции не двумя торговыми операциями (заплатив два спреда), а одной (заплатив при этом только один спред).
На МТ4 все нормально считается. На МТ5 все выводит кроме профита сделки
Вы не забыли запросить историю, иначе работать не будет?
Баг в файле Include\Canvas\Charts\LineChart.mqh в строке 244:
Не учитывается смещение графика. Там такая строка:
А должно быть так:
Такая же ошибка в строке 232 для первой точки графика.
Ещё баг в файле ChartCanvas.mqh:
При установке параметра grid(количество горизонтальных линий сетки) в 1 или меньше метода CChartCanvas::VScaleParams(const double max,const double min,const uint grid), обновление отображаемого графика CChartCanvas::DrawChart(void) зависает. И принудительное завершение индикатора с этим кодом не завершает зависший поток.
Добрый день! Приложите пожалуйста более кокретный код на котором вы словили ошибки.
При вызове CChartCanvas::VScaleParams(const double max,const double min,const uint grid)
string type = HistoryDealGetInteger(posTicket, DEAL_ENTRY);
Это не string должен быть
Андрей выше уже правильно подметил - неправильный тип переменной для типа сделки. Таким образом, строка получения типа сделки должна быть следующей:
Также еще немного уточню по поводу своего предыдущего поста, просто для того, чтобы быть точным. Типов сделок не два, а четыре. На netting-счетах есть еще сделка разворота (DEAL_ENTRY_INOUT). Такое происходит, когда при имеющейся позиции совершается противоположная по направлению операция с бОльшим (по сравнению с имеющейся) объемом. Например, есть Sell 1 лот, а совершается операция Buy 3 лота. В таком случае Sell закрывается и открывается Buy 2 лота.
Также на hedge-счетах возможна сделка встречного закрытия - DEAL_ENTRY_OUT_BY. Она возникает, когда операция закрытия основана на взаимном гашении позиций противоположных типов. В таком случае можно закрыть обе позиции не двумя торговыми операциями (заплатив два спреда), а одной (заплатив при этом только один спред).
Разбирался с этим Дил_Энтри.