Добрый день.Подскажите пожалуйста полный текст который необходимо записать в tri файл, вот какие условия.
Шорт Акции Газпрома (к примеру).
Цена 113 рублей.
Количество 5 лотов.
Выставить Связанную заявку тейкпрофит по полному или частичному исполнению Заявки (из пунктов 1-3) (ну т.е. купилось 1 лот, в тейк профите 1 лот, докупилось еще 2, тейкпрофит изменился на 3 и т.д.). на покупку акций по цене 100 рублей.
Я правильно понимаю, что если Заявка на шорт выполнилась в неполном объеме, ну.т.е. я шортил 3 лота по 113 рублей, выставлена связанная заявка на тейк профит покупка по 100 рублей, то если мне удалось вшортить только 2 лота а цена упала до 100 рублей, то тейк профит будет снят с двух лотов, а после обе заявки снимутся?
Егор, добрый день. Возможно я что то путаю в терминологии. Смотрите, из документации: Заявки «по исполнению» - это условные заявки, которые активируются (начинают проверяться программой QUIK и соответственно могут быть исполнены) только после того, как исполняется определенная активная заявка. Такие заявки могут применяться, например, для закрытия позиции по инструменту, открываемой данной активной заявкой. Исполнение одной активной заявки может вызывать активацию нескольких заявок «по исполнению» разных типов. В программе QUIK вам доступны два типа заявок «по исполнению»: «Стоп-лимит по заявке» и «Тэйк-профит по заявке». Если вы выставили заявку «по исполнению», то после исполнения указанной вами активной заявки в зависимости от того, заявку какого типа вы выбрали, автоматически отправляются стандартные условные заявки типа «Стоп-лимит» или «Тэйк-профит» (которые мы рассмотрели в предыдущем параграфе). Отображаются такие заявки, как и другие условные заявки, в таблице стоп-заявок и обладают следующими характеристиками.....
Так, вот возвращаясь к моему вопросу, мне получается надо выставлять условную заявку по исполнению. Продать 100 акций Газпрома и при первой же покупке, первого лота выставлять заявку по исполнению на покупку (Тейк-профит), которая по мере выполнения активной заявки будет также изменяться (дополнит количество лотов).
В таком случае Вам необходимо сначала выставить обычную заявку, а по ней уже "стоп по исполнению".
Пример так: Если это тейк профит по исполнению, то пример такой так:
Тэйк-профит по исполнению заявки по частичному исполнению заявки с номером 81874488 выставить тэйк-профит на покупку Лукойла в объеме исполненной части заявки-условия, при достижении цены 265 с отступом 10 пипсов и защитным интервалом 10 пипсов
Egor Zaytsev написал: В таком случае Вам необходимо сначала выставить обычную заявку, а по ней уже "стоп по исполнению".
Пример так: Если это тейк профит по исполнению, то пример такой так:
Тэйк-профит по исполнению заявки по частичному исполнению заявки с номером 81874488 выставить тэйк-профит на покупку Лукойла в объеме исполненной части заявки-условия, при достижении цены 265 с отступом 10 пипсов и защитным интервалом 10 пипсов
Хм, понятно. 1. Я выставляю обычную заявку на шорт Роснефть по рыночной цене. ACCOUNT=L01-00000F00; CLIENT_CODE=164587; TYPE=M; TRANS_ID=152; CLASSCODE=TQBR; SECCODE=ROSN; ACTION=NEW_ORDER; OPERATION=S; PRICE=0; QUANTITY=29; 2. Следом я меняю TRANS_ID+1 и выставляю то что вы мне привели из документации. Все вроде понятно, но откуда мне знать какой BASE_ORDER_KEY ей будет присвоен? Его надо будет считывать из файла с логами? Или я могу в обычной заявке сам задать его и сразу же Тейк профит по исполнению выставить?
Еще вопрос, Тейк профит который Вы написали, он хранится на сервере? Можно ему выставить EXPIRY_DATE=GTC чтобы он хранился до тех пор пока не исполнится и переносился из дня в день? Спасибо.
Egor Zaytsev написал: В таком случае Вам необходимо сначала выставить обычную заявку, а по ней уже "стоп по исполнению".
Пример так: Если это тейк профит по исполнению, то пример такой так:
Тэйк-профит по исполнению заявки по частичному исполнению заявки с номером 81874488 выставить тэйк-профит на покупку Лукойла в объеме исполненной части заявки-условия, при достижении цены 265 с отступом 10 пипсов и защитным интервалом 10 пипсов
Хм, понятно. 1. Я выставляю обычную заявку на шорт Роснефть по рыночной цене. ACCOUNT=L01-00000F00; CLIENT_CODE=164587; TYPE=M; TRANS_ID=152; CLASSCODE=TQBR; SECCODE=ROSN; ACTION=NEW_ORDER; OPERATION=S; PRICE=0; QUANTITY=29; 2. Следом я меняю TRANS_ID+1 и выставляю то что вы мне привели из документации. Все вроде понятно, но откуда мне знать какой BASE_ORDER_KEY ей будет присвоен? Его надо будет считывать из файла с логами? Или я могу в обычной заявке сам задать его и сразу же Тейк профит по исполнению выставить?
Еще вопрос, Тейк профит который Вы написали, он хранится на сервере? Можно ему выставить EXPIRY_DATE=GTC чтобы он хранился до тех пор пока не исполнится и переносился из дня в день? Спасибо.
Добрый день.
BASE_ORDER_KEY заранее знать не можете,поэтом каким-то образом его нужно будет заполнять после выставления лимитированной заявки. Поэтому здесь выход в рамках tri такой ставите обычную заявку, смотрите ее номер и заполняете для стопа исполнения.
Цитата
Еще вопрос, Тейк профит который Вы написали, он хранится на сервере? Можно ему выставить EXPIRY_DATE=GTC чтобы он хранился до тех пор пока не исполнится и переносился из дня в день?
Да. Если у Вас есть права на соответствующую опцию. Это можно проверить открыв форму ввода стоп заявки и посмотреть активен ли пункт "Срок действия - до отмены".
Станислав, спасибо за то что со мной возитесь! Скажите а возможно ли выставить тип стоп-лимит с заявкой по частичному исполнению одной командой? Мне в идеале надо: Я получаю сигнал на вход в короткую позицию и одной командой сообщить Квику. 1. Шорт акций по цене 100 рублей (когда она дойдет до такого значения). 2. Одновременно выставляется заявка на покупку (связанная, лимитированная и т.д. не важно, важно чтобы она была по частичному исполнению пункта 1)? 3. Стоп лосс если цена будет 110 в идеале тоже по частичному исполнению пункта 1. Ну или хотя бы без стоп лосс.
Я это реализовал в связке: 1. Лимитированная заявка. 2. Читаю файл, если статус 3, то читаю BASE_ORDER и формирую новую транзакцию в tri - Тейк профит с частичным исполнением. Так вот в целях оптимизации вычислений, хотелось бы сразу задавать все одной строкой. Меня не особо интересует Тейк профит, можно его заменить и на Стоп - лимит. Важно чтобы стоп заявка в случае выполнения лимитированной заявки появлялась и была с частичным исполнением.
Учет частичного исполнения заявки условия можно включить командой ACTIVATE_IF_BASE_ORDER_PARTLY_FILLED=yes. Рекомендуем рассмотреть тип "Тейк-профит и стоп-лимит по исполнению", пример строки доступен в руководстве пользователя (F1) Раздел 6. "Совместная работа с другими приложениями/Импорт транзакций/Примеры строк, которые могут содержаться в файле."
Все в общем реализовал что хотел. Вопрос про Связанные заявки теперь вот какой. Допустим я создал Лимитную заявку на Шорт и связанную с ней Тейк профит заявку по частичному исполнению на BUY. 1. Ситуация номер один - Лимитная заявка отработала в полном объеме и приказ на шорт исчез, теперь я вижу в системе только Активную Тейк профит заявку по частичному исполнению. Если я пошлю Kill Order по номеру Лимитной заявки, то исчезнет ли Стоп заявка если она была связанна с уже выполненной лимитной? 1. Ситуация номер два - Лимитная заявка отработала не в полном объеме и приказ на шорт не исчез, теперь я вижу в Лимитную заявку и Активную Тейк профит заявку по частичному исполнению. Если я пошлю Kill Order по номеру Лимитной заявки, то исчезнет ли Стоп заявка?
Владимир Зайцев написал: 1. Ситуация номер один - Лимитная заявка отработала в полном объеме и приказ на шорт исчез, теперь я вижу в системе только Активную Тейк профит заявку по частичному исполнению. Если я пошлю Kill Order по номеру Лимитной заявки, то исчезнет ли Стоп заявка если она была связанна с уже выполненной лимитной?
В этом случае ничего не произойдет, так как невозможно снять уже исполненную заявку.
Цитата
Владимир Зайцев написал: 1. Ситуация номер два - Лимитная заявка отработала не в полном объеме и приказ на шорт не исчез, теперь я вижу в Лимитную заявку и Активную Тейк профит заявку по частичному исполнению. Если я пошлю Kill Order по номеру Лимитной заявки, то исчезнет ли Стоп заявка?
Владимир Зайцев написал: Спасибо! Подскажите, а можно ли еще по BASE_ORDER_NUMBER помимо связанного Тейк профита поставить еще Стоп лос (в идеале тоже связанный)?
Добрый день.
Может вы имеете ввиду BASE_ORDER_KEY и не связанную, а по исполнению? То в таком случае можно использовать тип заявки:
ACTIVATED_BY_ORDER_SIMPLE_STOP_ORDER» – стоп-лимит по исполнению заявки
Владимир Зайцев написал: Спасибо! Подскажите, а можно ли еще по BASE_ORDER_NUMBER помимо связанного Тейк профита поставить еще Стоп лос (в идеале тоже связанный)?
Добрый день.
Может вы имеете ввиду BASE_ORDER_KEY и не связанную, а по исполнению? То в таком случае можно использовать тип заявки: ACTIVATED_BY_ORDER_SIMPLE_STOP_ORDER» – стоп-лимит по исполнению заявки
Добрый день! 1. Сначала я выставляю лимитную на шорт. sellonRynok:='ACCOUNT=L01-00000F00; CLIENT_CODE=666; TYPE=L; TRANS_ID=' +inttostr(transID) + '; CLASSCODE=' + Kod_ploschadki + '; SECCODE=' + SECCODE +'; ACTION=NEW_ORDER; OPERATION=S; PRICE=' + FloatToStr(b) + '; QUANTITY=' + QUANTITY + ';'; 2. После того как Quik ее регистрирует, я ловлю ее BASE_ORDER_KEY и создаю связанную заявку по частичному исполнению на бай. limitBy:= 'ACTION=NEW_STOP_ORDER; TRANS_ID=' +inttostr(transID+1) + '; STOP_ORDER_KIND=ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER; BASE_ORDER_KEY=' + OrderDlyaPodstanivki + '; USE_BASE_ORDER_BALANCE=yes; ACTIVATE_IF_BASE_ORDER_PARTLY_FILLED=yes; SPREAD=0; OFFSET=0; OFFSET_UNITS= PERCENTS; SPREAD_UNITS= PERCENTS; STOPPRICE=' + FloatToStr(a) + '; CLIENT_CODE= 666; OPERATION=B; SECCODE=' + SECCODE +'; CLASSCODE=' + Kod_ploschadki + '; ACCOUNT=L01-00000F00;';
Можно ли тут же выставить еще одну заявку по частичному исполнению заявки из пункта 1 лимитирующую потери, ну т.е. вроде стоплоса по BASE_ORDER_KEY?
Спасибо. Извините за за ошибки в терминах, понимаю что Вам так сложнее разбираться в моих хотелках.
Владимир Зайцев написал: Можно ли тут же выставить еще одну заявку по частичному исполнению заявки из пункта 1 лимитирующую потери, ну т.е. вроде стоплоса по BASE_ORDER_KEY?
Добрый день. Если только таким образом. Стоп лимит по исполнению заявки. Т.е тоже самое, что и во втором пункте у Вас, только вместо STOP_ORDER_KIND=ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER указываете STOP_ORDER_KIND=ACTIVATED_BY_ORDER_SIMPLE_STOP_ORDER.
Владимир Зайцев написал: Можно ли тут же выставить еще одну заявку по частичному исполнению заявки из пункта 1 лимитирующую потери, ну т.е. вроде стоплоса по BASE_ORDER_KEY?
Добрый день. Если только таким образом. Стоп лимит по исполнению заявки. Т.е тоже самое, что и во втором пункте у Вас, только вместо STOP_ORDER_KIND=ACTIVATED_BY_ORDER_TAKE_PROFIT_STOP_ORDER указываете STOP_ORDER_KIND=ACTIVATED_BY_ORDER_SIMPLE_STOP_ORDER.
Добрый день. Получилось сделать тейк профит и стоп лосс как Вы советовали. Теперь вот какой вопрос.
1. Сначала я выставляю лимитную на шорт. sellonRynok:='ACCOUNT=L01-00000F00; CLIENT_CODE=666; TYPE=L; TRANS_ID=' +inttostr(transID) + '; CLASSCODE=' + Kod_ploschadki + '; SECCODE=' + SECCODE +'; ACTION=NEW_ORDER; OPERATION=S; PRICE=' + FloatToStr(b) + '; QUANTITY=' + QUANTITY + ';'; 2. После того как Quik ее регистрирует, я ловлю ее BASE_ORDER_KEY и создаю две связанных заявки по частичному исполнению на тейк профит и стоп лимит по исполнению, используя BASE_ORDER_KEY пункта 1.
1. Я Шорчу по 100 2. Выставляется заявка на Покупку(тейк профит) по 90. 3. Выставляется заявка Стоп Лосс на 110.
Допустим я зашортил 100, и заявки 2-3 пункта стали активными
вот если профит отработал по 90, заявка на стоп лосс исчезнет? И наоборот, Снимет ли стоп лосс Тейк профит? Ведь связанны они по BASE_ORDER_KEY лимитной заявки.
Проверил опытным путем. После того как лимитная отработала и оба стопа стали активными, при срабатывании условия Тейк Профит, Стоп Лосс остался висеть. Что делать в такой ситуации? Может есть возможность Тейк Профит и Стоп Лосс по частичному исполнению выставлять одной заявкой?
1. Я Шорчу по 100 2. Выставляется заявка на Покупку(тейк профит) по 90. 3. Выставляется заявка Стоп Лосс на 110.
Допустим я зашортил 100, и заявки 2-3 пункта стали активными
вот если профит отработал по 90, заявка на стоп лосс исчезнет? И наоборот, Снимет ли стоп лосс Тейк профит? Ведь связанны они по BASE_ORDER_KEY лимитной заявки.
Спасибо.
Добрый день.
В этом случае будет так. После того, как обычная заявка исполнится, то активируется либо тейк по исполнению, либо стоп по исполнению исходя из условий. При этом после исполнения, например тейка, стоп останется в статусе активен. Если вы хотите, чтобы при исполнении тейка снимался стоп и наоборот, то Вам нужно выбрать другое условие. Т.е после шорта 100 выставить "Тейк профит и стоп лимит по исполнению". Т.е ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER.
1. Я Шорчу по 100 2. Выставляется заявка на Покупку(тейк профит) по 90. 3. Выставляется заявка Стоп Лосс на 110.
Допустим я зашортил 100, и заявки 2-3 пункта стали активными
вот если профит отработал по 90, заявка на стоп лосс исчезнет? И наоборот, Снимет ли стоп лосс Тейк профит? Ведь связанны они по BASE_ORDER_KEY лимитной заявки.
Спасибо.
Добрый день.
В этом случае будет так. После того, как обычная заявка исполнится, то активируется либо тейк по исполнению, либо стоп по исполнению исходя из условий. При этом после исполнения, например тейка, стоп останется в статусе активен. Если вы хотите, чтобы при исполнении тейка снимался стоп и наоборот, то Вам нужно выбрать другое условие. Т.е после шорта 100 выставить "Тейк профит и стоп лимит по исполнению". Т.е ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER.
Спасибо. Т.е. Вместо двух заявок Тейк Профит по исполнению и Стоп Лимит по исполнению Их объединить. Верно? Спасибо. А ее можно использовать с опцией ACTIVATE_IF_BASE_ORDER_PARTLY_FILLED=yes;? Т.е. чтобы она активировалась при частичном исполнении?
1. Я Шорчу по 100 2. Выставляется заявка на Покупку(тейк профит) по 90. 3. Выставляется заявка Стоп Лосс на 110.
Допустим я зашортил 100, и заявки 2-3 пункта стали активными
вот если профит отработал по 90, заявка на стоп лосс исчезнет? И наоборот, Снимет ли стоп лосс Тейк профит? Ведь связанны они по BASE_ORDER_KEY лимитной заявки.
Спасибо.
Добрый день.
В этом случае будет так. После того, как обычная заявка исполнится, то активируется либо тейк по исполнению, либо стоп по исполнению исходя из условий. При этом после исполнения, например тейка, стоп останется в статусе активен. Если вы хотите, чтобы при исполнении тейка снимался стоп и наоборот, то Вам нужно выбрать другое условие. Т.е после шорта 100 выставить "Тейк профит и стоп лимит по исполнению". Т.е ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER.
Спасибо. Т.е. Вместо двух заявок Тейк Профит по исполнению и Стоп Лимит по исполнению Их объединить. Верно? Спасибо. А ее можно использовать с опцией ACTIVATE_IF_BASE_ORDER_PARTLY_FILLED=yes;? Т.е. чтобы она активировалась при частичном исполнении?
Спасибо, все получилось. Закончил писать робота :-) Последний вопрос. Почему нельзя для ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER; ACTIVATE_IF_BASE_ORDER_PARTLY_FILLED=yes; ставить EXPIRY_DATE=GTC ? В чем смысл такого запрета?
Владимир Зайцев написал: Спасибо, все получилось. Закончил писать робота :-) Последний вопрос. Почему нельзя для ACTIVATED_BY_ORDER_TAKE_PROFIT_AND_STOP_LIMIT_ORDER; ACTIVATE_IF_BASE_ORDER_PARTLY_FILLED=yes; ставить EXPIRY_DATE=GTC ? В чем смысл такого запрета?
Добрый день.
Должно работать. Откройте обычную форму заявки в QUIK, и посмотрите данное поле у Вас активно, если нет, то необходимо обратиться к брокеру, чтобы он активировал для вашей учетной записи.