Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1413
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Так может у них нет истории, так как они сами не очень старая кухня?
А что есть не кухни, чтобы из России работать? Это не важно на самом деле. Вопрос как историю загрузить, даже если у них её нет?
А вы не могли-бы одолжить мне денег, даже если у вас их нет?
А что есть не кухни, чтобы из России работать? Это не важно на самом деле. Вопрос как историю загрузить, даже если у них её нет?
Через пользовательских символов делаете свою историю.
Через пользовательских символов делаете свою историю.
Привет всем, я хочу написать своего первого торгового робота (советника). Он отлично работает в бэктесте и результаты тестов тоже достойные. Но есть разные вещи, которые нужно учитывать: типы счетов, свойства инструментов, вмешательство в работу других советников и т.д.
Для этого у меня есть четыре переменные:
Первые две переменные задаются в методе init:
Если я хочу открыть позицию, я сначала проверяю, не вызовет ли это проблем с FIFO (т. е. если я хочу открыть длинную позицию, я проверяю, нет ли уже длинной позиции с таким же объемом или короткой позиции по соответствующему символу, поскольку в противном случае StopLoss и TakeProfit могут работать некорректно, как я слышал). И, наконец, я использую метод OrderSend и устанавливаю, был ли он успешным:
При исполненном StopLoss или TakeProfit я узнаю через метод OnTradeTransaction, была ли закрыта моя (внутренняя) позиция советника, проверяя, совпадает ли переменная positionTicket с transaction.position.
Если я хочу закрыть позицию на неттинг-счете, я просто закрываю длинную позицию короткой сделкой с тем же объемом.
Если я хочу закрыть позицию на счете хеджирования, я закрываю позицию с помощью trade.PositionClose(positionTicket, slippage);
Если я хочу закрыть позицию на счете хеджирования FIFO, я закрываю самую старую позицию по соответствующему символу, которая соответствует направлению позиции (длинная/короткая) и объему, который должен быть моим собственным в силу моих условий входа для счетов FIFO, описанных выше.
Теперь я уверен, что упустил из виду что-то фундаментальное. Как мне убедиться, что StopLoss и TakeProfit на неттинговом счете также закрываются, когда я закрываю (внутреннюю) позицию советника, как описано выше? Есть ли более элегантные и эффективные способы сделать советник соответствующим FIFO? Если я открываю позицию в советнике только с помощью MarketOrder, не редактирую ее и затем хочу закрыть, всегда ли значение tradeResule.deal остается неизменным, чтобы я мог без проблем закрыть эту позицию с помощью trade.PositionClose(positionTicket, slippage), где positionTicket - это сохраненное значение tradeResult.deal?
Я ищу ответы уже несколько дней, но пока не нашел ни одного, который мог бы разрешить все мои проблемы. Я надеюсь, что кто-нибудь здесь сможет мне помочь.
Теперь я уверен, что упустил из виду что-то фундаментальное. Как сделать так, чтобы StopLoss и TakeProfit на неттинговом счете также закрывались при закрытии (внутренней) позиции советника, как описано выше? Есть ли более элегантные и эффективные способы сделать советник FIFO-совместимым? Если я открываю позицию в советнике только с помощью MarketOrder, не редактирую ее и затем хочу закрыть, всегда ли значение tradeResule.deal остается неизменным, чтобы я мог закрыть эту позицию с помощью trade.PositionClose(positionTicket, slippage) без каких-либо проблем, при этом positionTicket будет сохраненным значением tradeResult.deal?
Я ищу ответы уже несколько дней, но пока не нашел ни одного, который мог бы разрешить все мои проблемы. Я надеюсь, что кто-нибудь здесь сможет мне помочь.
На неттинговом счете есть только одна позиция на символ. Если советник торгует только одним символом, это можно прочитать в PositionTotal() - или, что еще проще, PositionSelect() либо неверен (=none), либо, соответственно, также выбран для дальнейшей торговли.
Все верно. Спасибо за подсказку. Но что мне делать, например, если другой советник работает на том же символе, открывает позицию в 0,5 лота и стоп-лосс 100 пунктов, мой советник открывает "внутреннюю позицию советника" в 0,5 и стоп-лосс 150 пунктов, т.е. увеличивает существующую позицию до 1 лота, а затем я закрываю "внутреннюю позицию советника", т.е. уменьшаю существующую позицию до 0,5 лота. Какой стоп-лосс тогда будет у оставшихся 0,5 лота? 100 пунктов или 150 пунктов? Или в таком случае в режиме неттинга невозможно установить независимый стоп-лосс для "моих" 0,5 лотов через SendRequest?
То есть, я не хочу просто менять хорошо продуманные стоп-лоссы других советников, но и не хочу просто отказываться от своих собственных. Есть ли эффективное решение моей "проблемы", кроме открытия "внутренней позиции советника" в режиме неттинга только при отсутствии открытой позиции по инструменту?
То есть, я не хочу просто менять хорошо продуманные стоп-лоссы других советников, но и не хочу просто отказываться от своих собственных. Есть ли эффективное решение моей "проблемы", кроме открытия "внутренней позиции советника" в режиме неттинга только при отсутствии открытой позиции по инструменту?
Если на нетто-счете(!) первый советник, например, по EURUSD покупает 0,01 лота (buy), а второй советник продает 0,05 лота (sell), то на счете снова остается только одна позиция, теперь уже 0,04 sell. Номера билетов здесь пока совершенно не важны. И если второй ордер на единственную позицию в EURUSD устанавливает новые (свои= SL и TP, то те, что были у первого ордера, перезаписываются.
Есть только одна позиция с одним SL и одним TP, если они указаны.
Я могу это понять, спасибо. Но я все еще не понимаю, какой стоп-лосс применяется, если первый советник покупает 0,01 лота, а второй - 0,05 лота. Тогда открывается позиция в 0,06 лота, верно? И какой стоп-лосс применяется к этой позиции? Первый, второй или агрегированный?