Отключил использование FFT
test / deploy_trader_prod (push) Successful in 7m11s Details

dev
vlad zverzhkhovskiy 2025-09-29 23:22:36 +03:00
parent 5b9879cc09
commit 23c0dd886b
2 changed files with 39 additions and 6 deletions

View File

@ -82,6 +82,31 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
return (resDt, resVs);
}
public static (DateTime[] timestamps, decimal[] values) TrimValues(DateTime[] timestamps, decimal[] values, TimeSpan leftBound, TimeSpan rightBound)
{
var resDt = new List<DateTime>();
var resVs = new List<decimal>();
var lastTime = timestamps[timestamps.Length - 1];
var rightTime = lastTime - rightBound;
var leftTime = lastTime - leftBound;
for (var i = 0; i < timestamps.Length; i++)
{
var t = timestamps[timestamps.Length - i - 1];
if (t > leftTime && t <= rightTime)
{
resDt.Add(t);
resVs.Add(values[values.Length - i - 1]);
}
else if (t<= leftTime)
{
break;
}
}
return (resDt.ToArray(), resVs.ToArray());
}
public static FFTAnalyzeResult GetMainHarmonic(DateTime[] timestamps, decimal[] values, string key, TimeSpan minPeriod)
{
var startPeriod = timestamps[timestamps.Length - 1] - timestamps[0];

View File

@ -533,21 +533,29 @@ namespace KLHZ.Trader.Core.Exchange.Services
}
}
private async Task<ImmutableDictionary<TradingEvent, decimal>> CheckDivergency(INewPrice message)
private async Task<ImmutableDictionary<TradingEvent, decimal>> CheckDivergency(DateTime[] timestamps, decimal[] values, INewPrice message)
{
var res = GetInitDict(1);
var buys = await _tradeDataProvider.GetDataFrom5MinuteWindowCache(message.Figi, Constants._5minBuyCacheKey);
var sells = await _tradeDataProvider.GetDataFrom5MinuteWindowCache(message.Figi, Constants._5minSellCacheKey);
var time1 = message.Time - TimeSpan.FromMinutes(4);
var time2 = message.Time - TimeSpan.FromMinutes(2);
var data1 = FFT.TrimValues(timestamps, values, TimeSpan.FromMinutes(4), TimeSpan.FromMinutes(2));
var data2 = FFT.TrimValues(timestamps, values, TimeSpan.FromMinutes(2), TimeSpan.FromSeconds(-1));
var p1 = data1.values.Sum() / data1.values.Length;
var p2 = data2.values.Sum() / data2.values.Length;
var dp = p2 - p1;
var buys = await _tradeDataProvider.GetDataFrom5MinuteWindowCache(message.Figi, Constants._5minBuyCacheKey);
var sells = await _tradeDataProvider.GetDataFrom5MinuteWindowCache(message.Figi, Constants._5minSellCacheKey);
var buysOld = buys.Where(b => b.Time < time2 && b.Time >= time1).ToArray();
var sellsOld = sells.Where(b => b.Time < time2 && b.Time >= time1).ToArray();
var buysNew = buys.Where(b => b.Time >= time2).ToArray();
var sellNew = sells.Where(b => b.Time >= time2).ToArray();
if (buysNew.Length>0 && buysOld.Length > 0)
{
var dpriceNew = buysNew.Sum(b => b.Value) / buysNew.Length;
var dpriceOld = buysOld.Sum(b => b.Value) / buysOld.Length;
var dpriceNew = buysNew.Sum(b => b.Value);
var dpriceOld = buysOld.Sum(b => b.Value);
}
@ -752,7 +760,7 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt
//result = MergeResults(result, resTask3.Result.ToImmutableDictionary());
result = MergeResultsMax(result, changeModeData);
// result = MergeResultsMax(result, getLocalTrendsModsTask.Result);
result = MergeResultsMult(result, getFFTModsTask.Result);
//result = MergeResultsMult(result, getFFTModsTask.Result);
result = MergeResultsMult(result, getSellsDiffsModsTask.Result);
result = MergeResultsMult(result, getTradingModeModsTask.Result);
result = MergeResultsMult(result, getSpeedResultantModsTask.Result);