docker files fixes from liaqat
This commit is contained in:
199
src/Managing.Application/Shared/SettingsService.cs
Normal file
199
src/Managing.Application/Shared/SettingsService.cs
Normal file
@@ -0,0 +1,199 @@
|
||||
using Managing.Application.Abstractions;
|
||||
using Managing.Domain.MoneyManagements;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using static Managing.Common.Enums;
|
||||
|
||||
namespace Managing.Application.Shared;
|
||||
|
||||
public class SettingsService : ISettingsService
|
||||
{
|
||||
private readonly IMoneyManagementService _moneyManagementService;
|
||||
private readonly IScenarioService _scenarioService;
|
||||
private readonly IBacktester _backtester;
|
||||
private readonly ILogger<SettingsService> _logger;
|
||||
|
||||
public SettingsService(IMoneyManagementService moneyManagementService,
|
||||
IScenarioService scenarioService,
|
||||
IBacktester backtester,
|
||||
ILogger<SettingsService> logger)
|
||||
{
|
||||
_moneyManagementService = moneyManagementService;
|
||||
_scenarioService = scenarioService;
|
||||
_backtester = backtester;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task<bool> ResetSettings()
|
||||
{
|
||||
if (!_backtester.DeleteBacktests())
|
||||
{
|
||||
throw new Exception("Cannot delete all backtests");
|
||||
}
|
||||
|
||||
if (!_scenarioService.DeleteScenarios())
|
||||
{
|
||||
throw new Exception("Cannot delete scenarios");
|
||||
}
|
||||
|
||||
if (!_scenarioService.DeleteStrategies())
|
||||
{
|
||||
throw new Exception("Cannot delete all strategies");
|
||||
}
|
||||
|
||||
if (!_moneyManagementService.DeleteMoneyManagements())
|
||||
{
|
||||
throw new Exception("Cannot delete all money management settings");
|
||||
}
|
||||
|
||||
if (!SetupSettings())
|
||||
{
|
||||
throw new Exception("Cannot setup settings");
|
||||
}
|
||||
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
public bool SetupSettings()
|
||||
{
|
||||
try
|
||||
{
|
||||
SetupMoneyManagementsSeed(Timeframe.FiveMinutes);
|
||||
SetupMoneyManagementsSeed(Timeframe.FifteenMinutes);
|
||||
SetupMoneyManagementsSeed(Timeframe.OneHour);
|
||||
SetupMoneyManagementsSeed(Timeframe.OneDay);
|
||||
SetupScenariosSeed(Timeframe.FifteenMinutes);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private async void SetupMoneyManagementsSeed(Timeframe timeframe)
|
||||
{
|
||||
var moneyManagement = new MoneyManagement()
|
||||
{
|
||||
Timeframe = timeframe,
|
||||
BalanceAtRisk = 0.05m,
|
||||
Leverage = 1,
|
||||
StopLoss = 0.021m,
|
||||
TakeProfit = 0.042m,
|
||||
Name = $"{timeframe} Money Management"
|
||||
};
|
||||
|
||||
await _moneyManagementService.CreateOrUpdateMoneyManagement(moneyManagement);
|
||||
}
|
||||
|
||||
private void SetupScenariosSeed(Timeframe timeframe)
|
||||
{
|
||||
SetupMacd(timeframe);
|
||||
SetupRsiDiv(timeframe);
|
||||
SetupRsiDivConfirm(timeframe);
|
||||
SetupSuperTrend(timeframe);
|
||||
SetupChandelierExit(timeframe);
|
||||
SetupStochRsiTrend(timeframe);
|
||||
SetupStochSTCTrend(timeframe);
|
||||
SetupEmaTrend(timeframe);
|
||||
SetupEmaCross(timeframe);
|
||||
}
|
||||
|
||||
private void SetupStochSTCTrend(Timeframe timeframe)
|
||||
{
|
||||
var name = "STCTrend";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.Stc,
|
||||
timeframe,
|
||||
name,
|
||||
fastPeriods: 23,
|
||||
slowPeriods: 50,
|
||||
cyclePeriods: 10);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
|
||||
private void SetupMacd(Timeframe timeframe)
|
||||
{
|
||||
var name = "MacdCross";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.MacdCross,
|
||||
timeframe,
|
||||
name,
|
||||
fastPeriods: 12,
|
||||
slowPeriods: 26,
|
||||
signalPeriods: 9);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
|
||||
private void SetupRsiDiv(Timeframe timeframe)
|
||||
{
|
||||
var name = "RsiDiv6";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.RsiDivergence,
|
||||
timeframe,
|
||||
name,
|
||||
period: 6);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
|
||||
private void SetupRsiDivConfirm(Timeframe timeframe)
|
||||
{
|
||||
var name = "RsiDivConfirm6";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.RsiDivergenceConfirm,
|
||||
timeframe,
|
||||
name,
|
||||
period: 6);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
|
||||
private void SetupSuperTrend(Timeframe timeframe)
|
||||
{
|
||||
var name = "SuperTrend";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.SuperTrend,
|
||||
timeframe,
|
||||
name,
|
||||
period: 10,
|
||||
multiplier: 3);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
|
||||
private void SetupChandelierExit(Timeframe timeframe)
|
||||
{
|
||||
var name = "ChandelierExit";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.ChandelierExit,
|
||||
timeframe,
|
||||
name,
|
||||
period: 22,
|
||||
multiplier: 3);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
private void SetupStochRsiTrend(Timeframe timeframe)
|
||||
{
|
||||
var name = "StochRsiTrend";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.StochRsiTrend,
|
||||
timeframe,
|
||||
name,
|
||||
period: 14,
|
||||
stochPeriods: 14,
|
||||
signalPeriods: 3,
|
||||
smoothPeriods: 1);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
|
||||
private void SetupEmaTrend(Timeframe timeframe)
|
||||
{
|
||||
var name = "Ema200Trend";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.EmaTrend,
|
||||
timeframe,
|
||||
name,
|
||||
period: 200);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
|
||||
private void SetupEmaCross(Timeframe timeframe)
|
||||
{
|
||||
var name = "Ema200Cross";
|
||||
var strategy = _scenarioService.CreateStrategy(StrategyType.EmaCross,
|
||||
timeframe,
|
||||
name,
|
||||
period: 200);
|
||||
_scenarioService.CreateScenario(name, new List<string> { strategy.Name });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user