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