This commit is contained in:
HojouFotytu 2023-06-26 17:23:47 +09:00
parent eb4f4914f0
commit 05626b5321
8 changed files with 65 additions and 43 deletions

View File

@ -1,18 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp7.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="3.1.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="7.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="NLog" Version="4.6.8" /> <PackageReference Include="NLog" Version="4.6.8" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" /> <PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.0" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="7.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0" />
<PackageReference Include="SharpZipLib" Version="*" /> <PackageReference Include="SharpZipLib" Version="*" />
<PackageReference Include="Telegram.Bot" Version="*" /> <PackageReference Include="Telegram.Bot" Version="*" />
</ItemGroup> </ItemGroup>

View File

@ -360,12 +360,12 @@ namespace Core.MarketAnalyzer
log.DoLogDebug("Binance - Getting ticks for '" + markets.Count + "' markets"); log.DoLogDebug("Binance - Getting ticks for '" + markets.Count + "' markets");
ConcurrentDictionary<string, List<MarketTick>> marketTicks = new ConcurrentDictionary<string, List<MarketTick>>(); ConcurrentDictionary<string, List<MarketTick>> marketTicks = new ConcurrentDictionary<string, List<MarketTick>>();
int ParallelThrottle = 4; int ParallelThrottle = 2;
if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 50) if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 6)
{ {
ParallelThrottle = 2; ParallelThrottle = 1;
log.DoLogInfo("----------------------------------------------------------------------------"); log.DoLogInfo("----------------------------------------------------------------------------");
log.DoLogInfo("StoreDataMaxHours is greater than 50. Historical data requests will be"); log.DoLogInfo("StoreDataMaxHours is greater than 6. Historical data requests will be");
log.DoLogInfo("throttled to avoid exceeding exchange request limits. This initial "); log.DoLogInfo("throttled to avoid exceeding exchange request limits. This initial ");
log.DoLogInfo("run could take more than 30 minutes. Please go outside for a walk..."); log.DoLogInfo("run could take more than 30 minutes. Please go outside for a walk...");
log.DoLogInfo("----------------------------------------------------------------------------"); log.DoLogInfo("----------------------------------------------------------------------------");

View File

@ -357,12 +357,12 @@ namespace Core.MarketAnalyzer
log.DoLogDebug("BinanceFutures - Getting ticks for '" + markets.Count + "' markets"); log.DoLogDebug("BinanceFutures - Getting ticks for '" + markets.Count + "' markets");
ConcurrentDictionary<string, List<MarketTick>> marketTicks = new ConcurrentDictionary<string, List<MarketTick>>(); ConcurrentDictionary<string, List<MarketTick>> marketTicks = new ConcurrentDictionary<string, List<MarketTick>>();
int ParallelThrottle = 4; int ParallelThrottle = 2;
if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 50) if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 6)
{ {
ParallelThrottle = 2; ParallelThrottle = 1;
log.DoLogInfo("----------------------------------------------------------------------------"); log.DoLogInfo("----------------------------------------------------------------------------");
log.DoLogInfo("StoreDataMaxHours is greater than 50. Historical data requests will be"); log.DoLogInfo("StoreDataMaxHours is greater than 6. Historical data requests will be");
log.DoLogInfo("throttled to avoid exceeding exchange data request limits. This initial "); log.DoLogInfo("throttled to avoid exceeding exchange data request limits. This initial ");
log.DoLogInfo("run could take more than 30 minutes. Please go outside for a walk..."); log.DoLogInfo("run could take more than 30 minutes. Please go outside for a walk...");
log.DoLogInfo("----------------------------------------------------------------------------"); log.DoLogInfo("----------------------------------------------------------------------------");

View File

@ -370,12 +370,12 @@ namespace Core.MarketAnalyzer
log.DoLogDebug("BinanceUS - Getting ticks for '" + markets.Count + "' markets"); log.DoLogDebug("BinanceUS - Getting ticks for '" + markets.Count + "' markets");
ConcurrentDictionary<string, List<MarketTick>> marketTicks = new ConcurrentDictionary<string, List<MarketTick>>(); ConcurrentDictionary<string, List<MarketTick>> marketTicks = new ConcurrentDictionary<string, List<MarketTick>>();
int ParallelThrottle = 4; int ParallelThrottle = 2;
if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 200) if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 6)
{ {
ParallelThrottle = 2; ParallelThrottle = 1;
log.DoLogInfo("----------------------------------------------------------------------------"); log.DoLogInfo("----------------------------------------------------------------------------");
log.DoLogInfo("StoreDataMaxHours is greater than 200. Historical data requests will be"); log.DoLogInfo("StoreDataMaxHours is greater than 6. Historical data requests will be");
log.DoLogInfo("throttled to avoid exceeding exchange data request limits. This initial "); log.DoLogInfo("throttled to avoid exceeding exchange data request limits. This initial ");
log.DoLogInfo("run could take more than 30 minutes. Please go outside for a walk..."); log.DoLogInfo("run could take more than 30 minutes. Please go outside for a walk...");
log.DoLogInfo("----------------------------------------------------------------------------"); log.DoLogInfo("----------------------------------------------------------------------------");

View File

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp7.0</TargetFramework>
<!--<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>--> <!--<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>-->
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@ -19,7 +19,7 @@
<None Include="nlog.config" CopyToOutputDirectory="Always" /> <None Include="nlog.config" CopyToOutputDirectory="Always" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.2.0" /> <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.2.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -111,6 +111,7 @@
@foreach (Core.Main.DataObjects.PTMagicData.DCALogData dcaLogEntry in Model.PTData.DCALog.OrderByDescending(d => d.ProfitPercent).Take(Model.PTMagicConfiguration.GeneralSettings.Monitor.MaxDashboardBagEntries)) { @foreach (Core.Main.DataObjects.PTMagicData.DCALogData dcaLogEntry in Model.PTData.DCALog.OrderByDescending(d => d.ProfitPercent).Take(Model.PTMagicConfiguration.GeneralSettings.Monitor.MaxDashboardBagEntries)) {
// Loop through the pairs preparing the data for display // Loop through the pairs preparing the data for display
Core.Main.DataObjects.PTMagicData.MarketPairSummary mps = null; Core.Main.DataObjects.PTMagicData.MarketPairSummary mps = null;
if (Model.Summary.MarketSummary.ContainsKey(dcaLogEntry.Market)) { if (Model.Summary.MarketSummary.ContainsKey(dcaLogEntry.Market)) {
mps = Model.Summary.MarketSummary[dcaLogEntry.Market]; mps = Model.Summary.MarketSummary[dcaLogEntry.Market];
} }
@ -149,22 +150,26 @@
// Check for when PT loses the value of a pair // Check for when PT loses the value of a pair
bool lostValue = false; bool lostValue = false;
lostValue = (dcaLogEntry.TotalCost == 0.0) || (dcaLogEntry.AverageBuyPrice == 0.0); lostValue = !(sellStrategyText.Contains("WATCHMODE")) && !(sellStrategyText.Contains("PENDING")) && ((dcaLogEntry.TotalCost == 0.0) || (dcaLogEntry.AverageBuyPrice == 0.0));
// Profit percentage // Profit percentage
var profitPercentage = dcaLogEntry.ProfitPercent; var profitPercentage = dcaLogEntry.ProfitPercent;
if (dcaLogEntry.SellStrategies != null) // if (dcaLogEntry.SellStrategies != null)
{ // {
var gainStrategy = dcaLogEntry.SellStrategies.FirstOrDefault(x => x.Name.Contains(" GAIN", StringComparison.InvariantCultureIgnoreCase)); // var gainStrategy = dcaLogEntry.SellStrategies.FirstOrDefault(x => x.Name.Contains(" GAIN", StringComparison.InvariantCultureIgnoreCase));
if (gainStrategy != null) // if (gainStrategy != null)
{ // {
// Use the gain percentage value as it is accurate to what can be achieved with the order book! // // Use the gain percentage value as it is accurate to what can be achieved with the order book!
profitPercentage = gainStrategy.CurrentValue; // profitPercentage = gainStrategy.CurrentValue;
} // }
} // }
// Render the row // Render the row
if (!sellStrategyText.Contains("PENDING-BUY"))
{
<tr @(lostValue ? "class=errorRow" : "") > <tr @(lostValue ? "class=errorRow" : "") >
<!-- Market --> <!-- Market -->
@ -207,8 +212,8 @@
<!-- Target/Profit --> <!-- Target/Profit -->
@if (!@lostValue) @if (!@lostValue)
{ {
@if (!sellStrategyText.Contains("WATCHMODE")) //@if (!sellStrategyText.Contains("WATCHMODE"))
{ //{
@if (sellStrategyText.Contains("CROSSED")) @if (sellStrategyText.Contains("CROSSED"))
// if leverage, recalculate profit target // if leverage, recalculate profit target
{ {
@ -222,17 +227,31 @@
leverage = leverageText.Remove(leverageText.IndexOf(".0)"), leverageText.Length - leverageText.IndexOf(".0)")); leverage = leverageText.Remove(leverageText.IndexOf(".0)"), leverageText.Length - leverageText.IndexOf(".0)"));
leverageValue = double.Parse(leverage); leverageValue = double.Parse(leverage);
} }
profitPercentage = profitPercentage * leverageValue; //profitPercentage = profitPercentage * leverageValue;
@if ( !(sellStrategyText.Contains("WATCHMODE")) && !(sellStrategyText.Contains("PENDING")))
{
double TargetGain = leverageValue * dcaLogEntry.TargetGainValue.Value; double TargetGain = leverageValue * dcaLogEntry.TargetGainValue.Value;
<td>@TargetGain.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))% <td>@TargetGain.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))%
<br> <br>
<div class="text-autocolor">@profitPercentage.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))%</div> <div class="text-autocolor">@profitPercentage.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))%</div>
</td> </td>
} }
else
{
<td>
<div class="text-left">None</div>
<br>
<div class="text-autocolor">@profitPercentage.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))%</div>
</td>
}
//}
} }
else else
{ {
<td class="text-left">No Value!</td> <td class="text-left">Lost Value!</td>
} }
<!-- Bag details --> <!-- Bag details -->
<td class="text-right"><a href="@Html.Raw(Model.PTMagicConfiguration.GeneralSettings.Monitor.RootUrl)_get/BagDetails/?m=@dcaLogEntry.Market" data-remote="false" data-toggle="modal" data-target="#dca-chart"><i class="fa fa-plus-circle"></i></a></td> <td class="text-right"><a href="@Html.Raw(Model.PTMagicConfiguration.GeneralSettings.Monitor.RootUrl)_get/BagDetails/?m=@dcaLogEntry.Market" data-remote="false" data-toggle="modal" data-target="#dca-chart"><i class="fa fa-plus-circle"></i></a></td>
@ -243,6 +262,9 @@
Model.TotalBagCost = Model.TotalBagCost + dcaLogEntry.TotalCost; Model.TotalBagCost = Model.TotalBagCost + dcaLogEntry.TotalCost;
Model.TotalBagGain = Model.TotalBagGain + bagGain; Model.TotalBagGain = Model.TotalBagGain + bagGain;
} }
}
} }
<td>Totals:</td> <td>Totals:</td>
<td></td> <td></td>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp7.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>

View File

@ -6,7 +6,7 @@ using Core.Helper;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
[assembly: AssemblyVersion("2.5.12")] [assembly: AssemblyVersion("2.6.1")]
[assembly: AssemblyProduct("PT Magic")] [assembly: AssemblyProduct("PT Magic")]
namespace PTMagic namespace PTMagic