вторник, 9 декабря 2014 г.

TFS

Из командной строки
Отправку проекта можно выполнить с помощью следующих команд:
git remote add origin http://gssft-002:8080/tfs/DefaultCollection/_git/GS2_002
git push -u origin --all

Projects

gssft-002

Local:
D:\VC1303\
GS
GS.EventLog2
Remote:
gssft-001:
D:\VC1303\
GS2
GS.EventLog2


Возможные статусы WorkTask, Work

1. Start
1.1. Init Work
1.2. Enable Work Or Enable Task
1.3. Create WorkTask
1.4. Start Task

2.Stop
2.1. Finish.Work
2.2. Disable Work Or Disable Task
2.3. Stop WorkTask

3. Suspend
3.1. Disable Work Or
3.2. Disable Task

4. Resume
4.1 Enable Work Or
4.2. Enable Task


вторник, 25 ноября 2014 г.

GS.EventLog2 + Создал новое решение

D:\vspr1213\GS\GS.EventLog2 + Создал новое решение.
Были постоянные конфликты со старыми сборками от старых проектов. 

четверг, 20 ноября 2014 г.

Positions

PositionsMvc
D:\Web\H_141024\H\140819\devTest\Web\Portfolio\PortfoloMvc\PortfolioMvc_01\PortfolioMvc_01.sln

PortfolioBoMvc
D:\Web\devTest\Web\Portfolio\PortfoloMvc\PortfolioMvc_01\PortfolioMvc_01.sln

суббота, 25 октября 2014 г.

понедельник, 13 октября 2014 г.

Projects

Portfolio c Charts
devTest/web/Portfolio/PortfoloMvc/PortfolioBoMvc_01
H/140919/devTest/Positions
H/140919_8/devTest/web/Portfolio/PortfoloMvc/PortfolioBoMvc_01

воскресенье, 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)
{...}

среда, 23 апреля 2014 г.

RtsMargin

Проекты:

D:\vspr12\Trade\GS\Trade\GS.Trade.Web\WebApi_01\ - Web_Api Project
D:\vspr12\Trade\GS\Trade\GS.Trade.WebClient\RtsMarginUpdate_01\ - WebClient

БД:
GS.Trade.DataBase.Dal.DbTradeContext

четверг, 17 апреля 2014 г.

Updates 140417_001

1. GS.Trade.Strategies
Ввел мультифайловость для файлов стратегий.
Стратегии группируются по группам и размещаются в соответствующих файлах.
Имена этих файлов Стратегий указываются в Общем файле Стратегий.
Общий Файл Стратегий Strategies\StratFiles.xml:
<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <string>Strategies\Train\Tr_Z705_02F1.xml</string>
  <string>Strategies\Test\Test_Z707_002.xml</string>
  <string>Strategies\Simulate\S_Z705_02FR.xml</string>
</ArrayOfString>
Имя Общего файла Стратегий указывается в SpsInit:
<SyncPositionsInit>
 <Strategies_XmlFileName>Strategies\StratFiles.xml</Strategies_XmlFileName>
</SyncPositionsInit>
Пример использования Builder.Build<T>(string uri, string xpath);

Десериализует простой список.

<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <string>String 1</string>
  <string>String 2</string>
</ArrayOfString>

var StringArray = Builder.Build<List<string>>(@"Directory\Strings.xml", "ArrayOfString");

среда, 16 апреля 2014 г.

Релиз Trade_140416_001

1. Изменил получение котировок по Dde
Изменения затронули Tickers и TradeContext
Теперь получение происходит через Queue, которая определена в Tickers.
В Tickers ввел методы:
void PushDdeQuoteStr(string s)
Парсит строку , ставит в очередь Quote и отправляет событие для SimulateTerminal
void DeQueueDdeQuoteStrProcess()
Берет все элементы из очереди, строит бары и тайм серии.
В StrategyProcess располагается первым.

Последний релиз, работающий без очередей Trade_140415_001
В нем строка Dde парсится и вычисляются Бары.
public void PutDdeQuote3(string ddeStr){}

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

Возникли Тормоза INotifyPropertyChanged , IHaveKey

public class PositionNpc2 : TradeEntity, INotifyPropertyChanged , IHaveKey<string>

При добавлении в список наследования простого интерфейса IHaveKey<string>
в класс PositionNpc2  в работе Приложения возникли жуткие Тормоза при обновлении соответствующих окон.
В ближайшее время надо разобраться.

Последний правильно работающий релиз (без тормозов) - Trade_140410_002.zip

четверг, 10 апреля 2014 г.

Updates 2014.04.10

Ковырялся в BackTest

1. Проверил зависимость спреда и NextValue от CurrentValue - вроде нормально. Зависимости нет.
2. Изменил _startValue = 500000. Чтобы при длительном тестировании при резком перекосе оставить Value > 0.
3. В дальнейшем надо понаблюдать может что-либо зацепил. Старый код. Надо переписать по-хорошему

понедельник, 7 апреля 2014 г.

Forts Accounts Upper Lower Case

На Forts в коде счета могут встречаться маленькие буквы.
Например: SPBFUT01b15
Будьте осторожны при программировании.
У меня все ключи преобразовывались в заглавные буквы. 

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

Updates vspr12 140405

В связи с предыдущими изменениями Ticker.Code на TickerKey перестал работать "BackTest",
поэтому сделал изменения в ParseDde, и RandomBar - добавил поддержку TradeBoard.

В связи с исключением из Tickers.xml BarSeries, перестало работать обновления Charts.
Сделал исправления, заменив BarSeries на AsyncSeries для BackTest.MainWindow

Configuration

 Концепция TradeContext.

 "BackTest"

TradeTerminals
(
OrdersActivated, OrdersCompleted  Memory Storage Capasity from 0 to Max
Trades
)
Strategy
(
Positions
Totals
Deals Memory Storage (with UI) Capasity from 0 to Max
)
UI
(
Windows Storage Capasity from != 0 to Max
)

 "Real Light" without Persistence

 "Real" with Persistence

"Real Max" Multiply Persistence

суббота, 5 апреля 2014 г.

Bug: Выход из ЕxitMode

При Выходе из позиций в конце сессии входим в ExitMode и далее из него не выходим.
Поэтому сессия уже закончилась, а робот все пытается выходить из позиции

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

GS.Trade Updates 05.04.2014

Поменял многое в GSCollection - надо понаблюдать
Вставил в
TradesWindow GSCollection c Capasity Support
OrdersFilledWindow GSCollection c Capasity Support
TransactionWindow

четверг, 3 апреля 2014 г.

GSCollection

Что дает GSCollection
  1. Доступ по Key - строгий контроль Items, как в HashSet или Словарях.
  2. Унифицированный интерфейс и возможность легко заменить List на Hash.
  3. EventLog
  4. OnChangedEvent
  5. Exceptions Handling
  6. Capasity
  7. Удобство отладки: Вначале ставим LIst - отлаживаем, затем легко меняем на Hash
Вся эта функциональность обеспечивается Element1<>

Возможны ошибки при неосторожном обращении с Keys

понедельник, 31 марта 2014 г.

Capasity - свойство

1.
Необходимо добавить свойство Capasity во все Коллекции и Контейнеры GS.Trade с возможностью инициализации из .xml.
Пока добавлены в TimeSeries и EventLog.

TimeSeries Update

TimeSeries

1. Добавил Capasity, CapasityLimit. Эти параметры задаются пока HardCoded
    После превышения (Capasity + CapasityLimit) происходит Очистка до Count = Capasity.

Capasity = 1024
Limit = 256

Цель - при длительной или непрерывной работе старые сообщения занимают память.

EventLog Update

EventLog - Memory

1. Добавил Capasity, CapasityLimit. Эти параметры задаются в .xml - файле.
    После превышения (Capasity + CapasityLimit) происходит Очистка до Count = Capasity.

2. Такой же механизм ввел в EventLogWindow2

Capasity = 1024
Limit = 256

Цель - при длительной или непрерывной работе старые сообщения занимают память.



среда, 5 марта 2014 г.

Elements - применение

Применение Elements.

Elements1
1.Strategies
2.TradeContext
3.EmptyStorage, MemStorage
4.Dde.TopicItem
5.Terminals, QuikTradeTernonal
6. Accounts
7. EFRepository, TradeEFRepository
8.TradeBaseStorage
9. TradeBaseRepository

Elements2
1. Dde2 : Element2
2. Portfoilio
3. DbStorage - попытка пока не закончена

четверг, 16 января 2014 г.

DbEventLog Update

1. Переписал DbEventLog с IAsyncResult на Task.
2. Новый EventLog.xml
3. Options: IsAsync, IsSave, IsUi Enabled ; IsPrimary or Default
4. Атрибут enabled = enabled serialize and then load
5. В <EventLogs> добавлен елемент <XPath>EventLogList</XPath> для поиска в этом .xml
точки для десериализации коллекции EventLogList
6. <DataBaseName>EventLog</DataBaseName> - имя БД или Конектион стрин
7. Проект Теста EventLog5. Решение GS12/EventLog/EventLog.sln
8. Будьте здоровы.

<?xml version="1.0" encoding="utf-8" ?>
<EventLogTypes>
  <EventLogs>
    <Name>EventLogs</Name>
    <IsEnabled>true</IsEnabled>
    <XPath>EventLogList</XPath>
  </EventLogs>
  <EventLogList>
    <EventLog>
      <Name>Memory EventLog</Name>
      <IsEnabled>true</IsEnabled>
      <IsAsync>true</IsAsync>
      <IsPrimary>true</IsPrimary>
      <IsSaveEnabled>false</IsSaveEnabled>
      <IsUIEnabled>true</IsUIEnabled>
    </EventLog>
    <ConsoleEventLog enabled = "false">
      <Name>Console EventLog</Name>
      <IsEnabled>false</IsEnabled>
      <IsAsync>false</IsAsync>
      <IsPrimary>false</IsPrimary>
      <IsSaveEnabled>false</IsSaveEnabled>
      <IsUIEnabled>false</IsUIEnabled>
    </ConsoleEventLog>
    <FileEventLog enabled = "false">
      <Name>File EventLog</Name>
      <FileName>FileEventLog.txt</FileName>
      <IsEnabled>false</IsEnabled>
      <IsAsync>false</IsAsync>
      <IsPrimary>false</IsPrimary>
      <IsSaveEnabled>false</IsSaveEnabled>
      <IsUIEnabled>false</IsUIEnabled>
    </FileEventLog>
    <WebEventLog enabled = "false">
      <Name>Web EventLog</Name>
      <EventLogKey>GS.Trade.EventLog</EventLogKey>
      <BaseAddress>http://gonchar.net/ApiEventLog/</BaseAddress>
      <RequestHeader>application/xml</RequestHeader>
      <ApiEventLogs>api/eventlogs/</ApiEventLogs>
      <ApiEventLogItems>api/eventlogitems/</ApiEventLogItems>
      <IsEnabled>false</IsEnabled>
      <IsAsync>true</IsAsync>
      <IsPrimary>false</IsPrimary>
      <IsSaveEnabled>false</IsSaveEnabled>
      <IsUIEnabled>false</IsUIEnabled>
    </WebEventLog>
    <DbEventLog enabled = "true">
      <Name>DataBase.EventLog</Name>
      <DataBaseName>EventLog</DataBaseName>
      <EventLogKey>GS.Trade.EventLog</EventLogKey>
      <Code>GS.Trade.EventLog</Code>
      <IsEnabled>true</IsEnabled>
      <IsPrimary>false</IsPrimary>
      <IsAsync>false</IsAsync>
      <IsSaveEnabled>true</IsSaveEnabled>
      <IsUIEnabled>false</IsUIEnabled>
    </DbEventLog>
  </EventLogList>
</EventLogTypes>