Transaq
СБО "Transaq" => Подсистема ATF => Topic started by: Shubert on Октября 07, 2009, 12:52:54 am
-
Добрый день!
Предлагаю забрасывать в эту тему все умные мысли по доведению до нормальной кондиции возможностей языка TRANSAQ ATF (TRANSAQ Advanced Trading Facility).
Не завёл бы этой темы, если бы за свою более чем 20-и летнюю карьеру программиста встретил хотя бы один инструмент программирования с поддержкой вычислений с плавающей точкой, который не содержит хотя бы минимальный "мостик" между такими числами с плавающей точкой и целыми числами - функцию извлечения из числа его целой составляющей int().
Вот уж разработка рассмешила :)
Если дорабатывать Transaq ATF в этом направлении, то хотелось бы в нём увидить следующие возможности:
- Функцию, возвращающую целую часть аргумента - int()
- Функцию, возвращающую дробную часть аргумента - frac()
- Оператор целочисленного деления "\"
- Оператор остатка от деления (деления по модулю) "%"
- Массивы числовые и строковые, хеши.
-
По всей видимости эти функции появятся в следующей же версии ATF (есть сомнение только насчет хешей). Это первая версия ATF, и поэтому многих функций еще нет исключительно по причине того, что не успели.
При разработке приоритетов в реализации функции мы исходили из полезности конкретных функций для трейдера. В качестве критерия мы смотрели на необходимые функции для реализации всех индикаторов, которые Transaq уже содержит, а так же плюс еще некоторые дополнительные индикаторы и стратегии. При этом целочисленные функции, а так же функции int() и frac() было решено оставить до второй версии.
-
пожелания два:
1. Сделать нумерацию строк, чтобы при выводе сообщения об ошибке в какой-то строке, эту самую строку не высчитывать..
2. Сделать возможность сохранять скрипт с ошибками. А то приходится какждый раз заново писать код и вспоминать, на чем остановился в прошлый раз.
-
Demiurg, нумерация строк у нас реализована, но чтобы она заработала, необходимо скачать dll-модуль: http://transaq.ru/docs/atf/scilexer.dll и положить его в директорию Transaq - заодно с нумерацией строк появится подсветка синтаксиса и еще ряд полезных функций.
Насчет сохранения скрипта с ошибками - это в планах, но насчет сроков сказать ничего не могу.
-
Вопрос к разработчикам - не претполагается доработка Транзака в плане оснащения полноценной лабораторией ТС- создание ТС с помощью визуальных блоков а не только языка программирования, тестирование на исторических данных, оптимизация и т.д.
Финам анонсировал систему TSlab, что-то не вдохновляет.. :-\
-
Программирование с помощью визуальных блоков не планируется, а вот тестирование и оптимизация торговых систем будет (по срокам правда пока сложно сказать).
-
1. Крайне нужна возможность работать с графиками даже при отсутствии соединения. А период, для которого данные для графиков сохраняются локально, определять в настройках. Нынешние объемы жестких дисков вполне это потянут. :-)
2. Скуден набор периодов. Не хватает периодов 1 - 10 минут с приращением в 1 минуту, да и между 1 часом и сутками есть весьма важные периоды.
-
Здравствуйте, уважаемые разработчики и "обычные" :)форумчане!
У меня вопрос к разработчикам...
Сейчас вот внимательно изучаю документацию по TRANSAQ ATF. Сразу же возникает вопрос: а для кого, собственно, разрабатывается этот язык? Для широкого круга пользователей или для узкого круга программистов? Если для широкого, как мне хотелось бы надеяться, то почему бы не "привязать" синтаксис языка к Бейсику, как это сделано во всех макросах популярных программ Microsoft? Ведь Бейсик-то мало-мальски многие знают, а тот синтаксис, на котором вы разрабатываете свой язык, непривычен для меня лично, да, думаю, и для многих других "любителей". Ведь далеко не все, кто собирается разрабатывать торговые стратегии для своих собственных нужд, являются профессионалами в программировании... Читаю вот документацию, разбираюсь в примерах и то и дело спотыкаюсь там, где спотыкаться не хотелось бы... Как классно было бы, если бы вместо, например, загадочного "I +=1" было бы написано привычное для многих непрофессионалов "I=I+1". Нет, конечно я рано или поздно привыкну, но это потребует определенного времени и усилий. А пока что приходится тормозить на многих строчках кода и переводить многие строчки на привычный для меня Бейсик...
Подозреваю, что когда я начну что-то разрабатывать, сначала буду писать на Бейсике, а уже потом переводить на тот язык, который используете вы. Двойная работа!
-
Ну на самом деле по сложности они мало чем отличаются. На мой взгляд ATF даже проще. Конструкции же вида x+=1 довольно давно уже стали стандартными практически для всех языков программирования - отстает лишь Бейсик по неведомым для меня причинам. А так мы стараемся лишний раз не усложнять, конечно, и делать язык доступным для наиболее широкой аудитории.
-
1. Крайне нужна возможность работать с графиками даже при отсутствии соединения. А период, для которого данные для графиков сохраняются локально, определять в настройках. Нынешние объемы жестких дисков вполне это потянут. :-)
2. Скуден набор периодов. Не хватает периодов 1 - 10 минут с приращением в 1 минуту, да и между 1 часом и сутками есть весьма важные периоды.
Ув. разработчикам: коллеги, поддерживаю товарища APS, у меня например есть время заниматься тестированием торговых стратегий в транзаке только с 02 до 04 часов по мск, соответственно возможность по сохраненным данным тесты запускать очень важна.
Если реализовать эти две функции, плюс добавить в АТФ вывод и ввод информации хотя бы с файловой системы (DDE, линковку DLL c внешними процедурами чтобы из АТФ в реалтайме во внешнее приложение выкинуть и назад забрать) , и глюки полечить - больше от него ничего по большому счету не нужно будет, индикаторы и проч. можно самим разрабатывать.
Если АТФ эти функции будет поддерживать - думается мне, механизаторы подтянуться и библиотечка доп .функций появится, главное перечисленные моменты обеспечить...
-
mma_tr, это все будет. Ну просто время на разработку требуется. А так по части ATF перечисленное - в списке приоритетов идет под номером 1.
-
To Heller: оно понятно, что время требуется, торопиться не следует, софтина безглючной должна быть - это самое основное.
И всё-таки, в короткую купить через АТФ можно или нет? Вчера при ндаличии денег на счете попробовал, пишет в окно вывода АТФ что-то вроде "недостаточное количество лотов". Если через интерфейс заявкой вводить, то всё работает.
-
To mma_tr: да, шортиться можно, никаких проблем с этим не должно быть. А как именно вы шортитесь? Можете привести код? (Интересует именно строчка с выставлением заявки и какие значения вы передаете; правильно ли я понимаю, что речь идет о фьючерсах?).
-
To Heller: значит, я значения терминов не очень понимаю, может быть это маржинальной торговлей называется, но суть такова:
тот же самый код, который в этой теме приводил, тот же самый инструмент - Газпром а0, если на счете есть фин. средства но нет акций - при попытке продать акции через АТФ , которые берутся в долг у брокера, появляется это сообщение об ошибке, "недостаточное кол-во лотов".
Если ту же операцию при тех же исходных данных в это же время делать через интерфейс транзака (выставляя чек бокс "в долг" или что-то подобное), то операция выполняется без ошибок.
В этой ситуации АТФ должен себя вести аналогично выставлению заявки вручную и продавать акции. взятые у брокера в долг (т.е. ошибки не должно быть), или же всё-таки есть ограничение по сравнению с интерфейсом?
-
mma_tr, сложно сказать что не так. Я открываю короткие позиции таким образом:
trade_action::sell(1, ::lots);
Это для продажи одного контракта. Вы делаете точно так же?
-
To Heller: да, именно так, как вы описали, только у меня 72 лота
trade_action::sell(1, ::lots);
Может, в настройках транзака что-то выставлять дополнительное необходимо?
Код скрипта, который не открывает короткие позиции, вот:
//Сигнал: пересечение двух скользящих средних
#samewindow
#line 0 solid red
extern fast = 2384;
extern slow = 5188;
var trend = 0;
extern amount = 500;
function init()
{
setInitCandles(1);
}
function calc()
{
line[0] = MovAvg(ind_ema, fast, pt_close);
line[1] = MovAvg(ind_ema, slow, pt_close);
if (trend == 1 and line[0] < line[1]) {
trade_action::sell(72, ::lots);
// signal::alert("Продажа: по " + getSecName() +
// " быстрая MA пересекла медленную сверху вниз.");
//}
}
if (trend == -1 and line[0] > line[1]) {
trade_action::buy(72, ::lots);
//signal::alert("Покупка: по " + getSecName() +
// " медленная MA пересекла быструю снизу вверх.");
}
if (line[1] > line[0]) {trend = 1;}
else if (line[1] < line[0]) {trend = -1;}
}
-
Добрый день
Столкнулся с той же проблемой.
код
function calc()
{
trade_action::sell( 1, ::lots);
}
результат:
Некорректный ордер: Не хватает собственных бумаг - 1 штук
(макс. допустимое количество - 0 лот.).
Деньги на счету есть
-
Разобрался сам, надо поставить в настройках транзака галку "По умолчанию использовать кредит".
Я сам айтишник - но сходу не догадался, думаю сообщение об ошибке должно быть более понятным, да и в руководстве стоило бы это написать.
-
Разобрался сам, надо поставить в настройках транзака галку "По умолчанию использовать кредит".
Я сам айтишник - но сходу не догадался, думаю сообщение об ошибке должно быть более понятным, да и в руководстве стоило бы это написать.
To Nevg:
спасибо, попробую с этой галкой зашортиться, так и подозревал что в настройках дело.
-
mma_tr, сообщите пожалуйста о результатах поможет ли это или нет. Насколько я понимаю вы торгуете на ФОРТС? Эта галка не должна на ФОРТС никак влиять - у нас короткие заявки выставляются по фьючерсам и без нее. Если у вас она вдруг окажет какое-то влияние, надо будет разбираться.
Описание насчет установки флага "использовать кредит по умолчанию" добавим.
-
Добрый день.
За новые периоды огромное спасибо. Вспомнилось еще пожелание:
Не убивайте плз все открытые окна при завершении работы сервера - это просто цинично, на мой взгляд: сидишь, пыхтишь, пялишься на графики в ночной тиши - и тут бац! - гипс сняли, клиент уехал, окна пропали. Не делается так...
Еще вспомнил: считаю совершенно неправильным полный пересчет индикатора, если зашел в его свойства, но вышел по отмене. А то зайдешь посмотреть, установлен ли стоп-лосс, выходишь - а цена покупки/продажи потеряна.
-
Насчет пересчета индикаторов по отмене - поправим. Действительно не хорошо.
Что касается закрытия всех окон, то окна закрываются, когда Transaq пытается переподключиться к серверу. Технологически нам пока сложно решить эту проблему, но вероятно что-нибудь сделаем с этим в дальнейшем. Пока же можно либо отключиться флаг "Автоматически переподключаться к серверу", либо установить, чтобы он не переподключался, например, после 11-ти вечера.
-
To Heller: торгую на ММВБ, при включении этой галки АТФ начал выставлять заявки на продажу в короткую, проверил на последней версии 4.98.250 rev 46.
-
на всякий случай уточню, что последняя версия для ФИНАМ должна быть 251
-
To klimov: да, обновил до 251 сборки, все работает с галкой. Спасибо.
-
Что касается закрытия всех окон, то окна закрываются, когда Transaq пытается переподключиться к серверу. Технологически нам пока сложно решить эту проблему, но вероятно что-нибудь сделаем с этим в дальнейшем. Пока же можно либо отключиться флаг "Автоматически переподключаться к серверу", либо установить, чтобы он не переподключался, например, после 11-ти вечера.
Нее.... Это вообще из серии "в огороде бузина, а в Киеве дядька". :-) По большому счету - есть ли логическая связь между открытым графиком/таблицей/запросом и наличием/отсутствием подключения? На самом деле ее нет. Считаю, что эту зависимость надо убирать. Неправильно это...
-
Уважаемые разработчики!
Предлагаю реализовать следующее:
1) По редактору: Возможность сворачивания окна редактора в режиме правки, а то оно блокирует экран.
2) Интерфейс подсключения внешних dll функций.
3) Работу с файлами .
4) Условные заявки ( отложенные ордера ).Формирование условных заявок программно не то,что должно быть, так как правильная стоп заявка с условиями храниться на сервере.
5) Массивы чисел.
6) функции работы с мышью и клавиатурой (ввод/вывод, чтение позиции курсора
7) Возможность исполнения функции onNewCandle() до исполнеия CALC
8) Возможность раскрашивания графиков путем задания вектора цвета.
9) Режим эмуляции вызова CALC на исторических данных (эмуляция торгов)
10) Безопасное снятие некорректного индикатора.
Наблюдается такая проблема, если программа индикатора написана не корректно, то TRASAQ вылетает полностью.
11) Горячая клавиша принудительного снятия индикатора
12) Возможность работы с сохраненными данными без подключения к серверу
Пока все...Спасибо
-
nikolz, большая часть из перечисленного вами уже находится в разработке.
Насчет безопасного снятия некорректного индикатора - на самом деле это реализовано, но механизм не всегда к сожалению срабатывает. О всех случаях падения при некорректных индикаторов следует сообщать нам - будем исправлять.
-
Добрый день!
Предлагаю следующее:
По языку и компилятору:
1) Сделать объявление VAR факультативным,т.е. не обязательным. Например, если не функция, то переменная.
2) При сообщении ошибки указыать номер позиции в строке
3) Сделать допустимым совпадение имен формальных параметров функции с именами внешних переменных.
4) сделать возможным передачу функции ссылку на массив, линию, переменную с возможностью возврата значения
5) определить функцию выделить память и освободить память для массива
6) сделать более интеллктуальным поиск ошибок в тексте пограммы
По функциям:
1) Возможность получить список бумаг в портфеле с количеством, названием
2) Возможность получить последнюю цену сделки по произвольной бумаге по ее имени
Благодарю за внимание.
-
Пожелание:
При активном окне вывода ATF и свернутом TRANSAQ, последний нельзя рзавернуть без закрытия окна вывода ATF.
Желательно чтобы любое окно можно было сворачивать и разворачивать вне зависимости от открытия других окон.
Это касается и редактора.
-
nikolz, спасибо за замечания, возьмем на вооружение, большую часть реализуем.
-
При написании индикаторов столкнулся с проблемой: http://www.transaq.ru/forum/index.php?topic=10.0
Для решения которой, желательно бы, расширить и упростить понятные функции типа:getDayCandle(open,close,high,low) [candle namber]. Или Day вообще спрятать в параметр типа: getCandle(day,open,close,high,low) [candle namber]. Соответсвено и другие в качестве временного порядка свечи чтобы можно было указывать и коэффициент 5Day, 22Day или Month. minute,5minute,10minute..., hour,... day,... month,... week,... year,... Чтобы не сочинять их пользователям ATF :)
-
Подобные функции по удобной и детальной работе со временем появятся в ближайшей перспективе.
-
Еще есть одно пожелание - это возможность делать свои записи на графике.
Пока там такой возможности не нашел :)
-
Добрый день!
Предлагаю следующее:
По языку и компилятору:
1) Сделать объявление VAR факультативным,т.е. не обязательным. Например, если не функция, то переменная.
Вот уж не согласен. Переменная - это переменная. Функция - это функция. Кто мешает описать явно?
3) Сделать допустимым совпадение имен формальных параметров функции с именами внешних переменных.
Тоже не согласен. Польза сомнительна, а отрицательный эффект налицо: имена одинаковые, а переменнные разные. Понятно, что видимость переменных эту проблему решает, но ИМХО юзеров только запутает.
5) определить функцию выделить память и освободить память для массива
Ой. А это-то зачем? malloc() имеется в виду? или аналог New? По-моему, лишнее это... Не юзерская это проблема - памятью выделяемой управлять.
-
Соглашусь пожалуй с APS. Уход от строгого задания определения функции/переменной - довольно рискованный шаг. Сегодня действительно ничто не мешает сделать неявное определение типа идентификатора, но совершенно не факт, что в дальнейшем такое поведение ATF нам будет легко поддерживать. Да и опять же как-то визуально оно более понятно. Смотришь на код и сразу видно что имеется ввиду.
Массивы у нас будут в ближайшей перспективе, но заставлять пользователя работать с памятью мы не будем. Массивы будут динамическими, и пользователи не надо будет задумываться о каком-то выделении памяти. Хотя команда new все же предвидится - для объявления объектов. При этом будет реализована сборка мусора (эти вещи сейчас пока в стадии проектирования, так что планы на этот счет в принципе могут и поменяться).
По остальному - будем делать. В планах предоставить максимально широкие возможности по работе с заявками и сделками.
-
Добрый день!
Странно читать спор об отмене или нет обязательного описания переменных, когда во всех современных скриптовых языках это в настоящее время поддерживается по умолчанию.
Обязательное явное описание - это пререгатива языков 60-х годов 20-го века. К стати можно ввести макрос, указание которого включает либо отключает необходимость явного описания переменных.
Если уж так сложно поддержать неявное описание переменных, то введите возможность перечисление переменных в объявлении через запятую.
А еще лучше взять готовый скриптовый язык и транслятор для него с открытой лицензией, а не изобретать новый диалект неизвесного языка.
"Как много языков на свете - красивых и могучих."
Например, векторные языки Amibroker,Маtlab или взять за основу Piton или C++.
Можно бы и библиотеку функций Amibroker взять за основу и реализовать
( правда добавить массивы с фиксированными границами ) к существующим векторным.
В основном же плохо, что в ATF не реализован доступ ко всей информации, доступной в API коннекторе. Потому что индикаторы написать можно, а вот автоматически торговать нельзя.
Благодарю за внимание.
-
Дополнительно предлагаю реализовать интерфейс подключения внешних dll библиотек, как это реализовано в Omega Research и в Amibroker.
Из своего опыта знаю, что реализация функций через внешние библиотеки на языках C,C++ для Omega Research ProSuite позволила ускорить вычисления в 100 раз.
Думаю, что в случае с ATF эффект ускорения будет не меньший.
К тому же сразу снимуться все претензии к ATF.
Благодарю за внимание.
-
В качестве набора необходимых функций для работы с биржевыми данными предлагаю реализовать все функции реализованные в QPILE в QUIK и описанные в документации QUIK ( можно взять их за прототип, чтобы не придумывать заново и сделать лучше ).
Благодарю за внимание.
-
nikolz, лично мне не очевидны преимущества отмены обязательного объявления переменных. Во-первых, реализация языка, в котором эти определения отменены - более сложная задача (в частности возникают тонкие моменты с областями видимости), во-вторых многие языки содержат специальные директивы для запрета неявного объявления переменных и любой программист этим всегда пользуется, так как это реально защищает от ошибок (вы например не найдете ни одного профессионального проекта на Perl, который бы не содержал объявления use strict 'vars', хотя собственно Perl стал в современных условиях "законодателем мод" на всякие штуки вроде неявного определения переменных и автооживление).
Насчет "взять за основу", то так же преимущества не очевидны. Все перечисленное вами (кроме Amibroker-а, с которым я не знаком) - это очень большие проекты, и совершенно не ясно зачем их дублировать если все равно 90% функций этих языков не пригодны для трейдера. К тому же все перечисленные вами языки (помимо Amibroker-а) созданы для решения совершенно других задач, не относящихся к трейдингу, и соответственно они никак не учитывают специфику области. Например, python без возможностей функционального программирования так вообще не представляет никакого интересна, но разве трейдеру нужно функциональное программирование? То же самое можно сказать и об остальных языках.
То есть имеется уверенность, что нам удастся реализовать более простой инструмент, не потеряв при этом в функциональности, но зато сделав его доступным наиболее широкому кругу трейдеров, не только программистам, именно за счет того, что язык разрабатывается специально с прицелом на трейдинг и учитывает всю специфику этой области.
Насчет малого количества функций, то здесь просто требуется время. Мало какой язык в первой же своей версии содержал сразу весь арсенал возможностей, которые он содержит сейчас. Пока у нас в планах перенести в ATF все возможности Коннектора опять же со всякими дополнительными удобствами. Но, повторюсь, это просто требует некоторого времени.
Возможность подключать dll в ATF пока не обсуждалась, но реализовать вполне можно. Обсудим, вероятно внесем в план (хотя сейчас все равно есть довольно обширный список более приоритетных задач).
-
Heller
1) В плане дискуссии, все что Вы сказали имеет место быть.
Но, вот Amibroker как раз тот язык, который сделан для трейдеров.
Когда я ознакомился с Вашим ATF, то у меня сложилось впечатление , что именно его Вы и повторяете, очевидно ошибся.
2) Когда я писал программы исключительно на CИ, а ранее на алголе, фортране, паскале,ассемблерах ,то был с вами полностью солидарен.
Когда стал писать на скриптовых языках - привык не объявлять.
И знаете ошибки из за этого не появились.
3) Возможно, что проблема в слабой диагностике Вашего транслятора.
На все проблемы у него почти всегда одно сообщение: Неожиданно появилось.... И вот когда начинаешь искать, что же появилось, а потом когда не находишь , что появилось, вспоминаешь , что надо перед каждой переменной писать var.
Ну сделайте хотя бы объявление через запятую.
4) Я вообще не очень понимаю, почему возникнут ошибки при отсутствии объявления.
В древних языках ошибка была связана не с отсутсвием объявления, что это переменная, а с отсутствием объявления типа переменной.
У вас же тип переменной не объявляется, поэтому считаю, что необходимость объявления, что это VAR (хотя трудно переменную спутать еще с чем-то) является надуманной.
С уважением, к Вашему мнению
-
Amibroker-а я посмотрю, интересно.
Насчет объявления то видимо мы говорим немного о разном. Насколько я понимаю первоначальная фраза "если не функция, то переменная" подразумевала необязательность объявлений вообще, а не только в декларациях функций. То есть возможность делать присвоения переменным которые не были объявлены вообще нигде.
В декларациях же функций я пока не хочу выкидывать var по той причине, что даже не смотря на то, что ATF не типизирован, я держу в уме например возможность передачи указателя на функцию, либо передачу параметров по ссылке. Понятно, что все это может быть решено и без деклараций, но я не готов брать риск заглядывать так сильно вперед и выкидывать var сегодня. Если в отдаленной перспективе будет 100% очевидно, что эта декларация действительно является совершенно несущественной, то выкинем. Пока же не вижу смысла (в конце концов не так уж сильно это и мешает все же - это всего навсего одно трехбуквенное слово, а последствия от его выкидывания могут быть неприятными в перспективе).
-
Heller
1)Да, действительно, я не имел ввиду декларации функций, тут я с Вами согласен,
а говорю об объявлении переменных в теле программы, внутри блока.
2) В плане дискуссии.
Я считаю, что попытки создать свой встроенный язык, вместо использования существующих с открытой лицензией является стратегической ошибкой, особенно в малобюджетных проектах .
Получается так, что на строительство высотного здания денег нет, поэтому прочный кирпич не нужен, и будем тратить деньги на изобретение своего не очень прочного, но как раз какого надо кирпича.
Резонный вопрос - а на само здание денег хватит или его будут строить бесконечно долго либо построим столько этажей на сколько хватит оставшихся. после создания своего кирпича. денег.
3) Если оценить объем сделанной Вами работы ( в смысле строительства здания, а не создания кирпича) то это примерно не более 10% .
Для подключения дополнительных индикаторов можно было бы просто реализовать механизм подхвата внешних dll и описать интерфейс . После чего практически на любом языке можно было бы создавать любые индикаторы и нет никакой проблемы ни с трансляторами ни с языками.
4) Важно создать средства программного доступа к биржевой инофромации и средствам отображения TRANSAQ TRADER, чего пока в ATF практически нет.
5) Теперь о библиотеке функций.
Вот например QPILE в КВИКЕ - язык убогий, но перечь фйнкций работы с биржевой информаций и торговыми операциями достаточно полный.
Почему бы Вам не взять этот перечень за основу и созделать свою реализацию, усовершенствовав имеющуюся, а не изобретать велосипед.
6) Считаю важным предоставить Интерфейс подключения DLL как это есть Омеге Амброкере
Это обеспечит возможность создания бибилиотек практически любых быстродействующих индикаторов на любой вкус и цвет.
Благодарю за внимание.
Благодарю за внимание
-
95% времени тратится на самом деле на разработку архитектурных решений, а не набивание языка функциями. Одна функция пишется максимум час времени, чаще 15 минут. Архитектурные же вопросы, которые чаще всего пользователю вообще не заметны, занимают все оставшееся время. Если добавить сюда кучу сопутствующих задач вроде интерфейсной части и всяких окошек вывода и раскраски кода, то в сравнении разработка конкретных функций вообще оказывается незначительна по трудозатратам. При этом конечно архитектура должна быть адекватной функционалу, поэтому просто так взять и написать функцию getTradeInformation или что-то вроде можно, но это будет выглядеть криво и пользоваться этим будет неудобно.
Использование сторонней разработки совершенно не избавляет от решения архитектурных вопросов, а зачастую даже делает эту часть более сложной. К тому же из тех языков, что вы перечислили, открытые решения есть только для Python и C++. Даже если оставить в стороне тот факт, что Python объективно не подходит, а C++ для большинства трейдеров сложен, большая часть открытых реализаций использует лицензии навроде GPL, которые разрешают использовать их код только в Open Source продуктах, что нам явно не подходит.
Попытки внедрить сторонние разработки нами уже предпринимались, и они были неудачными. На самом раннем этапе была попытка не писать свои индикаторы, а использовать ta-lib, в результате две недели пришлось потратить на отлавливание ошибок, которые возникают из-за разного видения архитектуры нами и ta-lib, к тому же выяснилось, что ta-lib весьма медленная. Когда от него отказались, я все почти все индикаторы, реализованные сейчас в Transaq, написал за несколько дней. Была так же неудачная попытка внедрить высокоуровневую библиотеку и для самих графиков (реализация базовых вещей врое отрисовки свечей, работы с графическими объектами и мышью) - она оказалась слишком негибкой и мы просто поняли, что она заводит нас в тупик. Прежде чем приступить к ATF мы так же рассмотрели несколько простых готовых альтернатив - всё что мы рассматривали по какой-то причине не подходило. Что-то слишком сильно тормозило при постоянном обращении, где-то были принципиальные разногласия по архитектуре.
Вообще не смотря на то, что "возьмите готовое" - самая распространенная рекомендация, которая на первый взгляд кажется здравой, до сих пор никто еще на готовом ничего не добился в этой сфере, и это не просто так. Я уверен что и Amibroker и QUIK тоже рассматривали эти варианты прежде чем приступить к разработке. Что же касается изобретения самого языка, то разработка концепции вообще почти не отнимает времени. Как правило видение языка приходит уже в момент чтения соответствующей теоретической литературы, если конечно разработка подобного проекта - личное желание из любви к предметной области, а не просто ТЗ.
Собственно сторонние продукты могут привлекаться только в каких-то малозначительных для проекта областях. Например, мы не изобретаем свой компилятор C++ для компиляции наших исходных кодов и не пишем своих библиотек для работы с XML-файлами, так как для нас это области не критичные - XML и C++ для нас не более чем средство. Но ATF - это именно наш продукт, реализация которого для нас критична, и на него у нас есть свое видение. В качестве примеров можно привести Google, который для своих проектов использует свой собственный веб-сервер, а не привлекает сторонние разработки вроде Apache или IIS, или Excel, для компиляции первой версии которого специально был написан отдельный компилятор. Просто это все - примеры критичных задач, которые нельзя переложить на сторонние продукты. В конце концов софтверные компании всегда предлагают решение задачи. Если бы Transaq был бы целиком составлен из готовых решений, и мы бы не заморачивались разработкой ATF или графиками, используя что-то стороннее и разработанное до нас, то мне думается, что мы вообще были бы не нужны конечному пользователю.
-
Heller
В порядке дискуссии
1) Про индикаторы.
Мне не понятно, почему Вы не реализовали интерфейс dll библиотек для индикаторов.
Тогда задача их разработки вообще бы решалась вне вашего языка и вашей системы, а в систему лишь интегрировались готовые решения на любых языках.
Для примера возьмем Omega Research ProSuite и его клоны в виде MultiCharts, TradeStation.
Я написал свою библиотеку с реализацией практически всех методов из МАТЛАБ, включая искусственный интеллект, используя лишь их SDK для подключения dll, все это работает в 100 раз быстрее, чем тоже , написанное на их языке.
Не говоря о том, что на встроенном языке Вы никогда не реализуете методы искусственного интеллекта или адаптивного спектрального анализа, например, метод Берга.
2) О языках. Что имеете против этого:
Lua — интерпретируемый язык программирования, разработанный подразделением Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil.
Является свободно распространяемым, с открытыми исходными текстами на языке Си.
По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями, спроектирован с целью «не плодить сущности сверх необходимого». Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы объектно-ориентированного программирования с поддержкой прототипов (включая множественное наследование) легко реализуются с использованием метатаблиц, которые также позволяют перегрузку операций и т. п. Реализуемая модель ООП (как и в JavaScript) — прототипная.
3) Об архитектурных решениях.
По-моему мнению Вы несколько путаете, вернее сказать, пытаетесь совместить две блюда в одной тарелке.
Во-первых , реализуете средства для ручной торговли и создания для этой цели различных индикаторов.
Во-вторых, реализуете средства для автоматической торговли.
В первом случае требуются различные окошечки, замочные скважины и разные кнопочки и финтефлюшечки - это называется интерфейсом пользователя.
Во втором случае этого ничего, в основном, не требуется, роботу не нужен ни свет, ни еда ни окошки, ни двери, ни мониторы.
Нужны функции получения биржевой информации, функции торговых операций, функции информации о состоянии счетов, функции получения истории, функции получения текущих котировок, сделок, заявок и функции индикаторов, функции работы с файлами для хранения отчетов и ввода начальных настроек и состояний.
Вопросы общения с человеком не являются в этом случае первостепенной задачей.
Поэтому в этой задаче интерфейс или как вы говорите архитектура может быть самой убогой.
4) И еще по поводу использования готовых решений.
Вы пишите, что не знаете примеров.
Например, TSLAB - собрали три бесплатных пакета на модном решении NET и получился тяжелый красочно раскрашенный танк. Теперь пытаются сделать его летающим.
Хотя есть другие бесплатные, но быстрые пакеты, которые предназначены для создания подобных систем, но очевидно как говорил Райкин:
"Портной думал о чем угодно только не о пиджаке. К пуговицам претензии есть? "
Благодарю за внимание.
-
"Мне не понятно, почему Вы не реализовали интерфейс dll библиотек для индикаторов"
Ну просто не все сразу. Нужно время. Вы должны понимать, что среди наших пользователей 99% не имеют никакого желания связываться со всякими dll, а просто хотят быстро и удобно написать простой индикатор или торговую стратегию типа "покупай, когда скользящие средние пересеклись". Поэтому в первую очередь мы далаем простые функции, нужные почти всем. dll-интерфейс имеет более низкий приоритет. ATF - это продукт не для айти-профессионалов, а просто помощник трейдера, позволяющий автоматизировать простые задачи и писать индикаторы (а в перспективе - тестирование и оптимизация торговых систем). Для айти-профессионалов у нас есть продукт TRANSAQ Connector.
Язык Lua мы рассматривали. В качестве встраиваемого языка он не подходит, по крайней мере потому что он очень медленный. Он работает быстро, если в его интерпретатор загрузить программу и выполнить ее один раз. Однако при постоянном обращени к API Lua извне с задачами обработать небольшие куски данных, но делать это несколько раз в секунду, она оказывается не такой уж и быстрой. Но в принципе гораздо более важным критериаем является то, что его сложно адаптировать так, чтобы он учитывал именно специфику задачи и был в итоге прост для среднестатистического трейдера.
"Вопросы общения с человеком не являются в этом случае первостепенной задачей"
Сегодня ATF - это язык, который почти любой человек, даже не профессиональный программист, может освоить за один день, и тут же написать простой индикатор, которого ему не хватает. Для использования ATF почти не нужна никакая дополнительная подготовка - вполне достаточно стандарного институтского курса на каком-нибудь финансовом факультете. Именно на это и делается расчет. Именно поэтому вопросы общения с человеком - одни из важнейших. Среднестатистический человек хочет просто торговать и его совершенно не волнует, что написанная им нейросеть будет работать на порядок медленнее, чем при подключении dll. (Ну и кстати возвращаясь к подключению других средств - на Lua нейросеть тоже будет работать не ахти - используйте для подобных задач Коннектора, в чем проблема?).
TSLAB не слишком удачный пример. Во-первых, это очень молодой проект с не очень понятными пока перспективами. О нем можно будет говорить, когда он займет какую-то серьезную позицию на рынке. Во-вторых, у них упор делается совершенно на другое - на визуальную работу с алгоритмами. С самим языком программирования человеку там не приходится работать.
-
Добрый вечер,Heller
1) По поводу dll Вы не правы, DLL позволяет решить проблему медленного исполнения программ и создать тысячи индикаторов за короткий срок. Так что начинающим чайникам не надо будет вообще изучать ATF для написания примитивных индикаторов.
2) Все ваши доводы имеют место быть при одном условии, что на финансовых рынках элементарно успешно торговать.
3) На самом деле это далеко не так. Примитивные средства - это заманиловка для чайников.
4) Да язык АТF прост в освоении.
Но я считаю, что для написания хорошего рассказа ( хорошой системы торговли) важно не наличие словаря с малым числом очень выразительных слов ( например мата), а хороший сценарий рассказа (стратегия торговли).
5) Поэтому - простой язык, приметивный индикатор, поверхностные знания в рамках курса любого финансового института в результате - убытки, убытки и убытки и обнуление депозита.
6) Для визуального анализа графических функций ( графика цен) все известные в литературе индикаторы примитивны , хотя и имеют таинственные и экзотические названия, - на самом деле это либо фильтр нижних частот не выше второго порядка либо дифференциатор тоже малого порядка. И это не удивительно, если обратить внимание на то, что разработали их либо неудавшиеся коммивояжеры либо психиаторы.
7) Поверхностные зная рождают мертворожденные примитивные решения.
Практически все что дают такие индикаторы видно и без них. Человеческий глаз лучше интегрирует или дифференцирет чем примитивная скользящая средняя.
8) Для удачной работы важно автоматизировать рутинную работу и сделать простым и удобным выставление заявок по тем или иным сигналам и по возможности автоматизировать процесс торговли.
9) Это не требования IT-профессионалов, а разумные требования для успешной торговли на финансовых рынках.
Научится крутить руль автомобиля - не значит остаться живым на магистрале.
Не послали? И на том спасибо.
-
nikolz, мне очень сложно сложно ответить вам, так я не вижу рационального зерна в ваших рассуждениях, к которому можно было бы прицепиться.
"DLL позволяет решить проблему медленного исполнения программ и создать тысячи индикаторов за короткий срок"
Здесь вы мягко говоря фантазируете, например.
В остальном же я вообще не понимаю чего вы от меня хотите. По сути вы говорите "зачем вы сделали возможность рисовать тренды - на этом же клиент по моему мнению не заработает - сделали бы лучше интерфейс dll". Вы об этом что, серьезно? Мы реализовали ATF потому что какое-то время подумали над тем, что нужно пользователям и как правильнее это будет реализовать. Вы же просто приходите и предлагаете наплевать на всех пользователей, удовлетворив вместо этого вашу личную блажь.
Повторюсь, что у нас есть продукт Коннектор, который решит все ваши проблемы - он легкий, быстрый, позволяет писать сторонних торговых роботов любыми средствами. Используйте его, не используйте АРМ Трейдера.
Я не вижу смысла продолжать дискуссию.
-
Добрый день
Столкнулся с той же проблемой.
код
function calc()
{
trade_action::sell( 1, ::lots);
}
результат:
Некорректный ордер: Не хватает собственных бумаг - 1 штук
(макс. допустимое количество - 0 лот.).
Деньги на счету есть
Возможно все бумаги уже в резерве - посмотрите в текущие заявки. Если пытаться дважды продать ЦБ, то вылезает такое сообщение.
-
Здравствуйте,
Было бы удобно если Вы сделали в "настройках экрана" чтобы окна можно было менять по расположению как удобно, например:
У меня сейчас идут по распорядку та:
1инструмент 2инструмент 3инструмент 4инструмент 5инструмент
Я бы хотел их сделать в таком порядке:
1инструмент 5инструмент 3инструмент 2инструмент 4инструмент
Но чтобы это сделать, мне нужно их удалять и все заново добавлять в таком порядке,.
Поэтому прошу Вас сделать, что бы их можно было менять в любом распорядке.
-
Здравствуйте, Zeleniy.
Не очень понятно, что Вы называете "распорядком".
Eсли расположение окон на экране - то Вам необходимо руками задать размеры и позиции окон. Для выравнивания позиций окон можно воспользоваться клавишами <Ctrl> + <Влево>/<Вправо>/<Вверх>/<Вниз>.
Если имеется в виду порядок обхода окон клавишами <Ctrl+F6>/<Ctrl+Shift+F6> и <Ctrl+Tab> / <Ctrl+Shift+Tab>, то этот порядок (он назявается Z-order) нельзя задать жестко, поскольку клик мышки в любое окно меняет этот порядок. Но если Вы один раз обойдете мышкой все окна экрана в выбранном Вами порядке, а затем сохраните файл конфигурации, то при следующих загрузках этого файла порядок будет восстановлен и с помощью <Ctrl+Shift+Tab> Вы сможете обойти все окна.
А если "расположением окон" Вы называете порядок экранов - то это мы сделаем.
-
Дмитрий
Вот эти закладки менять местами между собой.
(http://s002.radikal.ru/i198/1005/43/d5a57fe057c0.jpg)
-
Понятно.
Сделаем.
-
Спасибо большое, будет очень удобно располагать вкладки в нужном порядке и в любое время.
-
У меня 2 пожелания. 1 простое, другое - не знаю.
1. В индикаторах очень не хватает простой горизонтальной линии. Иногда надо отметить экстремумы а рисовать ее трендлайном - это цирк с конями. Хотелось бы как в метастоке - поставил - и на всю длину графика, и удлинять с появлением новых свечей чтоб не нужно было.
2. Не знаю возможно ли это реализовать, но хотелось бы для ФОРСТа иметь по фьючам слитые графики. Не на отдельные пакеты 3.10, 6.10, 9.10 и т.д., а общий. На сайте Финама это как-то сделано, уж не знай как они их объединяют...
-
flyvoice, по первому вопросу вы можете воспользоваться ATF. Программа для такого индикатора будет выглядеть очень просто:
extern p = 0;
function calc()
{
line[0] = p;
}
При добавлении такого индикатора на график надо будет просто ввести требуемую цену в диалоге.
По второму вопросу вам ответит чуть позже другой специалист.
-
Солидарен с Nicolzom.
Его пожелания – не блажь, а вполне разумная и аргументированная позиция.
Жаль, что разработчики решили пойти по пути создания «рисовалки».
-
Прочел в D", что язык ATF (Advanced Trading Facility) основан на принципах Easy Language.
Так реализуйте весь функционал EL в ATF.
Сейчас кроме Омеги еще 5 программ позволяет создавать, тестировать системы и автоматически исполнять приказы на EL.
Почему у других разработчиков получилось, а вы застряли на индикаторах?
-
Приветствую уважаемых разработчиков.
Еще пожелания:
1. Разрешить индексацию line не константой, а переменной (пример: 'line(i)' - скобки, само собой, квадратные, просто здесь они неправильно показываются);
2. Разрешить обращение к промежуточному индикатору строкой ( пример: 'var mts = "mts1"; x = IndRef(mts, ...)[0];' )
Ну и по возможности посоветовать мне что-нибудь вот тут: http://www.transaq.ru/forum/index.php?topic=236.0 (http://www.transaq.ru/forum/index.php?topic=236.0)
-
Насчет второго пункта посмотрим - не знаю сейчас какие там выплывут подводные камни, надо покопаться. Может быть сделаем, может быть нет.
Первый пункт реализовывать не будем, так как тут имеются технические трудности - в текущем варианте ATF количество линий индикатора определяется еще на этапе компиляции, а не расчета индикатора, поэтому без констант будет тяжело обойтись. Однако для промежуточных линий, которые не планируется выводить на экран, мы сделаем специальный объект, который будет работать полностью аналогично линиям, и с ним уже можно будет работать совершенно свободно.
-
Еще одно: неплохо было бы навешивать на события (не в ATF, а в самом терминале) звуковые оповещения о срабатывании заявок / стопов / достижения ценой определенных значений.
-
На совершение сделок звуковое оповещение есть: меню "Настройки" - Параметры АРМ трейдера, закладка "Прочее". Об остальном - подумаем.
-
Еще одно пожелание к терминалу: очень не хватает вертикальной прокрутки в подокнах графиков.
-
Уважаемые разработчики!
Не предполагается доработка оекна "структура портфеля" с тем, чтобы видеть дневную динамику по каждой позиции, а не только по портфелю в целом, а то не поймешь где выиграл, а где проиграл..
Спасибо..
-
APS, на самом деле вертикальная прокрутка есть, если использовать клавиатуру. Вы можете выделить нужный вам объект (просто кликнув на него), а дальше клавишами "вверх" и "вниз" на клавиатуре прокручивать содержимое подокна (вернее, сдвигать оси - правую и левую ось можно двигать независимо, а так же объекты без привязки к осям вообще).
-
Уважаемые разработчики!
Не предполагается доработка оекна "структура портфеля" с тем, чтобы видеть дневную динамику по каждой позиции, а не только по портфелю в целом, а то не поймешь где выиграл, а где проиграл..
Спасибо..
???
-
usas: какое отношение это имеет к ATF?
А вообще есть запрос - "Средние цены сделок".
-
usas: какое отношение это имеет к ATF?
А вообще есть запрос - "Средние цены сделок".
Ну я не первый в этой ветке с вопросом, впрямую не относящемуся к АТФ, поэтому если Вас не затруднит, хотелось бы получить ответ по существу.
Вопрос надеюсь пнятно изложил..
Спасибо..
-
Итак, про аналитику динамики портфеля в разрезе инструментов. По существу.
Штатных средств получения наглядного представления о вкладе кажного вида бумаг в общее изменение оценки портфеля в настоящее время в TRANSAQ нет. Впрочем, ничто не мешает выполнить такую доработку отображения запроса "Структура портфеля", а именно добавить колонку "Изменение оценки" и показывать вклад каждой бумаги в общее изменение стоимости портфеля. Это мы обсудим и поставим в план доработки. За идею спасибо.
А сейчас пока каждый может экспортировать текущее состояние портфеля куда ему удобно, ввести цены закрытия для своих бумаг, в том числе не обязательно вчерашнего закрытия, - и посчитать любую аналитику за любой период.
Кроме этого уже сейчас есть инструмент оперативного анализа последствий сегодняшних сделок - запрос "Средние цены сделок", который позволяет выделить прибыли/убытки сегодняшних сделок клиента из совокупного изменения стоимости его портфеля. В разрезе инструментов. Для каждого инструмента показывается, по чём в среднем сегодня куплено, по чём в среднем продано, вычисляется эквивалентная сделка, показывается потенциал к текущей рыночной цене.
-
Итак, про аналитику динамики портфеля в разрезе инструментов. По существу.
Штатных средств получения наглядного представления о вкладе кажного вида бумаг в общее изменение оценки портфеля в настоящее время в TRANSAQ нет. Впрочем, ничто не мешает выполнить такую доработку отображения запроса "Структура портфеля", а именно добавить колонку "Изменение оценки" и показывать вклад каждой бумаги в общее изменение стоимости портфеля. Это мы обсудим и поставим в план доработки. За идею спасибо.
И Вам спасибо за развернутый ответ. Я не владею техникой программирования, поэтому буду ждать вашей доработки окна "структура портфеля".. по-моему она нужна..
-
usas: какое отношение это имеет к ATF?
Кстати, да, я тоже оффтоплю. Сорри.
-
И снова здравствуйте, уважаемые разработчики. :-)
Просьба есть: можно ли сделать настройку, чтобы ATF в ответ на trade_action::cancelAllOrders() не орал, что, дескать, никаких таких ордеров не знаю и ведать ничего не ведаю?
А то устал я это окошко закрывать.
Спасибо.
-
И еще существенная, на мой взгляд, вещь.
Поскольку система предполагает наличие роботов, то логично было бы предоставить юзерам возможность оповещения (e-mail / SMS) о ситуации. Но, поскольку было бы неправильно грузить ATF еще и этим, предполагаю, что возможность выдачи cmd-команды существенно расширила бы возможности системы.
-
APS, да идея с cmd нравится, спасибо. Скорее всего сделаем в обозримой перспективе.
С cancelAllOrders тоже посмотрим.
-
Подскажите пожалуйста какой функционал галочки «Автозапуск МТС» ?
-
Подскажите пожалуйста какой функционал галочки «Автозапуск МТС» ?
Я не могу понять почему на следующий день эта галочка куда то исчезает и МТС автоматически не запускается с новой сессией. >:(
-
makeev, по всей видимости это баг. Мы проверим ситуацию и исправим ошибку. Поведения программы, которое вы описали, быть конечно не должно.
-
Подскажите пожалуйста какой функционал галочки «Автозапуск МТС» ?
Я не могу понять почему на следующий день эта галочка куда то исчезает и МТС автоматически не запускается с новой сессией. >:(
Обновил Transaq до версии 252.7 и вышеописанной беды больше не замечал.
Спасибо :)
-
Вопрос:
Использую два счета. Необходимый счет я выбираю во вкладке «Целевой клиент» однако заметил одну неурядицу: запущенный на бумаге МТС не привязывается к конкретному счету т.е. при смене счета во вкладке «Целевой клиент» МТС уже использует текущий счет, а не на котором он ранее был запущен. По сути дела я не могу использовать одновременно 2 счета.
Как мне быть?
-
makeev, вы можете использовать функции setClient и getClient, чтобы устанавливать от какого клиента торговать.
-
makeev, вы можете использовать функции setClient и getClient, чтобы устанавливать от какого клиента торговать.
В скрипте индикатора в
function calc()
написал
if (getClient()=="1234/1234"){ signal::alert("Клиент изменен") ; setClient("321/321");}
(за место 1234 и 321 естественно клиента написал своего)
Так вот почему то клиента он во вкладке «Целевой клиент» он не меняет хотя сообщение "Клиент изменен" он выводит.
Вопрос:
Функции getClient() и setClient() распространяются только на МТС?
При смене клиента он изменит вкладку «Целевой клиент»?
-
getClient и setClient распространяются только на МТС. Например, у вас в одном графике может быть несколько МТС, которые будут работать от имени разных клиентов.
-
Вопрос:
При перезапуске ATF все индикаторы сбрасываются на нулевое значение, однако когда зайдешь в свойства ATF и просто тупо нажмешь на «ОК» все начинает работать нормально. В чем может быть причина?
-
Вопрос:
При перезапуске ATF все индикаторы сбрасываются на нулевое значение, однако когда зайдешь в свойства ATF и просто тупо нажмешь на «ОК» все начинает работать нормально. В чем может быть причина?
и еще пишет: встретился нечисловой параметр в арифметическом выражении
-
Нарооооооооод была ли у кого подобная проблема? ???
-
Разобрался сам. Народ индикатор Parabolic SAR в ATF в предложенном исполнении (Примеры индикаторов на языке ATF) работать не будет из за выражения (ac += step;) написанного в calc.
-
Не очень понятно что вы имеете ввиду, когда говорите, что индикатор "работать не будет", если я его копирую в Transaq, добавляю на график, и он - работает.
Что касается этой ситуации, то ошибка такая у нас имеется - слышым о ней не первый раз, но отловить ее самим пока не удалось. Но в этом направлении мы тоже работаем.
-
Не очень понятно что вы имеете ввиду, когда говорите, что индикатор "работать не будет", если я его копирую в Transaq, добавляю на график, и он - работает.
Что касается этой ситуации, то ошибка такая у нас имеется - слышым о ней не первый раз, но отловить ее самим пока не удалось. Но в этом направлении мы тоже работаем.
Я даже написал в чем ошибка.. индикатор работает без проблем, но только он не работает если его использовать в роботе.
-
Итак, про аналитику динамики портфеля в разрезе инструментов. По существу.
Штатных средств получения наглядного представления о вкладе кажного вида бумаг в общее изменение оценки портфеля в настоящее время в TRANSAQ нет. Впрочем, ничто не мешает выполнить такую доработку отображения запроса "Структура портфеля", а именно добавить колонку "Изменение оценки" и показывать вклад каждой бумаги в общее изменение стоимости портфеля. Это мы обсудим и поставим в план доработки. За идею спасибо.
Много времени прошло. Какие-нибудь телодвижения в направленнии этой идеи совершаются?
-
Итак, про аналитику динамики портфеля в разрезе инструментов. По существу.
Штатных средств получения наглядного представления о вкладе кажного вида бумаг в общее изменение оценки портфеля в настоящее время в TRANSAQ нет. Впрочем, ничто не мешает выполнить такую доработку отображения запроса "Структура портфеля", а именно добавить колонку "Изменение оценки" и показывать вклад каждой бумаги в общее изменение стоимости портфеля. Это мы обсудим и поставим в план доработки. За идею спасибо.
Много времени прошло. Какие-нибудь телодвижения в направленнии этой идеи совершаются?
???
-
Итак, про аналитику динамики портфеля в разрезе инструментов. По существу.
Штатных средств получения наглядного представления о вкладе кажного вида бумаг в общее изменение оценки портфеля в настоящее время в TRANSAQ нет. Впрочем, ничто не мешает выполнить такую доработку отображения запроса "Структура портфеля", а именно добавить колонку "Изменение оценки" и показывать вклад каждой бумаги в общее изменение стоимости портфеля. Это мы обсудим и поставим в план доработки. За идею спасибо.
Много времени прошло. Какие-нибудь телодвижения в направленнии этой идеи совершаются?
???
Ну и шта-а-а - как говаривал наш предбывший президент,отвечать не будем?
-
При ближайшем рассмотрении тема оказалась не такая уж очевидная.
Если позиция не менялась, то все понятно: изменение = текущая оценка минус оценка по вчерашнему закрытию.
Вопрос, что показывать когда позиция изменилась.
Если продана половина длинной позиции, то получится, что стоимость этой позиции уменьшилась в два раза. Будет ли в этом смысл?
-
При ближайшем рассмотрении тема оказалась не такая уж очевидная.
Если позиция не менялась, то все понятно: изменение = текущая оценка минус оценка по вчерашнему закрытию.
Что показывать когда позиция изменилась?
А если продана половина бумаг, то показывать что стоимость этой позиции уменьшилась (примерно) в два раза?
Показывать именно ту составляющую по каждой бумаге, которая в данный конкретный срез срез входит в общую оценку портфеля.
Ведь эта оценка состоит как я понимаю как раз из этих составляющих.
Что тут не очевидного?
-
Показывать именно ту составляющую по каждой бумаге, которая в данный конкретный срез срез входит в общую оценку портфеля.
Ведь эта оценка состоит как я понимаю как раз из этих составляющих.
Что тут не очевидного?
составляющая (вклад) каждой бумаги в текущей оценке портфеля уже есть (колонка "% в портфеле")
Идея была показать вклад каждой бумаги в ИЗМЕНЕНИЕ оценки портфеля.
Мой вопрос: предположим, что продана половина длинной позиции (для простоты по той же цене что вчерашнее закрытие). Т.е. оценка данной позиции уменьшилась в два раза. Если показать что вклад данной позиции в изменение оценки портфеля - 50%, то получится что позиция принесла убыток, хотя на самом деле средства из этих бумаг просто перешли в деньги.
Дальше на эти деньги купили других бумаг(которых вчера не было)
Какой вклад внесут эти новые бумаги в изменение стоимости портфеля относительно вчерашней оценки ?
-
Показывать именно ту составляющую по каждой бумаге, которая в данный конкретный срез срез входит в общую оценку портфеля.
Ведь эта оценка состоит как я понимаю как раз из этих составляющих.
Что тут не очевидного?
составляющая (вклад) каждой бумаги в текущей оценке портфеля уже есть (колонка "% в портфеле")
Идея была показать вклад каждой бумаги в ИЗМЕНЕНИЕ оценки портфеля.
Мой вопрос: предположим, что продана половина длинной позиции (для простоты по той же цене что вчерашнее закрытие). Т.е. оценка данной позиции уменьшилась в два раза. Если показать что вклад данной позиции в изменение оценки портфеля - 50%, то получится что позиция принесла убыток, хотя на самом деле средства из этих бумаг просто перешли в деньги.
Дальше на эти деньги купили других бумаг(которых вчера не было)
Какой вклад внесут эти новые бумаги в изменение стоимости портфеля относительно вчерашней оценки ?
Пожалуй Вы правы. Если по бумаге проводились операции в течении дня, то определить ее вклад в изменение стоимости всего портфеля весьма проблематично.
Я снимаю свое пожелание. Спасибо за разъяснение..
-
Товарищи разработчики можно ли расширить функционал по снятию заявок. Сейчас есть только четыре функции:
trade_action::cancelBuyOrders() Снять заявки на покупку по используемой бумаге
trade_action::cancelSellOrders() Снять заявки на продажу по используемой бумаге
trade_action::cancelAllOrders() Снять все заявки по используемой бумаге
trade_action::cancelOrder(id) Снять заявку по индетификатору
Хотелось бы еще возможность снимать заявки отдельно активные, условные, стоп-заявки (соответственно на покупку и продажу), что то типа:
trade_action::cancelActiveBuyOrders() Снять АКТИВНЫЕ заявки на покупку по используемой бумаге
trade_action::cancelWatchingBuyOrders() Снять УСЛОВНЫЕ заявки на покупку по используемой бумаге
trade_action::cancelStopAppBuyOrders() Снять СТОП заявки на покупку по используемой бумаге
Ведь возможность выбирать вручную (галочками в окне "Снять группу заявок") присутствует в transaq.
-
Проблемы особой тут нет, в сделаем, когда руки дойдут.
-
Приветствую Вас, господа разработчики!
Приятно видеть, что Transaq и ATF живут и динамично развиваются, как видно по сильно возросшему функционалу, что возвращает интерес к этой платформе. Однако, нет пределу совершенства, посему решил поднять старую тему пожеланий.
В процессе пробного написания МТС на ATF появилось ещё несколько пожеланий, которые излагаю ниже:
- Расширить набор полей в объектах Order и Trade полями "remark" (Примечание), "commission" (Комиссия). Могу обосновать, если есть сомнения в их необходимости.
- Портировать из stdlib функции sprintf , printf , scanf , их файловые аналоги fprintf , fscanf. Уверен, полезность форматированного ввода / вывода оценят многие.
- Странно было обнаружить отсутствие в редакторе скриптов ATF функций поиска и замены (Ctrl+F, Ctrl+H). Вы ими тоже не пользуетесь?
- Да и зачем самому редактору модальное окно? Чтобы не потерялось содержимое? Автосохранение. Само окно не потерялось? Неудобно совсем.
- Окну "Вывод ATF" не помешало бы свойство "resize = true". Хотя бы, чтобы нормально читать сообщения об ошибках.
- Кстати об ошибках русского языка. Думаю, у Вас есть достаточно грамотный копирайтер, чтобы исправить сообщения типа "не верная цена" и "буфферы" в самой программе и документации на сайте, которая просто изобилует ошибками и опечатками ?
Ну а об ошибках - в отдельной теме.
P.S. Кстати, комиссия брокера может зависеть от суммарного оборота, поэтому наличие отдельных полей биржевых комиссий (клиринг, ФБ, ТЦ) также считаю необходимым для выполнения правильных расчётов на конец дня.
-
Пожелания правильные и обоснованные, сделаем.
-
Просьба в будущих версиях Транзака переместить кнопку "Срочные позиции клиента" как можно левее на панели инструментов. На самом деле, для меня это одна из важнейших кнопок, а на экране 600Х800 она вообще не видна. Я сейчас нетбук использую на работе для Транзака, а там именно такое разрешение.
Получается, что всякие там Фибоначи-фигачи на самом видном месте, а до нужнейшей команды приходится добираться через меню. Очень, очень неудобно, особенно в те моменты, когда от трейдера требуется оперативность!
-
Спасибо, учтем.
Вы можете пользоваться <Shift>+F7, (если есть возможность...)
-
Хотелось бы еще возможность снимать заявки отдельно активные, условные, стоп-заявки (соответственно на покупку и продажу), что то типа:
trade_action::cancelActiveBuyOrders() Снять АКТИВНЫЕ заявки на покупку по используемой бумаге
trade_action::cancelWatchingBuyOrders() Снять УСЛОВНЫЕ заявки на покупку по используемой бумаге
trade_action::cancelStopAppBuyOrders() Снять СТОП заявки на покупку по используемой бумаге
nxz
Я бы на месте разработчиков модифицировал синтаксис уже имеющихся методов (функций) введя в качестве передаваемого им аргумента фильтр.
trade_action::cancelBuyOrders(var filter) Снять заявки на покупку по используемой бумаге
trade_action::cancelSellOrders(var filter) Снять заявки на продажу по используемой бумаге
trade_action::cancelAllOrders(var filter) Снять все заявки по используемой бумаге
где фильтр (var filter) - константа ( CC - Cancel Condition):
CC_ALL - Все заявки;
CC_WATCHING - все условные заявки;
CC_WAIT - все заявки, ожидающие время активации;
CC_ACTIVE - все активные заявки;
CC_INACTIVE - все неактивные заявки, статус которых неизвестен из-за сбоев связи с Биржей;
-
Полностью согласен!
-
Спасибо, учтем.
Вы можете пользоваться <Shift>+F7, (если есть возможность...)
Возможность-то есть, но всё-таки с кнопкой было бы гораздо удобнее. По крайней мере, ничего не надо держать в голове.
-
Не знаю, в какую тему написать. Эта вроде бы для ATF, а не для самого Транзака. Помню, что тема о пожеланиях для развития Транзака где-то была на форуме, но найти её трудновато. Здесь такая каша-малаша :) Давно предлагал разделить весь форум по крупным тематикам, но видно не судьба :(
Короче говоря, пишу свои пожелания по развитию Транзака здесь, хотя прекрасно понимаю, что они в этой теме не совсем уместны.
Итак...
1. Предлагаю в следующих версиях реализовать "отмену" действий пользователя, по типу привычных виндосовских программ (Word, Paint и др.). А то иногда хочется быстренько увеличить какой-нибудь участок, чтобы его внимательно изучить, измерить там линейкой что-нибудь и так далее, а потом быстренько вернуться к настроенному для удобного обозрения виду окна. А вот БЫСТРЕНЬКО-то вернуться как раз и не получается, а хотелось бы. Одним словом, реализация "отмены" была бы, на мой взгляд, идеальным решением этой проблемы.
2. Недавно у меня возникла необходимость быстренько снять несколько выставленных заявок. Хотел выделить их с помощью <SHIFT>, чтобы потом щелкнуть выделение правой кнопкой и из контекстного меню снять все выделенные заявки. Не получилось, не выделяются... А хотелось бы, чтобы так было... Пришлось удалять поштучно. Может быть возможность "группового" снятия заявок уже как-то реализована, тогда напомните, пожалуйста, что для этого нужно делать. А если такой возможности в Транзаке пока ещё нет, то очень хотелось бы её иметь.
-
2. Недавно у меня возникла необходимость быстренько снять несколько выставленных заявок. Хотел выделить их с помощью <SHIFT>, чтобы потом щелкнуть выделение правой кнопкой и из контекстного меню снять все выделенные заявки. Не получилось, не выделяются... А хотелось бы, чтобы так было... Пришлось удалять поштучно. Может быть возможность "группового" снятия заявок уже как-то реализована, тогда напомните, пожалуйста, что для этого нужно делать. А если такой возможности в Транзаке пока ещё нет, то очень хотелось бы её иметь.
В меню "Заявки" - "Снять группу заявок" или Ctr+Del
Не подходит?
-
В меню "Заявки" - "Снять группу заявок"...
Не подходит?
Спасибо за подсказку, но я даже не знаю... может и подойдёт при условии, чтобы эту возможность изучить и потом постоянно (чтобы не забывалось) ей пользоваться. А мне-то очень-очень редко приходится снимать сразу несколько заявок, обычно вообще не снимаю или снимаю (очень редко) одну штуку. И когда через полгода снова возникнет такая необходимость, я про меню даже под гипнозом не вспомню :) особенно, если учитывать, что решение надо принимать в условиях цейтнота.
Конкретный пример: сегодня робот взбесился :) и понавыстовлял лишних заявок. Разумеется, первым делом куда? В таблицу "Заявки", чтобы посмотреть, что же там творится. Сразу вижу: ага, вот эти "по делу", а вот эти совсем "не в кассу". Пытаюсь выделить и удалить "лишние", не получается. В этот стрессовый момент вспомнить о существовании пункта меню совершенно нереально. Вот же передо мной таблица "Заявки", всё управление заявками должно быть сосредоточено именно здесь!
... или Ctr+Del
Не подходит?
Подходит, если сначала можно быстренько выделить все необходимые, а уже потом произвести эту операцию.
-
Не знаю, в какую тему написать. Эта вроде бы для ATF, а не для самого Транзака. Помню, что тема о пожеланиях для развития Транзака где-то была на форуме, но найти её трудновато. Здесь такая каша-малаша :) Давно предлагал разделить весь форум по крупным тематикам, но видно не судьба :(
Короче говоря, пишу свои пожелания по развитию Транзака здесь, хотя прекрасно понимаю, что они в этой теме не совсем уместны.
Итак...
1. Предлагаю в следующих версиях реализовать "отмену" действий пользователя, по типу привычных виндосовских программ (Word, Paint и др.). А то иногда хочется быстренько увеличить какой-нибудь участок, чтобы его внимательно изучить, измерить там линейкой что-нибудь и так далее, а потом быстренько вернуться к настроенному для удобного обозрения виду окна. А вот БЫСТРЕНЬКО-то вернуться как раз и не получается, а хотелось бы. Одним словом, реализация "отмены" была бы, на мой взгляд, идеальным решением этой проблемы.
2. Недавно у меня возникла необходимость быстренько снять несколько выставленных заявок. Хотел выделить их с помощью <SHIFT>, чтобы потом щелкнуть выделение правой кнопкой и из контекстного меню снять все выделенные заявки. Не получилось, не выделяются... А хотелось бы, чтобы так было... Пришлось удалять поштучно. Может быть возможность "группового" снятия заявок уже как-то реализована, тогда напомните, пожалуйста, что для этого нужно делать. А если такой возможности в Транзаке пока ещё нет, то очень хотелось бы её иметь.
И ни ответа, и ни привета... В смысле, от разработчиков :)