Refactoring TradingBotBase.cs + clean architecture (#38)
* Refactoring TradingBotBase.cs + clean architecture * Fix basic tests * Fix tests * Fix workers * Fix open positions * Fix closing position stucking the grain * Fix comments * Refactor candle handling to use IReadOnlyList for chronological order preservation across various components
This commit is contained in:
@@ -55,13 +55,13 @@ public static class TradingBox
|
||||
{
|
||||
private static readonly IndicatorComboConfig _defaultConfig = new();
|
||||
|
||||
public static LightSignal GetSignal(HashSet<Candle> newCandles, LightScenario scenario,
|
||||
public static LightSignal GetSignal(IReadOnlyList<Candle> newCandles, LightScenario scenario,
|
||||
Dictionary<string, LightSignal> previousSignal, int? loopbackPeriod = 1)
|
||||
{
|
||||
return GetSignal(newCandles, scenario, previousSignal, _defaultConfig, loopbackPeriod, null);
|
||||
}
|
||||
|
||||
public static LightSignal GetSignal(HashSet<Candle> newCandles, LightScenario scenario,
|
||||
public static LightSignal GetSignal(IReadOnlyList<Candle> newCandles, LightScenario scenario,
|
||||
Dictionary<string, LightSignal> previousSignal, int? loopbackPeriod,
|
||||
Dictionary<IndicatorType, IndicatorsResultBase> preCalculatedIndicatorValues)
|
||||
{
|
||||
@@ -69,13 +69,13 @@ public static class TradingBox
|
||||
preCalculatedIndicatorValues);
|
||||
}
|
||||
|
||||
public static LightSignal GetSignal(HashSet<Candle> newCandles, LightScenario lightScenario,
|
||||
public static LightSignal GetSignal(IReadOnlyList<Candle> newCandles, LightScenario lightScenario,
|
||||
Dictionary<string, LightSignal> previousSignal, IndicatorComboConfig config, int? loopbackPeriod = 1)
|
||||
{
|
||||
return GetSignal(newCandles, lightScenario, previousSignal, config, loopbackPeriod, null);
|
||||
}
|
||||
|
||||
public static LightSignal GetSignal(HashSet<Candle> newCandles, LightScenario lightScenario,
|
||||
public static LightSignal GetSignal(IReadOnlyList<Candle> newCandles, LightScenario lightScenario,
|
||||
Dictionary<string, LightSignal> previousSignal, IndicatorComboConfig config, int? loopbackPeriod,
|
||||
Dictionary<IndicatorType, IndicatorsResultBase> preCalculatedIndicatorValues)
|
||||
{
|
||||
@@ -127,12 +127,11 @@ public static class TradingBox
|
||||
continue;
|
||||
}
|
||||
|
||||
var limitedCandles = newCandles.ToList();
|
||||
// Optimized: limitedCandles is already ordered, no need to re-order
|
||||
// newCandles is already a List and ordered chronologically
|
||||
var loopback = loopbackPeriod.HasValue && loopbackPeriod > 1 ? loopbackPeriod.Value : 1;
|
||||
var candleLoopback = limitedCandles.Count > loopback
|
||||
? limitedCandles.Skip(limitedCandles.Count - loopback).ToList()
|
||||
: limitedCandles;
|
||||
var candleLoopback = newCandles.Count > loopback
|
||||
? newCandles.Skip(newCandles.Count - loopback).ToList()
|
||||
: newCandles.ToList();
|
||||
|
||||
if (!candleLoopback.Any())
|
||||
{
|
||||
@@ -920,7 +919,7 @@ public static class TradingBox
|
||||
/// <returns>A dictionary of indicator types to their calculated values.</returns>
|
||||
public static Dictionary<IndicatorType, IndicatorsResultBase> CalculateIndicatorsValues(
|
||||
Scenario scenario,
|
||||
HashSet<Candle> candles)
|
||||
IReadOnlyList<Candle> candles)
|
||||
{
|
||||
var indicatorsValues = new Dictionary<IndicatorType, IndicatorsResultBase>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user