Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Прочитайте коды ошибок исполнения и приведите свой код в соответствие с приведенной там информацией, например, ....
Привет, RaptorUK,
Спасибо за подсказку.
Еще один вопрос (больше one.....);
Скажем, на ECN брокере открыта одна сделка и согласно "Требованиям и ограничениям при совершении сделок" рыночный ордер не может быть закрыт, если Stoploss находится внутри Freezing distance, будет ли в таком случае эта функция CloseAll закрывать даже те ордера, которые находятся внутри Freezing Distance?
С наилучшими пожеланиями
Луис
Привет RaptorUK,
Спасибо за подсказку.
Еще один вопрос (больше one.....);
Скажем, на ECN брокере открыта одна сделка и согласно "Требованиям и ограничениям при совершении сделок" рыночный ордер не может быть закрыт, если Stoploss находится внутри Freezing distance, в таком случае будет ли эта функция CloseAll закрывать даже те ордера, которые находятся внутри Freezing Distance?
Здравствуйте, RaptorUK,
Если возможно, хотел бы попросить у вас помощи в этом вопросе;
Этот кусок кода находит последний OrderLots() и умножает его на коэффициент умножения, но иногда он проходит мимо этого коэффициента и у меня есть ордера таким образом; 0.01, 196,83, 590,49 и т.д.
Надо сказать, что у меня есть лимит на открытые ордера, в данном случае 5. Теперь, как я вижу эту логику, даже если приходит условие открыть ордер выше 5, он не откроется, и тогда количество ордеров в пуле ограничено 5, поэтому, если код видит только 5 ордеров в пуле, размер лота для этих ордеров должен быть ; 0.01, 0.02, 0.04, 0.08, 0.16. Может в этом коде есть что-то неправильное, о чем я не знаю?
(надеюсь, отступы в порядке...)
С наилучшими пожеланиями
Луис
Здравствуйте, RaptorUK,
Если возможно, хотел бы попросить у вас помощи в этом вопросе;
Этот кусок кода находит последний OrderLots() и умножает его на коэффициент умножения, но иногда он проходит мимо этого коэффициента и у меня есть ордера таким образом; 0.01, 196,83, 590,49 и т.д.
Надо сказать, что у меня есть лимит на открытые ордера, в данном случае 5. Теперь, как я вижу эту логику, даже если приходит условие открыть ордер выше 5, он не откроется, и тогда количество ордеров в пуле ограничено 5, поэтому, если код видит только 5 ордеров в пуле, размер лота для этих ордеров должен быть ; 0.01, 0.02, 0.04, 0.08, 0.16. Может быть, в этом коде есть что-то неправильное, о чем я не знаю?
(надеюсь отступы в порядке...)
Я делаю это следующим образом ...
если OrderSelect() не срабатывает MLots = LotSize ?? почему ? Ваш отступ не помогает увидеть, что происходит с вашими операторами if и скобками . Вы хотели сделать так?
Я сделал это...
. как быстрый и грязный метод избежать проблем с двойным сравнением, вы читали это?Может ли цена != цена ?
Я делаю это следующим образом...
если OrderSelect() не срабатывает MLots = LotSize ?? почему ? ваши отступы не помогают увидеть, что происходит с вашими операторами if и скобками . Вы хотели сделать так?
Я сделал это...
. как быстрый и грязный метод избежать проблем с двойным сравнением, вы читали это?Может ли цена != цена?
Здравствуйте, RaptorUk,
Спасибо за быстрый ответ.
Итак, я полагаю, что лучше просто не использовать else, потому что это не нужно. И спасибо за предоставленную ссылку.
С наилучшими пожеланиями
Луис
Привет RaptorUK,
У меня есть одна проблема (больше one.....)
Некоторые ордера закрываются раньше времени, я имею в виду следующее;
Эти ордера были открыты и есть лимит на открытие до 6. Все ордера должны закрыться по TrailingStop, но ордера 1. 3 и 5 были закрыты раньше остальных, которые были закрыты после (07:43).
Поскольку эти 3 ордера закрылись раньше остальных, это дает возможность открыть ордера 7, 8 и 9, которые открываются с лотом, основанным на последнем лоте (2.43).
Таким образом, насколько я понимаю, такого ошибочного закрытия ордеров в 07:23 не должно было произойти и никаких ошибок не обнаружено...
Код для закрытия всех этих ордеров с помощью TrailingStop вот такой;
Может ли этот код не сработать и закрыть ордера в разное время?
С наилучшими пожеланиями
Луис
Код для закрытия всех ордеров с помощью TrailingStop - вот этот;
Может ли этот код не сработать и закрыть ордера в разное время?
Хорошо, это не имеет смысла ... трейлинг SL устанавливается для того, чтобы, если цена идет с ордером, SL перемещался в сторону цены, так что если новый SL будет достигнут, то убыток будет меньше или даже прибыль. Зачем нужен трейлинг SL, если вы все равно собираетесь закрыть сделку через OrderClose()? Для меня это не трейлинг SL, это вообще не SL, поскольку вы активно закрываете сделку через советника, а не SL.
Возможно, вашафункция CloseAllOnSL() делает что-то другое, чем я думаю, но, тем не менее, у вас нет комментариев, объясняющих, что пытается сделать ваш код. Нет трейлингового СЛ, как нет и OrderModify().
Читайте здесь:Что такое возвратные значения функций? Как их использовать?
добавьте больше информации в оператор Print, добавьте OrderTicket(), OrderLots(), OrderClosePrice(), Bid, Ask, и т.д., и т.п. любую информацию, которая вам нужна, чтобы определить, в чем была проблема, когда произошла ошибка, вы не можете легко вернуться в прошлое и выяснить все это, поэтому, когда это происходит, печатайте это в журнал.
Итак, насколько я понял, ошибки в закрытии ордеров в 07:23 не должно было произойти и ошибок не обнаружено...
Читайте здесь:Что такое возвратные значения функций? Как их использовать?
добавьте больше информации в оператор Print, добавьте OrderTicket(), OrderLots(), OrderClosePrice(), Bid, Ask, и т.д., и т.п. любую информацию, которая вам нужна, чтобы определить, в чем была проблема, когда произошла ошибка, вы не можете легко вернуться в прошлое и выяснить все это, поэтому, когда это происходит, печатайте это в журнал.
Здравствуйте, RaptorUk,
Спасибо за ваше время.
Код для TrailingStop находится в другой части, отправленный код только для закрытия всех ордеров, которые были закрыты с помощью TrailingStop.
Тем не менее, я следую вашему совету и ищу любую ошибку, которая могла бы дать больше дополнительной информации о том, почему ордера закрываются раньше других.
Кстати, в следующем коде имеет смысл изменить положение MLots = 0; с фактического места на место перед циклом for?
С наилучшими пожеланиями
Луис