Add synthApi (#27)
* Add synthApi * Put confidence for Synth proba * Update the code * Update readme * Fix bootstraping * fix github build * Update the endpoints for scenario * Add scenario and update backtest modal * Update bot modal * Update interfaces for synth * add synth to backtest * Add Kelly criterion and better signal * Update signal confidence * update doc * save leaderboard and prediction * Update nswag to generate ApiClient in the correct path * Unify the trading modal * Save miner and prediction * Update messaging and block new signal until position not close when flipping off * Rename strategies to indicators * Update doc * Update chart + add signal name * Fix signal direction * Update docker webui * remove crypto npm * Clean
This commit is contained in:
@@ -73,7 +73,7 @@ public class StDevContext : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
var test = new IndicatorsResultBase()
|
||||
{
|
||||
@@ -119,7 +119,7 @@ public class StDevContext : Indicator
|
||||
candleSignal,
|
||||
candleSignal.Date,
|
||||
candleSignal.Exchange,
|
||||
Type, SignalType);
|
||||
Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Managing.Domain.Strategies
|
||||
FixedSizeQueue<Candle> Candles { get; set; }
|
||||
|
||||
List<Signal> Run();
|
||||
IndicatorsResultBase GetStrategyValues();
|
||||
IndicatorsResultBase GetIndicatorValues();
|
||||
void UpdateCandles(HashSet<Candle> newCandles);
|
||||
string GetName();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text.Json.Serialization;
|
||||
using Managing.Core.FixedSizedQueue;
|
||||
using Managing.Domain.Candles;
|
||||
using Managing.Domain.Scenarios;
|
||||
@@ -19,7 +20,7 @@ namespace Managing.Domain.Strategies
|
||||
}
|
||||
|
||||
public string Name { get; set; }
|
||||
[JsonIgnore] public FixedSizeQueue<Candle> Candles { get; set; }
|
||||
[JsonIgnore] [IgnoreDataMember] public FixedSizeQueue<Candle> Candles { get; set; }
|
||||
public IndicatorType Type { get; set; }
|
||||
public SignalType SignalType { get; set; }
|
||||
public int MinimumHistory { get; set; }
|
||||
@@ -38,7 +39,7 @@ namespace Managing.Domain.Strategies
|
||||
return new List<Signal>();
|
||||
}
|
||||
|
||||
public virtual IndicatorsResultBase GetStrategyValues()
|
||||
public virtual IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase();
|
||||
}
|
||||
|
||||
@@ -21,9 +21,11 @@ namespace Managing.Domain.Strategies
|
||||
[Required] public IndicatorType IndicatorType { get; set; }
|
||||
[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, User user = null)
|
||||
TradingExchanges exchange, IndicatorType indicatorType, SignalType signalType, string indicatorName,
|
||||
User user = null)
|
||||
{
|
||||
Direction = direction;
|
||||
Confidence = confidence;
|
||||
@@ -34,10 +36,11 @@ namespace Managing.Domain.Strategies
|
||||
Status = SignalStatus.WaitingForPosition;
|
||||
IndicatorType = indicatorType;
|
||||
User = user;
|
||||
IndicatorName = indicatorName;
|
||||
SignalType = signalType;
|
||||
|
||||
Identifier =
|
||||
$"{IndicatorType}-{direction}-{ticker}-{candle?.Close.ToString(CultureInfo.InvariantCulture)}-{date:yyyyMMdd-HHmmss}";
|
||||
SignalType = signalType;
|
||||
$"{indicatorName}-{indicatorType}-{direction}-{ticker}-{candle?.Close.ToString(CultureInfo.InvariantCulture)}-{date:yyyyMMdd-HHmmss}";
|
||||
}
|
||||
|
||||
public void SetConfidence(Confidence confidence)
|
||||
|
||||
@@ -40,7 +40,7 @@ public class ChandelierExitIndicator : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -113,7 +113,8 @@ public class ChandelierExitIndicator : Indicator
|
||||
candleSignal,
|
||||
candleSignal.Date,
|
||||
candleSignal.Exchange,
|
||||
Type, SignalType);
|
||||
Type, SignalType,
|
||||
Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -19,7 +19,7 @@ public class DualEmaCrossIndicator : EmaBaseIndicator
|
||||
MinimumHistory = Math.Max(fastPeriod, slowPeriod) * 2;
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -104,7 +104,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,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType);
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -16,7 +16,7 @@ public class EmaCrossIndicator : EmaBaseIndicator
|
||||
Period = period;
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -68,7 +68,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,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType);
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -89,7 +89,7 @@ public class LaggingSTC : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
var stc = Candles.GetStc(FastPeriods.Value, FastPeriods.Value, SlowPeriods.Value).ToList();
|
||||
return new IndicatorsResultBase
|
||||
@@ -130,7 +130,8 @@ public class LaggingSTC : Indicator
|
||||
candleSignal,
|
||||
candleSignal.Date,
|
||||
candleSignal.Exchange,
|
||||
Type, SignalType);
|
||||
Type, SignalType,
|
||||
Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -59,7 +59,7 @@ public class MacdCrossIndicator : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -96,7 +96,7 @@ public class MacdCrossIndicator : Indicator
|
||||
Confidence confidence)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType);
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -49,7 +49,7 @@ public class RsiDivergenceConfirmIndicator : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -233,7 +233,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,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType);
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -52,7 +52,7 @@ public class RsiDivergenceIndicator : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -206,7 +206,7 @@ public class RsiDivergenceIndicator : Indicator
|
||||
private void AddSignal(CandleRsi candleSignal, TradeDirection direction)
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, Confidence.Low,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType);
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
|
||||
if (Signals.Count(s => s.Identifier == signal.Identifier) < 1)
|
||||
{
|
||||
|
||||
@@ -64,7 +64,7 @@ public class StcIndicator : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
if (FastPeriods != null && SlowPeriods != null)
|
||||
{
|
||||
@@ -110,7 +110,8 @@ public class StcIndicator : Indicator
|
||||
candleSignal,
|
||||
candleSignal.Date,
|
||||
candleSignal.Exchange,
|
||||
Type, SignalType);
|
||||
Type, SignalType,
|
||||
Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -157,7 +157,7 @@ public class SuperTrendCrossEma : Indicator
|
||||
return superTrends;
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -171,7 +171,7 @@ public class SuperTrendCrossEma : Indicator
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date,
|
||||
candleSignal.Exchange, Type, SignalType);
|
||||
candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -61,7 +61,7 @@ public class SuperTrendIndicator : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -99,7 +99,7 @@ public class SuperTrendIndicator : Indicator
|
||||
{
|
||||
var signal = new Signal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
|
||||
candleSignal, candleSignal.Date,
|
||||
candleSignal.Exchange, Type, SignalType);
|
||||
candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace Managing.Domain.Strategies.Signals
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public class EmaTrendIndicator : EmaBaseIndicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -65,7 +65,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,
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType);
|
||||
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
@@ -65,7 +65,7 @@ public class StochRsiTrendIndicator : Indicator
|
||||
}
|
||||
}
|
||||
|
||||
public override IndicatorsResultBase GetStrategyValues()
|
||||
public override IndicatorsResultBase GetIndicatorValues()
|
||||
{
|
||||
return new IndicatorsResultBase()
|
||||
{
|
||||
@@ -108,7 +108,8 @@ public class StochRsiTrendIndicator : Indicator
|
||||
candleSignal.Date,
|
||||
candleSignal.Exchange,
|
||||
Type,
|
||||
SignalType);
|
||||
SignalType,
|
||||
Name);
|
||||
if (!Signals.Any(s => s.Identifier == signal.Identifier))
|
||||
{
|
||||
Signals.AddItem(signal);
|
||||
|
||||
Reference in New Issue
Block a user