фиксация
test / deploy_trader_prod (push) Successful in 2m41s
Details
test / deploy_trader_prod (push) Successful in 2m41s
Details
parent
3afd839265
commit
ac7c985019
|
@ -9,6 +9,7 @@
|
||||||
public decimal Mediana { get; init; }
|
public decimal Mediana { get; init; }
|
||||||
public decimal Upper30Decil { get; init; }
|
public decimal Upper30Decil { get; init; }
|
||||||
public decimal Lower20Decil { get; init; }
|
public decimal Lower20Decil { get; init; }
|
||||||
|
public int Length { get; init; }
|
||||||
public DateTime LastTime { get; init; }
|
public DateTime LastTime { get; init; }
|
||||||
public DateTime StartTime { get; init; }
|
public DateTime StartTime { get; init; }
|
||||||
public bool IsEmpty => this == Empty;
|
public bool IsEmpty => this == Empty;
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
using KLHZ.Trader.Core.Math.Declisions.Dtos.FFT.Enums;
|
using KLHZ.Trader.Core.Math.Declisions.Dtos.FFT.Enums;
|
||||||
using MathNet.Numerics;
|
using MathNet.Numerics;
|
||||||
using MathNet.Numerics.IntegralTransforms;
|
using MathNet.Numerics.IntegralTransforms;
|
||||||
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
|
|
||||||
namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
||||||
{
|
{
|
||||||
|
@ -51,6 +52,48 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
||||||
Lower20Decil = newValues[(int)(newValues.Length * 0.2)],
|
Lower20Decil = newValues[(int)(newValues.Length * 0.2)],
|
||||||
Max = newValues.Max(),
|
Max = newValues.Max(),
|
||||||
Min = newValues.Min(),
|
Min = newValues.Min(),
|
||||||
|
Length = values.Length,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FFTAnalyzeResult ReAnalyze(FFTAnalyzeResult result, string key, TimeSpan minPeriod, TimeSpan maxPeriod)
|
||||||
|
{
|
||||||
|
var tmp = new List<Harmonic>();
|
||||||
|
for (int i = 0; i < result.Harmonics.Length; i++)
|
||||||
|
{
|
||||||
|
var per = CaclHarmonycPeriod(result.LastTime - result.StartTime, result.Length, i);
|
||||||
|
if (per >= minPeriod && per <= maxPeriod)
|
||||||
|
{
|
||||||
|
tmp.Add(result.Harmonics[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var harms = tmp.ToArray();
|
||||||
|
var newValues = new decimal[result.Length];
|
||||||
|
var newValues2 = new decimal[result.Length];
|
||||||
|
var time = result.StartTime;
|
||||||
|
var dt = (result.LastTime - result.StartTime).TotalSeconds / result.Length;
|
||||||
|
for (int i = 0; i < result.Length; i++)
|
||||||
|
{
|
||||||
|
var currentTime = time.AddSeconds(i* dt);
|
||||||
|
newValues[i] = (decimal)CalcAmplitude(harms, result.StartTime, currentTime);
|
||||||
|
newValues2[i] = (decimal)CalcExtremum(harms, result.StartTime, currentTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
newValues = newValues.Order().ToArray();
|
||||||
|
var ma = newValues2.Max();
|
||||||
|
var mi = newValues2.Min();
|
||||||
|
return new FFTAnalyzeResult()
|
||||||
|
{
|
||||||
|
Key = key,
|
||||||
|
Harmonics = harms,
|
||||||
|
LastTime = result.LastTime,
|
||||||
|
StartTime = result.StartTime,
|
||||||
|
Mediana = newValues[newValues.Length / 2],
|
||||||
|
Upper30Decil = newValues[(int)(newValues.Length * 0.7)],
|
||||||
|
Lower20Decil = newValues[(int)(newValues.Length * 0.2)],
|
||||||
|
Max = newValues.Max(),
|
||||||
|
Min = newValues.Min(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -117,8 +117,10 @@ namespace KLHZ.Trader.Core.Exchange.Services
|
||||||
if (data.isFullIntervalExists)
|
if (data.isFullIntervalExists)
|
||||||
{
|
{
|
||||||
var interpolatedData = SignalProcessing.InterpolateData(data.timestamps, data.prices, TimeSpan.FromSeconds(5));
|
var interpolatedData = SignalProcessing.InterpolateData(data.timestamps, data.prices, TimeSpan.FromSeconds(5));
|
||||||
fft = FFT.Analyze(interpolatedData.timestamps, interpolatedData.values, message.Figi, TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(40));
|
var fftFull = FFT.Analyze(interpolatedData.timestamps, interpolatedData.values, message.Figi+"_full", TimeSpan.FromSeconds(15), TimeSpan.FromHours(24));
|
||||||
|
fft = FFT.ReAnalyze(fftFull, message.Figi, TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(40));
|
||||||
await _tradeDataProvider.SetFFtResult(fft);
|
await _tradeDataProvider.SetFFtResult(fft);
|
||||||
|
await _tradeDataProvider.SetFFtResult(fftFull);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue