Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Августа 10, 2022, 07:51:27 pm
Начало Помощь Поиск Войти Регистрация
Новости:

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Вопросы и предложения по FORTS « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Вопросы и предложения по FORTS  (Прочитано 7058 раз)
Владимир I
Newbie
*
Сообщений: 35


Просмотр профиля Email
« : Августа 26, 2013, 03:28:53 pm »

Здравствуйте !
У меня есть сразу несколько вопросов по торговле на FORTS :
1. Как определить идёт ли сейчас торговая сессия ?
2. Как получить позиции по всем инструментам ? ( или идентификаторы инструментов по которым открыты позиции )
3. Как получить размер гарантийного обеспечения и дату погашения инструмента ? ( см. рисунок )
4. Можно ли организовать SMS оповещения из Transaq ? Если да, то как это сделать ?
« Последнее редактирование: Сентября 10, 2013, 02:53:09 pm от vm_petrov » Записан

С уважением, Владимир
Владимир I
Newbie
*
Сообщений: 35


Просмотр профиля Email
« Ответ #1 : Августа 26, 2013, 03:45:01 pm »

И ещё :
В программе выставляю заявкам время жизни 5 секунд, выставляю заявки на биржу.

      order[ "validbefore"    ] = getServerTime() + 5000 ; // + 5 сек.
      orderId = trade_action::transactMultiple( order );

Смотрю на таблицу заявок в Transaq - там у этих заявок в графе "Снять после" пусто. ( см. рисунок )

Подскажите пожалуйста в чём дело ?
Записан

С уважением, Владимир
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #2 : Августа 27, 2013, 04:39:54 pm »

На первые четыре вопроса ответ, к сожалению, негативный. Эти функции на данный момент еще не реализованы, но они стоят в плане, так что мы их реализуем в обозримой перспективе, кроме оповещения по SMS. Впрочем, ATF позволяет подключать произвольные dll-библиотеки, если вам это подходит, то для SMS-оповещения можно использовать какую-нибудь внешнюю библиотеку (здесь я не могу подсказать конкретнее, поскольку не знаком с подобными сервисами).

Что касается поля validbefore, то по всей видимость с ним имеется некий баг, пока нами не исправленный. Исправим.
Записан
Олег
Hero Member
*****
Сообщений: 849



Просмотр профиля Email
« Ответ #3 : Августа 27, 2013, 06:39:16 pm »

Впрочем, ATF позволяет подключать произвольные dll-библиотеки, если вам это подходит, то для SMS-оповещения можно использовать какую-нибудь внешнюю библиотеку (здесь я не могу подсказать конкретнее, поскольку не знаком с подобными сервисами).

Наверняка, это среднестатистический пользователь Транзака (вроде меня), который представления не имеет, как это делается.
vm_petrov, я не далек от истины?


Что касается поля validbefore, то по всей видимость с ним имеется некий баг, пока нами не исправленный. Исправим.

Так что, действительно, можно из ATF выставить заявку, которая через заданное количество времени, не кратное дням, самоуничтожится?
По-моему, такую заявку даже руками выставить не получится.
И как она будет выглядеть в таблице заявок? Что-то вроде "Снять после 19:31 28.08.2013"?

Я понимаю, что сейчас в ATF это невозможно, потому что там баг, но хоть задумано-то как, хотелось бы полюбопытствовать?
« Последнее редактирование: Августа 27, 2013, 06:55:57 pm от Олег » Записан

Коллеги!
МТС фокусничает!
Будьте бдительны сами и предупредите всех своих хороших знакомых!
Я тоже на днях вляпался.
Схема "фокуса" описана вот здесь:
http://www.forum.sib.mts.ru/viewtopic.php?f=344&t=11381
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #4 : Августа 28, 2013, 11:50:04 am »

Насчет условия validbefore разобрались, это я сам же не разобрался в нашем же интерфейсе.

Ограние по времени действия бывает двух видов:

1) До какого дня заявка будет действительна - в диалоге это флажок "Снять после". Он может изменяться только в днях и работает только для FORTS. В ATF это поле вообще не доступно как оказалось.

2) Отдельно есть время действия условных заявок. Это как раз и есть validbefore - это поле актуально только в том случае, когда заявка выставлена с каким-либо условием.

Других вариантов нет.
Записан
Олег
Hero Member
*****
Сообщений: 849



Просмотр профиля Email
« Ответ #5 : Августа 28, 2013, 12:47:08 pm »

Насчет условия validbefore разобрались, это я сам же не разобрался в нашем же интерфейсе.

Ограние по времени действия бывает двух видов:

1) До какого дня заявка будет действительна - в диалоге это флажок "Снять после". Он может изменяться только в днях и работает только для FORTS. В ATF это поле вообще не доступно как оказалось.

2) Отдельно есть время действия условных заявок. Это как раз и есть validbefore - это поле актуально только в том случае, когда заявка выставлена с каким-либо условием.

Других вариантов нет.

Вот те раз :(
А я-то как раз был уверен, что validbefore управляет как раз тем самым флажком и соответствующим полем "Снять после". Потому и удивлялся, что из ATF можно (как казалось) настраивать эту опцию даже тоньше чем из самого интерфейса.
А теперь получается, что это совсем из другой оперы :(
Теперь придется во всех моих скриптах изменения вносить.

А кстати, хорошо бы все-таки приделать к ATF возможность управлять опцией "Снять после". Разумеется не с точностью до минут и часов, а с точностью до дней, как и в интерфейсе Транзака.
Лично я вообще сторонник того, чтобы все заявки выставлялись по умолчанию на веки вечные, пока пользователь сам их не снимет. Именно к этому и в скриптах своих стремлюсь.
Записан

Коллеги!
МТС фокусничает!
Будьте бдительны сами и предупредите всех своих хороших знакомых!
Я тоже на днях вляпался.
Схема "фокуса" описана вот здесь:
http://www.forum.sib.mts.ru/viewtopic.php?f=344&t=11381
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #6 : Сентября 03, 2013, 11:51:46 am »

1. в начале каждой торговой сессии происходит запуск Init() - делаем в определении переменных x = 0; а в init() - делаем так x = 1;  соответственно при любом спросе if( x ==1 ){  оп - ля сессия идет....работаем. }

2. это делается через реквестФортс позишн,...просто на каждый инструмент этот индикатор придется ставить а потом выводить в какую нибудь таблицу из текстового файла - но тут уже читать C# надо.

3. Размер гарантийки в большинстве случаев не больше 10 % от текущего бида или аска,....тупо делишь аск на 10 и получаешь с маленькой погрешностью ГО,...на некоторых инструментах конечно сильно все не совпадает, но все же легче чем ковыряться с имеющимися функциями.

4. Смс - ки : вопрос насущий:

в общем в тот момент когда тебе нужно отправить смс - пишеш блок на заполнение файла какой нибудь стринговой перемнной, - в этот момент файл создается,.....далее в планировщике заданий запускаешь через какждые 10 минут запуск вот этой проги ,...ну конечно откомпилируешь ее заранее.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;                  
using System.Net.Mail;

    class Program
    {
        static void Main(string[] args)
        {

FileInfo file = new FileInfo(@"C:\Users\Ля ля ля \Desktop\ааааа.txt");  - тут путь файла - где транзак его будет создавать

if (file.Exists == true) {
 
            StreamReader rdr = new StreamReader (@"C:\Users\Ля ля ля ля \Desktop\ааааа.txt");

            string ddd = rdr.ReadLine();

                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.mail.ru");

                mail.From = new MailAddress("vm_petrov@mail.ru");
                mail.To.Add("vm_petrov@mail.ru");
                mail.Subject = ddd;
                mail.Body = ddd;
                SmtpServer.Port = 25;
                SmtpServer.Credentials = new System.Net.NetworkCredential("vm_petrov@mail.ru", "Парольчик");
                SmtpServer.EnableSsl = false;

                SmtpServer.Send(mail);
               
                MessageBox.Show(ddd);
           
               rdr.Close();   file.Delete();   }
       }
    }   - ее суть такова - проверяет наличие самого файла потом считывает из него то что в него написал и отправляет тебе самому с твоего же почтового ящика на почту. там прикручиваешь к папке просто смс уведомление на мобильник о поступлении именно в нужную папку письма,....

Далее так же прикручиваешь либо в  планировщик либо сюда же в прогу правильно затесать следующее :

using System;
using System.Diagnostics;



public class Programm
{
   

    public static void Main()
    {
 
System.IO.File.Delete(@"C:\Ля ля ля ля ля \аааа.txt");  - тут все тот же путь файла,..
    }
   
}

- эта штука грохает файл,...

На выходе получаем :

Transaq пишет в файл то что тебе нужно вывести на мобильник,.....причем это в теме письма пишем (ddd)

вторая  прога проверяет создал ли транзак файл , записал ли,..в него чего нибудь,...

а третья просто грохает сразуже,.....

в итоге когда файла нет, вторая просто в холостую запускается и ничего не отправляет. 
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #7 : Сентября 03, 2013, 11:58:48 am »

а 5 секундные заявки через таймер. только так.


function f() {  orderId = trade_action::transactMultiple( order );     CandcelAllOrders();   }


ну и через таймер запускайте эту функцию с параметром 5000 ,....в итоге заявки что срослись - будут в портфеле, что нет, просто снимутся кэнселом,...и по новой выставятся.
Записан
White Noise
Full Member
***
Сообщений: 164


White Noise

ICQ Messenger - 411196569
Просмотр профиля Email
« Ответ #8 : Сентября 03, 2013, 12:14:16 pm »

А, кстати Heller - просто огромное спасибо за подвижные размеры окна вывода ATF.
Теперь с надеждой и верой ждем стаканы обратно )))) В полном объеме как раньше !!!!
Записан
Владимир I
Newbie
*
Сообщений: 35


Просмотр профиля Email
« Ответ #9 : Сентября 10, 2013, 02:47:06 pm »

Насчет условия validbefore разобрались, это я сам же не разобрался в нашем же интерфейсе.

Ограние по времени действия бывает двух видов:

1) До какого дня заявка будет действительна - в диалоге это флажок "Снять после". Он может изменяться только в днях и работает только для FORTS. В ATF это поле вообще не доступно как оказалось.

2) Отдельно есть время действия условных заявок. Это как раз и есть validbefore - это поле актуально только в том случае, когда заявка выставлена с каким-либо условием.

Других вариантов нет.

Вариант есть - я например делаю так -
1. Пишется функция, которая снимает заявку.
2. После выставления заявки, запускается таймер, настроенный на определённое время и запускающий процедуру снятия заявки. - Практически всё. Заявка будет снята в нужное время.
3. В процедуре onStopIndicator делаю    delTimer( CancelOrderTimer ); - без этого Транзак иногда падает при закрытии окна с индикатором
Записан

С уважением, Владимир
Владимир I
Newbie
*
Сообщений: 35


Просмотр профиля Email
« Ответ #10 : Сентября 10, 2013, 02:57:42 pm »

Хочу просто чётко сформулировать свои пожелания по развитию Транзака :

1. SMS, email оповещения
   - программные ( signal::SMS( PhoneNumber, message ), signal::email( emailAddress, message ) ) + Multiple версии
   - серверные ( программа регистрирует на сервере событие завершения сессии ( в т.ч. и особенно аварийное ),
     signal::serverSMS( Event, PhoneNumber, message ), signal::serveremail( Event, emailAddress, message )
     где Event - завершение сеанса, аварийное завершение сеанса, потеря соединения с биржей, возможно ещё какие-нибудь события,
     препятствующие работе Транзака и особенно роботов ( которые должны работать круглосуточно ).

2. В параметры инструмента ( выдаваемые функцией getSecInfo() ) надо добавить след. информацию :
   - Код базового актива ( для фьючерсов, опционов )
   - Количество базового актива в инструменте ( для фьючерсов, опционов )
   - Гарантийное обеспечение продавца ( для фьючерсов, опционов )
   - Гарантийное обеспечение покупателя ( для фьючерсов, опционов )
   - Дата завершения обращения ( для фьючерсов, опционов, облигаций )

3. Отслеживание режима торгов
   - Функция isTradeSession( Market ) - возвращает 1 если торговая сессия на рынке Market активна, 0 - если не активна
   - События onStartTrading( Market ), onStopTrading( Market ) - начало и конец торговой сессии на рынке Market.
   
4. Получение текущей цены произвольного инструмента getSecCurrentPrice( SecId )

5. Сделать окошко выбора инструментов побольше - иначе там названий опционов не видно.

6. Сделать окошко ввода параметров индикатора побольше и шрифт покрупнее.

7. Получить позиции по всем инструментам ? ( или идентификаторы инструментов по которым открыты позиции )

Насколько это реально сделать и, если реально, то когда ?
     
Записан

С уважением, Владимир
Олег
Hero Member
*****
Сообщений: 849



Просмотр профиля Email
« Ответ #11 : Сентября 28, 2013, 01:25:29 am »

Насчет условия validbefore разобрались, это я сам же не разобрался в нашем же интерфейсе.

Ограние по времени действия бывает двух видов:

1) До какого дня заявка будет действительна - в диалоге это флажок "Снять после". Он может изменяться только в днях и работает только для FORTS. В ATF это поле вообще не доступно как оказалось.

2) Отдельно есть время действия условных заявок. Это как раз и есть validbefore - это поле актуально только в том случае, когда заявка выставлена с каким-либо условием.

Других вариантов нет.

А в документации и по сей день не исправлено:


Записан

Коллеги!
МТС фокусничает!
Будьте бдительны сами и предупредите всех своих хороших знакомых!
Я тоже на днях вляпался.
Схема "фокуса" описана вот здесь:
http://www.forum.sib.mts.ru/viewtopic.php?f=344&t=11381
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Вопросы и предложения по FORTS « предыдущая тема следующая тема »
Перейти в:  


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!