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:
@@ -25,7 +25,7 @@ public class RsiDivergenceIndicatorBase : IndicatorBase
|
||||
/// Get RSI signals
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override List<LightSignal> Run(HashSet<Candle> candles)
|
||||
public override List<LightSignal> Run(IReadOnlyList<Candle> candles)
|
||||
{
|
||||
if (!Period.HasValue || candles.Count <= Period)
|
||||
{
|
||||
@@ -51,7 +51,7 @@ public class RsiDivergenceIndicatorBase : IndicatorBase
|
||||
/// <summary>
|
||||
/// Runs the indicator using pre-calculated RSI values for performance optimization.
|
||||
/// </summary>
|
||||
public override List<LightSignal> Run(HashSet<Candle> candles, IndicatorsResultBase preCalculatedValues)
|
||||
public override List<LightSignal> Run(IReadOnlyList<Candle> candles, IndicatorsResultBase preCalculatedValues)
|
||||
{
|
||||
if (!Period.HasValue || candles.Count <= Period)
|
||||
{
|
||||
@@ -93,7 +93,7 @@ public class RsiDivergenceIndicatorBase : IndicatorBase
|
||||
/// </summary>
|
||||
/// <param name="rsiResult">List of RSI calculation results</param>
|
||||
/// <param name="candles">Candles to process</param>
|
||||
private void ProcessRsiDivergenceSignals(List<RsiResult> rsiResult, HashSet<Candle> candles)
|
||||
private void ProcessRsiDivergenceSignals(List<RsiResult> rsiResult, IReadOnlyList<Candle> candles)
|
||||
{
|
||||
var candlesRsi = MapRsiToCandle(rsiResult, candles.TakeLast(10 * Period.Value));
|
||||
|
||||
@@ -104,7 +104,7 @@ public class RsiDivergenceIndicatorBase : IndicatorBase
|
||||
GetShortSignals(candlesRsi, candles);
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetIndicatorValues(HashSet<Candle> candles)
|
||||
public override IndicatorsResultBase GetIndicatorValues(IReadOnlyList<Candle> candles)
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -112,7 +112,7 @@ public class RsiDivergenceIndicatorBase : IndicatorBase
|
||||
};
|
||||
}
|
||||
|
||||
private void GetLongSignals(List<CandleRsi> candlesRsi, HashSet<Candle> candles)
|
||||
private void GetLongSignals(List<CandleRsi> candlesRsi, IReadOnlyList<Candle> candles)
|
||||
{
|
||||
// Set the low and high for first candle
|
||||
var firstCandleRsi = candlesRsi.First(c => c.Rsi > 0);
|
||||
@@ -183,7 +183,7 @@ public class RsiDivergenceIndicatorBase : IndicatorBase
|
||||
}
|
||||
}
|
||||
|
||||
private void GetShortSignals(List<CandleRsi> candlesRsi, HashSet<Candle> candles)
|
||||
private void GetShortSignals(List<CandleRsi> candlesRsi, IReadOnlyList<Candle> candles)
|
||||
{
|
||||
// Set the low and high for first candle
|
||||
var firstCandleRsi = candlesRsi.First(c => c.Rsi > 0);
|
||||
@@ -255,7 +255,7 @@ public class RsiDivergenceIndicatorBase : IndicatorBase
|
||||
}
|
||||
}
|
||||
|
||||
private void AddSignal(CandleRsi candleSignal, TradeDirection direction, HashSet<Candle> candles)
|
||||
private void AddSignal(CandleRsi candleSignal, TradeDirection direction, IReadOnlyList<Candle> candles)
|
||||
{
|
||||
var signal = new LightSignal(candleSignal.Ticker, direction, Confidence.Low,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
|
||||
Reference in New Issue
Block a user