Price reminder and init approval

* Start price reminder grain

* Add config and init grain at startup

* Save init wallet when already init
This commit is contained in:
Oda
2025-09-13 02:29:14 +07:00
committed by GitHub
parent da50b30344
commit 56b4f14eb3
69 changed files with 2373 additions and 701 deletions

View File

@@ -28,6 +28,9 @@ public class Account
[Id(6)]
public List<Balance> Balances { get; set; }
[Id(7)]
public bool IsGmxInitialized { get; set; } = false;
public bool IsPrivyWallet => Type == AccountType.Privy;
}

View File

@@ -0,0 +1,14 @@
using Orleans;
using static Managing.Common.Enums;
namespace Managing.Domain.Accounts;
[GenerateSerializer]
public class ExchangeApprovalStatus
{
[Id(0)]
public TradingExchanges Exchange { get; set; }
[Id(1)]
public bool IsApproved { get; set; }
}

View File

@@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations;
using Managing.Common;
using Orleans;
using Skender.Stock.Indicators;
using static Managing.Common.Enums;
namespace Managing.Domain.Candles
{
@@ -9,10 +9,10 @@ namespace Managing.Domain.Candles
public class Candle : IQuote
{
[Id(0)]
[Required] public Enums.TradingExchanges Exchange { get; set; }
[Required] public TradingExchanges Exchange { get; set; }
[Id(1)]
[Required] public string Ticker { get; set; }
[Required] public Ticker Ticker { get; set; }
[Id(2)]
[Required] public DateTime OpenTime { get; set; }
@@ -33,7 +33,7 @@ namespace Managing.Domain.Candles
[Required] public decimal Low { get; set; }
[Id(8)]
[Required] public Enums.Timeframe Timeframe { get; set; }
[Required] public Timeframe Timeframe { get; set; }
[Id(9)]
public decimal Volume { get; set; }

View File

@@ -8,4 +8,6 @@ public class PrivyInitAddressResponse
public string? OrderVaultHash { get; set; }
public string? ExchangeRouterHash { get; set; }
public string? Error { get; set; }
public string? Address { get; set; }
public bool IsAlreadyInitialized { get; set; }
}

View File

@@ -114,7 +114,7 @@ public class StDevContext : IndicatorBase
Confidence confidence)
{
var signal = new LightSignal(
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
candleSignal.Ticker,
direction,
confidence,
candleSignal,

View File

@@ -108,7 +108,7 @@ public class ChandelierExitIndicatorBase : IndicatorBase
Confidence confidence)
{
var signal = new LightSignal(
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
candleSignal.Ticker,
direction,
confidence,
candleSignal,

View File

@@ -105,7 +105,7 @@ public class DualEmaCrossIndicatorBase : EmaBaseIndicatorBase
private void AddSignal(CandleDualEma candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
var signal = new LightSignal(candleSignal.Ticker, direction, confidence,
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
if (!Signals.Any(s => s.Identifier == signal.Identifier))
{

View File

@@ -69,7 +69,7 @@ public class EmaCrossIndicator : EmaBaseIndicatorBase
private void AddSignal(CandleEma candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
var signal = new LightSignal(candleSignal.Ticker, direction, confidence,
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
if (!Signals.Any(s => s.Identifier == signal.Identifier))
{

View File

@@ -69,7 +69,7 @@ public class EmaCrossIndicatorBase : EmaBaseIndicatorBase
private void AddSignal(CandleEma candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
var signal = new LightSignal(candleSignal.Ticker, direction, confidence,
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
if (!Signals.Any(s => s.Identifier == signal.Identifier))
{

View File

@@ -125,7 +125,7 @@ public class LaggingSTC : IndicatorBase
private void AddSignal(CandleSct candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
candleSignal.Ticker,
direction,
confidence,
candleSignal,

View File

@@ -105,7 +105,7 @@ public class MacdCrossIndicatorBase : IndicatorBase
private void AddSignal(CandleMacd candleSignal, TradeDirection direction,
Confidence confidence)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
var signal = new LightSignal(candleSignal.Ticker, direction, confidence,
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
if (!Signals.Any(s => s.Identifier == signal.Identifier))
{

View File

@@ -233,7 +233,7 @@ public class RsiDivergenceConfirmIndicatorBase : IndicatorBase
private void AddSignal(CandleRsi candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
var signal = new LightSignal(candleSignal.Ticker, direction, confidence,
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
if (!Signals.Any(s => s.Identifier == signal.Identifier))
{

View File

@@ -206,7 +206,7 @@ public class RsiDivergenceIndicatorBase : IndicatorBase
private void AddSignal(CandleRsi candleSignal, TradeDirection direction, HashSet<Candle> candles)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, Confidence.Low,
var signal = new LightSignal(candleSignal.Ticker, direction, Confidence.Low,
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
if (Signals.Count(s => s.Identifier == signal.Identifier) < 1)

View File

@@ -106,7 +106,7 @@ public class StcIndicatorBase : IndicatorBase
private void AddSignal(CandleSct candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
candleSignal.Ticker,
direction,
confidence,
candleSignal,

View File

@@ -170,7 +170,7 @@ public class SuperTrendCrossEma : IndicatorBase
private void AddSignal(CandleSuperTrend candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
var signal = new LightSignal(candleSignal.Ticker, direction, confidence,
candleSignal, candleSignal.Date,
candleSignal.Exchange, Type, SignalType, Name);
if (!Signals.Any(s => s.Identifier == signal.Identifier))

View File

@@ -107,7 +107,7 @@ public class SuperTrendIndicatorBase : IndicatorBase
private void AddSignal(CandleSuperTrend candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
var signal = new LightSignal(candleSignal.Ticker, direction, confidence,
candleSignal, candleSignal.Date,
candleSignal.Exchange, Type, SignalType, Name);
if (!Signals.Any(s => s.Identifier == signal.Identifier))

View File

@@ -66,7 +66,7 @@ public class EmaTrendIndicatorBase : EmaBaseIndicatorBase
public void AddSignal(CandleEma candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker), direction, confidence,
var signal = new LightSignal(candleSignal.Ticker, direction, confidence,
candleSignal, candleSignal.Date, candleSignal.Exchange, Type, SignalType, Name);
if (!Signals.Any(s => s.Identifier == signal.Identifier))
{

View File

@@ -102,7 +102,7 @@ public class StochRsiTrendIndicatorBase : IndicatorBase
private void AddSignal(CandleStochRsi candleSignal, TradeDirection direction, Confidence confidence)
{
var signal = new LightSignal(
MiscExtensions.ParseEnum<Ticker>(candleSignal.Ticker),
candleSignal.Ticker,
direction,
confidence,
candleSignal,

View File

@@ -1,5 +1,4 @@
using Managing.Core;
using Managing.Domain.Candles;
using Managing.Domain.Candles;
using Managing.Domain.Indicators;
using Managing.Domain.MoneyManagements;
using Managing.Domain.Scenarios;
@@ -124,7 +123,7 @@ public static class TradingBox
}
var data = newCandles.First();
return ComputeSignals(lightScenario, latestSignalsPerIndicator, MiscExtensions.ParseEnum<Ticker>(data.Ticker),
return ComputeSignals(lightScenario, latestSignalsPerIndicator, data.Ticker,
data.Timeframe, config);
}