Добавил точек сброса активов
parent
cdc179b3a5
commit
ac9cb53525
|
@ -20,8 +20,10 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
|||
}
|
||||
var x1 = new List<double>();
|
||||
var y1 = new List<double>();
|
||||
var x1d = new List<DateTime>();
|
||||
var x2 = new List<double>();
|
||||
var y2 = new List<double>();
|
||||
var x2d = new List<DateTime>();
|
||||
var y1_approximated = new List<double>();
|
||||
var y2_approximated = new List<double>();
|
||||
|
||||
|
@ -37,11 +39,13 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
|||
if (dt1 <= lastPeriod)
|
||||
{
|
||||
x2.Add((times[times.Length - i] - firstTime).TotalSeconds);
|
||||
x2d.Add(times[times.Length - i]);
|
||||
y2.Add((double)prices[times.Length - i]);
|
||||
}
|
||||
else if (dt1 <= fullPeriod)
|
||||
{
|
||||
x1.Add((times[times.Length - i] - firstTime).TotalSeconds);
|
||||
x1d.Add(times[times.Length - i]);
|
||||
y1.Add((double)prices[times.Length - i]);
|
||||
}
|
||||
else
|
||||
|
@ -67,13 +71,13 @@ namespace KLHZ.Trader.Core.Math.Declisions.Utils
|
|||
var diff2 = y2_approximated[0] - y2_approximated[y2_approximated.Count - 1];
|
||||
if (diff1 <= -meanfullDiff && diff2 >= meanfullDiff)
|
||||
{
|
||||
res |= TradingEvent.UptrendStart;
|
||||
res |= TradingEvent.DowntrendEnd;
|
||||
}
|
||||
else if (diff1 >= meanfullDiff && diff2 <= 0)
|
||||
else if (diff1 >= meanfullDiff && diff2 <= -meanfullDiff)
|
||||
{
|
||||
res |= TradingEvent.UptrendEnd;
|
||||
}
|
||||
else if (diff1 <= -meanfullDiff && diff2 >= 0)
|
||||
else if (diff1 <= -meanfullDiff && diff2 >= meanfullDiff)
|
||||
{
|
||||
res |= TradingEvent.DowntrendEnd;
|
||||
}
|
||||
|
|
|
@ -574,26 +574,29 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt
|
|||
var resTask1 = GetWindowAverageStartData(data, 30, 180, message, windowMaxSize, 0m, 0.5m);
|
||||
//var resTask3 = GetWindowAverageStartData(data, 30, 180, message, windowMaxSize, 0, 0,0.7m);
|
||||
var getFFTModsTask = GetFFTMods(message);
|
||||
var getLocalTrendsModsTask = GetLocalTrendsMods(data, message);
|
||||
//var getAreasModsTask = GetAreasMods(data, message);
|
||||
var getSellsDiffsModsTask = GetSellsDiffsMods(message);
|
||||
var getTradingModeModsTask = GetTradingModeMods(message);
|
||||
|
||||
await Task.WhenAll(resTask1, getFFTModsTask, getSellsDiffsModsTask, getTradingModeModsTask);
|
||||
await Task.WhenAll(resTask1, getFFTModsTask, getSellsDiffsModsTask, getTradingModeModsTask, getLocalTrendsModsTask);
|
||||
//var assetType = _tradeDataProvider.GetAssetTypeByFigi(message.Figi);
|
||||
//if (resTask1.Result[TradingEvent.UptrendStart] >= 1)
|
||||
//{
|
||||
|
||||
//}
|
||||
|
||||
var result = resTask1.Result;
|
||||
var result = getLocalTrendsModsTask.Result;
|
||||
|
||||
//result = MergeResults(result, resTask2.Result.ToImmutableDictionary());
|
||||
//result = MergeResults(result, resTask3.Result.ToImmutableDictionary());
|
||||
result = MergeResultsMax(result, changeModeData);
|
||||
result = MergeResultsMult(result, getFFTModsTask.Result);
|
||||
//////result = MergeResults(result, getAreasModsTask.Result);
|
||||
//result = MergeResultsMax(result, changeModeData);
|
||||
//result = MergeResultsMax(result, getLocalTrendsModsTask.Result);
|
||||
//result = MergeResultsMult(result, getFFTModsTask.Result);
|
||||
////////result = MergeResults(result, getAreasModsTask.Result);
|
||||
//result = MergeResultsMult(result, getSellsDiffsModsTask.Result);
|
||||
result = MergeResultsMult(result, getTradingModeModsTask.Result);
|
||||
|
||||
//result = MergeResultsMult(result, getTradingModeModsTask.Result);
|
||||
|
||||
if (result[TradingEvent.UptrendStart] >= Constants.UppingCoefficient
|
||||
&& !LongOpeningStops.ContainsKey(message.Figi)
|
||||
|
@ -903,6 +906,23 @@ INewPrice message, int windowMaxSize, decimal uptrendStartingDetectionMeanfullSt
|
|||
}
|
||||
return res.ToImmutableDictionary();
|
||||
}
|
||||
|
||||
private Task<ImmutableDictionary<TradingEvent, decimal>> GetLocalTrendsMods((DateTime[] timestamps, decimal[] prices) data, INewPrice message)
|
||||
{
|
||||
var res = GetInitDict(0);
|
||||
if (LocalTrends.TryGetLocalTrends(data.timestamps, data.prices, TimeSpan.FromSeconds(15), TimeSpan.FromSeconds(15), 0.5, out var localTrends))
|
||||
{
|
||||
if ((localTrends & TradingEvent.UptrendEnd) == TradingEvent.UptrendEnd)
|
||||
{
|
||||
res[TradingEvent.UptrendEnd] = Constants.PowerUppingCoefficient;
|
||||
}
|
||||
if ((localTrends & TradingEvent.DowntrendEnd) == TradingEvent.DowntrendEnd)
|
||||
{
|
||||
res[TradingEvent.DowntrendEnd] = Constants.PowerUppingCoefficient;
|
||||
}
|
||||
}
|
||||
return Task.FromResult(res.ToImmutableDictionary());
|
||||
}
|
||||
|
||||
private async Task<ImmutableDictionary<TradingEvent, decimal>> GetSellsDiffsMods(INewPrice message)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue