пятница, 11 мая 2018 г.

Save some some sql scripts for fast restore in future

use DbTrade2

DECLARE @DT DateTime
DECLARE @DT1 DateTime
DECLARE @DT2 DateTime

DECLARE @CUR_TABLE VARCHAR(100)
SET @CUR_TABLE = 'ORDERS'
-- ORDERS
SET @DT1 = GETDATE()
SELECT @DT1 [DateTime], DB_NAME()  [DB_NAME], @CUR_TABLE [TABLE]

SET @DT = GeTDATE()
Select @DT [DateTime], 'Orders To Delete' as Operation, Count(*) as Cnt, 
Min(Cast( Modified as Date)) as Dt1, Max(Cast( Modified as Date)) as Dt2
From Orders
-- Go

DELETE from Orders
where Cast( Created as Date) NOT IN
(
select top 2 Cast( o.Created as Date) dt
from Orders o
Group by Cast( o.Created as Date)
Order by Cast( o.Created as Date) DESC
)
--GO
select  Cast( o.Created as Date) DT, Count(*) OrdersCount
from Orders o
Group by Cast( o.Created as Date)
Order by Cast( o.Created as Date) DESC
--GO

SET @DT = GeTDATE()
Select @DT [DateTime],'Orders After Delete' as Operation, Count(*) as Cnt, 
Min(Cast( Modified as Date)) as Dt1, Max(Cast( Modified as Date)) as Dt2
From Orders
--Go

SET @DT2 = GeTDATE()

Select @DT2 [DateTime], DB_NAME() [DB_NAME], @CUR_TABLE [TABLE],
CAST((@dt2 - @dt1) AS Time) as 'Elapsed_Time'
GO

-- TRADES
Select 'Trades To Delete' as Operation, Count(*) as Cnt, 
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
From Trades
Go

DELETE from Trades
where Cast( DT as Date) NOT IN
(
select top 2 Cast( DT as Date) DT
from Trades o
Group by Cast( DT as Date)
Order by Cast( DT as Date) DESC
)
GO
select  Cast( DT as Date) dt, Count(*) TradesCount
from Trades o
Group by Cast( DT as Date)
Order by Cast( DT as Date) DESC
GO

Select 'Trades After Delete' as Operation, Count(*) as Cnt, 
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
From Trades
Go

-- DEALS
SELECT 'DEALS' [Context]
GO

DECLARE @DT DateTime
DECLARE @DT1 DateTime
DECLARE @DT2 DateTime

DECLARE @CUR_TABLE VARCHAR(100)

SET @CUR_TABLE = 'DEALS'

SET @DT1 = GETDATE()
SELECT @DT1 [DateTime], DB_NAME()  [DB_NAME], @CUR_TABLE [CUR_TABLE]

Select 'Deals Count' as Operation
--go
Select 'Deals Count' as Operation, Count(*) as Cnt,
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
from Deals
-- go

SET @DT2 = GETDATE()
SELECT @DT2 [DateTime], DB_NAME()  [DB_NAME],  @CUR_TABLE [CUR_TABLE],
CAST((@dt2 - @dt1) AS Time) as 'Elapsed_Time'

--select  Cast( DT as Date) dt, Count(*) DealsCount
--FROM Deals
--Group by Cast( DT as Date)
--Order by Cast( DT as Date) DESC

--Select 'Deals Delete' as Operation

--DELETE from Deals
--where Cast( DT as Date) NOT IN
--(
--select top 3 Cast( DT as Date) dt
--from Deals o
--Group by Cast( DT as Date)
--Order by Cast( DT as Date) DESC
--)
--GO
--select  Cast( DT as Date) dt, Count(*) DealsCount
--from Deals o
--Group by Cast( DT as Date)
--Order by Cast( DT as Date) DESC
--GO

-- EventLogs
--USE EventLog
--EXECUTE dbo.SP_EVLS_CLEAR_2_DAYS
--USE EventLog1
--EXECUTE dbo.SP_EVLS_CLEAR_2_DAYS
--USE EvlContext
--EXECUTE dbo.SP_EVLS_CLEAR_2_DAYS

/*
Use EventLog
Select 'EventLog To Delete' as Operation, Count(*) as Cnt, 
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
From EventLogItems
Go
DELETE from EventLogItems 
where Cast( DT as Date) NOT IN
(
select top 2 Cast( DT as Date) dt
from EventLogItems o
Group by Cast( DT as Date)
Order by Cast( DT as Date) DESC
)
GO
select Cast( DT as Date) dt, Count(*) as EvliCount
from EventLogItems o
Group by Cast( DT as Date)
Order by Cast( DT as Date) DESC
GO
Select 'EventLog After Delete' as Operation, Count(*) as Cnt, 
Min(Cast( DT as Date)) as Dt1, Max(Cast( DT as Date)) as Dt2
From EventLogItems
Go
*/

USE TimeSeries01
Declare @dt1 as DateTime, @dt2 as DateTime

SET @dt1 = GETDATE()
Select @dt1 as 'Start DateTIme'
delete from Bars
where id In
(
Select b.Id
FROM dbo.Bars b
INNER JOIN TimeSeries ts on b.BarSeriesId = ts.Id
INNER JOIN Tickers t on ts.TickerId = t.Id
inner join TradeBoards tb on t.TradeBoardId = tb.Id
Where (tb.Id = 2 Or tb.Id = 3) AND 
(cast(Dt as Time) < '10:00:00' OR cast(DT as Time) > '23:50:00')
)

SET @dt2  = GETDATE()
Select @dt2 as 'Finish DateTIme'
Select cast((@dt2 - @dt1) as Time) as 'ElapsedTime'

go

USE EventLog1
EXECUTE [dbo].[SP_EVLS_CLEAR_2_DAYS]
GO

USE EventLog
EXECUTE [dbo].[SP_EVLS_CLEAR_2_DAYS]
GO

USE EvlContext
EXECUTE [dbo].[SP_EVLS_CLEAR_2_DAYS]

GO


Cardinal Changes in EventLog, TradeContext with ProcessTask

1. Cardinal Changes in Eventlog.
From Threads to ProcessTask<TInput>

EventLogs.cs 

 public interface IEventLogs : IEventLog, IHaveQueue<IEventLogItem>
    {
        void Start();
        void Stop();
    }

private void SetupProcessTask()
        {
            ProcessTask = new ProcessTask<IEventLogItem>();
            ProcessTask.Init(this);
            ProcessTask.Parent = this;
            ProcessTask.ItemProcessingAction = evli =>
            {
                try
                {
                    AddItem(evli);
                }
                catch (Exception e)
                {
                    Evlm2(EvlResult.FATAL, EvlSubject.PROGRAMMING,
                        GetType().Name, "ProcessTask", "Exception", e.Message);
                }
            };
        }

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

            ProcessTask?.Stop();

        }

EventLogs.Init()
{
...
...

 SetupProcessTask();

}

TradeContext5.cs

 // 2018.05.11 new EventLog with Processor Inside ProcessTask<IEvlItem>              

((IEventLogs)EventLog)?.Start();


TradeContext51.cs   // Good Buy Threads

 // 2018.05.11 
                // UIProcess.RegisterProcess("EventLog Dequeue Process", "EventLog.DeQueue",

                //    1000, 0, null, ((IEventLogs) EventLog).DeQueueProcess, null);

WpfTradeContext CloseWindow:

EventHandlers.cs

 private void WindowClosed(object sender, EventArgs e)
        {
            _tx.Stop();
            //Thread.Sleep(5000);
            
            _tx.Close();

            ((IEventLogs)_evl)?.Stop();

        }





четверг, 10 мая 2018 г.

new old Project

1. new old solution GS.WorkTask review
2. Projects Added to this new old solution:

CA_GS.Trade.Works ( Works to downlods Ftp/Http Quotes Archive)
Test_CAWorkTasks_01 ( TaskProcess01, ProcessTask01)

NuGet does not work with this

Repair NuGet
1. MakeDir .nuget in dir where solution is
2. Copy .nuget all files from GS.Trade solution dir

Remove from GS.Trade.sln
CA_GS.Trade.Works
Test_CAWorkTasks_01
Test_EventLog

NuGet Restore:

https://stackoverflow.com/questions/27895504/how-do-i-enable-nuget-package-restore-in-visual-studio


https://docs.microsoft.com/ru-ru/nuget/consume-packages/package-restore

https://docs.microsoft.com/ru-ru/nuget/consume-packages/package-restore

https://docs.microsoft.com/ru-ru/nuget/consume-packages/package-restore#migrating-to-automatic-restore

воскресенье, 22 апреля 2018 г.

Config DataBase with Quotes for projects

Конфигурация доступа к БД котировок

<WebClients>
  <BarWebClient>
    <!--<Code>StringWebClient</Code>-->
    <BaseAddress>http://localhost/gs.trade.web.api.timeseries01/</BaseAddress>
    <!--<BaseAddress>http://185.31.162.98/gs.trade.web.api.timeseries01/</BaseAddress>-->

<TimeSeriesStatWebClient>
    <!--<Code>StringWebClient</Code>-->
    <BaseAddress>http://localhost/gs.trade.web.api.timeseries01/</BaseAddress>
    <!--<BaseAddress>http://185.31.162.98/gs.trade.web.api.timeseries01/</BaseAddress>-->

Активная опция localhost подразумевает наличие БД котировок нa localhost. То есть требуется как минимум еженедельная синхронизация БД для всех hosts, если тестирование производится еженедельно.

четверг, 4 января 2018 г.

StellaMaris - Cleaning

StellaMaris

SELECT a.title, a.fulltext FROM maris01.xx2sk_content a WHERE a.fulltext LIKE '%<!--58dba6d87ab6e1490790104-->%' OR a.fulltext LIKE '%<!--/58dba6d87ab6e1490790104-->%'
;

F:\Web\StellaMaris\180104\maris01_02_Cleaned.sql - Clear Copy of DataBase

SELECT a.title, a.fulltext FROM maris01.xx2sk_content a WHERE a.fulltext LIKE '%<!--58dba6d87ab6e1490790104-->%' OR a.fulltext LIKE '%<!--/58dba6d87ab6e1490790104-->%'
;