Попробую по-другому сформулировать свой вопрос
Установить SL == установить отложенный лимит-ордер на объем открытой позиции ?
Выполнить команду терминала "Закрыть позицию" == CTrade::PositionClose() ?
Терзают меня смутные сомнения, что это не одно и то же .
В Правилах Чемпионата записано
4.5. Максимальное количество одновременно выставленных отложенных ордеров по всем символам - 3.
4.6. Максимальный совокупный объем позиции и отложенных ордеров независимо от направления по одному символу - 15 лотов. Стоп-лоссы и тейкпрофиты не учитываются.
Где можно получить информацию по этому вопросу?
Попробую по-другому сформулировать свой вопрос
Установить SL == установить отложенный лимит-ордер на объем открытой позиции ?
Выполнить команду терминала "Закрыть позицию" == CTrade::PositionClose() ?
Терзают меня смутные сомнения, что это не одно и то же .
В Правилах Чемпионата записано
Где можно получить информацию по этому вопросу?
Думаю, ни то, ни другое. У Вас в обоих случаях ордер на закрытие инициирует терминал. А в случае срабатывания SL или TP ордер на закрытие устанавливается сервером, где хранятся значения стопов для позиции. А на терминал отсылаются параметры ордера для отображения на вкладках 'Торговля' и 'История'.
А что непонятно с Правилами ? По-моему, написано ясно и однозначно.
Думаю, ни то, ни другое. У Вас в обоих случаях ордер на закрытие инициирует терминал. А в случае срабатывания SL или TP ордер на закрытие устанавливается сервером, где хранятся значения стопов для позиции. А на терминал отсылаются параметры ордера для отображения на вкладках 'Торговля' и 'История'.
А что непонятно с Правилами ? По-моему, написано ясно и однозначно.
Да с правилами все понятно, непонятно почему вот такая реакция на закрытие встречным ордером - "Команда (1) не позволяет открыть встречный ордер того же объема и сообщает "Недостаточно денег", если Свободная маржа < Маржа".
PS
Кстати, как я полагаю прикрываться рекомендуется не отложником а рыночно (чтоб если что не нарушить правило 3-х ордеров)?
Да с правилами все понятно, непонятно почему вот такая реакция на закрытие встречным ордером - "Команда (1) не позволяет открыть встречный ордер того же объема и сообщает "Недостаточно денег", если Свободная маржа < Маржа".
PS
Кстати, как я полагаю прикрываться рекомендуется не отложником а рыночно (чтоб если что не нарушить правило 3-х ордеров)?
Да и вообще, нафига брать маржу с отложника? По факту исполнения и считайте маржу.
Хотя тогда тоже куча вопросов есть к тому что и как будет твориться в момент срабатывания ордеров...
Странно, маржа по встречному не берется однозначно. Вроде и не должна.
С чего это тогда CTrade::PositionClose() ругаться на нее?...
Да и вообще, нафига брать маржу с отложника? По факту исполнения и считайте маржу.
Хотя тогда тоже куча вопросов есть к тому что и как будет твориться в момент срабатывания ордеров...
При срабатывании SL-ордера (это ведь тоже лимит-ордер по идеологии) доп. маржа не взимается
А при срабатывании BUY_LIMIT и SELL_LIMIT почему-то взимается
Казалось бы - не парься, используй SL... А вот в ситуации, когда три эксперта открывают свои ордера в одном направлении и у каждого эксперта свой уровень SL на свой объем, общим SL не обойтись - нужны три LIMIT-ордера. При плохом стечении обстоятельств (а стопы в других случаях не срабатывают)) есть подозрение, что сервер не примет LIMIT-ордер (суть SL отдельного эксперта) с формулировкой "недостаточно денег".
А вот пример, когда придется совсем не сладко, если действительно для исполнения LIMIT-ордера требуется маржа :
- депо 10 000USD, открыто 5 лотов GBPUSD. При 1:100 в залоге будет 5х1.5000=7500
- Просели на 40пт, значит средства=10000-5*(15*40)=7000 (+\- копейки)
- значит свободной маржи -500 и, если для открытия LIMIT-ордера на 5 лотов требуется хоть что-то в залог, то ордер не сработает - так получается?
P.S.
Есть свойство символа SYMBOL_MARGIN_LIMIT (Коэффициент взимания маржи по Limit ордерам) ... что это за зверь и от чего коэффициент ... не понятно
Странно, маржа по встречному не берется однозначно. Вроде и не должна.
С чего это тогда CTrade::PositionClose() ругаться на нее?...
CTrade::PositionClose() я не проверял
Не дает закрыться встречным команда терминала "Новый ордер"
Именно эта ситуация вызвала подозрение
CTrade::PositionClose() я не проверял
Не дает закрыться встречным команда терминала "Новый ордер"
По логике вещей если есть открытая поза и идет втречная операция с рынка то возможны три ситуации
1. Закрытие первой позы (когда объемы совпадают);
2. Переворот первой позы (когда объем второй операции больше чем открытая поза);
3. Урезка первой позы (когда объем второй позы меньше чем открытая поза).
При этом с моржой происходит следующее
1. Маржа по второй позе не берется (поскольку мы прикрываем противоположную ранее открытую позу), маржа по первой позе должна освободиться и вернуться на депо;
2. Маржа по открытой позиции возвращается на депо, а затем берется маржа по новой позе (вычисляется как разница объемов позы и новой операции). В реальности наверно будет выглядеть как возврат маржи по первой позе с удержанием моржи на разницу объемов открытой позы и совершаемой операции (или просто говоря в залоге станется маржа на разницу объемов);
3. При урезке картинка подобная той что описана при перевороте.
В общем и целом там или маржа по новой позе вовсе не должна браться либо браться на разницу объемов
Отложники
С отложниками тоже все вроде должно быть понятно. Пока он не сработал нет и маржи, как цена активирует отдожник и он должен сработать (тогда маржа расчитывается по схемее представленной выше) либо нет и тогда должна вернуться ошибка о том что маржи не хватает для открытия позиции по определенному отложнику.
Вот тут то и начинается самое интересное для отложников. Остается выяснить какой отложник не смог открыться и что с ним следует дальше делать (удалять или нет. А также кто это будет делать)...
PS
Насколько помню ФК в подобных случаях просто удаляла отложки и все...
Наверное, вопросы нужно адресовать разработчикам, поскольку догадки и эксперименты в таком деле, как торговля на реале, не допустимы:
Каковы требования к свободной марже, когда цена достигает:
а) уровня SL открытой позиции ?
б) уровня отложенного LIMIT-ордера ?
в) уровня Price(+/-Deviation) при отправке OrederSend'ом ордера типа TRADE_ACTION_DEAL ?
Наверное, вопросы нужно адресовать разработчикам, поскольку догадки и эксперименты в таком деле, как торговля на реале, не допустимы:
Каковы требования к свободной марже, когда цена достигает:
а) уровня SL открытой позиции ?
б) уровня отложенного LIMIT-ордера ?
в) уровня Price(+/-Deviation) при отправке OrederSend'ом ордера типа TRADE_ACTION_DEAL ?
А причём тут разработчики терминала ? Они просто адаптируют его к требованиям, общепринятым на действующем рынке, а не сами придумывают правила поведения. Поэтому:
а) Никаких требований, SL сработает при любом уровне свободной маржи (более того, так как залоговая маржа вернётся на счёт, уровень свободной маржи повысится.)
б) Отложенный ордер сработает в любом случае, но если для открытия открытия ордера на покупку или продажу будет недостаточно свободной маржи, ордер будет отвергнут с установкой соответствующего признака retcode в структуре MqlTradeResul.
в) Аналогично второй части б)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В Терминале есть две команды, с помощью которых можно закрыть позицию
(1) Новый ордер
(2) Закрыть позицию
Команда (1) не позволяет открыть встречный ордер того же объема и сообщает "Недостаточно денег", если Свободная маржа < Маржа
Команда (2) успешно закрывает позицию.
CTrade::PositionClose() судя по исходникам идет по варианту (1).
Тогда как программно закрыть позицию, если недостаточно свободной маржи?