Postgres (#30)
* Add postgres * Migrate users * Migrate geneticRequest * Try to fix Concurrent call * Fix asyncawait * Fix async and concurrent * Migrate backtests * Add cache for user by address * Fix backtest migration * Fix not open connection * Fix backtest command error * Fix concurrent * Fix all concurrency * Migrate TradingRepo * Fix scenarios * Migrate statistic repo * Save botbackup * Add settings et moneymanagement * Add bot postgres * fix a bit more backups * Fix bot model * Fix loading backup * Remove cache market for read positions * Add workers to postgre * Fix workers api * Reduce get Accounts for workers * Migrate synth to postgre * Fix backtest saved * Remove mongodb * botservice decorrelation * Fix tradingbot scope call * fix tradingbot * fix concurrent * Fix scope for genetics * Fix account over requesting * Fix bundle backtest worker * fix a lot of things * fix tab backtest * Remove optimized moneymanagement * Add light signal to not use User and too much property * Make money management lighter * insert indicators to awaitable * Migrate add strategies to await * Refactor scenario and indicator retrieval to use asynchronous methods throughout the application * add more async await * Add services * Fix and clean * Fix bot a bit * Fix bot and add message for cooldown * Remove fees * Add script to deploy db * Update dfeeploy script * fix script * Add idempotent script and backup * finish script migration * Fix did user and agent name on start bot
This commit is contained in:
@@ -9,15 +9,15 @@ namespace Managing.Domain.Strategies.Context;
|
||||
|
||||
public class StDevContext : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public StDevContext(string name, int period) : base(name, IndicatorType.StDev)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
Period = period;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= Period)
|
||||
{
|
||||
@@ -112,7 +112,7 @@ public class StDevContext : Indicator
|
||||
private void AddSignal(CandleStDev candleSignal, TradeDirection direction,
|
||||
Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(
|
||||
var signal = new LightSignal(
|
||||
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
|
||||
direction,
|
||||
confidence,
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Managing.Domain.Strategies
|
||||
int? SignalPeriods { get; set; }
|
||||
FixedSizeQueue<Candle> Candles { get; set; }
|
||||
|
||||
List<Signal> Run();
|
||||
List<LightSignal> Run();
|
||||
IndicatorsResultBase GetIndicatorValues();
|
||||
void UpdateCandles(HashSet<Candle> newCandles);
|
||||
string GetName();
|
||||
|
||||
@@ -34,9 +34,9 @@ namespace Managing.Domain.Strategies
|
||||
public int? CyclePeriods { get; set; }
|
||||
public User User { get; set; }
|
||||
|
||||
public virtual List<Signal> Run()
|
||||
public virtual List<LightSignal> Run()
|
||||
{
|
||||
return new List<Signal>();
|
||||
return new List<LightSignal>();
|
||||
}
|
||||
|
||||
public virtual IndicatorsResultBase GetIndicatorValues()
|
||||
|
||||
51
src/Managing.Domain/Strategies/LightSignal.cs
Normal file
51
src/Managing.Domain/Strategies/LightSignal.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Globalization;
|
||||
using Managing.Core;
|
||||
using Managing.Domain.Candles;
|
||||
using static Managing.Common.Enums;
|
||||
|
||||
public class LightSignal : ValueObject
|
||||
{
|
||||
public LightSignal(Ticker ticker, TradeDirection direction, Confidence confidence, Candle candle, DateTime date,
|
||||
TradingExchanges exchange, IndicatorType indicatorType, SignalType signalType, string indicatorName)
|
||||
{
|
||||
Direction = direction;
|
||||
Confidence = confidence;
|
||||
Candle = candle;
|
||||
Date = date;
|
||||
Ticker = ticker;
|
||||
Exchange = exchange;
|
||||
Status = SignalStatus.WaitingForPosition;
|
||||
IndicatorType = indicatorType;
|
||||
IndicatorName = indicatorName;
|
||||
SignalType = signalType;
|
||||
|
||||
Identifier =
|
||||
$"{indicatorName}-{indicatorType}-{direction}-{ticker}-{candle?.Close.ToString(CultureInfo.InvariantCulture)}-{date:yyyyMMdd-HHmmss}";
|
||||
}
|
||||
|
||||
[Required] public SignalStatus Status { get; set; }
|
||||
[Required] public TradeDirection Direction { get; }
|
||||
[Required] public Confidence Confidence { get; set; }
|
||||
[Required] public Timeframe Timeframe { get; }
|
||||
[Required] public DateTime Date { get; private set; }
|
||||
[Required] public Candle Candle { get; }
|
||||
[Required] public string Identifier { get; }
|
||||
[Required] public Ticker Ticker { get; }
|
||||
[Required] public TradingExchanges Exchange { get; set; }
|
||||
[Required] public IndicatorType IndicatorType { get; set; }
|
||||
[Required] public SignalType SignalType { get; set; }
|
||||
[Required] public string IndicatorName { get; set; }
|
||||
|
||||
protected override IEnumerable<object> GetEqualityComponents()
|
||||
{
|
||||
yield return Direction;
|
||||
yield return Confidence;
|
||||
yield return Date;
|
||||
}
|
||||
|
||||
public void SetConfidence(Confidence confidence)
|
||||
{
|
||||
Confidence = confidence;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,20 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Globalization;
|
||||
using Managing.Core;
|
||||
using Managing.Domain.Candles;
|
||||
using Managing.Domain.Users;
|
||||
using static Managing.Common.Enums;
|
||||
|
||||
namespace Managing.Domain.Strategies
|
||||
{
|
||||
public class Signal : ValueObject
|
||||
public class Signal : LightSignal
|
||||
{
|
||||
public Signal(Ticker ticker, TradeDirection direction, Confidence confidence, Candle candle, DateTime date,
|
||||
TradingExchanges exchange, IndicatorType indicatorType, SignalType signalType, string indicatorName,
|
||||
User user)
|
||||
: base(ticker, direction, confidence, candle, date, exchange, indicatorType, signalType, indicatorName)
|
||||
{
|
||||
User = user;
|
||||
}
|
||||
|
||||
[Required] public SignalStatus Status { get; set; }
|
||||
[Required] public TradeDirection Direction { get; }
|
||||
[Required] public Confidence Confidence { get; private set; }
|
||||
@@ -22,37 +28,5 @@ namespace Managing.Domain.Strategies
|
||||
[Required] public SignalType SignalType { get; set; }
|
||||
public User User { get; set; }
|
||||
[Required] public string IndicatorName { get; set; }
|
||||
|
||||
public Signal(Ticker ticker, TradeDirection direction, Confidence confidence, Candle candle, DateTime date,
|
||||
TradingExchanges exchange, IndicatorType indicatorType, SignalType signalType, string indicatorName,
|
||||
User user = null)
|
||||
{
|
||||
Direction = direction;
|
||||
Confidence = confidence;
|
||||
Candle = candle;
|
||||
Date = date;
|
||||
Ticker = ticker;
|
||||
Exchange = exchange;
|
||||
Status = SignalStatus.WaitingForPosition;
|
||||
IndicatorType = indicatorType;
|
||||
User = user;
|
||||
IndicatorName = indicatorName;
|
||||
SignalType = signalType;
|
||||
|
||||
Identifier =
|
||||
$"{indicatorName}-{indicatorType}-{direction}-{ticker}-{candle?.Close.ToString(CultureInfo.InvariantCulture)}-{date:yyyyMMdd-HHmmss}";
|
||||
}
|
||||
|
||||
public void SetConfidence(Confidence confidence)
|
||||
{
|
||||
Confidence = confidence;
|
||||
}
|
||||
|
||||
protected override IEnumerable<object> GetEqualityComponents()
|
||||
{
|
||||
yield return Direction;
|
||||
yield return Confidence;
|
||||
yield return Date;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,18 +9,18 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class ChandelierExitIndicator : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public ChandelierExitIndicator(string name, int period, double multiplier) : base(name,
|
||||
IndicatorType.ChandelierExit)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
Period = period;
|
||||
Multiplier = multiplier;
|
||||
MinimumHistory = 1 + Period.Value;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= MinimumHistory)
|
||||
{
|
||||
@@ -106,7 +106,7 @@ public class ChandelierExitIndicator : Indicator
|
||||
private void AddSignal(CandleChandelier candleSignal, TradeDirection direction,
|
||||
Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(
|
||||
var signal = new LightSignal(
|
||||
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
|
||||
direction,
|
||||
confidence,
|
||||
|
||||
@@ -9,11 +9,11 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class DualEmaCrossIndicator : EmaBaseIndicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public DualEmaCrossIndicator(string name, int fastPeriod, int slowPeriod) : base(name, IndicatorType.DualEmaCross)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
FastPeriods = fastPeriod;
|
||||
SlowPeriods = slowPeriod;
|
||||
MinimumHistory = Math.Max(fastPeriod, slowPeriod) * 2;
|
||||
@@ -28,7 +28,7 @@ public class DualEmaCrossIndicator : EmaBaseIndicator
|
||||
};
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= MinimumHistory)
|
||||
{
|
||||
@@ -103,7 +103,7 @@ public class DualEmaCrossIndicator : EmaBaseIndicator
|
||||
|
||||
private void AddSignal(CandleDualEma candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
|
||||
@@ -8,11 +8,11 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class EmaCrossIndicator : EmaBaseIndicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public EmaCrossIndicator(string name, int period) : base(name, IndicatorType.EmaCross)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
Period = period;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ public class EmaCrossIndicator : EmaBaseIndicator
|
||||
};
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= Period)
|
||||
{
|
||||
@@ -67,7 +67,7 @@ public class EmaCrossIndicator : EmaBaseIndicator
|
||||
|
||||
private void AddSignal(CandleEma candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
|
||||
@@ -16,18 +16,18 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
/// </summary>
|
||||
public class LaggingSTC : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public LaggingSTC(string name, int cyclePeriods, int fastPeriods, int slowPeriods) : base(name,
|
||||
IndicatorType.LaggingStc)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
FastPeriods = fastPeriods;
|
||||
SlowPeriods = slowPeriods;
|
||||
CyclePeriods = cyclePeriods;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= 2 * (SlowPeriods + CyclePeriods))
|
||||
{
|
||||
@@ -123,7 +123,7 @@ public class LaggingSTC : Indicator
|
||||
|
||||
private void AddSignal(CandleSct candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(
|
||||
var signal = new LightSignal(
|
||||
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
|
||||
direction,
|
||||
confidence,
|
||||
|
||||
@@ -9,18 +9,18 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class MacdCrossIndicator : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public MacdCrossIndicator(string name, int fastPeriods, int slowPeriods, int signalPeriods) :
|
||||
base(name, IndicatorType.MacdCross)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
FastPeriods = fastPeriods;
|
||||
SlowPeriods = slowPeriods;
|
||||
SignalPeriods = signalPeriods;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= 2 * (SlowPeriods + SignalPeriods))
|
||||
{
|
||||
@@ -104,7 +104,7 @@ public class MacdCrossIndicator : Indicator
|
||||
private void AddSignal(CandleMacd candleSignal, TradeDirection direction,
|
||||
Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
|
||||
@@ -9,19 +9,19 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class RsiDivergenceConfirmIndicator : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public RsiDivergenceConfirmIndicator(string name, int period) : base(name, IndicatorType.RsiDivergenceConfirm)
|
||||
{
|
||||
Period = period;
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get RSI signals
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= Period)
|
||||
{
|
||||
@@ -232,7 +232,7 @@ public class RsiDivergenceConfirmIndicator : Indicator
|
||||
|
||||
private void AddSignal(CandleRsi candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class RsiDivergenceIndicator : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
public TradeDirection Direction { get; set; }
|
||||
private const int UpperBand = 70;
|
||||
private const int LowerBand = 30;
|
||||
@@ -17,14 +17,14 @@ public class RsiDivergenceIndicator : Indicator
|
||||
public RsiDivergenceIndicator(string name, int period) : base(name, IndicatorType.RsiDivergence)
|
||||
{
|
||||
Period = period;
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get RSI signals
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (!Period.HasValue || Candles.Count <= Period)
|
||||
{
|
||||
@@ -205,7 +205,7 @@ public class RsiDivergenceIndicator : Indicator
|
||||
|
||||
private void AddSignal(CandleRsi candleSignal, TradeDirection direction)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, Confidence.Low,
|
||||
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, Confidence.Low,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
|
||||
if (Signals.Count(s => s.Identifier == signal.Identifier) < 1)
|
||||
|
||||
@@ -9,17 +9,17 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class StcIndicator : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public StcIndicator(string name, int cyclePeriods, int fastPeriods, int slowPeriods) : base(name, IndicatorType.Stc)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
FastPeriods = fastPeriods;
|
||||
SlowPeriods = slowPeriods;
|
||||
CyclePeriods = cyclePeriods;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= 2 * (SlowPeriods + CyclePeriods))
|
||||
{
|
||||
@@ -103,7 +103,7 @@ public class StcIndicator : Indicator
|
||||
|
||||
private void AddSignal(CandleSct candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(
|
||||
var signal = new LightSignal(
|
||||
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
|
||||
direction,
|
||||
confidence,
|
||||
|
||||
@@ -9,17 +9,17 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class SuperTrendCrossEma : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public SuperTrendCrossEma(string name, int period, double multiplier) : base(name, IndicatorType.SuperTrendCrossEma)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
Period = period;
|
||||
Multiplier = multiplier;
|
||||
MinimumHistory = 100 + Period.Value;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
// Validate sufficient historical data for all indicators
|
||||
const int emaPeriod = 50;
|
||||
@@ -169,7 +169,7 @@ public class SuperTrendCrossEma : Indicator
|
||||
|
||||
private void AddSignal(CandleSuperTrend candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date,
|
||||
candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
|
||||
@@ -9,17 +9,17 @@ namespace Managing.Domain.Strategies.Signals;
|
||||
|
||||
public class SuperTrendIndicator : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public SuperTrendIndicator(string name, int period, double multiplier) : base(name, IndicatorType.SuperTrend)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
Period = period;
|
||||
Multiplier = multiplier;
|
||||
MinimumHistory = 100 + Period.Value;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= MinimumHistory)
|
||||
{
|
||||
@@ -106,7 +106,7 @@ public class SuperTrendIndicator : Indicator
|
||||
|
||||
private void AddSignal(CandleSuperTrend candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date,
|
||||
candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
|
||||
@@ -16,9 +16,9 @@ namespace Managing.Domain.Strategies.Signals
|
||||
|
||||
public TradeDirection Direction { get; }
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
var signals = new List<Signal>();
|
||||
var signals = new List<LightSignal>();
|
||||
|
||||
if (Candles.Count <= 3)
|
||||
{
|
||||
|
||||
@@ -8,15 +8,15 @@ namespace Managing.Domain.Strategies.Trends;
|
||||
|
||||
public class EmaTrendIndicator : EmaBaseIndicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public EmaTrendIndicator(string name, int period) : base(name, IndicatorType.EmaTrend)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
Period = period;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= 2 * Period)
|
||||
{
|
||||
@@ -64,7 +64,7 @@ public class EmaTrendIndicator : EmaBaseIndicator
|
||||
|
||||
public void AddSignal(CandleEma candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Managing.Domain.Strategies.Trends;
|
||||
|
||||
public class StochRsiTrendIndicator : Indicator
|
||||
{
|
||||
public List<Signal> Signals { get; set; }
|
||||
public List<LightSignal> Signals { get; set; }
|
||||
|
||||
public StochRsiTrendIndicator(
|
||||
string name,
|
||||
@@ -18,14 +18,14 @@ public class StochRsiTrendIndicator : Indicator
|
||||
int signalPeriod,
|
||||
int smoothPeriods) : base(name, IndicatorType.StochRsiTrend)
|
||||
{
|
||||
Signals = new List<Signal>();
|
||||
Signals = new List<LightSignal>();
|
||||
StochPeriods = stochPeriod;
|
||||
SignalPeriods = signalPeriod;
|
||||
SmoothPeriods = smoothPeriods;
|
||||
Period = period;
|
||||
}
|
||||
|
||||
public override List<Signal> Run()
|
||||
public override List<LightSignal> Run()
|
||||
{
|
||||
if (Candles.Count <= 10 * Period + 50)
|
||||
{
|
||||
@@ -100,7 +100,7 @@ public class StochRsiTrendIndicator : Indicator
|
||||
|
||||
private void AddSignal(CandleStochRsi candleSignal, TradeDirection direction, Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(
|
||||
var signal = new LightSignal(
|
||||
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
|
||||
direction,
|
||||
confidence,
|
||||
|
||||
Reference in New Issue
Block a user