Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1098
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
хм, странная ситуация, вроде активность в топике я поднял, вопрос у меня был, с моей точки зрения конкретный, а вместо ответа пока получил "а зачем тебе это?"
ОК, мне нужно в тестере промасштабировать ТС сразу на несколько ТФ, хочу это реализовать с помощью СБ CTrade, вот пример (собранный из 2-х моих примеров): открываем каждый новый бар на 9-ти ТФ по одному ордеру, тикет запоминаем и по номеру тикета определяем закрылся ли ордер? и какое направление было у закрытого ордера?
в MQL4 код для тестера будет выглядеть так:
нужен код для тестера, т.е. минимум проверок и максимально быстро работающий в оптимизаторе
как написать этот код в MQL5 с помощью СБ CTrade ???!!!
хм, странная ситуация, вроде активность в топике я поднял, вопрос у меня был, с моей точки зрения конкретный, а вместо ответа пока получил "а зачем тебе это?"
ОК, мне нужно в тестере промасштабировать ТС сразу на несколько ТФ, хочу это реализовать с помощью СБ CTrade, вот пример (собранный из 2-х моих примеров): открываем каждый новый бар на 9-ти ТФ по одному ордеру, тикет запоминаем и по номеру тикета определяем закрылся ли ордер? и какое направление было у закрытого ордера?
в MQL4 код для тестера будет выглядеть так:
как написать этот код в MQL5 с помощью СБ CTrade ???!!!
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
Vladimir Karputov, 2019.07.21 12:56
Итак, основа основ - Идентификатор позиции (POSITION_IDENTIFIER), но ни как не тикет позиции. Это важно, как раз из-за неттинга:
POSITION_IDENTIFIER
Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Соответствует тикету ордера, которым была открыта позиция.
Идентификатор позиции указывается в каждом ордере (ORDER_POSITION_ID) и сделке (DEAL_POSITION_ID), которая ее открыла, изменила или закрыла. Используйте это свойство для поиска ордеров и сделок, связанных с позицией.
При развороте позиции в режиме неттинга (единой сделкой in/out) идентификатор позиции POSITION_IDENTIFIER не изменяется. Однако при этом POSITION_TICKET изменяется на тикет ордера, в результате которого произошел разворот. В режиме хеджинга разворот позиции не предусмотрен.
long
Значит нужно запоминать и отслеживать идентификатор позиции (POSITION_IDENTIFIER).
Теперь уточнённая задача: при первом запуске открываем ПОЗИЦИЮ BUY и запоминаем её (ВНИМАНИЕ: запоминать нужно идентификатор позиции, но не тикет). Если позиция была закрыта - открываем противоположную позицию: например жила-была позиция BUY, затем она была закрыта, а значит открывается сразу позиция SELL.
Теперь решить задачу станет намного легче.
пролистал справку, не вижу у СБ CTrade методов для работы с идентификатором позиции, т.е. СБ CTrade не умеет определять самостоятельно открыт ордер или закрыт? какой тип был у последнего закрытого ордера?
какую библиотеку нужно использовать для этой цели?
пролистал справку, не вижу у СБ CTrade методов для работы с идентификатором позиции, т.е. СБ CTrade не умеет определять самостоятельно открыт ордер или закрыт? какой тип был у последнего закрытого ордера?
какую библиотеку нужно использовать для этой цели?
Ну я уже сто раз говорил - выкиньте из лексикона слово "ордер". Пока Вы этого не сделаете - Вы не сможете идти дальше. В общем я вероятно Вам не смогу помочь. Печаль.
Ну я уже сто раз говорил - выкиньте из лексикона слово "ордер". Пока Вы этого не сделаете - Вы не сможете идти дальше. В общем я вероятно Вам не смогу помочь. Печаль.
А подскажите, как понимать это:
Ну я уже сто раз говорил - выкиньте из лексикона слово "ордер". Пока Вы этого не сделаете - Вы не сможете идти дальше. В общем я вероятно Вам не смогу помочь. Печаль.
OK? сформулирую вопрос иначе:
как используя запомненный тикет с помощью CTrade::ResultOrder()
узнать:
1. закрыта ли позиция?
2. какой тип сделки был у закрытой позиции?
3. нужна одновременная работа с 9-ю позициями, ордерами или тикетами или ... НаВашеУсмотрениеЛюбаяТерминология на счете типа хэдж
в такой формулировке мой вопрос однозначный? (воспроизводимый пример под MQl4 выложен выше)
ЗЫ: я не могу забыть слово ордер, к сожалению это слово используется в справке наряду с другими терминами: https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctraderequestorder
хм, странная ситуация, вроде активность в топике я поднял, вопрос у меня был, с моей точки зрения конкретный, а вместо ответа пока получил "а зачем тебе это?"
Причина в некомпетентности так отвечающих. Мне понадобилось пять минут на написание и одна попытка на проверку.
MT4
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
fxsaber, 2019.07.21 12:54
MT5
Чтобы это написать, не надо быть сильным разбирающимся, достаточно знать только основы MT5.
ЗЫ На неттинге маленький нюанс существует при определении типа закрытой позиции. Но здесь это не играет роли.
Чтобы это написать, не надо быть сильным разбирающимся, достаточно знать только основы MT5.
Благодарю!
Да это и искал решение если не получилось с помощью СБ в "пять строк" написать
Но сколько я понял, что одной СБ CTrade не получится решить мою задачу? И нужно было еще и CPositionInfo использовать? - если хочу по нескольким ТФ одновременно 9 позиций сопровождать?
ЗЫ: сижу со смарт ТВ справку MQL5 листаю - довольно неплохо описаны торговые функции, использование СБ под вопросом.... примитивные стратегии вроде имеет смысл использовать СБ, чуть сложнее - функционал недостаточен или не очевидное использование, возможно нужна практика - попробую еще "покрутить" СБ
Еще раз Спасибо!
Причина в некомпетентности так отвечающих. Мне понадобилось пять минут на написание и одна попытка на проверку.
MT4
MT5
Чтобы это написать, не надо быть сильным разбирающимся, достаточно знать только основы MT5.
ЗЫ На неттинге маленький нюанс существует при определении типа закрытой позиции. Но здесь это не играет роли.
Вот здесь
кроется потенциальная ошибка.
В историческом списке ордера не расположены в порядке их появления в этом списке. Сталкивался с этим при разработке библиотеки. Положился как раз на это. Но оказалось, что всё не так просто. Попробуйте выставить поочерёдно лимитные и стоповые ордера в порядке: лимит -> стоп -> лимит -> стоп -> лимит -> стоп, и удаляя каждый в любом порядке, смотрите который записан в историческом списке последним. Будете удивлены.
Вот здесь
кроется потенциальная ошибка.
В историческом списке ордера не расположены в порядке их появления в этом списке. Сталкивался с этим при разработке библиотеки. Положился как раз на это. Но оказалось, что всё не так просто. Попробуйте выставить поочерёдно лимитные и стоповые ордера в порядке: лимит -> стоп -> лимит -> стоп -> лимит -> стоп, и удаляя каждый в любом порядке, смотрите который записан в историческом списке последним. Будете удивлены.
Там нет ошибки, т.к. список сформирован через HistorySelectByPosition.