Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Декабря 05, 2021, 05:59:39 am
Начало Помощь Поиск Войти Регистрация
Новости:

Просмотр сообщений

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Pilgrim

Pages: [1] 2 3 4
1
Подсистема ATF / Re: подписка на тики
« on: Июня 19, 2020, 12:41:34 pm »

Здравствуйте.

А можно чуть подробнее:

- строчка кода;
- штатная функция из которой идёт запрос;
- цель «подписки на тики» ( средство оправдывает цель? )

...


2
Здравствуйте.

На форуме много кода для примера. Вот что-то типа:

http://www.transaq.ru/forum/index.php?topic=4508.msg14454#msg14454
http://www.transaq.ru/forum/index.php?topic=3040.msg10638#msg10638

В этих скриптах, как раз, присутствуют и торговые команды (повнимательнее
с ними первое время; на графике также появится «робот»).

В общем, примеров здесь: «их есть», и в достаточном количестве.

3

Сложного в этой задаче ничего нет, от слова вообще. Просто доля любого
алгоритма в торгующем скрипте очень мала по отношению к обычной
«бухгалтерии» - монтиторинг позиций, заявок, сделок. И это в любом ЯП.
Т.е. эти ваши 3-5 строчек автоматически обрастают блоками присущими
торговому скрипту. Полистайте мануал, посмотрите форум, - примеров
много (торговых).

Насколько помню, в терминале, при выставлении заявок, трейлинг есть, и
вроде достаточно гибкий. Может проще его использовать?

А тему закрывать не стоит, возможно отпишется ещё кто.

4
... С чего начать? ...

Ну вот смотрите. Если Вы пишете - это одно, просто пИшите робота.
Если не пишете, то вряд ли здесь выложат готовое решение, мне кажется.

А начать надо с законченной логики. Ну например, «на вскидку»:
- Робот постоянно включен и отслеживает наличие сделки / выключен,
после сделки запускается вручную (или автоматически).
- Сработал «стоп»: робот выключился / не выключился.
- Если перенос позиции через ночь, - действия робота.
- и т.д.

Это, своего рода, оргмоменты, но их надо все прописывать и чётко отслеживать
(внутри скрипта, конечно). Сама задачка (передвижение «стопА») строк в пять,
но в неком контексте и внутри какой-то логики. К ней обязательно добавится, в
процессе написания, несколько мелких подзадач. Например:
- слежение за ценой:
- идентификация заявок, их мониторинг;
- идентификация сделок;
- и т.д.

И этот «мини-робот» перестаёт быть «мини», так как для «включил и забыл»
будут нюансы, требующие тщательной проработки. И повторюсь: на основании
чёткой логики. Если бы речь шла об индикаторе, то всё намного проще и
«безответственние». Но с добавлением торговых операций - это уже совершенно
другая «писанина».

Резюмирую: создать такого робота возможно, но вряд ли он будет «мини».



5
Здравствуйте.

В разделе «Технические требования» на сайте не сказано о
«Ядрености» процессоров для Transaq.

Известно, что АРМ не требователен к конфигурации, но тем ни менее:

- на сколько он умеет пользоваться несколькими ядрами?
- что для него критичнее: память, частота или количество ядер?

Спасибо.

6
Премного благодарен за ответ, тем более оптимистичный!

14 знаков как-то незаметно прошло, а вот про 19 шум подняли, вплоть до замены версий некоторых ПО.
По-этому я и запаниковал. Т.к. любое изменение в структуре того же onTrade() могло привести к, непоправимым
в нашем случае (АТФ), аварийным ситуациям. И тогда всё - «рисовалка индикаторов» ... Но видать ещё не время!

Огромное спасибо за проверку работы onTrade() на тестовой версии - позитивный результат!

«linkedorderno» привёл, т.к. его тоже касается, - не использую, примера нет. Будем надеяться, что пройдёт
аналогично «orderno». 

7
А то может и ничего страшного, проскочит АТФ на этот раз?
И механизм работы с заявками биржи, который производится через сервер Transaq'а и
промежуточные идентификаторы (trnid) как-то купируют ситуацию?
Другой вопрос: как АТФ будет реагировать на новый формат полей «orderno»/«linkedorderno»? ...

8
Уважаемые разработчики!

Известно, что на вопросы про АТФ, по понятным причинам, вы не отвечаете, - и это правильно, «умерла так умерла».
Но вопрос не рядовой, как показалось, просьба прокомментировать.

Цитата (актуальна на форумах всех ПО для алго на МБ):
«В ближайшее время на Московской бирже планируется внедрение новой клиринговой системы SPECTRA 6.3,
что приведет к увеличению количества символов (с 10-ти до 19-ти) в номерах заявок на Срочном рынке FORTS.»
(ориентировочно конец мая 2020: https://www.moex.com/n27761)

Вопрос:
Сможет ли АТФ, при указанных изменениях на МБ, именно торговать(!) на FORTS? ...

Или брать уже тот самый «бубен» и искать альтернативное решение (пока АТФ полностью устраивал)?

Заранее благодарен.

9
Информация о инициаторах сделки с биржи - штатная.
Разработчики ПО просто её транслируют в терминал.
Но вот АТФ, насколько я понял из форума, получает эти данные несколько в другом виде.
Есть у него некоторое отклонение от терминала (процентов, по наблюдениям, до 3-5).
Не думаю, что это критично, но такое вот.
Попробуйте в поиске забить: «getLastTradeDirection()», там может на ветках подробнее что нибудь почитаете.
Просто надо помнить, что функция учитывает рыночные(!) заявки. А это как бы двух участников из пяти
(маркет-мейкер, лимитный покупатель/продавец, рыночный покупатель/продавец).
Это я вообще - о ценности «Дельты» ...

И да, можете проверить работу скрипта: сумма двух гистограмм = Volume ...

10
Нашёл старый скрипт, в нём «Дельта» была как компонента.
Выбросил всё лишнее, вроде должен работать.
На рынок уже опоздал, не проверял.

//   ==================================================================================

#line 0 hist   #98FB98
#line 1 hist   #FFC0CB

static vr_BBSS;
static vr1_V_trd = 0;
static vrS_V_SUM = 0;
static vrB_V_SUM = 0;


                              function onNewCandle()               {

vrB_V_SUM = 0;
vrS_V_SUM = 0;
                                                            }



                              function calc()                     {

if ( isHistoryCalculated() )                                       {

   vr1_V_trd   = getLastTradeVolume();
   vr_BBSS      = getLastTradeDirection();

      if ( vr_BBSS == "S" )   { vrS_V_SUM   +=   vr1_V_trd;}
      if ( vr_BBSS == "B" )   { vrB_V_SUM   +=   vr1_V_trd;}

line[0]   =   vrB_V_SUM;
line[1]   = - vrS_V_SUM;

                                                            }
                                                            }

//   ==================================================================================

11
Ну да, конечно. Я Вам и привёл две функции которые являются основой для «Дельты».
В «калке» подсчитываете объёмы для «инициаторов сделок» (S/B) - их разница и есть «Дельта» для текущей свечи.
На новой свече обнуляете «S» и «B». «Эту песню не задушишь, не убьешь!» ©, что называется.
Попробуйте написАть, там максимум строк десять ...

12
Если правильно понял, то Вам нужен:
- getLastTradeDirection() - «направление последний сделки ('B' - удовлетворена заявка на покупку, 'S' - на продажу; в противном случае неизвестно) (ATF 1.17)» (из документации),
ну и
- getLastTradeVolume() - «получить объем в последней сделке по данной бумаге. (ver. 1.11)» (от туда же).

В принципе, 7-10 строчек вместе с «красивостями». Средства у АТФ для «Дельты» есть. Допускаю, что на форуме и пример найдётся ...

13
// ==========================================================

static vr_Trd = 0;
static vr_DATA = "";
static vr_DATA_tmp = "";
static vr_DATA_out = "";
static fl_XFile;
static st_ZZZ;

         function init()
{
st_ZZZ = new_object( "statline" );
st_ZZZ.subscribe();

fl_XFile = new_object( "file" );
fl_XFile.wopen( "XFile.txt" );
}


         function out_2_XFile()
{
fl_XFile.write( vr_DATA_out );
}


         function calc()
{
if ( isHistoryCalculated() )   {

vr_Trd += 1;

vr_DATA_tmp = "\n" +
   getFormattedTime( getServerTime()) + ";" +
   getLastTradeDirection() + ";" +
   close + ";" +
   getLastTradeVolume() + "\t" +
   st_ZZZ.getparam( param_openpositions );

vr_DATA += vr_DATA_tmp; vr_DATA_tmp = "";

if ( vr_Trd > 49 ) { vr_Trd = 0; vr_DATA_out = vr_DATA; vr_DATA = ""; out_2_XFile(); }
                  }
}

// ==========================================================


Это    MGNT-3.20:   
...
18:35:39;B;3800;18    217550
18:35:39;B;3801;20    217550
18:35:39;B;3801;18    217550
18:35:39;B;3801;3      217550
18:35:39;B;3794;2      217550
18:35:39;S;3793;1      217550
18:35:39;S;3793;8      217550
18:35:39;S;3793;18    217550
18:35:39;S;3791;8      217550
18:35:39;S;3791;18    217550
18:35:39;S;3791;4      217550
18:35:50;B;3793;2      217550
18:35:50;S;3791;1      217548
18:36:02;S;3792;2      217548
18:36:09;S;3791;1      217538
18:36:09;S;3791;4      217538
18:36:09;S;3790;18    217538
18:36:09;S;3790;1      217538
18:36:09;S;3789;1      217538
...

Сравнивал с «Комбинированными котировками» инструмента. Точное соответствие в:
-  последовательности сделок внутри секунды (т.к. без десятых/сотых секунды);
-  объёмах;
-  ценах сделок.

Иногда бывает не соответствие по «инициатору сделки» (ну так процентов до пяти примерно), и
ничего не могу сказать по «ОИ» (последний столбец), т.к. уже говорили, что эти параметры приходят
по другому несколько алгоритму. Но и по «инициатору», и по «ОИ» тенденцию можно увидеть, и даже
принимать к расчёту с учётом некоторой погрешности ...

14
Да какой там «разработчик», - я жеш: «Newbie» :). А с «легким наездом» - это Вы зря. Небольшой коллектив собрал очень стабильный, очень быстрый и лёгкий продукт, - тут только «снимать шляпу», что называется ...

Ну да ладно, «к вашим баранам». Вот видите, не прошло и недели, а мы совместными усилиями, наконец таки, добрались до вашего «Тех. Задания» (ТЗ). Из крайнего сообщения стало понятно, что параметры Вам нужны самые, что ни на есть, простые: «с комбинированных котировок». Это вообще упрощает задачу в части сбора этих данных. Про .xml думаю так: надо бы посмотреть тот формат .xml, который Вы передаёте той своей программе. По-этому просьба: выложите здесь из собранного для вашей программы в, например, Квике .xml файла фрагменты:
- с самого(!) начала строк 10-15 вместе с «шапкой»;
- концовочку строк 5-7.
Очень интересно посмотреть как у Вас организован .xml из «потоковых» данных, а НЕ из статических.

А пока я Вам предлагаю попробовать вариант скрипта, сохраняющего «поток», опять таки, в .txt. Синтаксис проверил, а вот протестировать не успел. Так что «как есть»:

// старт ...

static vr_Trd = 0;
static vr_DATA = "";
static vr_DATA_tmp = "";
static fl_XFile;


function init()
{
fl_XFile = new_object( "file" );
fl_XFile.wopen( "XFile.txt" );
}


function out_2_XFile()   // можно было без определения функции, а прямо в калке, но так правильно ...
{
fl_XFile.write( vr_DATA );   // здесь запись x в файл БЕЗ перехода на новую строку ...
vr_DATA = "";
}


function calc()
{
vr_Trd += 1;
vr_DATA_tmp = getFormattedTime( getServerTime()) + ";" + close + ";" + getLastTradeVolume() + ";" + getLastTradeDirection() + "\n";
vr_DATA += vr_DATA_tmp; vr_DATA_tmp = "";

   if ( vr_Trd > 99 ) { vr_Trd = 0; out_2_XFile(); }   // уменьшаем кол-во обращений к файлу, здесь только на каждую сотую строку ...
}

// финиш ...

Вроде должно работать. Если что, то это просто «блок-схема», - «докрутить чутка» и пойдёт. Только здесь файл не закрывается (специально). Допишите что-нибудь типа закрыть по времени (23:51) или комбинацией клавиш, - не принципиально. Так же, насколько помню, здесь время только до секунд, без десятых/сотых. И конечно размер будет приличный, если вся сессия, а .xml ещё процентов на сорок побольше, как минимум ...

15
Цитата верна про «всю(!) статистику».  Subscribe() подразумевает трансляцию на ваш терминал всех изменений по всем параметрам. Но как это реализовано разработчиками остаётся только догадываться. Т.е. или же эти данные прилетают одним пакетом с какой-то частотой, или же отслеживается только изменения в параметре и тогда информация поступает с сервера, а в кэше, соответственно, копится и утилизируется - ну вот не знаем мы этого. По-этому идея получения всех(!) параметров на каждом тике - абсурдна изначально. Вы вот посмотрите таки на предлагаемые в документации параметры - их там более тридцати(!). И далеко не все способны меняться даже в течении минуты. Так всё таки какие конкретно Вас параметры интересуют (из 30-ти)? Или это тайна?

Далее, судя по форуму, вопросы по получению параметров были, и можно предположить(!), что так и не были решены разработчиками в полном объёме (то же произвольное количество запросов, которое упоминалось). Я лично, в разумных пределах, конкретные параметры запрашиваю, и оно всё изумительно работает (понятно, что не на тиках). Не могу понять, что Вы там хотите от данных получаемых с такой частотой. Может в «ИИ» планируете передавать, - не знаю. Но следует отметить, что даже в самом терминале параметры, меняющиеся с такой частотой, и в таком объёме, вряд ли увидите. Кроме(!): цена, объём, направление сделки, время - «это святое!», и гарантированно есть на каждом тике. А эти параметры НЕ требуют обращения по относительно сложному алгоритму (через .getparam), - для этого существуют более простые функции, и более стабильные при этом. Например: getLastTradeVolume() для объёма, close для цены и т.д. Это я к тому, что от правильности постановки задачи сильно зависит метод её решения.

По-этому, я ещё раз предлагаю Вам определиться с параметрами ( смотрите список: «Константы в языке ATF»/ param_*** ) - это важно: что/когда/в каком объёме запрашивать, и только потом подготовка данных (структура данных может зависеть от «что/когда») для записи в файл ...

Pages: [1] 2 3 4


Войти

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