Add updates scenario and strategy
This commit is contained in:
@@ -62,6 +62,13 @@ public class ScenarioController : ControllerBase
|
||||
return Ok(_scenarioService.DeleteScenario(name));
|
||||
}
|
||||
|
||||
// Update scenario
|
||||
[HttpPut]
|
||||
public ActionResult UpdateScenario(string name, List<string> strategies, int? loopbackPeriod = null)
|
||||
{
|
||||
return Ok(_scenarioService.UpdateScenario(name, strategies, loopbackPeriod));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves all strategies.
|
||||
/// </summary>
|
||||
@@ -126,4 +133,32 @@ public class ScenarioController : ControllerBase
|
||||
{
|
||||
return Ok(_scenarioService.DeleteStrategy(name));
|
||||
}
|
||||
|
||||
// Update strategy
|
||||
[HttpPut]
|
||||
[Route("strategy")]
|
||||
public ActionResult UpdateStrategy(
|
||||
StrategyType strategyType,
|
||||
string name,
|
||||
int? period = null,
|
||||
int? fastPeriods = null,
|
||||
int? slowPeriods = null,
|
||||
int? signalPeriods = null,
|
||||
double? multiplier = null,
|
||||
int? stochPeriods = null,
|
||||
int? smoothPeriods = null,
|
||||
int? cyclePeriods = null)
|
||||
{
|
||||
return Ok(_scenarioService.UpdateStrategy(
|
||||
strategyType,
|
||||
name,
|
||||
period,
|
||||
fastPeriods,
|
||||
slowPeriods,
|
||||
signalPeriods,
|
||||
multiplier,
|
||||
stochPeriods,
|
||||
smoothPeriods,
|
||||
cyclePeriods));
|
||||
}
|
||||
}
|
||||
@@ -26,4 +26,6 @@ public interface ITradingRepository
|
||||
Fee GetFee(TradingExchanges exchange);
|
||||
void InsertFee(Fee fee);
|
||||
void UpdateFee(Fee fee);
|
||||
}
|
||||
void UpdateScenario(Scenario scenario);
|
||||
void UpdateStrategy(Strategy strategy);
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using Managing.Common;
|
||||
using Managing.Domain.Accounts;
|
||||
using Managing.Domain.Accounts;
|
||||
using Managing.Domain.Scenarios;
|
||||
using Managing.Domain.Statistics;
|
||||
using Managing.Domain.Strategies;
|
||||
@@ -26,11 +25,13 @@ public interface ITradingService
|
||||
Position GetPositionByIdentifier(string identifier);
|
||||
IEnumerable<Position> GetPositions(PositionInitiator positionInitiator);
|
||||
IEnumerable<Position> GetPositions();
|
||||
IEnumerable<Position> GetPositionsByStatus(Enums.PositionStatus positionStatus);
|
||||
IEnumerable<Position> GetPositionsByStatus(PositionStatus positionStatus);
|
||||
Task<Position> ManagePosition(Account account, Position position);
|
||||
void UpdateFee(TradingExchanges evm);
|
||||
decimal GetFee(Account account, bool isForPaperTrading = false);
|
||||
Task WatchTrader();
|
||||
IEnumerable<Trader> GetTradersWatch();
|
||||
void UpdateDeltaNeutralOpportunities();
|
||||
void UpdateScenario(Scenario scenario);
|
||||
void UpdateStrategy(Strategy strategy);
|
||||
}
|
||||
@@ -26,5 +26,9 @@ namespace Managing.Application.Abstractions
|
||||
|
||||
bool DeleteStrategies();
|
||||
bool DeleteScenarios();
|
||||
bool UpdateScenario(string name, List<string> strategies, int? loopbackPeriod);
|
||||
|
||||
bool UpdateStrategy(StrategyType strategyType, string name, int? period, int? fastPeriods, int? slowPeriods,
|
||||
int? signalPeriods, double? multiplier, int? stochPeriods, int? smoothPeriods, int? cyclePeriods);
|
||||
}
|
||||
}
|
||||
@@ -138,5 +138,53 @@ namespace Managing.Application.Scenarios
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool UpdateScenario(string name, List<string> strategies, int? loopbackPeriod)
|
||||
{
|
||||
try
|
||||
{
|
||||
var scenario = _tradingService.GetScenarioByName(name);
|
||||
scenario.Strategies.Clear();
|
||||
foreach (var strategy in strategies)
|
||||
{
|
||||
scenario.AddStrategy(_tradingService.GetStrategyByName(strategy));
|
||||
}
|
||||
|
||||
scenario.LoopbackPeriod = loopbackPeriod ?? 1;
|
||||
_tradingService.UpdateScenario(scenario);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool UpdateStrategy(StrategyType strategyType, string name, int? period, int? fastPeriods,
|
||||
int? slowPeriods,
|
||||
int? signalPeriods, double? multiplier, int? stochPeriods, int? smoothPeriods, int? cyclePeriods)
|
||||
{
|
||||
try
|
||||
{
|
||||
var strategy = _tradingService.GetStrategyByName(name);
|
||||
strategy.Type = strategyType;
|
||||
strategy.Period = period;
|
||||
strategy.FastPeriods = fastPeriods;
|
||||
strategy.SlowPeriods = slowPeriods;
|
||||
strategy.SignalPeriods = signalPeriods;
|
||||
strategy.Multiplier = multiplier;
|
||||
strategy.StochPeriods = stochPeriods;
|
||||
strategy.SmoothPeriods = smoothPeriods;
|
||||
strategy.CyclePeriods = cyclePeriods;
|
||||
_tradingService.UpdateStrategy(strategy);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -268,6 +268,16 @@ public class TradingService : ITradingService
|
||||
var fundingRates = _exchangeService.GetFundingRates();
|
||||
}
|
||||
|
||||
public void UpdateScenario(Scenario scenario)
|
||||
{
|
||||
_tradingRepository.UpdateScenario(scenario);
|
||||
}
|
||||
|
||||
public void UpdateStrategy(Strategy strategy)
|
||||
{
|
||||
_tradingRepository.UpdateStrategy(strategy);
|
||||
}
|
||||
|
||||
private async Task ManageTrader(TraderFollowup a, List<Ticker> tickers)
|
||||
{
|
||||
var shortAddress = a.Account.Address.Substring(0, 6);
|
||||
|
||||
@@ -145,4 +145,20 @@ public class TradingRepository : ITradingRepository
|
||||
dto.Id = f.Id;
|
||||
_feeRepository.Update(dto);
|
||||
}
|
||||
|
||||
public void UpdateScenario(Scenario scenario)
|
||||
{
|
||||
var s = _scenarioRepository.FindOne(s => s.Name == scenario.Name);
|
||||
var dto = MongoMappers.Map(scenario);
|
||||
dto.Id = s.Id;
|
||||
_scenarioRepository.Update(dto);
|
||||
}
|
||||
|
||||
public void UpdateStrategy(Strategy strategy)
|
||||
{
|
||||
var s = _strategyRepository.FindOne(s => s.Name == strategy.Name);
|
||||
var dto = MongoMappers.Map(strategy);
|
||||
dto.Id = s.Id;
|
||||
_strategyRepository.Update(dto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user