отключение продаж и покупок
test / deploy_trader_prod (push) Has been cancelled
Details
test / deploy_trader_prod (push) Has been cancelled
Details
parent
ac32d89ad4
commit
8b217f6cb9
|
@ -71,7 +71,7 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
|||
if (isCrossing.res)
|
||||
{
|
||||
crossings.Add(i2);
|
||||
if (crossings.Count == 4 || (shift + 1 == size - 1 || shift + 1 == prices.Length - 1))
|
||||
if (crossings.Count == 6 || (shift + 1 == size - 1 || shift + 1 == prices.Length - 1))
|
||||
{
|
||||
if ((shift + 1 == size - 1 || shift + 1 == prices.Length - 1))
|
||||
{
|
||||
|
@ -81,7 +81,7 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
|||
for (int crossingShift = 1; crossingShift < crossings.Count - 2; crossingShift++)
|
||||
{
|
||||
var diff = pricesForFinalComparison[crossings[crossingShift]] - pricesForFinalComparison[crossings[crossingShift + 1]];
|
||||
if (diff >= 0)
|
||||
if (diff >= -0.5m)
|
||||
{
|
||||
diffTotal += diff;
|
||||
}
|
||||
|
|
|
@ -29,4 +29,30 @@ namespace KLHZ.Trader.Core.DataLayer.Entities.Orders
|
|||
public OrderbookItemType ItemType { get; set; }
|
||||
|
||||
}
|
||||
|
||||
[Table("orderbook_items_reserve")]
|
||||
public class OrderbookItemr: IOrderbookItem
|
||||
{
|
||||
[Column("id")]
|
||||
public long Id { get; set; }
|
||||
|
||||
[Column("time")]
|
||||
public DateTime Time { get; set; }
|
||||
|
||||
[Column("price")]
|
||||
public decimal Price { get; set; }
|
||||
|
||||
[Column("count")]
|
||||
public long Count { get; set; }
|
||||
|
||||
[Column("figi")]
|
||||
public required string Figi { get; set; }
|
||||
|
||||
[Column("ticker")]
|
||||
public required string Ticker { get; set; }
|
||||
|
||||
[Column("item_type")]
|
||||
public OrderbookItemType ItemType { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ namespace KLHZ.Trader.Core.DataLayer
|
|||
public DbSet<ProcessedPrice> ProcessedPrices { get; set; }
|
||||
public DbSet<Candle> Candles { get; set; }
|
||||
public DbSet<OrderbookItem> OrderbookItems { get; set; }
|
||||
public DbSet<OrderbookItemr> OrderbookItemsReserve { get; set; }
|
||||
public TraderDbContext(DbContextOptions<TraderDbContext> options)
|
||||
: base(options)
|
||||
{
|
||||
|
@ -71,6 +72,15 @@ namespace KLHZ.Trader.Core.DataLayer
|
|||
v => DateTime.SpecifyKind(v, DateTimeKind.Utc));
|
||||
});
|
||||
|
||||
modelBuilder.Entity<OrderbookItemr>(entity =>
|
||||
{
|
||||
entity.HasKey(e1 => e1.Id);
|
||||
entity.Property(e => e.Time)
|
||||
.HasConversion(
|
||||
v => v.ToUniversalTime(),
|
||||
v => DateTime.SpecifyKind(v, DateTimeKind.Utc));
|
||||
});
|
||||
|
||||
modelBuilder.Entity<ProcessedPrice>(entity =>
|
||||
{
|
||||
entity.HasKey(e1 => e1.Id);
|
||||
|
|
|
@ -98,7 +98,7 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
|||
var data = await _tradeDataProvider.GetData(message.Figi, windowMaxSize);
|
||||
var state = ExchangeScheduler.GetCurrentState(message.Time);
|
||||
await ProcessClearing(data, state, message);
|
||||
await SellOldAssetsIfCan(message);
|
||||
//await SellOldAssetsIfCan(message);
|
||||
|
||||
ProcessOpeningStops(message, currentTime);
|
||||
await ProcessNewPriceIMOEXF(data, state, message, windowMaxSize);
|
||||
|
|
|
@ -24,11 +24,12 @@ namespace KLHZ.Trader.Service.Controllers
|
|||
{
|
||||
try
|
||||
{
|
||||
var time = DateTime.UtcNow.AddDays(-7);
|
||||
var time1 = DateTime.UtcNow.AddDays(-7);
|
||||
var time2 = DateTime.UtcNow.AddMinutes(-30);
|
||||
using var context1 = await _dbContextFactory.CreateDbContextAsync();
|
||||
context1.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
|
||||
var data = await context1.PriceChanges
|
||||
.Where(c => c.Figi == figi && c.Time >= time)
|
||||
.Where(c => c.Figi == figi && c.Time >= time1 && c.Time <= time2)
|
||||
.OrderBy(c => c.Time)
|
||||
.Select(c => new NewPriceMessage()
|
||||
{
|
||||
|
@ -51,38 +52,47 @@ namespace KLHZ.Trader.Service.Controllers
|
|||
}
|
||||
}
|
||||
|
||||
//[HttpGet]
|
||||
//public async Task LoadTradesToHistory()
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// using var context1 = await _dbContextFactory.CreateDbContextAsync();
|
||||
// context1.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
|
||||
// var data = await context1.InstrumentTrades
|
||||
// //.Where(c => c.Figi == figi)
|
||||
// //.OrderBy(c => c.BoughtAt)
|
||||
// .Select(c => new PriceChange()
|
||||
// {
|
||||
// Figi = c.Figi,
|
||||
// Ticker = c.Ticker,
|
||||
// Time = c.BoughtAt,
|
||||
// Value = c.Price,
|
||||
// IsHistoricalData = true,
|
||||
// Count = (long)c.Count,
|
||||
// Direction = (int)c.Direction,
|
||||
[HttpGet]
|
||||
public async Task LoadTradesToHistory()
|
||||
{
|
||||
try
|
||||
{
|
||||
using var context1 = await _dbContextFactory.CreateDbContextAsync();
|
||||
context1.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
|
||||
var data = await context1.OrderbookItemsReserve
|
||||
//.Where(c => c.Figi == figi)
|
||||
//.OrderBy(c => c.BoughtAt)
|
||||
.ToArrayAsync();
|
||||
data = data.DistinctBy(d => new { d.Figi, d.Time, d.ItemType}).ToArray();
|
||||
//await context1.PriceChanges.Where(p => p.Figi == figi).ExecuteDeleteAsync();
|
||||
var data2 = data.Select(d => new Core.DataLayer.Entities.Orders.OrderbookItem()
|
||||
{
|
||||
Figi = d.Figi,
|
||||
Time = d.Time,
|
||||
ItemType = d.ItemType,
|
||||
Ticker = d.Ticker,
|
||||
Count = d.Count,
|
||||
Price = d.Price,
|
||||
|
||||
// })
|
||||
// .ToArrayAsync();
|
||||
// data = data.DistinctBy(d => new { d.Figi, d.Time }).ToArray();
|
||||
// //await context1.PriceChanges.Where(p => p.Figi == figi).ExecuteDeleteAsync();
|
||||
// await context1.PriceChanges.AddRangeAsync(data);
|
||||
// await context1.SaveChangesAsync();
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
}).ToArray();
|
||||
int count = 0;
|
||||
foreach(var mess in data2)
|
||||
{
|
||||
count++;
|
||||
await context1.OrderbookItems.AddAsync(mess);
|
||||
if (count > 10000)
|
||||
{
|
||||
await context1.SaveChangesAsync();
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
await context1.SaveChangesAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
////[HttpGet]
|
||||
//public async Task LoadTradesToHistory(string figi)
|
||||
//{
|
||||
|
|
Loading…
Reference in New Issue