Морошкин

Расчет позиции и автоматическое выставление стоп-приказа в Quik

252 сообщения в этой теме

Всем привет!

 

Обновил калькулятор уровней позиции. Теперь он умеет автоматически выставлять стоп-приказ при входе в позицию и корректировать его при изменении позиции. Краткое описание работы:

 

Программа рассчитывает уровни допустимой максимальной просадки и цели для длинной и короткой позиции, открытой по текущей цене ask и bid, соответственно. Расчет производится для двух значений объема входа в позицию. Так же рассчитывается допустимый объем позиции при выставлении стоп-приказа в одном шаге от цены открытия (Stop AT Open), при этом предполагается, что позиция открывается в сторону роста бара. Вычисленные уровни отображаются в окне биржевого терминала и наносятся на заданный график цены.

 

post-22154-1286893221_thumb.jpg

 

В процессе работы отслеживаются сделки по заданному инструменту. В случае обнаружения открытия позиции программа переключается в режим расчета ее параметров. При этом возможно автоматическое выставление стоп-приказа и тейк-профита исходя из заданного уровня риска и цели. В дальнейшем параметры выставленных приказов корректируются в соответствии с изменениями позиции.

 

post-22154-1286893228_thumb.jpg

 

Перед установкой программы требуется провести настройку основных параметров.

 

Скачать калькулятор и инструкцию к нему можно здесь: http://www.moroshkin.com/q_calc.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Привет. Чот не хочет робить. Пишет: Detected active position. При этом работа программы будет приостановлена для предотвращения ее реакции (выставления стоп-приказа) на сделку закрытия позиции. Что это значит? Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Привет. Чот не хочет робить. Пишет: Detected active position. При этом работа программы будет приостановлена для предотвращения ее реакции (выставления стоп-приказа) на сделку закрытия позиции. Что это значит? Спасибо.

Это значит, что на момент запуска скрипта уже есть отрытая позиция по заданному инструменту (в таблице "позиции по клиентским счетам" поле "тек. чист. поз" отлично от нуля). Невозможно работать с позицией, открытой без ведома этого скрипта, т.к. не известны ее параметры (цена входа). А они требуются для расчета допустимой просадки и цели. После того, как данная позиция будет закрыта, программа заработает сама и будет отслеживать отрытие новых позиций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, друг. Давно истак подобную прогу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Спасибо, друг. Давно истак подобную прогу.

Да, Супер-Мега-Респект! А можно сделать, чтобы стопы рассчитывались в проценте от цены одного контракта?

Сделай где-нибудь ссылку на яндекс.деньги, чтобы народ мог пожертвования вносить!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А можно сделать, чтобы стопы рассчитывались в проценте от цены одного контракта?

Т.е. стоп считать не как допустимую просадку от размера счета, а просто как % изменения цены контракта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Реально сделать чтоб при докупке выставлялся второй или общий стоп на новом уровне?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Т.е. стоп считать не как допустимую просадку от размера счета, а просто как % изменения цены контракта?

Ну да. Т.е. например цена контракта 150 000, стоп 0.3% = 450 пунктов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

При переносе через ночь программа стала некоректно работать. Стоишь в лонг, она показывает , что у тебя шорт и выставляет приказ на откуп этого шорта. и само количество лотов показывает неправильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Реально сделать чтоб при докупке выставлялся второй или общий стоп на новом уровне?

Да, планирую это реализовать в следующих версиях. Так же в планах поддержка переноса позиции и активное управление ею.

 

Ну да. Т.е. например цена контракта 150 000, стоп 0.3% = 450 пунктов

Ок, в ближайшее время сделаю такую возможность.

 

При переносе через ночь программа стала некоректно работать. Стоишь в лонг, она показывает , что у тебя шорт и выставляет приказ на откуп этого шорта. и само количество лотов показывает неправильно.

Спасибо за информацию. В принципе перенос пока не поддерживается, но поведение однозначно некорректное, буду разбираться в чем дело. Хотелось бы уточнить следующее:

1. Закрывался ли на ночь Квик?

2. Если нет (был запущен всю ночь), было ли переподключение к серверу?

3. После подключения были ли очищены таблицы заявок и сделок?

4. Были ли какие-либо еще сделки с данным контрактом, кроме открытия лонга (например, уменьшение позиции при переносе)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Закрывался ли на ночь Квик?

Квик незакрывался. (хотя и при закрытии квика было тож самое.)

2. Если нет (был запущен всю ночь), было ли переподключение к серверу?

Сервер отключался и заново утром подключался.

3. После подключения были ли очищены таблицы заявок и сделок?

Сам ни чего не делал. Если только квик сам это проделывает.

4. Были ли какие-либо еще сделки с данным контрактом, кроме открытия лонга (например, уменьшение позиции при переносе)?

нет. только одна операция открытие лонга, автостоп и все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Выпустил версию 2.1:

  • добавлена возможность выполнения расчетов в % от цены контракта, вместо % от капитала (параметр CALC_BASE);
  • реализована возможность работы программы при наличии нескольких субсчетов;
  • ужесточен контроль поступающих данных от терминала;
  • расширены сообщения о статусе программы.

Некорректное поведение при переносе позиции теперь должно исчезнуть. Хотя ситуацию определения шорта, когда был лонг мне смоделировать не удалось. Но ужесточение контроля данных должно помочь.

 

http://www.moroshkin.com/q_calc.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте Николай. Расскажите, пожалуйста, более детально как настраивать эти вещи:

Полный путь к файлу протокола активности программы

LOGFILE="q_calc.log" Надо самому создать папку и указать путь к ней или программа сама создаст папку?

 

' Код инструмента.

SECCODE="RIZ0" Это значение откуда брать из Квика?

 

' Код класса инструмента.

CLASSCODE="SPBFUT" Это значение откуда брать из Квика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Полный путь к файлу протокола активности программы

LOGFILE="q_calc.log" Надо самому создать папку и указать путь к ней или программа сама создаст папку?

Наилучший вариант это указать путь где лежит Quik, например: "C:\Program Files\QUIK\q_calc.log".

 

SECCODE="RIZ0" Это значение откуда брать из Квика?

Это значение берется из таблицы текущих параметров Квика, из поля "Код бумаги". RIZ0 - это код декабрьского фьючерса на индекс РТС.

 

CLASSCODE="SPBFUT" Это значение откуда брать из Квика?

Это значение так же можно посмотреть в таблице текущих параметров - "Код класса". Но для всех фьчерсов на FORTS оно одинаковое (SPBFUT), поэтому это значение можно не менять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Отвал башки. Один день с момента запроса на изменение :P Так всегда будет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Выпустил версию 2.1:
  • добавлена возможность выполнения расчетов в % от цены контракта, вместо % от капитала (параметр CALC_BASE);
  • реализована возможность работы программы при наличии нескольких субсчетов;
  • ужесточен контроль поступающих данных от терминала;
  • расширены сообщения о статусе программы.

Некорректное поведение при переносе позиции теперь должно исчезнуть. Хотя ситуацию определения шорта, когда был лонг мне смоделировать не удалось. Но ужесточение контроля данных должно помочь.

 

http://www.moroshkin.com/store/q_calc.zip

 

Спасибо. Друг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

К сожалению, перенос позиции через клиринг все еще не очень хорошо отрабатывается. Дело в том, что на время клиринга в таблицах Квика появляются значения не соответствующие действительности, тем самым сбивая программу с толку.

 

Сейчас q_calc может быть в следующих состояниях:

  • Если ранее открыта позиция (без ведома q_calc), выводится сообщение о том, что обнаружена неизвестная позиция. При этом его работа приостанавливается.
  • Если позиция была открыта под контролем q_calc, будет выставлен автостоп и программа войдет в режим отслеживания позиции.
  • Если позиции нет, q_calc будет рассчитывать уровни (Long/Short для 80 и 100% изначально).
  • Если не удалось получить какие-либо данные от Квика (такое часто бывает), будет выведено сообщение о том, что ожидаются данные.
  • Если была обнаружена сделка, открывающая позицию, но информация о позиции еще не появилась в таблице "позиции по клиентским счетам" будет выведено сообщение "Ожидание данных о позиции". Обычно это сообщение появляется на 1 секунду, после чего программа переходит в режим отслеживания позиции.

Это нормальная работа программы.

Но если есть открытая позиция, а q_calc считает уровни (Long/Short для 80/100%) - это невеверное состояние. При этом следует перезапустить программу (Правая кнопка мыши на ее таблице -> Начать расчет заново).

 

Я работаю над решением, возможно оно будет даже в полной поддержке переноса позиции. Но пока следует не упускать из внимания происходящее в терминале.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так и не смог запустить версию 2.0, перепробовал вроде все варианты настройки... Версия 2.1. встала с первого раза! Спасибо! А можно программу обучить, чтобы она рассчитывала стоп в прописанных мной пунктах независимо от количества контрактов? К примеру: у меня счет на 10 контрактов, стоп 300 пунктов, но в при входе в позицию я хочу зайти 3 контрактами и хочу чтобы стоп тоже был 300 пунктов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А можно программу обучить, чтобы она рассчитывала стоп в прописанных мной пунктах независимо от количества контрактов? К примеру: у меня счет на 10 контрактов, стоп 300 пунктов, но в при входе в позицию я хочу зайти 3 контрактами и хочу чтобы стоп тоже был 300 пунктов.

Да, в следующей версии сделаю такую возможность. Пока же можно воспользоваться расчетом в % от цены контракта (CALC_BASE=1). Подобрать такое % значение, которое будет соответствовать желаемому значению в пунктах. При этом стоп и цель не будут зависеть от кол-ва контрактов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как можно поменять цвет стоп-линий на графике? При кликанье их появляется окно "Настройки метки", меняю цвет, нажимаю ОК, но цвет не меняется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Цвет линий на графике забит в коде программы. Через меню настройки метки его изменить не удастся, т.к. уровень периодически перерисовывается. В принципе, могу вынести эту настройку в конфигурацию, если нужно. Хотя не хотелось бы ее загромождать различными опциями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А можешь тогда рассказать как поменять цвет линий в коде программы, например на желтый или оранжевый, если это не сложно :lol: ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для версии 2.1 это строка 264:

plot_level(ldate,bar_time,vstop,255,0,0,"Stop (" & vname & ")")

В ней 255,0,0 - цвет уровня. Но без знания QPILE изменять что-либо в коде не рекомендую - может вылести боком в самый не подходящий момент. Возможно в следующих версиях вынесу настройку цвета в конфигурационный файл, пока рассмативаю данную возможность.

 

Код желтого цвета 255,255,0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Николай, Привет.

 

Есть ли возможность сделать, что бы расчетное количество контрактов вставало автоматом в форму ВВОД ЗАЯВКИ?.

 

и чтоб при докупке таблица правильно делала расчет.

 

и пустую строчку №2 при входе в позу не рисовала(у мня ноутбук и ограничен размер экрана) - необязательное пожелание.

 

Спасибо за труды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Есть ли возможность сделать, что бы расчетное количество контрактов вставало автоматом в форму ВВОД ЗАЯВКИ?.

Нет, средствами QPILE такого сделать не удастся. Но есть возможность передать q_calc команду, что бы он сам открыл (или закрыл) позицию. Эту команду нужно подавать извне Квика, например, журнала сделок. Ну, это как вариант. Здесь все открыто для обсуждения для будущих версий.

 

Докупка и перенос позиции будут в ближайшей версии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас