Показаны сообщения с ярлыком Tickers. Показать все сообщения
Показаны сообщения с ярлыком Tickers. Показать все сообщения

воскресенье, 5 июля 2020 г.

Updates

1. GS.Trade.Web.Api.TimeSeries01, GS.Trade.Web.Mvc.TimeSeries01
1.1 web.config
<compilation>
      <assemblies>
        <remove assembly="Microsoft.VisualStudio.Web.PageInspector.Loader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5" />

 ****** after delete VS2013 *********
1.2 new ConnectionString

2. new Database
2.1. SQLDVLP14
2.2. Add User NeworkService
2.3.

Tickers:
public IEnumerable<IBarSimple> GetSeries(long seriesId, DateTime dt)
        {
            var m = MethodBase.GetCurrentMethod() + "()";
            // return _barWebClient.GetSeries(seriesId, dt);
            var r = _barWebClient.GetSeries(seriesId, dt);
            if (r == null)
                Evlm2(EvlResult.FATAL, EvlSubject.TECHNOLOGY, ParentTypeName, TypeName,
                    m, $"Failure in Get SeriesId:{seriesId}, DT:{dt.Date.ToString("d")}", ToString());
            return r;
        }

суббота, 12 мая 2018 г.

ProcessTask Setup in SubSystem

QuikTradeTerminal:

private void SetupProcessTask()
        {
            ProcessTask = new ProcessTask<IEventArgs1>();
            ProcessTask.Init();
            ProcessTask.TimeInterval = 1000;
            ProcessTask.Parent = this;
            ProcessTask.IsEveryItemPushProcessing = true;

// Item Processing
            ProcessTask.ItemProcessingAction = args =>
            {
                try
                {
                    args.Action(args);
                }
                catch (Exception e)
                {
                    SendException(e);
                }
            };
        }

private void SendReplyEventArgs(TransactionReplyItem tr)
        {
            var eargs = new EventArgs1
            {
                Process = "QuikTransactionsProcess",
                Category = "QuikTransactions",
                Entity = "TransactionReplyItem",
                Operation = "AddOrUpdate",
                Object = tr,
                Action = TransactionReplyResolve
            };
            ProcessTask?.EnQueue(eargs);
        }

public void TransactionReplyResolve(IEventArgs1 args)
        {
            var trReply = (TransactionReplyItem)args.Object;
            var dwTransId = trReply.TransId;
            var replyMessage = trReply.ReplyMessage;
            var nResult = trReply.Result;
            var nExtendedErrorCode = trReply.ExtendedErrorCode;
            var nReplyCode = trReply.ReplyCode;
            var dOrderNum = trReply.OrderNum;

            TransactionReplyEvent?.Invoke((int)nResult, (uint)dwTransId, dOrderNum);
...
    

Tickers:

public bool IsProcessTaskInUse { get; set; }

[XmlIgnore]
public GS.ProcessTasks.ProcessTask<string> ProcessTask { get; private set; }

        private void SetupProcessTask()
        {
            ProcessTask = new ProcessTask<string>();
            ProcessTask.Init();
            ProcessTask.TimeInterval = 1000;
            ProcessTask.Parent = this;
            ProcessTask.IsEveryItemPushProcessing = true;

// ItemS Processing
         ProcessTask.ItemsProcessingAction = QuoteStringsProcessing;
        }

        public void Start()
        {
            if(IsProcessTaskInUse)
                ProcessTask?.Start();
        }
        public void Stop()
        {
            if (IsProcessTaskInUse)
                ProcessTask?.Stop();
        }

public void QuoteStringsProcessing(IEnumerable<string> quotestrings)
        {
            try
            {
                foreach (var s in quotestrings)
...

EventLogs:

// Setup in .xml file
        public bool IsProcessTaskInUse { get; set; }
        private void SetupProcessTask()
        {
            ProcessTask = new ProcessTask<IEventLogItem>();
            ProcessTask.Init(this);
            ProcessTask.Parent = this;
            ProcessTask.TimeInterval = 1000;
            ProcessTask.IsEveryItemPushProcessing = false;
            ProcessTask.ItemProcessingAction = evli =>
            {
                try
                {
                    AddItem(evli);
                }
                catch (Exception e)
                {
                    SendException(e);
                    //Evlm2(EvlResult.FATAL, EvlSubject.PROGRAMMING,
                    //    GetType().Name, "ProcessTask", "Exception", e.Message);
                }
            };
        }
        [XmlIgnore]
        public GS.ProcessTasks.ProcessTask<IEventLogItem> ProcessTask { get; private set; }
        public void Start()
        {
            if(IsProcessTaskInUse)
                ProcessTask?.Start();
        }
        public void Stop()
        {
            if (IsProcessTaskInUse)
                ProcessTask?.Stop();
        }

public void Push(IEventLogItem queueItem)
        {
            if (IsProcessTaskInUse)
                ProcessTask.EnQueue(queueItem);
            else
                EvlQueue.Push(queueItem);
        }

EventHub:

 public bool IsProcessTaskInUse { get; set; }
        private void SetupProcessTask()
        {
            ProcessTask = new ProcessTask<IEventArgs>();
            ProcessTask.Init();
            ProcessTask.TimeInterval = 1000;
            ProcessTask.Parent = this;
            ProcessTask.IsEveryItemPushProcessing = true;
            ProcessTask.ItemProcessingAction = FireEventOperation;
        }
        [XmlIgnore]
        public GS.ProcessTasks.ProcessTask<IEventArgs> ProcessTask { get; private set; }
        public void Start()
        {
            if(IsProcessTaskInUse)
                ProcessTask?.Start();
        }
        public void Stop()
        {
            if (IsProcessTaskInUse)
                ProcessTask?.Stop();
        }
...

 protected void FireEventOperation(Events.IEventArgs args)
        {
            try
            {
                var key = args.Key;
                var evhubitem = GetByKey(key);
                if (evhubitem != null)
                    evhubitem.FireEvent(args.Sender, args);
...

public void FireEvent(object sender, Events.IEventArgs eventArgs)
        {
            EventHandler?.Invoke(sender, eventArgs);
...

среда, 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){}

среда, 6 ноября 2013 г.

Rts Margin Update

Решение: D:\vspr12\Trade\GS\Trade\GS.Trade.WebClient\GS.Trade.WebClient.sln
RtsMargin - библиотека для загрузки Го - D:\vspr12\Trade\GS\Trade\GS.Trade.WebClient\RtsMargin\

RtsMarginUpdate_01 - проект обновления Го - Пример использования Builder, WebClient (WebClient2) - по WebApi/Tickers
D:\vspr12\Trade\GS\Trade\GS.Trade.WebClient\RtsMarginUpdate_01\

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

LongCode in Tickers

GS.Trade.Tickers
LongCode in Rts   RTS-3.12 -  очень плохо для сортировки.
Написал method CreateLongCodeFromName в классе InitDB для преобразования RTS-3.12 -> RTS-2012.03 для нормальной сортировки.

В контроллере Futures поменял Tickers на Futures.
View Edit FUTURES перед сохранением изменений делаю LongCode = CreateLongCodeFromName(name). При замене Вью надо НЕ ЗАБЫВАТЬ ВСТАВЛЯТЬ  

воскресенье, 13 октября 2013 г.

GS.Trade.Tickers

GS.Trade.Tickers

Реализация хранилища тикеров и котировок, Источник получения по Web Api тикеров для Торговых Автоматов.

EF 5.0

Tickers, Symbols - TPT

Прототип d:/vspr12/trade/tickers/tickers  - старое работающее решение на ef 4.0
Работающий проект d:/vspr12/trade/tickers/tickersTicker05

Новый проект ef 5.0
Решение  -  d:/vspr12/GS/Trade/GS.Trade.Tickers

Проекты:

ClassLibrary - Tickers51.Model
ConsApp - Test_Tickers_01