Как из скрипта lua узначть что терминал QUIK загрузился полностью и подгрузил данные эккаунта ?

Страницы: 1
RSS
Как из скрипта lua узначть что терминал QUIK загрузился полностью и подгрузил данные эккаунта ?, Как из скрипта lua узначть что терминал QUIK загрузился полностью и подгрузил данные эккаунта ?
 
Уважаемые,

После перезапуска терминала, если автозапускается скрипт, то ф-я getNumberOf("futures_client_holding") выдет 0, хотя на эккаунте есть позиции.
Есть какой-то способ проверить, что все данные пользоватьеля подгузились ?
 
Соответственно, это значение возвращается уже после того как соединение установленно.
isConnected == 1
 
Цитата
Рустем написал:
Уважаемые,

После перезапуска терминала, если автозапускается скрипт, то ф-я getNumberOf("futures_client_holding") выдет 0, хотя на эккаунте есть позиции.
Есть какой-то способ проверить, что все данные пользоватьеля подгузились ?
Cитуация оказалась гораздо хуже, чем я думал.
getNumberOf("futures_client_holding") = 0 приходит довольно часто после переустановления прерванного соединения терминалом.
 
Всегда надо помнить, что Вы работаете с терминалом, получающим данные с сервера. Т.е. после установки соединения начинается передача данных. Вполне естественно, что сразу после установки соединения (Handshaking) данные еще не начали передаваться.

К сожалению терминал не предоставляет методов контроля окончания передачи данных, о чем на этом форуме много раз вели дискуссию. Но можете воспользоваться одним способом: у каждого переданного пакета данных с сервера есть "его время". Поэтому процесс ожидания можно построить на том, чтобы время последнего переданного пакета "догнало" время сервера.
 
Цитата
Рустем написал:
Уважаемые,

После перезапуска терминала, если автозапускается скрипт, то ф-я getNumberOf("futures_client_holding") выдет 0, хотя на эккаунте есть позиции.
Есть какой-то способ проверить, что все данные пользоватьеля подгузились ?
попробуйте так:
while  getInfoParam( "SERVERTIME")=="" do sleep(1000) end --ждемс
 
Цитата
Nikolay написал:
Всегда надо помнить, что Вы работаете с терминалом, получающим данные с сервера. Т.е. после установки соединения начинается передача данных. Вполне естественно, что сразу после установки соединения (Handshaking) данные еще не начали передаваться.
Да вроде не первый день/год/десятидетие програмы пишем и все это знаем.
А еще знаем, что протокол ассинхронной передачи данных по ненадежным каналам связи должен быть организован так, чтобы в каждый момент было понимание о консистентности данных.
Цитата
К сожалению терминал не предоставляет методов контроля окончания передачи данных, о чем на этом форуме много раз вели дискуссию. Но можете воспользоваться одним способом: у каждого переданного пакета данных с сервера есть "его время". Поэтому процесс ожидания можно построить на том, чтобы время последнего переданного пакета "догнало" время сервера.
Он не только не предоставляет методов контроля окончания передачи данных, но и возвращает неверную информацию.
Если у терминала нет информации о количестве инструментов, то он должен возвращать nil, а не 0.

> процесс ожидания можно построить на том, чтобы время последнего переданного пакета "догнало" время сервера.

Имеется в виду getInfoParam('LASTRECORDTIME') и getInfoParam('SERVERTIME') ?
Специально вел логи этих значений в случае когда возвращается getNumberOf("futures_client_limits") = 0
Эти времена совпадают, и не "замораживаются."
Код
2022-11-09 17:03:03.145425 INFO   : DEBUG: Connection time: 00:00:12,  Server time: 17:02:56, Last record time: 17:02:56
2022-11-09 17:03:03.192271 INFO   : DEBUG: Connection time: 00:00:12,  Server time: 17:02:56, Last record time: 17:02:56
...
2022-11-09 17:03:24.779087 INFO   : DEBUG: Connection time: 00:00:34,  Server time: 17:03:02, Last record time: 17:03:02
2022-11-09 17:03:24.794704 INFO   : DEBUG: Connection time: 00:00:34,  Server time: 17:03:03, Last record time: 17:03:03

Начало лога начинается с  "Connection time: 00:00:12", в силу того, что до этого было ожидание:
- события onConnect(),
- флага isConnected()
- состояния статуса разрешения торговли по инструменту:
  getParamEx(class, sec, "TRADINGSTATUS") -- состояние сессии
  getParamEx(class, sec, "STATUS") -- статус торговли


Сейчас я точно знаю, что в моей корзине есть инструмент и жду getNumberOf("futures_client_limits") ~= 0  
Но в общем случае это не верно.
И нет никакого способа програмно это узнать...

Единственное что приходит в голову, это положить в корзину какой нибудь инстумент "навечно", чтобы значть что ответ  getNumberOf("futures_client_limits") = 0 означает что пока нет информации по корзине.
 
Цитата
nikolz написал:

попробуйте так:
while  getInfoParam( "SERVERTIME")=="" do sleep(1000) end --ждемс
Пробовал.
Не помогает.
См. мой ответ выше.
 
Интересно, если CreateDataSource получает, к примеру, часовую свечу с временем текущего часа равной текущему часу сервера, можно ли считать что загрузка завершена?
 
Цитата
Kolossi написал:
Интересно, если CreateDataSource получает, к примеру, часовую свечу с временем текущего часа равной текущему часу сервера, можно ли считать что загрузка завершена?
Неизвестна последовательность загрузки данных.
Скорее всего она вообще не определена.
То, что загрузилась последняя свеча, не означает что данные по портфелю загрузились.
Если бы последовательность данных была предопределенной, то разработчики не хранили бы скромное молчание в ответ на вопрос "как узнать что все данные загрузились ?", а просто бы указали на какие данные надо смотреть, чтобы быть уверенным, что все остальные дынные уже загрузились.

А всего-то надо сделать кол-бек ф-ю onDataLoaded()
И никаких проблем с совместимостью в зад это не создаст :)
 
Цитата
Рустем написал:
Цитата
Kolossi написал:
Интересно, если CreateDataSource получает, к примеру, часовую свечу с временем текущего часа равной текущему часу сервера, можно ли считать что загрузка завершена?
Неизвестна последовательность загрузки данных.
Скорее всего она вообще не определена.
То, что загрузилась последняя свеча, не означает что данные по портфелю загрузились.
Если бы последовательность данных была предопределенной, то разработчики не хранили бы скромное молчание в ответ на вопрос "как узнать что все данные загрузились ?", а просто бы указали на какие данные надо смотреть, чтобы быть уверенным, что все остальные дынные уже загрузились.

А всего-то надо сделать кол-бек ф-ю onDataLoaded()
И никаких проблем с совместимостью в зад это не создаст :)
колбеки есть.
для futures_client_holding
это OnFuturesClientHolding(TABLE fut_pos)
 
Цитата
nikolz написал:

колбеки есть.
для futures_client_holding
это OnFuturesClientHolding(TABLE fut_pos)

И как они помогуют понять, что завершилась передача данных по портфелю ?

Если это событие не пришло - то как понять что это означает:
- в портфеле нет позиций
или
- оно еще просто не успело прийти ?
 
Цитата
Рустем написал:
Цитата
nikolz написал:

колбеки есть.
для futures_client_holding
это OnFuturesClientHolding(TABLE fut_pos)

И как они помогуют понять, что завершилась передача данных по портфелю ?

Если это событие не пришло - то как понять что это означает:
- в портфеле нет позиций
или
- оно еще просто не успело прийти ?
т е Вам разжевать?
----------------
Жуем.
При подключении,  сервер передает клиенту всю необходимую для него информацию.
-------------------------------
Если у Вас есть деньги или активы на фьючерсах, то вы получите по ним информацию.
------------------------
при приходе этой информации вызывается соответствующий колбек.
------------------------
Если колбеков не было то и в таблицах будет пусто.
---------------------
Т е не было колбеков - ждемс.
-----------------------
Пришли данные вызываются колбеки.
------------------
Для фьючерсов  это:
  • OnFuturesClientHolding - изменение позиции
  • OnFuturesLimitChange - изменение ограничений
При этом информация в них самая свежая,
свежее только в яме на бирже.
------------------

Позиции по клиентским счетам (фьючерсы)

ПараметрТипОписание
firmid STRING Идентификатор фирмы
trdaccid STRING Торговый счет
sec_code STRING Код фьючерсного контракта
type NUMBER  Тип лимита. Возможные значения:  
  • «0» – не определён;
  • «1» – основной счет;
  • «2» – клиентские и дополнительные счета;
  • «4» – все счета торг. членов
startbuy NUMBER Входящие длинные позиции
startsell NUMBER Входящие короткие позиции
startnet NUMBER Входящие чистые позиции
todaybuy NUMBER Текущие длинные позиции
todaysell NUMBER Текущие короткие позиции
totalnet NUMBER Текущие чистые позиции
openbuys NUMBER Активные на покупку
opensells NUMBER Активные на продажу
cbplused NUMBER Оценка текущих чистых позиций
cbplplanned NUMBER Плановые чистые позиции
varmargin NUMBER Вариационная маржа
avrposnprice NUMBER Эффективная цена позиций
positionvalue NUMBER Стоимость позиций
real_varmargin  NUMBER Реально начисленная в ходе клиринга вариационная маржа. Отображается с  точностью до 2 двух знаков. При этом, в поле «varmargin» транслируется  вариационная маржа, рассчитанная с учетом установленных границ изменения цены  
total_varmargin  NUMBER Суммарная вариационная маржа по итогам основного клиринга начисленная по  всем позициям. Отображается с точностью до 2 двух знаков
session_statusNUMBER Актуальный статус торговой сессии. Возможные значения:  
  • «0» – не определено;
  • «1» – основная сессия;
  • «2» – начался промклиринг;
  • «3» – завершился промклиринг;
  • «4» – начался основной клиринг;
  • «5» – основной клиринг: новая сессия назначена;
  • «6» – завершился основной клиринг;
  • «7» – завершилась вечерняя сессия
Ограничения по клиентским счетам:

ПараметрТипОписание
firmid STRING Идентификатор фирмы
trdaccid STRING Торговый счет
limit_type NUMBER Тип лимита. Возможные значения:  
  • «0» – «Денежные средства»;
  • «1» – «Залоговые денежные средства»;
  • «2» – «По совокупным средствам»;
  • «3» – «Клиринговые денежные средства»;
  • «4» – «Клиринговые залоговые денежные средства»;
  • «5» – «Лимит открытых позиций на спот-рынке»;
  • «6» – «Суммарные залоговые средства в иностранной валюте (в рублях)»;
  • «7» – «Залоговые средства в иностранной валюте»
liquidity_coef NUMBER Коэффициент ликвидности
cbp_prev_limit NUMBER Предыдущий лимит открытых позиций на спот-рынке»
cbplimit NUMBER Лимит открытых позиций
cbplused NUMBER Текущие чистые позиции
cbplplanned NUMBER Плановые чистые позиции
varmargin NUMBER Вариационная маржа
accruedint NUMBER Накопленный доход  
cbplused_for_orders NUMBER Текущие чистые позиции (под заявки)
cbplused_for_positions NUMBER Текущие чистые позиции (под открытые позиции)
options_premium NUMBER Премия по опционам
ts_comission NUMBER Биржевые сборы
kgo NUMBER Коэффициент клиентского гарантийного обеспечения
currcode STRING  Валюта, в которой транслируется ограничение
real_varmargin NUMBER Реально начисленная в ходе клиринга вариационная маржа. Отображается с  точностью до 2 двух знаков. При этом в поле «varmargin» транслируется  вариационная маржа, рассчитанная с учетом установленных границ изменения цены

 
Цитата
nikolz написал:

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

Спасибо что потратили время и постарались разжевать.
Но я не нашел в нем ответа на мой вопрос:

Подключился к серверу и жду колбеков.
Их все нет и нет.
Как понять что это означает:
- в портфеле нет позиций и ждать бесполезно
или
- оно еще просто не успело прийти и надо еще подождать ?


Ваше предложение
Цитата
getInfoParam( "SERVERTIME")=="" do sleep(1000) end --ждемс
не работает - я приводил выше логи, которые показывают что даже если значение не пустое, это не означает что QUIK уже все получил и выдает верные значения.

Предложение Nikolay
Цитата
процесс ожидания можно построить на том, чтобы время последнего переданного пакета "догнало" время сервера.
тоже не работает, т.к. значения полей совпадают и запаздывают одновременно.(тоже видно по приведенным логам)
Можно было бы сверять с локальным временем, но и тут засада.
Время серверов (QUIK же к разным серверам брокера может подключиться) отличается от локального. Бывает что на несколько секунд (это при том что на локальной машине стоит активная синхронизация).
Поэтому "запаздывание" можно отловить только с точностью до нескольких секунд.
Это означает что мы не можем распознать наличие небольшого запаздывания.
Т.е. опять же, получим от QUIK недостоверную инфу о состоянии портфеля.
 
Цитата
Рустем написал:
Цитата
nikolz написал:

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

Спасибо что потратили время и постарались разжевать.
Но я не нашел в нем ответа на мой вопрос:

Подключился к серверу и жду колбеков.
Их все нет и нет.
Как понять что это означает:
- в портфеле нет позиций и ждать бесполезно
или
- оно еще просто не успело прийти и надо еще подождать ?


Ваше предложение
Цитата
getInfoParam( "SERVERTIME")=="" do sleep(1000) end --ждемс
не работает - я приводил выше логи, которые показывают что даже если значение не пустое, это не означает что QUIK уже все получил и выдает верные значения.

Предложение  Nikolay  
Цитата
процесс ожидания можно построить на том, чтобы время последнего переданного пакета "догнало" время сервера.
тоже не работает, т.к. значения полей совпадают и запаздывают одновременно.(тоже видно по приведенным логам)
Можно было бы сверять с локальным временем, но и тут засада.
Время серверов (QUIK же к разным серверам брокера может подключиться) отличается от локального. Бывает что на несколько секунд (это при том что на локальной машине стоит активная синхронизация).
Поэтому "запаздывание" можно отловить только с точностью до нескольких секунд.
Это означает что мы не можем распознать наличие небольшого запаздывания.
Т.е. опять же, получим от QUIK недостоверную инфу о состоянии портфеля.
Вы невнимательно прочитали.
Если у брокера есть ваши деньги либо активы колбеки будут при загрузке и обновлении экрана.
Ну а если ничего нет, то на экране тоже все пусто.
Что делать?
Звонить брокеру и выяснять почему Вас кинули.
 
Цитата
nikolz написал:

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

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

Программа запустилась при старте QUIK.
Да, пришла пачка колбеков, но в ней нет колбека по конкретной позиции, скажем "CNZ2", которой программа активно торгует.
Как программа может понять что это означает:
- в портфеле нет позиций "CNZ2" и ждать бесполезно
или
-  колбек по данной позиции еще просто не успел прийти и надо еще подождать ?
 
Рустем, Мой ответ: ждать бесполезно. Я вообще отказался от программного контроля состояния портфеля со стороны брокера. Во-первых, потому, что утилита эта глючит со страшной силой. Во-вторых, потому, что она частенько врёт: мой скрипт самостоятельно ведёт учёт бумаг и денег, и при рассогласовании портфелей (а это довольно редкая ситуация, раз-другой в неделю по всем тикерам, а их у меня в портфеле болтается в районе полусотни) ошибки в данных бывают не только у меня (скажем, не пришло прерывание OnTrade или где-то задержалось на полчасика), но и у брокера (не успел обновить данные, и через некоторое время рассогласовании пропадает даже при полном отсутствии сделок по этой бумаге с моей стороны). Или вот убивающий пример на прошлой неделе: купил у меня скрипт фьюч Норникеля. Гляжу - и в таблице заявок, и в таблице сделок, и у меня в логе куплен один лот, а в состоянии портфеля их показано два. НУ НЕ ПОКУПАЛ Я ВТОРОЙ ЛОТ ПО ЭТОЙ БУМАГЕ! Через какое-то время скрипт этот фьюч продал, гляжу - в портфеле всё равно +1. Наконец, мне это надоело (прошло часов пять, не меньше), и я руками продал второй, в портфеле стало пусто. На следующий день запускаю скрипт, а у меня там... правильно, -1! Пришлось снова купить руками. И это важнейшие данные, содержимое портфеля! А уж связываться с этим говном ради каких-то сраных свечей... да в миллион раз дешевле, проще, надёжнее, быстрее посчитать их самому. Слава богу, я с самого начала поступил именно так.
 
Цитата
Владимир написал:
Рустем, Мой ответ: ждать бесполезно. Я вообще отказался от программного контроля состояния портфеля со стороны брокера. Во-первых, потому, что утилита эта глючит со страшной силой. Во-вторых, потому, что она частенько врёт: мой скрипт самостоятельно ведёт учёт бумаг и денег, и при рассогласовании портфелей (а это довольно редкая ситуация, раз-другой в неделю по всем тикерам, а их у меня в портфеле болтается в районе полусотни) ошибки в данных бывают не только у меня (скажем, не пришло прерывание OnTrade или где-то задержалось на полчасика), но и у брокера (не успел обновить данные, и через некоторое время рассогласовании пропадает даже при полном отсутствии сделок по этой бумаге с моей стороны). Или вот убивающий пример на прошлой неделе: купил у меня скрипт фьюч Норникеля. Гляжу - и в таблице заявок, и в таблице сделок, и у меня в логе куплен один лот, а в состоянии портфеля их показано два. НУ НЕ ПОКУПАЛ Я ВТОРОЙ ЛОТ ПО ЭТОЙ БУМАГЕ! Через какое-то время скрипт этот фьюч продал, гляжу - в портфеле всё равно +1. Наконец, мне это надоело (прошло часов пять, не меньше), и я руками продал второй, в портфеле стало пусто. На следующий день запускаю скрипт, а у меня там... правильно, -1! Пришлось снова купить руками. И это важнейшие данные, содержимое портфеля! А уж связываться с этим говном ради каких-то сраных свечей... да в миллион раз дешевле, проще, надёжнее, быстрее посчитать их самому. Слава богу, я с самого начала поступил именно так.
Владимир, спасибо за разъяснения.
В моем случае расхождения портфеля неприемлимы.
Торговля частая, если будет рассогласование, робот наторгует неправильно и в ненужную сторону :)
Пойду изучать альтернативные решения.
 
Рустем, Так и в моём случае расхождения портфеля неприемлемы.  :smile: И торговля тоже не особо редкая - почти всегда более сотни сделок в сутки, бывает и по 5-6-7. Да, рассогласование - вещь весьма неприятная, но довольно редкая. А вот "альтернативные решения" как раз и дают во много раз больше ошибок - там ведь действительно бывают задержки в десятки минут и даже более. Для активной торговли это фактически смертный приговор.
 
Цитата
Владимир написал:
Рустем, Так и в моём случае расхождения портфеля неприемлемы.  :: И торговля тоже не особо редкая - почти всегда более сотни сделок в сутки, бывает и по 5-6-7. Да, рассогласование - вещь весьма неприятная, но довольно редкая. А вот "альтернативные решения" как раз и дают во много раз больше ошибок - там ведь действительно бывают задержки в десятки минут и даже более. Для активной торговли это фактически смертный приговор.
У меня QUIK кроме того что раз в 5-10 минут теряет соединение и потом по пол-минуты его восстанавливает (брокер Финам), еще и подвисает примерно раз в 2 дня.
Судя по чатам, я не один с такими проблемами.
Если на нем оставаться, надо еще внешний watchdog писать, чтобы его перезапускал.

Под альтернативными решениями я имел в виду те, что расчитанны на высокоскоростную торговлю.
Смотрю, изучааю. Пока не видно сюрпризов.
Но по хорошему понятно станет недели через 2.
Пока приходится писать парсеры на всякие дурацкие XML-и :)
 
Цитата
Рустем написал:
Цитата
nikolz написал:

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

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

Программа запустилась при старте QUIK.
Да, пришла пачка колбеков, но в ней нет колбека по конкретной позиции, скажем "CNZ2", которой программа активно торгует.
Как программа может понять что это означает:
- в портфеле нет позиций "CNZ2" и  ждать бесполезно
или
-  колбек по данной позиции еще просто не успел прийти и  надо еще подождать  ?
фантазия не имеет границ.
Вы придумываете как спать на потолке.
данные приходят блоками, а это не одно число а много.
Я Вам уже сказал что данные приходят самые свежие.
Если Вы уже купили что-то то это уже есть в таблице
а таблица всегда придет вся
никто не станет вам посылать по кусочкам.
-------------------
Не надо придумывать то, что не бывает никогда.
================
По Вашим рассказам могу сделать вывод, что у вас либо плохой канал связи либо перегружен процессор.
Ищите решение Ваших проблем в этом направлении а не придумывайте сказки.
 
Рустем, Ну, если "QUIK раз в 5-10 минут теряет соединение", то не только о скоростной торговле, но и вообще о торговле лучше забыть до появления нормального канала связи. То, что он ещё и "подвисает примерно раз в 2 дня", скорее всего, вызвано ошибками в Вашем коде. Автоматический перезапуск без выяснения причин предыдущего вылета лично я считаю глупостью. Наконец, QUIK в принципе непригоден для высокоскоростной торговли (да и слава богу, ибо такая торговля есть полное дерьмо) - здесь время измеряется секундами. Конечно, народ на этом форуме периодически впадает в маразм и занимается очередной ловлей микросекунд, но всё это чушь собачья.
 
Цитата
Владимир написал:
Рустем, Ну, если "QUIK раз в 5-10 минут теряет соединение", то не только о скоростной торговле, но и вообще о торговле лучше забыть до появления нормального канала связи. То, что он ещё и "подвисает примерно раз в 2 дня", скорее всего, вызвано ошибками в Вашем коде. Автоматический перезапуск без выяснения причин предыдущего вылета лично я считаю глупостью. Наконец, QUIK  в принципе  непригоден для высокоскоростной торговли (да и слава богу, ибо такая торговля есть полное дерьмо) - здесь время измеряется секундами. Конечно, народ на этом форуме периодически впадает в маразм и занимается очередной ловлей микросекунд, но всё это чушь собачья.
QUIK без всякого моего кода раз в 5-10 минут теряет соединение.
Канал хороший - 300 mbps, ping до сервера <5ms.
Отдельный выделенный комп под QUIK.
Сегодня конечно проверю из другой точки, чтобы быть на 100% увекренным что дело не в канале.
Но на форумах есть такие же жалобы.

Конечно неправильно делать автоматический перезапуск без выяснения причин, но ответа на вопрос - почему QUIK не восстановил соединение мы никогда не получим...
Это скорее вынужденное, отчаянное решение.
Не хочется к нему прибегать, потому и смотрю в сторону других решений, кроме связки QUIK-LUA.

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

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

Вы так много в этой ветке понаписали, копистали всякие описания, но так и не ответили на мой вопрос:

Программа запустилась при старте QUIK.
Да, пришла пачка колбеков, но в ней нет колбека по конкретной позиции, скажем "CNZ2", которой программа активно торгует.
Как программа может понять что это означает:
- в портфеле нет позиций "CNZ2" и ждать бесполезно
или
-  колбек по данной позиции еще просто не успел прийти и надо еще подождать ?
 
Рустем, Я говорил об ошибках в коде не в смысле потери соединения, а в том, что "QUIK подвисает примерно раз в 2 дня". А уж то, что он при потере связи самостоятельно восстанавливает соединение, я видел тыщу раз - хотя бы по его диагностике "соединение установлено" или "соединение установить не удалось". Любой браузер делает примерно то же самое.

Вот уж что-что, а "наблюдение за процессом глазами" есть просто дискредитация самой идеи автоматической торговли. В моём скрипте есть даже "спящий режим", когда скрипт вообще ничего не показывает "для глаз", а только потихоньку тикает таймер, чтобы показать, что скрипт работает, а не висит. Что же касается "достоверной инфы про позицию портфеля", то я поступаю так: а) скрипт сам ведёт учёт содержимого портфеля и кошелька б) после подачи заявки в QUIK данный тикер блокируется до её исполнения или отмены, а потому в) вероятность рассогласования портфелей ничтожна и составляет пару-тройку позиций в неделю (я сверяю портфели "глазами" примерно с такой периодичностью), хотя чаще всего и здесь портфели оказываются идентичными.
 
Цитата
Владимир написал:
Рустем , Я говорил об ошибках в коде не в смысле потери соединения, а в том, что "QUIK подвисает примерно раз в 2 дня". А уж то, что он при потере связи самостоятельно восстанавливает соединение, я видел тыщу раз - хотя бы по его диагностике "соединение установлено" или "соединение установить не удалось". Любой браузер делает примерно то же самое.
В API браузера есть возможность повторить запрос.
А тут программе приходит событие onDisconnected() и все.. Ничего сделать нельзя.
Можно только надеяться, что QUIK восстановит соединениеи и придет OnConnected()
Но QUIK не всегда восстанавливает соединение.
Никакого програмного способа переконнектиться к серверу, API не предоставляет.
Что делаете вы в таком случае ?
Цитата
Вот уж что-что, а "наблюдение за процессом глазами" есть просто дискредитация самой идеи автоматической торговли. В моём скрипте есть даже "спящий режим", когда скрипт вообще ничего не показывает "для глаз", а только потихоньку тикает таймер, чтобы показать, что скрипт работает, а не висит.
100%. На нормальном API от IB  у меня робот работает с 2008 года, не требуя никакого вмешательства.

Цитата
Вот уж что-что, а "наблюдение за процессом глазами" есть просто дискредитация самой идеи автоматической торговли. В моём скрипте есть даже "спящий режим", когда скрипт вообще ничего не показывает "для глаз", а только потихоньку тикает таймер, чтобы показать, что скрипт работает, а не висит.
У меня тоже есть и отслеживаются состояния размещения заявки.
И я их тестирую на обрывах соединения. Если бы QUIK не рвал связь раз в 10 мин, я бы сам ее рвал, чтобы отладить код для обработки таких событий.
При переходе от одного статуса к другому (например, с "послал на сервер" к "получил подтверждение от сервера"), нужен таймаут. Иначе программа подвиснет в ожидании того, что QUIK ей может никогда не прислать. Выход по таймауту - это повод оставовить торговлю до разбирательства.
Вот таких "выходов" с QUIK очень много.

Но даже не в этом вопрос, а в том, как проинициализировать свои данные при запуске робота.

Например, при последнем подключении я имел позицию в 1 лот и разместил лимитную заявку на ее продажу.
Статус заявки был - "получил подтверждение от сервера".

Далее по какой-то причине пришлосm перезапустить QUIK.

После подключения к серверу (onConnected), ф-я getNumberOf("futures_client_holding") выдет 0.
Ладно, знаю что она врет и жду пока getInfoParam('LASTRECORDTIME') не "догонит" локальное время компьютера.
Но там надо задавать различие в несколько секунд.
Если дельту времени задать равным 0 - то из-за разницы между серверным временем и локальным можно подвиснуть навсегда.
(наблюдал различие в несколько секунд между серверным временем и локальным. Локальная машина имеет активную синхронизаци с службой времени).
А если поставить несколько секунд, то опять проблема - getNumberOf("futures_client_holding") выдет 0 еще некоторое время,
которое может быть больше этих нескольких секунд, т.к. нет гарантии что именно в этот момент сервер не начал подтормаживать.
Поставить задержку от балды - это гарантированный способ получить черных лебедей Насима Талеба.

На какое событие в такой ситуации вы смотрите, чтобы быть уверенным, что у вас актуальная инфа о позиции в портфеле после запуска скрипта ?

Как я писал выше, очень бы помогло событие onDataLoaded() которое бы приходило после загрузки всех начальных данных.
Ну и getNumberOf("futures_client_holding") должен выдавать nil а не 0, пока все данные не погрузились.
 
Рустем, Да мне ваще насрать на onDisconnected. Проблемы со связью - это проблемы Квика, а не мои. Мой скрипт общается только с Квиком - он для него и брокер, и биржа. И разговариваю я с ним только на языке sendTransaction-OnTrade-getParamEx.

А какие проблемы "проинициализировать свои данные при запуске робота"? Они же свои! Мой скрипт вообще не использует ни onConnected, ни getInfoParam, ни локальное время компьютера, ни серверное время, ни... Вот getNumberOf - использую. Один раз на весь скрипт и раз десять в сутки во время его работы, и только для таблицы заявок (когда хочу снять несработавшую заявку). И у меня всегда актуальная инфа о позиции в портфеле после запуска скрипта! :smile:  
 
Цитата
Владимир написал:
И разговариваю я с ним только на языке sendTransaction-OnTrade-getParamEx.
У меня для принятия решения о торговле, надо еще знать состояние портфеля - есть ли в нем уже позиция и какого она размера ? :)
С момента последнего запуска могло пройти время, и состояние портфеля могло измениться  - могли сработать лимитные заявки.
Можно конечно при запуске отлавливать бывшие OnTrade(), но мы всеравно упираемся в проблему описанную мной выше - полученные данные окончательные, или это еще не все onTrade() прилетели.

Цитата
Владимир написал:
А какие проблемы "проинициализировать свои данные при запуске робота"? Они же свои!
Так и хочется избежать что-то делать ручками :)
Хочется программно проинициализировать.
 
Рустем, Ну дык я всегда знаю, что у меня, где, сколько и почём - скрипт же САМ ведёт портфель. И все до единой заявки лимитные. А вот отлавливать бывшие OnTrade ОЧЕНЬ вредно. Я когда-то был в полном ахуе, когда запустил скрипт в субботу, а мне с полсотни пятничных сделок прилетело. Только по идентификатору транзакции, который, слава богу, я формирую сам.

О, господи! Есно, программно проинициализировать. Прямо в мейне, который у меня и начинается именно с инициализации.
 
Цитата
Рустем написал:
После перезапуска терминала, если автозапускается скрипт, то ф-я getNumberOf("futures_client_holding") выдет 0, хотя на эккаунте есть позиции.Есть какой-то способ проверить, что все данные пользоватьеля подгузились ?
вообще-то я для Вас написал и скопировал из документации.
------------------------
Я ответил на ваш вопрос, который вы задали в начале темы.
--------------
После перезапуска терминала, если автозапускается скрипт, то ф-я getNumberOf("futures_client_holding") выдет 0, хотя на эккаунте есть позиции.
Есть какой-то способ проверить, что все данные пользоватьеля подгузились ?
------------------
Теперь Вы изменили свой вопрос и с претензиями что Вам на него не ответили.
--------------------
прикольно, что вам помогают, а вы с претензиями что  не врубаетесь и виновато зеркало.
 
если у Вас теперь нет позиции, то на каком  эккаунте есть позиции?
 
если Вы не догнали, то вот копия моего ответа на ваш вопрос темы:
---------------
Если у брокера есть ваши деньги либо активы колбеки будут при загрузке и обновлении экрана.
Ну а если ничего нет, то на экране тоже все пусто.
-------------------------
Я Вам уже сказал что данные приходят самые свежие.
Если Вы уже купили что-то то это уже есть в таблице
а таблица всегда придет вся
никто не станет вам посылать по кусочкам.
 
Цитата
nikolz написал:
прикольно, что вам помогают, а вы с претензиями что  не врубаетесь и виновато зеркало.
Прошу прощения за неуместный выпад с моей стороны.

Я менял вопрос пытаясь его уточнить, т.к. не получал ответа на свой вопрос.
Цитата
Если у брокера есть ваши деньги либо активы колбеки будут при загрузке и обновлении экрана.
Ну а если ничего нет, то на экране тоже все пусто.
Не совсем понял про "экран".
Программа на LUA ничего не знает про экран, а пытается понять ситуацию посредством API.

Цитата
Я Вам уже сказал что данные приходят самые свежие.
Если Вы уже купили что-то то это уже есть в таблице
а таблица всегда придет вся
никто не станет вам посылать по кусочкам.
Да, я видел этот ваш ответ.
Но они не отвечанет на мой вопрос о том, как понять что все начальные данные при коннекте (и его восстановлении) полученны.
Судя по всему, вы сначала запускаете QUIK  и после того как он получил все данные - вы сами ручками запускаете скрипт.
Т.е. вы визуально убедились что данные подгрузились.

Мой вопрос касается ситуации, когда человек не участвует в этом процессе.

Например, запустили QUIK и он сам автоматом запустил скрипт, т.к. он был запущен при последнем выходе из QUIK.
Или QUIK потерял соединения с сервером и переустановил его.
В обоих случаях в QUIK приходят все данные заново. Это занимаети до пол-минуты и больше.

Вопрос:
Как при этом программа может узнать, что пришли все колбеки по эккаунту и все данные адекватные ?
(например API предполагает, что отсутствие колбека по инструменту в портфеле надо трактовать как отсутствие позиции по нему.)
Что является для программы триггером что можно начать анализировать данные и торговать ?
 
Цитата
Рустем написал:
Что является для программы триггером что можно начать анализировать данные и торговать ?
Нет четкого триггера.
Есть только определенная вероятность того, что данные получены.

Я, например, опрашиваю таблицу, пока ее размер не станет больше нуля, но не дольше заданного времени.
Если время прошло, а таблица все-еще пустая, то считаем что позиций нет.
Код
function FuturesClientHolding() -- Первоначальное заполнение позиций по срочному рынку
  params["TOTALNET"]  = 0 -- Текушие позиции
  params["OPENSELLS"] = 0 -- Активная продажа
  params["OPENBUYS"]  = 0 -- Активная покупка
  local n=0
  while (runStatus==3)and(n<try_count)and(getNumberOf('FUTURES_CLIENT_HOLDING')==0) do -- Ждем заполнения таблицы "Позиции по клиентским счетам (фьючерсы)"
    if(n==0)then message("["..account.."] Ждем... Позиции по клиентским счетам") end
    sleep(loop_timeout) n=n+1
  end
  if(getNumberOf('FUTURES_CLIENT_HOLDING')>0)then -- Таблица "Позиции по клиентским счетам (фьючерсы)" заполнена
    for i=0,getNumberOf('FUTURES_CLIENT_HOLDING')-1 do
      local tbl=getItem('FUTURES_CLIENT_HOLDING', i)
      if(type(tbl)=="table")and(tbl['firmid']==firmid)and(tbl['trdaccid']==account)and(tbl['sec_code']==sec_code)and(tbl['type']==0)then
        params["TOTALNET"]  = tbl['totalnet']
        params["OPENSELLS"] = tbl['opensells']
        params["OPENBUYS"]  = tbl['openbuys']
      end
    end
  end
  message("["..account.."] Позиции: Текущие="..params["TOTALNET"].." Покупка="..params["OPENBUYS"].." Продажа="..params["OPENSELLS"])
end

Метод весьма далек от идеала, но лучшего не нашел.

PS: В свое время рассматривал еще один вариант.
Перед проверками поставить один лот на покупку по минимально возможной цене (чтобы точно не сработала заявка), и тут же снять его.
После чего ждать пока в таблице позиций не появится нужный инструмент, а он обязан будет появиться.
 
Цитата
BlaZed написал:
Нет четкого триггера.
Есть только определенная вероятность того, что данные получены.

Я, например, опрашиваю таблицу, пока ее размер не станет больше нуля, но не дольше заданного времени.
Если время прошло, а таблица все-еще пустая, то считаем что позиций нет.

Метод весьма далек от идеала, но лучшего не нашел.

PS: В свое время рассматривал еще один вариант.
Перед проверками поставить один лот на покупку по минимально возможной цене (чтобы точно не сработала заявка), и тут же снять его.
После чего ждать пока в таблице позиций не появится нужный инструмент, а он обязан будет появиться.

Спасибо за подробный и конструктивый ответ.
Я видимо положу один контракт в портфель "навечно", чтобы наверняка знать, что если ответ getNumberOf('FUTURES_CLIENT_HOLDING') = 0, значит еще не подгрузились данные по портфелю.
 
Рустем, Здесь ни в чём нельзя быть уверенным наверняка, и никакие костыли от этого не спасут. Я уже приводил пример, что данные портфеля ЧАСАМИ могут лежать неправильными. И причин этому рассогласованию может быть великое множество. В Вашем случае, например, нельзя положить один контракт в портфель "навечно", ибо у фьючерсов нет ничего "вечного", а правильный ответ по контролируемому параметру вовсе не гарантирует, что уже подгрузились данные по портфелю - может, подгрузились только эти, которые проверяются, а остальных ещё ждать и ждать. У меня и вообще был восхитительный случай, я о нём писал: специально написанная для этой цели библиотечная функция (getDepoEx) в какой-то момент просто перестала работать. А техподдержка просто и нагло забанила ту ветку. Короче: спасение утопающих дело рук самих утопающих. Так что следует как можно меньше обращаться к любому системному софту, только в случае КРАЙНЕЙ необходимости.
 
Цитата
Владимир написал:
Здесь ни в чём нельзя быть уверенным наверняка, и никакие костыли от этого не спасут.
Ну зачем так категорично-то?
Спору нет, в Квике проблем хватает, но с помощью "костылей" вполне можно добиться стабильной работы.
Я так уже и не помню когда в свои скрипты последний раз серьезные правки вносил, только мелочи всякие причесываю, да стратегию немного корректирую под текущие условия.
Торгуют роботы, деньгу приносят и никаких проблем не наблюдается.

Цитата
Владимир написал:
Я уже приводил пример, что данные портфеля ЧАСАМИ могут лежать неправильными.
Я бы после подобного брокера сменил.


Зачем постоянно на квик ругаться?
Вы же тут сами постоянно пишете, что ваш робот 100500 инструментов одновременно торгует и зарабатывает.
Квик это ж всего лишь инструмент, со своими, конечно, косяками, но работать на нем вполне можно.
 
BlaZed, Ну-ну, шайбу! КАКИЕ ИМЕННО "костыли" позволяют добиться стабильной работы? Я тоже не помню когда в свои скрипты последний раз серьёзные правки вносил, но именно потому, что я давно вылизал всю "техническую" часть и минимизировал общение с Квиком до абсолютно необходимого минимума. Да и к алгоритмам давно претензий нет - по крайней мере, при торговле акциями: меня ВААПЩЕ перестало интересовать, что он там продаёт и что покупает. Вот с фьючерсами (относительно новый для меня рынок) кое-какие шероховатости алгоритмов просматриваются, но и там скрипт торгует сам с утра до вечера, а я только логи просматриваю и кумекаю, нельзя ли что улучшить.

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

Да, "мой робот 100500 инструментов одновременно торгует и зарабатывает". Не 100500, конечно, около сотни, из которых в районе полусотни имеются в портфеле, но когда можно было торговать долларовыми и евровыми акциями, рынок был куда интереснее и полторы-две тысячи тикеров он спокойно отслеживал. И сам я тыщу раз говорил, что "Квик это всего лишь инструмент, но работать на нём можно". И что Луа есть полное дерьмо, но писать нужно именно на нём, тоже говорил.
 
Цитата
Владимир написал:
КАКИЕ ИМЕННО "костыли" позволяют добиться стабильной работы?
Шутить изволите?
Да у меня значительную часть кода занимают костыли, которыми проверяю как факт доставки, так и корректность получаемых данных и даже передаваемых данных.
Ну как пример
Код
    local param=getParamEx2(class_code,sec_code,"LAST")
    if(param.result=="1")and(param.param_image~="")and(param.param_type=="1")and(tonumber(param.param_value)~=0)then params["LAST"]=tonumber(param.param_value) end
и вот без подобных проверок на каждый чих замучаешься потом ошибки ловить, и будешь кричать на весь форум что квик говно.

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

Цитата
Владимир написал:
А вот Квик я как раз поменял, с девятой версии снова на восьмую.  Десятку даже не пытался ставить, но по здешним отзывам она хуже даже  девятки.
Всегда обновлялся практически сразу, как только арка обнову выкатывала.
По-крайней мере всё что мне надо, работает начиная с седьмой и по десятую.
Цитата
Владимир написал:
И что Луа есть полное дерьмо, но писать нужно именно на нём, тоже говорил.
Предпочтительно писать на луа, это да.
Но далеко не все можно реализовать на луа.
Я не про непосредственно торговлю, а про автоматизацию торговли, чтобы не сидеть перед монитором постоянно.
 
BlaZed, Нет, совершенно серьёзно спрашиваю. У меня тоже четверть, если не треть кода посвящена компенсации глюков системного софта, но это всего лишь объём кода, а не алгоритмические навороты. Концептуально их совсем немного, и практически все их я не раз перечислял. Если их соблюдать, то и кода они требуют не так уж много. У меня вот Ваш пример выполняется так:
a[i][2][0]=tonumber(getParamEx(a[i][0][0],a[i][0][1],"LAST").param_value);
И НИКАКИХ дополнительных проверок не делается - алгоритм торговли достаточно устойчив к тому, что бы там ни пришло. Единственное - в некоторых местах эта падла иногда возвращает nil - алгоритм бы и с этим справился, но при всяких там сравнениях скрипт начинает вылетать, а это совсем уж свинство, так что приходится извращаться вроде:
if n==nil or n.trans_id==nil or n.order_num==nil or n.trade_num==nil or n.sec_code==nil or n.flags==nil or n.qty==nil or n.price==nil then ...
Но это ТОЛЬКО при обращении к библиотечным функциям, которые у меня минимизированы до безобразия - в основном, именно по этой причине. По той же причине и обилию версий я с самого начала постановил: "никаких библиотек - только голый Луа". Потом "никаких потоков - всё делаем в потоке мейна". Потом... я даже дважды пытался создать общими усилиями библиотеку технических утилит для торговли, где все эти нюансы были бы учтены, но поднимавшийся за этим поросячий визг местных "гуру" напрочь отбил это желание. А Квик, бесспорно, говно. Как и Луа. :smile:

Нет, это не Квика "основная беда в том, что нет гарантии что  ты получишь данные, а если получил их, то это еще не значит, что они  будут корректными" - это любой многопроцессорный комплекс с ними сталкивается. В любой системе "клиент-сервер" нет гарантии ни в том, что запрос дойдёт по назначению, ни что ответ прибудет, а если прибудет, то без ошибок. Вот за динамическую типизацию действительно яйца бы пообрывал. Тем не менее, согласен: "скрипт как-то стабильно работает". Сегодня после семи, правда, не было ни одной сделки ни у одного из брокеров, но оба Квика нормально работают. Думаю, это просто конец пятницы тому причиной.

Да, я тоже "всегда обновлялся практически сразу", как только брокер рекомендовал обновить - мне тоже всегда было плевать и на версию Квика и версию языка. Но сначала у моей сестры обновлённый Квик напрочь отказался работать, причём она торгует вручную, без скриптов вообще, потом у меня "девятка" стала какие-то кренделя выписывать, и я просто отмотал взад на восемь, не разбираясь во всём этом дерьме. Пока работает...

А что, собссно, нельзя реализовать на луа? Естественно, я тоже про автоматизацию торговли - сроду не сидел перед монитором постоянно. Да я и торговать-то не умею. :smile:  
 
Цитата
Владимир написал:
А что, собссно, нельзя реализовать на луа?
Например автологин и прохождение двухфакторной авторизации на "чистом" луа без доп. библиотек и сторонних утилит даже на представляю как сделать.
А это весьма нужный функционал для автоматизации на мой взгляд.
 
BlaZed, Какое отношение скрипт имеет к авторизации? Это дело Квика, но никак не скрипта - автоматическая авторизация не может быть реализована на любом языке. По крайней мере, НЕ ДОЛЖНА - на то она и авторизация. А скрипту она совершенно по барабану (моему, во всяком случае). Если авторизация не прошла, значит, данные перестали поступать, скрипт работает, но не торгует. Для него это точно такая же ситуация, когда торговая сессия закончилась. А когда данные пошли, скрипт встрепенулся и начал торговать. Авторизация - В ПРИНЦИПЕ не его собачье дело.
 
Цитата
BlaZed написал:
Цитата
Владимир написал:
А что, собссно, нельзя реализовать на луа?
Например автологин и прохождение двухфакторной авторизации на "чистом" луа без доп. библиотек и сторонних утилит даже на представляю как сделать.
А это весьма нужный функционал для автоматизации на мой взгляд.
А чм вы автологинитесь ?
При помощи w32.dll ?
 
Цитата
Рустем написал:
А чм вы автологинитесь ?
При помощи w32.dll ?
Скриптом, используя функционал библиотеки w32.dll
Тут на форуме есть пользователь swerg, его сборкой библиотеки пользуюсь, отличная вещь.
 
Цитата
Владимир написал:
Какое отношение скрипт имеет к авторизации?
Это дело Квика, но никак не скрипта - автоматическая авторизация не может быть реализована на любом языке.
Ну если квик не умеет автоматическую авторизацию, то приходится реализовывать это самостоятельно.
Цитата
Владимир написал:
А скрипту она совершенно по барабану (моему, во всяком случае).
Так моему тоже )))

Есть торговый скрипт, а есть скрипт для авторизации.
И это совершенно разные скрипты с разным функционалом.
 
BlaZed, А зачем? У меня сейчас торгующий комп вообще выключен, завтра утром включу. У Бориса, насколько я знаю, собственный сервер, и у него скрипт может вообще не выключаться долгое время, но, во-первых, это довольно редко встречается и, во-вторых, зачем автоматизировать потенциально аварийную ситуацию? Не говоря уже про двухфакторную аутентификацию - там ведь и обратную связь нужно иметь, причём по независимому каналу.
 
Цитата
Владимир написал:
А зачем?
Как вам ответить, ленивый я, и люблю максимально автоматизировать все что можно.
Чтобы не было необходимости постоянного ручного контроля.
Не хочу я каждое утро включать комп как вы, у меня он всегда включен.
Бывают же проблемы у провайдера, например порвалась интернет сессия потом восстановилась.
В моем случае скрипт просто заново подключится к брокеру.
А у вас? Руками подключаться, пропустив время торговли, когда возможно были удачные моменты для входа?

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

Да даже банально свет выключили, а ИБП не выдержала долгого отключения. Когда дадут свет, все заведется и будет работать.

Или на месяц свалить на отдых и быть уверенным что торговля идет как и задумано.

По мне так сплошные плюсы

Цитата
Владимир написал:
зачем автоматизировать потенциально аварийную ситуацию?
А где тут вы увидели "потенциально аварийную ситуацию"?
Пару лет, если не больше работает так, аварий не наблюдал ни разу.

Цитата
Владимир написал:
Не говоря уже про двухфакторную аутентификацию - там ведь и обратную связь нужно иметь, причём по независимому каналу.
Вот тут есть ваша правда, полностью независимого канала я этим лишился, комп имеет доступ к СМСкам, но это осознанные потери.
Скажем так, автоматическая двухфакторная авторизация лучше чем полное отсутствие двухфакторной авторизации, но хуже чем через независимый канал.
 
BlaZed, Я тоже ленивый, но я люблю максимально автоматизировать все что нужно. Да, бывают проблемы у провайдера, но по мне лучше торговать при полной уверенности, что все проблемы решены, а данные не потеряны. Да, лучше пропустить время торговли - велика беда: она и так прерывается на перерывы в сессиях, выходные и праздники. И у моего скрипта нет проблем с удачными моментами для входа. Да и для выхода, пожалуй, тоже. И на месяц свалить на отдых и быть уверенным что скрипт не оставит тебя без штанов из-за каких-то страшных сбоев. Например, было у меня пару раз: включаю комп, а у меня там акций нет, денег нет, куда всё подевалось - непонятно. Потом проходит время - всё восстановилось, можно торговать. В конце концов, можно и удалённо запустить всё, что нужно.

У меня у одного брокера двухфакторная авторизация, а у другого по ключу. Если уж автоматизировать, то лучше без двухфакторной. При моей технике торговли, конечно, почти по барабану, но автоматизировать это дело - нафиг, нафиг. :smile:  
Страницы: 1
Читают тему (гостей: 1)
Наверх