| Mikhail Sukhov 
 
   
 
						
						
					 | Дата: 27.12.2010 
 
 
	
			aspirantПредлагаю взять пункт 10: программная обертка конфигов роутера.  Я так понимаю, что править нужно будет следующие конфиги:client_router.ini
 P2ClientGate.ini
 Остальные, судя по всему, к настройке роутера отношения не имеют.
 Насчет разделения труда. Некоторые задачи друг от друга зависят. Например, 10-ая зависит от 1 и 2 (общий механизм правки ИНИ файлов). Так что мне все больше видеться, что разделение будет горизонтальным, а не вертикальным. Как вариант, можно совместно взять и быстро реализовать задачи номер 1 и 2 (там так же будет список задач, только уже свой). И уже дальше разделится, имея общие классы и типы данных. Я так понимаю, высказался только nlrf со своими задачами. Еще дополнять будем?
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| anebotov 
 
   
 
						
						
					 | Дата: 27.12.2010 
 
 
	
			Mikhail SukhovХм, я как-то упустил момент, что поток может содержать несколько таблиц. Кажется, я не правильно понял модель потоков. Для чего это сделано? Не знаю как в плазе, но в fix/fast разные потоки могут идти на разные сервера (в разных сегментах инета), т.е. повышается надежность. Ну и управлять потоком легче чем всем раздельно.Как насчет лицензии? Если что-то типа Apache, то я участвую. | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| skuvv 
 
   
 
						
						
					 | Дата: 27.12.2010 
						
							|  |  |  |   |  
 
 
	
			nlrfПопытаюсь одолеть стаканы (п.4) после новогодней проруби. Или - ещё лучше - совместно с кем-либо 3 и 4.У меня 4 вопроса:
 1) получение не(редко)меняющихся данных (базовое ГО, зафиксированный в 16-30 курс $, размер комиссии биржи, расчётная цена, лимит изменения цены, последний торговый день,  и т.д.) уже сделано или отнесено к потокам (п.3)?
 2) будет ли в потоках ежесекундный курс $, теоретическая цена, индекс волатильности и т.п. дополнительные данные?
 3) стоит ли (для будущих брокеров - нынешние уже так или иначе подключены к Плазе2, или алгохеджеров) обеспечивать универсальность по инструментам (1005 фьючерсов и 3590 опционов), или ограничется теми, которые нужны хотя бы внутридневным спекулянтам и арбитражёрам (на мой вкус - 18 фьючерсов и опционы на фьючерс РТС по 3 страйка коллов и путов)?
 4) не следует ли ограничить глубину стаканов, кроме РТС, скажем -  остальные 8 со спекулятивной ликвидностью до 20, а другие (включая опционы), т.е. с маркетмейкерской ликвидностью - до 5?
 3) в плазе нет возможности фильтрации по инструментам, получать придется все, но можно сделать простенькую проверку на имя/код инструмента. Я организовал у себя файлик с названием интересующих меня инструментов: RTS-3.11 RTSS-3.11 SBRF-3.11 .... потом получаю поток со списком инструментом и задаю соответсвие имен иснтрументов с их кодами(isin_id) на бирже и потом в коллбеке Кодint isin_id = rec.GetValAsLong("isin_id");
 if (InstrumentList.Contain(isin_id)) ...
 
 4)тоже самое что и 3, стаканы пойдут по всем инструментам!! можно только выбрать общий поток с глубиной на 5, 20 или 50
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| skuvv 
 
   
 
						
						
					 | Дата: 27.12.2010 
 
 
	
			anebotovMikhail SukhovХм, я как-то упустил момент, что поток может содержать несколько таблиц. Кажется, я не правильно понял модель потоков. Для чего это сделано? Не знаю как в плазе, но в fix/fast разные потоки могут идти на разные сервера (в разных сегментах инета), т.е. повышается надежность. Ну и управлять потоком легче чем всем раздельно.Как насчет лицензии? Если что-то типа Apache, то я участвую. Можно задать обработку реплик в одном win thread и проверять CP2DataStream + tableName либо подключать необходимые потоки реплик в своих win thread Тяжелые потоки, типа стаканов или FORTS_FUTCOMMON_REPL лучше отдельно обособить
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| sfighrath 
 
   
 
						
						
					 | Дата: 27.12.2010 
						
							|  |  |  |   |  
 
 
	
			По поводу базы данных. Намного логичнее БД прикручивать не индивидуально к plaza2, а ко всему S#. У меня в боте, например, есть базовый класс для работы с БД. От него уже наследуется класс с конкретной реализацией связи под определенную СУБД (у меня PostgreSQL использована). Можно сделать реализации под MySQL, MS SQL, Oracle, локальный Paradox. Но если человек не захочет использовать БД, то и не привязываться к ней.  У меня базовый класс реализует следующие вещи: Кодpublic class BaseDB
 {
 protected int user_id; //ID пользователя в БД
 
 public virtual bool TestConnect() { return true; } //Тест на связь с БД
 public virtual bool TestUserConnect(string user_name, string passw) { return true; } //Проверка на успешное соединение пользователя
 public virtual DataTable GetDataForLearn(string Ticker, DateTime begin_date, DateTime end_date) { return null; } //Получение исторических данных
 public virtual void AddUserTicker(string ticker_name) { } //Добаление ЦБ к списку выбранных пользователем
 public virtual void DeleteUserTicker(string ticker_name) { } //Удалить ЦБ из списка выбранных пользователем
 public virtual DataTable GetUserTickers() { return null; } //Получение списка ЦБ выбранных пользователем
 
 protected string sql_str_bar_save;
 public virtual void AddBarForSaveToDB(SmartBar Bar) { } //Создание списка для сохранения
 public virtual void SaveMinuteBarToDB() { } //Сохранение нехватающих в нашей БД баров
 
 public virtual void AddLogMessage(string message) { } //Ведение лога
 
 public virtual void AddUserBot(Bots.BaseBot BB) { } //Добавление бота к списку созданных пользователем
 public virtual DataTable GetUserBots() { return null; } //Получение списка ботов пользователя
 public virtual void UpdateBot(Bots.BaseBot BB, string last_ticker_name) { } //Обновление информации о боте в БД
 
 public virtual int AddNewOrder(Bots.BaseBot BB, SmartOrder iSO) { return -1; } //Создание новой сделки
 public virtual void UpdateOrderId(SmartOrder SO) { } //Обновление Id приказа
 public virtual void UpdateOrder(SmartOrder SO) { } //Обновление состояния приказа
 public virtual void UpdateFailedOrder(SmartOrder SO) { } //Обновление ошибки в приказе
 public virtual void OrderDone(SmartOrder SO) { } //Успешное завершение приказа
 public virtual void AddTrade(SmartOrder SO, DateTime datetime, double price, double volume, string tradeno, double profit) { } //Совершение сделки по приказу
 
 public virtual DataTable GetUserBotOrders(Bots.BaseBot BB, DateTime begin_date, DateTime end_date) { return null; } //Получение списка приказов бота
 public virtual DataTable GetUserBotHistoryOrder(int database_id) { return null; } //Получения списка совершенных сделок по приказу
 public virtual DataTable GetUserBotTrades(Bots.BaseBot BB) { return null; } //Получение всех совершенных сделок по данному боту
 }
 
 Сугобо мои внутренние ограничения: в базу пишется не тиковая, а только минутная информация. Можно писать и тики, но это приведет к неимоверному разрастанию самой базы. В базе хранятся настройки для ботов, списки Ценных Бцмаг (ЦБ) - общие и те, что выбраны конкретным пользователем для прослушки; история приказов и совершенных пользователем сделок.
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Mikhail Sukhov 
 
   
 
						
						
					 | Дата: 28.12.2010 
 
 
	
			sfighrathПо поводу базы данных. Намного логичнее БД прикручивать не индивидуально к plaza2, а ко всему S#. У меня в боте, например, есть базовый класс для работы с БД. От него уже наследуется класс с конкретной реализацией связи под определенную СУБД (у меня PostgreSQL использована). Можно сделать реализации под MySQL, MS SQL, Oracle, локальный Paradox. Но если человек не захочет использовать БД, то и не привязываться к ней. 
 У меня базовый класс реализует следующие вещи:
 
 
 Дельная мысль (я так и хотел предложить, но хотел, чтобы кто-то другой высказался и подтвердил мои догадки). Тогда предлагаю так. Откладываем задачу до реализации минимального набора, и смотрим, как можно привинтить для всех шлюзов.
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Mikhail Sukhov 
 
   
 
						
						
					 | Дата: 28.12.2010 
 
 
	
			anebotovКак насчет лицензии? Если что-то типа Apache, то я участвую. Как написал в первом сообщении, вопрос решается коллективно. Раз никто до этого не высказался, говори ты.
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| anebotov 
 
   
 
						
						
					 | Дата: 28.12.2010 
 
 
	
			Mikhail SukhovanebotovКак насчет лицензии? Как написал в первом сообщении, вопрос решается коллективно. Раз никто до этого не высказался, говори ты. Лицензия Apache отличается от GPL тем, что позволяет делать на основании полученных исходников, в том числе и закрытые разработки, при условии указания того, что используются коды такой то разработки. GPL не позволяет менять лицензию, и значит закрывать исходники последующих разработок.http://ru.wikipedia.org/wiki/Apache_License | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Mikhail Sukhov 
 
   
 
						
						
					 | Дата: 28.12.2010 
 
 
	
			anebotovMikhail SukhovanebotovКак насчет лицензии? Как написал в первом сообщении, вопрос решается коллективно. Раз никто до этого не высказался, говори ты. Лицензия Apache отличается от GPL тем, что позволяет делать на основании полученных исходников, в том числе и закрытые разработки, при условии указания того, что используются коды такой то разработки. GPL не позволяет менять лицензию, и значит закрывать исходники последующих разработок.http://ru.wikipedia.org/wiki/Apache_License Я не против, даже за. Прочитаю на досуге о деталях. Кто еще выскажется?
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| nlrf 
 
   
 
						
						
					 | Дата: 29.12.2010 
 
 
	
			skuvv3) в плазе нет возможности фильтрации по инструментам, получать придется все, но можно сделать простенькую проверку на имя/код инструмента.
 Я организовал у себя файлик с названием интересующих меня инструментов:
 RTS-3.11
 RTSS-3.11
 SBRF-3.11
 ....
 4)тоже самое что и 3, стаканы пойдут по всем инструментам!! можно только выбрать общий поток с глубиной на 5, 20 или 50
 
 Придётся получать весь список самих инструментов, или подписанные данные по ним всем? Стаканы пойдут по выбранным инструментам, или по всем > 4500?
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  |