Отключил использование FFT
test / deploy_trader_prod (push) Successful in 7m11s
Details
test / deploy_trader_prod (push) Successful in 7m11s
Details
parent
5b9879cc09
commit
23c0dd886b
|
@ -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];
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue