изменение равнодействующей

dev
vlad zverzhkhovskiy 2025-09-29 16:23:13 +03:00
parent 0aad9297d9
commit 8c8327c905
3 changed files with 35 additions and 4 deletions

View File

@ -3,8 +3,10 @@
internal static class Constants
{
internal const string _1minCacheKey = "1min";
internal const string _15minSellCacheKey = "5min_sell";
internal const string _5minSellCacheKey = "5min_sell";
internal const string _5minBuyCacheKey = "5min_buy";
internal const string _15minBuyCacheKey = "5min_buy";
internal const string _1minSellCacheKey = "1min_sell";
internal const string _1minBuyCacheKey = "1min_buy";

View File

@ -338,6 +338,11 @@ namespace KLHZ.Trader.Core.Exchange.Services
Time = message.Time,
Value = (decimal)message.Count
});
await _tradeDataProvider.AddDataTo15MinuteWindowCache(message.Figi, Constants._15minBuyCacheKey, new Contracts.Declisions.Dtos.CachedValue()
{
Time = message.Time,
Value = (decimal)message.Count
});
await _tradeDataProvider.AddDataTo1MinuteWindowCache(message.Figi, Constants._1minBuyCacheKey, new Contracts.Declisions.Dtos.CachedValue()
{
Time = message.Time,
@ -351,6 +356,11 @@ namespace KLHZ.Trader.Core.Exchange.Services
Time = message.Time,
Value = (decimal)message.Count
});
await _tradeDataProvider.AddDataTo15MinuteWindowCache(message.Figi, Constants._15minSellCacheKey, new Contracts.Declisions.Dtos.CachedValue()
{
Time = message.Time,
Value = (decimal)message.Count
});
await _tradeDataProvider.AddDataTo1MinuteWindowCache(message.Figi, Constants._1minSellCacheKey, new Contracts.Declisions.Dtos.CachedValue()
{
Time = message.Time,
@ -531,12 +541,12 @@ namespace KLHZ.Trader.Core.Exchange.Services
private async Task<ImmutableDictionary<TradingEvent, decimal>> GetSpeedResultantMods(INewPrice message)
{
var res = GetInitDict(1);
var buys5min = await _tradeDataProvider.GetDataFrom5MinuteWindowCache(message.Figi, Constants._5minBuyCacheKey);
var sells5min = await _tradeDataProvider.GetDataFrom5MinuteWindowCache(message.Figi, Constants._5minSellCacheKey);
var buys5min = await _tradeDataProvider.GetDataFrom15MinuteWindowCache(message.Figi, Constants._15minBuyCacheKey);
var sells5min = await _tradeDataProvider.GetDataFrom15MinuteWindowCache(message.Figi, Constants._15minSellCacheKey);
var buysSpeed5min = buys5min.Sum(p => p.Value) / 300;
var sellsSpeed5min = sells5min.Sum(p => p.Value) / 300;
var diff5min = buysSpeed5min - sellsSpeed5min;
await LogPrice(message, "speed_diff_5min", diff5min);
await LogPrice(message, "speed_diff_15min", diff5min);
if (diff5min < 0)
{
@ -967,7 +977,7 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt
}
if (mode == TradingMode.SlowDropping && type == PositionType.Short)
{
takeProfitShift = 4m;
}
if (mode == TradingMode.SlowDropping && type == PositionType.Long)
{

View File

@ -146,6 +146,16 @@ namespace KLHZ.Trader.Core.Exchange.Services
await _historyCash[figi].AddDataToTimeWindowCache(key, data, TimeWindowCacheType._5_Minutes);
}
public async ValueTask AddDataTo15MinuteWindowCache(string figi, string key, CachedValue data)
{
if (!_historyCash.TryGetValue(figi, out var unit))
{
unit = new PriceHistoryCacheUnit2(figi);
_historyCash.TryAdd(figi, unit);
}
await _historyCash[figi].AddDataToTimeWindowCache(key, data, TimeWindowCacheType._15_Minutes);
}
public ValueTask<CachedValue[]> GetDataFrom20SecondsWindowCache(string figi, string key)
{
if (_historyCash.TryGetValue(figi, out var cahcheItem))
@ -173,6 +183,15 @@ namespace KLHZ.Trader.Core.Exchange.Services
return ValueTask.FromResult(Array.Empty<CachedValue>());
}
public ValueTask<CachedValue[]> GetDataFrom15MinuteWindowCache(string figi, string key)
{
if (_historyCash.TryGetValue(figi, out var cahcheItem))
{
return cahcheItem.GetDataFromTimeWindowCache(key, TimeWindowCacheType._15_Minutes);
}
return ValueTask.FromResult(Array.Empty<CachedValue>());
}
public async ValueTask AddOrderbook(IOrderbook orderbook)
{
if (!_historyCash.TryGetValue(orderbook.Figi, out var unit))