воскресенье, 17 августа 2014 г.

HtmlPage EventLog

WebEventLog Settings

 <WebEventLog enabled = "false">
      <Name>Web EventLog</Name>
      <EventLogKey>GS.Trade.EventLog</EventLogKey>
      <BaseAddress>http://192.168.1.1/ApiEventLog/</BaseAddress>
      <RequestHeader>application/xml</RequestHeader>
      <ApiEventLogs>api/eventlogs/</ApiEventLogs>
      <ApiEventLogItems>api/eventlogitems/</ApiEventLogItems>
      <IsEnabled>false</IsEnabled>
      <IsAsync>true</IsAsync>
      <IsPrimary>false</IsPrimary>
      <IsSaveEnabled>true</IsSaveEnabled>
      <IsUIEnabled>false</IsUIEnabled>
    </WebEventLog>

воскресенье, 18 мая 2014 г.

Init

Установить:
1. SpsInit.xml - файл со стратегиями
2. EventLog.xml имя БД для EventLog
3. Init\Dde.xml имя для DdeServer

воскресенье, 11 мая 2014 г.

Update 140511_002

1. Замена Repostotory32 на Repostotory33
Ввел такую конструкцию для защиты от ошибок EntityFramework
            catch (System.ComponentModel.Win32Exception e)
            {
                SendException(ve, method, e);
                return false;
            }
            catch (System.Data.SqlClient.SqlException e)
            {
                SendException(ve, method, e);
                return false;
            }
            catch (System.Data.EntityException e)
            {
                SendException(ve, method, e);
                return false;
            }
            catch (Exception e)
            {
                SendException(ve, method, e);
                throw;
            }
2. В EventHub2 ввел возможность передать срочное сообщение IsHighPriority,
даже когда EventHub работает в режиме IsQueueEnabled
В Events.EventArgs ввел bool IsHighPriority.

3. Все Exceptions летят с IsHighPriority = true, то есть без очереди.

4. Убрал (Пока) регистрацию Exceptions  в БД.
TradeStorage.Add():

5. Добавил регистрацию Exceptions в файлы.
GSException.SaveInFile(string dir, Eargs ea);

6. Element1 - умеет вынимать из Exception InnerException и регистрировать их в IEnumerable<Eargs>. Этот массив Exception затем регистрируется в отдельный файл GSException.SaveInFile(string dir, Eargs ea);

воскресенье, 27 апреля 2014 г.

Update 140427

1. Нагрузил Приложение большим кол-вом систем.
При этом происходит длительная регистрация систем в БазеДанных в TradeContext.TradeStorage.Register(Strategy).
Появляется Окно MDA debug helper.
http://msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=RU-RU&k=k(EHMDA);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5)&rd=true
Лечится очисткой флага "ContextSwithDeadLock"

 В 140427_001 - этого не происходило
Последний Релиз 140427_002.

Сделал Копии vspr12_140427 и vspr13_140427 на Новый DVD

пятница, 25 апреля 2014 г.

Quik. Dde

Необходимо фильтровать нули и прочую грязь, при получении котировок из Quik по DDE.

На картинке синими прямоугольниками выделены нули.

Update 140425. Dde OnPocked.

Dde2 имеет выбор Mode.
Задается в xml
<?xml version="1.0" encoding="utf-8" ?>
<DdeServer>
  <Dde2 enabled="true" ns="GS.Trade.Dde" as="GS.Trade.Dde">
    <Mode>1</Mode>
    <IsEnabled>true</IsEnabled>
    <Name>Dde Server</Name>
    <Code>QUIKInfoF</Code>
    <XPath>DdeTopicList</XPath>
  </Dde2>
  <DdeTopicList>
    <TopicItem ns="GS.Trade.Dde" as="GS.Trade.Dde">
      <TopicItemKey>[Forts]1</TopicItemKey>
    </TopicItem>
    <TopicItem ns="GS.Trade.Dde" as="GS.Trade.Dde">
      <TopicItemKey>[Micex]1</TopicItemKey>
    </TopicItem>
  </DdeTopicList>
</DdeServer>
if Mode == 1 - обработку строк осуществляет OnPocked1()
if Mode == 2 - обработку строк осуществляет OnPocked2()
OnPocked1:
Выгребает одну строкy и отправляет Подписчикам string.
То есть выборка и отправка построчно в цикле.
Подписчики обрабатывают строки в DdeProcess1()
OnPocked2:
Выгребает все строки и
собирает их в StringBuilder.Appendline()
Отправляет Подписчикам StringBuilder.ToString - strings разделенные \r\n
Подписчики обрабатывает входную строку в DdeProcess2()
string sr = new StringReader(strList);
while( sr.ReadLine() != null)
{...}