Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В основном я устанавливаю два отложенных ордера в определенное время, а именно 23:00 GMT+2, я думаю. Один из отложенных ордеров является стопом на продажу, а другой - стопом на покупку, оба ордера находятся на одинаковом расстоянии от открытия свечи 23:00, в данном случае 14 пунктов. Оба имеют TakeProfit в 28 пунктов (в данном случае) и StopLoss в 55 пунктов.
Теперь, когда оба ордера будут исполнены (по сути, пройдя и вверх, и вниз 14 пунктов от цены открытия на свече 23:00 до истечения срока действия ордеров), я хочу, чтобы у обоих ордеров тейк-профит увеличился, например, на 20 пунктов. Таким образом, их новый тейк-профит в этом случае составит 58 пунктов. Стоп-лосс при этом должен остаться неизменным. По сути, я пытаюсь сделать что-то вроде хеджирования.
Если открыты две сделки, то вполне вероятно, что цена пойдет в одном направлении достаточно сильно, чтобы свести на нет любые потери, если увеличить тейк-профиты обеих сделок. Для получения прибыли нужно открыть только одну сделку и достичь тейк-профита или открыть обе сделки и достичь тейк-профита, не уходя далеко в одном направлении.
Надеюсь, это понятно, если нет, я предоставлю картинку, которая должна быть более понятной.
Я имел в виду ваш непосредственно предыдущий пост
Вот пересмотренный код для всего советника:
Я надеюсь, что это понятно, если нет, я предоставлю картинку, которая должна быть более понятной.
Все ясно, спасибо.
Итак, вы просто хотите изменить эти ордера один раз ... тогда ответ прост. Вам нужно проверить бар 23:00 и определить TP, на которых должны были быть открыты ордера ... если ордера находятся на том же TP, то их нужно модифицировать, если они не находятся на том же TP, то они уже были модифицированы и их не нужно модифицировать снова ... просто.
Все ясно, спасибо.
Итак, вы просто хотите модифицировать эти ордера один раз ... тогда ответ прост. Вам нужно проверить бар 23:00 и определить TP, на которых должны были быть открыты ордера ... если ордера находятся на том же TP, то их нужно модифицировать, если они не находятся на том же TP, то они уже были модифицированы и их не нужно модифицировать снова ... просто.
То есть, по сути, если есть две сделки (один и тот же символ и магический номер), советник должен проверить тейк-профиты открытых сделок по сравнению с ранее существующими отложенными ордерами (которые сейчас исполнены), и если они одинаковы, то их нужно изменить, а после того, как он зациклится, он снова проверит и обнаружит, что они не одинаковы, и таким образом не будет дальше изменять сделки?
1. Модификация и проверка должны происходить только тогда, когда открыты две сделки, но как мне это сделать? Должен ли я добавить к уже имеющемуся коду или начать заново?
2. То есть, по сути, если есть две сделки (один и тот же символ и магический номер), советник должен проверить тейк-профиты открытых сделок по сравнению с ранее существующими отложенными ордерами (которые сейчас исполнены), и если они одинаковы, то их следует изменить, а после цикла он снова проверит и обнаружит, что они не одинаковы, и таким образом не будет дальше модифицировать сделки?
1. Пройдитесь по открытым ордерам, проверьте символ, магический номер, при обнаружении совпадения, которое не является отложенным ордером, увеличьте счетчик ... когда вы закончите проверку ордеров, если вы насчитали 2, значит у вас есть 2 открытых ордера для правильного символа и магического номера ... теперь вы можете изменить их ... см. 2.
2. Нет, вы не можете увидеть TP отложенных ордеров, если они были активированы и теперь больше не отложены. Советник должен проверить бар 23:00 и определить, какими были бы первоначальные TP... затем сравнить их с TP двух открытых ордеров... на основе этой информации можно принять решение о модификации или не модификации.
1. Пройдитесь по открытым ордерам, проверьте символ, магический номер, при обнаружении совпадения, которое не является отложенным ордером, увеличьте счетчик ... когда вы закончите проверку ордеров, если вы насчитали 2, значит у вас есть 2 открытых ордера для правильного символа и магического номера ... теперь вы можете изменить их ... см. 2.
2. Нет, вы не можете увидеть TP отложенных ордеров, если они были активированы и теперь больше не отложены. Советник должен проверить бар 23:00 и определить, какими были бы первоначальные TP... затем сравнить их с TP двух открытых ордеров... на основе этой информации можно принять решение о модификации или отказе от модификации.
Понятно, я полагаю, это то, что я пытался сделать все это время. Пока что один из ордеров модифицирован (в частности, ордер на покупку, который является ордером 2 в моем тестировании), но он продолжает модифицироваться, могу ли я использовать 'break', чтобы остановить его от повторения? Также как мне подсчитать и модифицировать только открытые ордера, если их всего два? Я пытался использовать для этого OrdersTotal(), но не получается, я не думаю, что мне нужно делать два отдельных куска кода для каждого ордера, верно?
Модифицируются только четные открытые ордера, и, как я уже сказал, они неоднократно модифицируются, я пробовал различные комбинации для OrderSelect(), но все еще не могу разобраться, как я уже сказал, я полный профан в MQL, и этот советник уже почти готов, поэтому я хотел бы просто закончить его. Я читал здесьhttps://book.mql4.com/trading/ordermodify, может ли это иметь какое-то отношение к моей ситуации? Это для стоп-лосса, но мне нужно для тейк-профита.
Что я делаю не так?
Как мне проверить, совпадает ли ТП со свечой 23:00? Нужно ли это как таковое, ведь пока открытые ордера модифицируются, когда их 2, это достигает того же эффекта? Или это просто для того, чтобы ордер не модифицировался постоянно, и да, я проверил документацию.
Спасибо,
madmax3
Ваш return(0) выводит вас из start() до того, как 2-й ордер будет модифицирован.
Все, что вы делаете, это выбираете ордер по позиции, проверяете, что он имеет правильный номер Magic, проверяете, что это правильный символ и проверяете, что это OP_BUY ... затем вы изменяете его, где вы определяете, был ли он уже изменен или нет?
Ваш советник должен быть способен восстанавливаться после прерывания... если ваши ордера размещены и MT4 падает, он должен быть способен продолжить работу с того места, где он остановился, когда он перезапущен.
Вот почему вам нужно определить, был ли ордер уже изменен или его нужно изменить... как?
"Я установил два отложенных ордера на определенное время, а именно 23:00 GMT+2, я думаю. Один из отложенных ордеров является стопом на продажу, а другой стопом на покупку, оба ордера находятся на одинаковом расстоянии от открытия свечи 23:00, в данном случае 14 пунктов. Оба имеют TakeProfit в 28 пунктов (в данном случае) и StopLoss в 55 пунктов."
Вы можете вычислить, где находился первоначальный TP, сославшись на свечу 23:00, проверить ордер и посмотреть, установлен ли он все еще на первоначальный TP, если да, то его можно модифицировать... если нет, то он уже был модифицирован, поэтому не модифицируйте его снова.
Есть и другие способы регистрации того, что ордер был изменен, отслеживайте номер тикета, записывайте информацию в файл, когда он был изменен, когда вы собираетесь изменить его снова, откройте файл и проверьте номер тикета, и т.д. ... Я думаю, что проверка по сравнению с оригинальным TP намного проще.
На данный момент я имею следующее,
Код записи файла, как указано выше, есть,
Но я получаю эти ошибки,
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA Version 2: FileOpen - слишком много открытых файлов
2012.04.04 15:30:06 2012.01.16 06:25 TimeBasedEA Version 2: invalid handle -1 in FileWrite
В чем дело?
Почему вы выбрали самый сложный из двух вариантов?
Когда вы закончили запись в файл, вам нужно закрыть его ... если он уже открыт, вам не нужно открывать его снова.
Ваш цикл for неправильный ... ... позиция последнего порядка 0, а не 1.
Почему вы выбрали самый сложный из двух вариантов?