Так как стакан в Quik реализован в табличном виде, без графических элементов, то предложу только те доработки, которые легко и быстро реализовать для текущего вида стакана. Конечно в идеале неплохо бы иметь что-то типа Qscalp, но для этого придётся переделывать графическую часть стакана полностью и вряд-ли это вы реализуете.
Предлагаю следующие доработки:
1) Добавьте в настройки стакана установку стоп-лосса по-умолчанию, указываемую в количествах пунктов от цены заявки. Стакан приспособлен для быстрой торговли и выставлять стоп-лоссы некогда, а страховку на непредвиденные случаи иметь надо всегда. Если данное поле не заполнено, то стоп-лосс не ставится.
2) Добавьте в настройки стакана установку тейк-профита по-умолчанию, который будет ставиться относительно выставленной заявки и указываться в количествах пунктов. Если поле пустое, то тейк-профит не ставится.
3) Сейчас в стакане можно ставить отложенные лимитные заявки. Добавьте возможность ставить стоп-лоссы и тейк-профиты. Предлагаю это реализовать так: При щелчке средней кнопкой мыши по колонке "Свой объём", будет выставляться стоп-лосс или тейк-профит. Повторное действие снимает их. Тип заявки будет зависеть от того с какой стороны находится лимитная заявка. Сейчас в колонке "Свой объём" отображается объём лимитных заявок. Так же в ней отображать объём стоп-лосса и тейк-профита, но другим цветом. Цвет для стопа и профита указывать в настройках. Также добавить возможность переноса мышкой этих заявок.
4) В ячейке "Свой объём" оставлять пометку цены открытия позиции до тех пор, пока сделка не закроется, чтобы было видно, где был осуществлён вход. Если будет несколько цен открытия, то усреднять их. Отображать пометку другим цветом, относительно заявок.
5) Отображать количество пунктов, которое несёт сделка. Можно в строке состояния или в панели стакана. Положительное число подкрашивать зелёным цветом, а отрицательное красным.
Можно в колонке "Свой объём" напротив лучшей цены покупки для продаж и лучшей цены продажи для покупок отображать: "Открытый объём | количество пунктов" Заодно будет хорошая индикация открытой позиции. Отображать это другим цветом, можно даже жирным шрифтом. Лучше, чтобы всё настраивалось.
6) Если разница между текущей ценой и ценой открытия несёт положительное число пунктов, то ячейки между этими ценами в колонке "Свой объём" подкрашивать зелёным цветом. Если же число пунктов отрицательное, то красным цветом. Цвета настраивать в настройках.
7) Сейчас в стакане можно выделять одну строку, но если с неё пропадёт объём, то пропадает и сама строка, а выделение перепрыгивает на другую строку. Оставить строку с выделением даже если на ней пустой объём, а строку с пустым объёмом не отображать, только когда будет выделена другая.
8) Добавить свои метки, чтобы можно было выделить строки стакана, которые, например, являются какими-нибудь уровнями и чтобы они не пропадали из стакана, даже если будут иметь пустой объём. Выделение реализовать при щелчке правой кнопкой мыши на колонке "Свой объём". Повторное действие снимет выделение с соответствующей строки. И дополнительный способ -- это при вводе цены в поле цена стакана и нажатии специальной кнопки, которая будет ставить/снимать метку -- такой способ пригодиться, если цены нет в стакане.
9) В дополнении к вышесказанному, все метки, позиции, стопы и т.д. сохранять для каждого инструмента хотя бы в текущей сессии, чтобы при переключении на другой инструмент, а потом при возврате на этот, ничего не пропало.
10) Ещё желательно сделать так, чтобы при наведении мыши на стакан(или соответствующую колонку в нём), цена в нём прыгала как можно меньше. Например, если в этот момент исчезает какой-нибудь объём, то не удалять строку с соответствующей ценой, а оставлять во избежании перемещения всех остальных строк. А то бывает хочешь заявку поставить, а в стакане всё прыгает. И так же часто бывает, что по той же причине ставишь заявку на другой цене, просто промахиваешься. Ещё как вариант решения данной проблемы -- это оставлять неизменным положение цены(строки) под курсором, а все остальные цены(строки) будут смещаться относительно данной. Тогда, если наведёшь курсор на какую-нибудь цену, то точно на ней и разместишь заявку, так как она никуда не убежит. Даже с пустым объёмом ода должна оставаться на месте, пока курсор над ней.
Все доработки я пытался привязать к текущему стакану, чтобы разработчикам было максимально просто их осуществить. (При этом стакан останется таким же компактным.) В результате подумайте сами, как вам будет проще и как лучше. Может вы реализуете ещё красивей и удобней, чем я описал. А может конечно и ничего не сделаете. Всё это можно добавлять постепенно. Для начала сделайте стоп-лоссы по-умолчанию -- это очень важная функция, т.к. защищает от больших потерь.
Здравствуйте, Денис. Благодарим за подробное изложение сути Вашего пожелания по улучшению таблицы котировок рабочего места QUIK. Прежде чем регистрировать Ваши пожелания для дальнейшего рассмотрения, хотели бы прояснить некоторые моменты.
1. Такие параметры как "цена стоп-лимит", "цена тейк-профит", "отступ", "спред" - доступны только для условных (стоп-) заявок. Лимитные/рыночные заявки таких параметров не имеют. Соответственно, если речь идёт об установке данных параметров по умолчанию при вводе заявки, то возникает следующий вопрос: Вы хотите, что бы при установленных значениях данных полей в торговой панели таблицы котировок: 1) при вводе обычной заявки из стакана происходило выставление связанной стоп-заявки (возможно выставление только лимитной заявки и заявки по условию стоп-лимит, тейк-профит недоступен) 2) при вводе стоп-заявки (клавиша f6) из заявки стакана заданные значения подставляются в соответствующие поля в окне ввода условной заявки 3) предлагался ввод условной заявки вместо лимитной Или вы подразумеваете нечто иное?
2. В настоящем, в таблице котировок не отображаются установленные пользователем условные заявки. Правильно ли пониманием, что для реализации Ваших пожеланий также подразумевается возможность отображения условных заявок в таблице котировок и соответствующая информация относительно их условий, состояния и др.?
Andrey Bezrukov написал: 1) при вводе обычной заявки из стакана происходило выставление связанной стоп-заявки (возможно выставление только лимитной заявки и заявки по условию стоп-лимит, тейк-профит недоступен)
Сейчас вместо тейк-профита я устанавливаю противоположную лимитную заявку в стакане. Но они иногда сами куда-то пропадают. То-ли они работают в текущей сессии и потом удаляются, непонятно.
Для стоп-лосса пусть выставляется связанная стоп-заявка тогда.
Цитата
Andrey Bezrukov написал: 2) при вводе стоп-заявки (клавиша f6) из заявки стакана заданные значения подставляются в соответствующие поля в окне ввода условной заявки
Этот метод долгий и рискованный, т.к. там(на рынке) всё быстро может происходить. Вдруг выполнится лимитный ордер и пропадёт связь с интернетом, в результате чего не успеешь установить стоп заявку и понесёшь большие убытки. Поэтому стоп-заявка должна устанавливаться одновременно с открытием позиции на сервере.
Цитата
Andrey Bezrukov написал: 3) предлагался ввод условной заявки вместо лимитной
Нет, предлагался просто стоп-лосс. Как я понимаю, то условная заявка может сработать не по той цене, в отличие от лимитной. Лимитная подходит лучше, но при её срабатывании надо устанавливать стоп-лосс, если он задан. Возможно вам надо ещё доработать лимитную заявку, чтобы можно было привязать к ней стоп-заявку, которая автоматом установится при срабатывании лимитной.
Я в вашей программе недавно и пока не всё знаю. Перед ней пользовался метатрейдером. В нём при выставлении любого отложенного ордера можно сразу ему задать стоп-лосс и тейк-профит, это всё выставится автоматом на сервере при срабатывании этих ордеров. При этом тоже самое можно задать и при выставлении рыночной заявки. А при работе из стакана там можно задать стоп-лосс и тейк-профит по-умолчанию в пунктах от цены сделки и без разницы какие ордера потом выставлять, стоп-лосс и тейк-профит будут выставляться автоматически. При этом это всё одинаково работает на рынке форекс, акций, фьючерсов и т.д. А для трейдера это очень удобно.
Вы мне задали уточняющие вопросы, я если честно их не до конца понял. Посмотрите в ютубе, например, привод Qscalp, который работает в том числе и совместно с вашим терминалом. В нём можно выставлять стоп-лосс и тейк-профит по-умолчанию. И так же можно выставлять стопы из самого стакана. Вот сделайте так же. Каким способом это будет реализовать лучше всего, тоже решите сами, т.к. платформа ваша и вы в ней лучше разбираетесь, чем я. Надо только, чтобы это всё работало на сервере и если произойдёт обрыв связи, то я знал, что мои позиции защищены.
Цитата
Andrey Bezrukov написал: 2. В настоящем, в таблице котировок не отображаются установленные пользователем условные заявки. Правильно ли пониманием, что для реализации Ваших пожеланий также подразумевается возможность отображения условных заявок в таблице котировок и соответствующая информация относительно их условий, состояния и др.?
Да, если в стакане открывается позиция, то должна висеть информация напротив соответствующей цены, что именно там позиция открылась. Так же должна быть информация о стоп-лоссе, напротив цены, где он стоит. И информация о тейк-профите, напротив цены, где он стоит. Текущая позиция должна отображаться на лучших ценах и трейдер при взгляде на стакан сразу видит всю необходимую информацию: 1) по какой цене он открыл позицию. 2) если цена пойдёт не в ту сторону, то по какой цене она закроется. И он примерно видит расстояние между ценой открытия и стопом(конечно, если всё помещается на экране) и понимает далеко ли туда идти и что стоит на пути. 3) если цена пойдёт в нужном направлении, то далеко ли ей идти до тейк-профита -- это тоже будет видно в стакане, т.к. данная цена тоже будет помечена в стакане. Как я уже писал выше, тейк-профит в данном случае я ставлю выставлением противоположной позиции, т.к. по-другому нельзя. Но этот метод тоже нормальный, кроме некоторых недостатков: 1) Почему-то данная заявка иногда сама пропадает из стакана. 2) Если одновременно выставить два лимитных ордера -- один будет заявкой на открытие позиции, а другой тейк-профитом к ней, то если цена пойдёт сразу к тейк-профиту, то сработает он и откроется позиция туда, куда не нужно было. Таким образом тейк-профит, таким методом, должен открываться только в том случае, если сработала основная заявка, т.е. данные ордера должны быть связаны, а тейк-профит тогда станет условным ордером, который выставляется при срабатывании другого лимитного ордера. И тек-профит должен существовать пока существует "родительская" позиция, к которой он привязан.
И ещё, эти все заявки должны не просто отображаться в стакане, но так же, чтобы их можно было отменять прямо из стакана или переносить.
Ваши пожелания зарегистрированы (CQ02526394), (CQ02526400), (CQ02526402). Мы постараемся рассмотреть их и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожеланий в будущих версиях ПО.
Здравствуйте, Денис. В ходе рассмотрения Ваших пожеланий (7, 10) возникли некоторые сомнения относительно того, верно ли мы их поняли. В связи с этим хотели прояснить следующие моменты.
Цитата
Денис написал: 7) Сейчас в стакане можно выделять одну строку, но если с неё пропадёт объём, то пропадает и сама строка, а выделение перепрыгивает на другую строку.Оставить строку с выделением даже если на ней пустой объём, а строку с пустым объёмом не отображать, только когда будет выделена другая.
1. Правильно ли мы понимаем - Вы хотите следующую реализацию стакана:
1) Есть стакан с котировками, в котором отображаются цены и объёмы выставленных заявок; 2) Вы выделяете строку ЛКМ; 3) запоминается цена выделенной строки и при вводе заявки она подставится; 4) как только весь объём выделенной заявки станет равен 0 (например, по всем заявкам были заключены сделки / либо заявки были сняты) - пропадает и строка котировки, и выделение; 5) при попытке ввода заявки - по-прежнему будет подставлена цена ранее выделенной и пропавшей строки котировки; 6) правильно Вас понимаем?
Соответственно, сейчас при обнулении объёма строки котировки - выделение смещается, и при вводе заявки используется цена новой выделенной строки, и это Вас не устраивает, правильно понимаем?
2. Терминал QUIK предоставляет функцию отображения таблицы котировок в ражиме "разряженного стакана". При включенной данной функции в таблице стакана кроме самих котировок с объёмом и ценой будут отображаться также промежуточные цены (с учётом шага цены) с нулевым объёмом. Соответственно, при выборе строки котировки и дальнейшем обнулении объёма - строка с данной ценой останется в стакане, выделение останется на ней. Предлагаем подробнее изучить данный функционал и сообщить, не решает ли он Вашу задачу. В случае, если данный функционал не отвечает Вашим требованиям - просим уточнить почему, и в чём по-Вашему должно быть отличие между уже имеющимся функционалом и тем, что Вы предлагаете реализовать.
3.
Цитата
Денис написал: 10) Ещё желательно сделать так, чтобы при наведении мыши на стакан(или соответствующую колонку в нём), цена в нём прыгала как можно меньше.Например, если в этот момент исчезает какой-нибудь объём, то не удалять строку с соответствующей ценой, а оставлять во избежании перемещения всех остальных строк.А то бывает хочешь заявку поставить, а в стакане всё прыгает.И так же часто бывает, что по той же причине ставишь заявку на другой цене, просто промахиваешься.Ещё как вариант решения данной проблемы -- это оставлять неизменным положение цены(строки) под курсором, а все остальные цены(строки) будут смещаться относительно данной. Тогда, если наведёшь курсор на какую-нибудь цену, то точно на ней и разместишь заявку, так как она никуда не убежит. Даже с пустым объёмом ода должна оставаться на месте, пока курсор над ней.
Правильно понимаем, что, по-большому счёту, это то же самое, что и (7) пожелание, просто здесь рассматривает случай когда нет необходимости отдельно выделять стройку при помощи ЛКМ, а достаточно просто навести курсор? И, соответственно, просим сообщить, не решает ли эту задачу вышеизложенная информация о разряженном стакане. Если нет, то почему, в чём принципиальное отличие от пожелания (7), если оно имеет место.
Andrey Bezrukov написал: 3) запоминается цена выделенной строки и при вводе заявки она подставится;
Я конечно о таком не писал, но думаю, что это будет полезная функция, т.к. пользователь может выделить сначала цену, а потом нажать соответствующую кнопку. Но естественно при этом надо оставить быстрый ввод в стакане так, как реализовано сейчас, чтобы нажал на определённую колонку и ордер выставился сразу. Я же выше имел ввиду другое: Сейчас в стакане бывают цены быстро прыгают и нет совсем никакой индикации относительно того, где находится открытая позиция. Но есть возможность выделить одну строчку. Так вот я иногда её выделяю и относительно её смотрю, где цена. Например если цена пойдёт ниже выделенной строчки, то мне надо резко закрыть позиции. Это я вручную делаю, но проблема в другом -- сама выделенная строчка прыгает, т.е. если на этой цене пропадёт объём, то выделенная строчка с этой цены спрыгнет и я потеряю ориентацию в стакане. Так вот я предложил запоминать цену выделенной строчки и в не зависимости есть ли на ней объём или нет, выводить её всегда. Допустим, что я выделил строчку с ценой 20 и объёмом 100, потом объём стал 0, но эта выделенная строчка по прежнему должна выводится. И если вы не выводите нулевые объёмы, то в данном случае выводить эту строчку только потому, что она выделенная. Если я выделю другую строчку, то эту можно не выводить уже в стакане, если её объём будет равен нулю. Надеюсь понятно описал.
Цитата
Andrey Bezrukov написал: 4) как только весь объём выделенной заявки станет равен 0 (например, по всем заявкам были заключены сделки / либо заявки были сняты) - пропадает и строка котировки, и выделение; 5) при попытке ввода заявки - по-прежнему будет подставлена цена ранее выделенной и пропавшей строки котировки; 6) правильно Вас понимаем?
Нет, получается неправильно. Я в том пункте описал только то, чтобы выделенная строка всегда отображалась на экране, о торговых функциях там ничего нет. Это просто отображение для ориентации в пространстве. Просто плохо когда я выделил одну строку, а потом моё выделение само перепрыгивает на другую.
Цитата
Andrey Bezrukov написал: Соответственно, сейчас при обнулении объёма строки котировки - выделение смещается, и при вводе заявки используется цена новой выделенной строки, и это Вас не устраивает, правильно понимаем?
Вообще конкретно об этом я даже не задумывался, но если подумать логически, то по-моему правильно было бы всегда сохранять выделенную строку пользователя. Если он что-то выделил, значит именно это и должно быть выделено. А если выделение само перескакивает, то это неправильно. Он может по ошибке открыть позицию по другой цене, не по той, что планировал.
Цитата
Andrey Bezrukov написал: 2. Терминал QUIK предоставляет функцию отображения таблицы котировок в ражиме "разряженного стакана". При включенной данной функции в таблице стакана кроме самих котировок с объёмом и ценой будут отображаться также промежуточные цены (с учётом шага цены) с нулевым объёмом. Соответственно, при выборе строки котировки и дальнейшем обнулении объёма - строка с данной ценой останется в стакане, выделение останется на ней. Предлагаем подробнее изучить данный функционал и сообщить, не решает ли он Вашу задачу. В случае, если данный функционал не отвечает Вашим требованиям - просим уточнить почему, и в чём по-Вашему должно быть отличие между уже имеющимся функционалом и тем, что Вы предлагаете реализовать.
Да, об этом функционале я знаю. Но в некоторых случаях он не удобен потому, что все цены с объёмами в стакане не умещаются на экране. Они растянуты по всему стакану и чтобы их смотреть необходимо пользоваться прокруткой, что неудобно. Этот режим надо оставить, он полезен. Я же ещё предложил доработать режим не "разряженного стакана". Просто тогда данный режим тоже станет удобней, но при нём все цены уместятся на экране монитора.
Получается вам надо просто, как и сейчас отображать все цены с объёмом выше нуля. И плюс к этому отображать цену выделенной строки.
Цитата
Andrey Bezrukov написал: Правильно понимаем, что, по-большому счёту, это то же самое, что и (7) пожелание, просто здесь рассматривает случай когда нет необходимости отдельно выделять стройку при помощи ЛКМ, а достаточно просто навести курсор? И, соответственно, просим сообщить, не решает ли эту задачу вышеизложенная информация о разряженном стакане. Если нет, то почему, в чём принципиальное отличие от пожелания (7), если оно имеет место.
В разряженном стакане наверно цены прыгать не будут, т.к. там все они отображаются и промежуточные тоже. Если данную проблему решать с помощью разряженного стакана, то режим не разряженного стакана останется неудобным. Я говорю именно о доработке не разряженного режима, чтобы если пользователю удобен именно такой вид, то ему было бы удобно торговать именно в нём.
Сейчас попробую привести пример, чтобы вам была ясна сама проблема.
Допустим в стакане есть такая картина: Цена Объём 10 50 20 30 30 40 40 10
Потом пользователь наводит мышку на цену 30 и жмёт кнопку мыши, которая должна установить лимитный ордер или открыть позицию по рынку. Одновременно с этим из стакана пропадает объём с ценой 20, таким образом строка с ценой 30 смещается вверх, а на её место попадает строка с ценой 40. И в результате под курсором мыши пользователя оказывается строка с ценой 40 и он попадает по ней. Отложенный или рыночный ордер совершается по этой цене, что неправильно. Он же хотел на цене 30 совершить данную операцию.
Противоположная этой ситуация возникнет, если наоборот не исчезнет строка с ценой 20, а если, например, появится ещё строка с ценой 15, тогда все цены сдвинутся вниз и пользователь попадёт уже по цене 20, вместо 30.
Надеюсь вы поняли проблему. Но я предложил по-моему идеальное решение и очень простое в реализации, и поэтому сейчас повторно вам опишу весь алгоритм действий. В пункте (10) было 2 варианта решения проблемы, дальше я описываю второй вариант, так как он проще в реализации и полностью решает проблему(при первом варианте решения могут возникнуть ещё и другие трудности, поэтому его лучше отбросить.) Алгоритм действий: 1) Если пользователь навёл мышку на стакан, то вы запоминаете цену строки под курсором и её позицию в стакане. 2) Если внезапно на строке под курсором мыши пропадает объём, то вы всё-равно её помните и отображаете только потому, что она под курсором. 3) У вас идёт обновление стакана, какие-то строки появляются, какие-то исчезают. Вы это обновление всё пересчитываете и хранится оно у вас, например, в списке, но на экране ещё не отображается. Обязательно добавляете в этот список строку под курсором, так как она может иметь нулевой объём. 3) При отображении сформированного списка(стакана) на экране, т.е. при выводе этого списка, вы выводите его так, чтобы ранее запомненная цена выводилась в своей запомненной позиции, т.е., чтобы эта цена попадала под курсор мыши. Таким образом все остальные цены при их перемещении по стакану, будут двигаться относительно этой цены.
Не знаю, понятно ли я написал, но надеюсь, что ваши программисты поймут. Данный алгоритм очень лёгок в реализации. А пользователь никогда уже не промажет по цене, если так сделать.
Ещё пришёл в голову пункт доработки, который есть в других стаканах -- это "Отображение цен внутри спрэда", можно сделать соответствующую галочку в настройках. Если она будет поставлена, то в стакане должны выводится все цены между лучшей ценой покупки и лучшей ценой продажи. Это функция именно не для "Разряженного стакана". В разряженном итак всё выведется.
Хотел ещё сказать, что по-моему мнению у вас текущий стакан достаточно удобен, но он недоработанный. Там осталось совсем немного доделать и он превратится в скальперский привод. У вас уже всё почти есть, но вот этих мелочей, которых не хватает, без них им неудобно пользоваться.
Ещё конечно хорошо бы было реализовать кластерный анализ в нём, я не стал просить изначально, так как думал, что вы не будете это делать.По кластерному анализу скальперы видят например айсберги.По кластерному анализу скальперы видят например айсберги. Для программистов там нет проблем в реализации, надо только хранить в памяти цены с объёмами, в этом основная проблема, т.к. историю вы не ведёте. Может там хватило бы и истории сессии, не знаю. Но если решите и это сделать, то сделайте соответствующую настройку, чтобы можно было включать и отключать вывод кластерного анализа.
А вообще я вам ещё посоветую -- посмотрите скальперские приводы, они в демо режиме бесплатны, а можно и в ютубе даже посмотреть. (самые известные вы знаете как называются) И по-возможности реализуйте все те удобства, реализация которых не составит для вас большого труда.
Денис, Благодарим за развёрнутый ответ. Ваше пожелание было соответствующим образом скорректировано и передано разработчикам для дальнейшего анализа.
Касательно дополнительных пожеланий - к рассмотрению принимаются пожелания, из которых понятно что именно хочет клиент, что для него в приоритете и какую задачу он хочет этим решить, какое неудобство исключить, как он себе представляет реализацию данного функционала с позиций пользователя. К сожалению, пожелания общего характера, как в этом абзаце
Цитата
Денис написал: А вообще я вам ещё посоветую -- посмотрите скальперские приводы, они в демо режиме бесплатны, а можно и в ютубе даже посмотреть.(самые известные вы знаете как называются)И по-возможности реализуйте все те удобства, реализация которых не составит для вас большого труда.
к рассмотрению не принимаются. По этой причине - просим по возможности лаконично и однозначно формулировать конкретные пожелания по реализации/модернизации конкретного функционала.
Andrey Bezrukov написал: Денис, Благодарим за развёрнутый ответ. Ваше пожелание было соответствующим образом скорректировано и передано разработчикам для дальнейшего анализа.
Касательно дополнительных пожеланий - к рассмотрению принимаются пожелания, из которых понятно что именно хочет клиент, что для него в приоритете и какую задачу он хочет этим решить, какое неудобство исключить, как он себе представляет реализацию данного функционала с позиций пользователя. К сожалению, пожелания общего характера, как в этом абзаце
Цитата
Денис написал: А вообще я вам ещё посоветую -- посмотрите скальперские приводы, они в демо режиме бесплатны, а можно и в ютубе даже посмотреть.(самые известные вы знаете как называются)И по-возможности реализуйте все те удобства, реализация которых не составит для вас большого труда.
к рассмотрению не принимаются. По этой причине - просим по возможности лаконично и однозначно формулировать конкретные пожелания по реализации/модернизации конкретного функционала.
А настройки по цветам и значениям как таблицы будут? Выделять объемы цветом в стакане, не отобрать значения меньше чем...?