diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index dd84ea78..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index bbcbbe7d..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/other.md b/.github/ISSUE_TEMPLATE/other.md deleted file mode 100644 index 4220ff5b..00000000 --- a/.github/ISSUE_TEMPLATE/other.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Other -about: 'For trouble-shooting and other questions, visit our Discord server: https://discord.gg/KYmHMfk' -title: '' -labels: '' -assignees: '' - ---- - -Posts in the Issues section should be limited to: -- Bug Reports -- Feature Requests - -If you have general questions, please visit our Discord server at: https://discord.gg/KYmHMfk diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ab96d2dd..f756ee67 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,8 +4,8 @@ ## What we expect from users who want to contribute a pull request - Read the file [_Development/README.md](https://github.com/PTMagicians/PTMagic/blob/master/_Development/README.md) and follow the instructions carefully -- Knowledge of the project PT Magic and what it is supposed to do -- Knowledge of the architecture, the different parts and layers of PT Magic +- In depth knowledge of the project PT Magic and what it is supposed to do +- In depth knowledge of the architecture, the different parts and layers of PT Magic ## What main goal should I follow when I want to implement something and submit my pull request? PT Magic is a project/addon that supports the trading experience of several users of Profit Trailer. diff --git a/Core/Core.csproj b/Core/Core.csproj index ab8a35b6..6d671c29 100644 --- a/Core/Core.csproj +++ b/Core/Core.csproj @@ -1,18 +1,18 @@ - netcoreapp3.1 + netcoreapp7.0 - - + + - - - - + + + + diff --git a/Core/MarketAnalyzer/Binance.cs b/Core/MarketAnalyzer/Binance.cs index 3d28203f..1317075f 100644 --- a/Core/MarketAnalyzer/Binance.cs +++ b/Core/MarketAnalyzer/Binance.cs @@ -360,12 +360,12 @@ public static void CheckForMarketDataRecreation(string mainMarket, Dictionary> marketTicks = new ConcurrentDictionary>(); - int ParallelThrottle = 4; - if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 50) + int ParallelThrottle = 2; + if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 6) { - ParallelThrottle = 2; + ParallelThrottle = 1; 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("run could take more than 30 minutes. Please go outside for a walk..."); log.DoLogInfo("----------------------------------------------------------------------------"); diff --git a/Core/MarketAnalyzer/BinanceFutures.cs b/Core/MarketAnalyzer/BinanceFutures.cs index 1552a666..b27beb7d 100644 --- a/Core/MarketAnalyzer/BinanceFutures.cs +++ b/Core/MarketAnalyzer/BinanceFutures.cs @@ -71,7 +71,7 @@ public static List GetMarketData(string mainMarket, ConcurrentDictionary //New variables for filtering out bad markets float marketLastPrice = currencyTicker["lastPrice"].ToObject(); float marketVolume = currencyTicker["volume"].ToObject(); - if (marketLastPrice > 0 && marketVolume > 0) + if (marketLastPrice > 0 && marketVolume > 0 && marketName.EndsWith(mainMarket)) { // Set last values in case any error occurs @@ -92,8 +92,15 @@ public static List GetMarketData(string mainMarket, ConcurrentDictionary } else { - //Let the user know that the problem market was ignored. + //Let the user know that a problem market was ignored. + if (!marketName.EndsWith(mainMarket)) + { + log.DoLogInfo("BinanceFutures - Incorrect base currency: " + marketName + " ignored"); + } + else + { log.DoLogInfo("BinanceFutures - Ignoring bad market data for " + marketName); + } } } @@ -357,12 +364,12 @@ public static void CheckForMarketDataRecreation(string mainMarket, Dictionary> marketTicks = new ConcurrentDictionary>(); - int ParallelThrottle = 4; - if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 50) + int ParallelThrottle = 2; + if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 6) { - ParallelThrottle = 2; + ParallelThrottle = 1; 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("run could take more than 30 minutes. Please go outside for a walk..."); log.DoLogInfo("----------------------------------------------------------------------------"); diff --git a/Core/MarketAnalyzer/BinanceUS.cs b/Core/MarketAnalyzer/BinanceUS.cs index 0b091802..ad728272 100644 --- a/Core/MarketAnalyzer/BinanceUS.cs +++ b/Core/MarketAnalyzer/BinanceUS.cs @@ -370,12 +370,12 @@ public static void CheckForMarketDataRecreation(string mainMarket, Dictionary> marketTicks = new ConcurrentDictionary>(); - int ParallelThrottle = 4; - if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 200) + int ParallelThrottle = 2; + if (systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours > 6) { - ParallelThrottle = 2; + ParallelThrottle = 1; 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("run could take more than 30 minutes. Please go outside for a walk..."); log.DoLogInfo("----------------------------------------------------------------------------"); diff --git a/Monitor/Monitor.csproj b/Monitor/Monitor.csproj index ce2658ca..a851ef0d 100644 --- a/Monitor/Monitor.csproj +++ b/Monitor/Monitor.csproj @@ -1,6 +1,6 @@ - netcoreapp3.1 + netcoreapp7.0 @@ -19,7 +19,7 @@ - + diff --git a/Monitor/Pages/MarketAnalyzer.cshtml b/Monitor/Pages/MarketAnalyzer.cshtml index 15bd1d14..826d417d 100644 --- a/Monitor/Pages/MarketAnalyzer.cshtml +++ b/Monitor/Pages/MarketAnalyzer.cshtml @@ -250,6 +250,8 @@ else @foreach (string market in Model.Summary.MarketSummary.Keys.OrderBy(m => m)) { + if (market.EndsWith(Model.Summary.MainMarket)) + { Core.Main.DataObjects.PTMagicData.MarketPairSummary mps = Model.Summary.MarketSummary[market]; int marketTrendsDisplayed = 0; @@ -294,6 +296,7 @@ else } + } } diff --git a/Monitor/Pages/_get/DashboardTop.cshtml b/Monitor/Pages/_get/DashboardTop.cshtml index 9bdb3b41..3a0b262f 100644 --- a/Monitor/Pages/_get/DashboardTop.cshtml +++ b/Monitor/Pages/_get/DashboardTop.cshtml @@ -5,7 +5,9 @@ }
-
+ @if (Model.PTMagicConfiguration.GeneralSettings.Monitor.MaxDashboardBuyEntries>0) + { +

Possible Buys (@Model.PTData.BuyLog.Count)more

@if (Model.PTData.BuyLog.Count == 0) @@ -79,8 +81,9 @@ }
- -
+ } + +

Pairs / DCA / Pending (@Model.PTData.DCALog.Count)more

@@ -108,6 +111,7 @@ @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 Core.Main.DataObjects.PTMagicData.MarketPairSummary mps = null; + if (Model.Summary.MarketSummary.ContainsKey(dcaLogEntry.Market)) { mps = Model.Summary.MarketSummary[dcaLogEntry.Market]; } @@ -146,22 +150,26 @@ // Check for when PT loses the value of a pair 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 var profitPercentage = dcaLogEntry.ProfitPercent; - if (dcaLogEntry.SellStrategies != null) - { - var gainStrategy = dcaLogEntry.SellStrategies.FirstOrDefault(x => x.Name.Contains(" GAIN", StringComparison.InvariantCultureIgnoreCase)); - if (gainStrategy != null) - { - // Use the gain percentage value as it is accurate to what can be achieved with the order book! - profitPercentage = gainStrategy.CurrentValue; - } - } + // if (dcaLogEntry.SellStrategies != null) + // { + // var gainStrategy = dcaLogEntry.SellStrategies.FirstOrDefault(x => x.Name.Contains(" GAIN", StringComparison.InvariantCultureIgnoreCase)); + // if (gainStrategy != null) + // { + // // Use the gain percentage value as it is accurate to what can be achieved with the order book! + // profitPercentage = gainStrategy.CurrentValue; + // } + // } // Render the row + + if (!sellStrategyText.Contains("PENDING-BUY")) + { + @@ -204,8 +212,8 @@ @if (!@lostValue) { - @if (!sellStrategyText.Contains("WATCHMODE")) - { + //@if (!sellStrategyText.Contains("WATCHMODE")) + //{ @if (sellStrategyText.Contains("CROSSED")) // if leverage, recalculate profit target { @@ -219,17 +227,31 @@ leverage = leverageText.Remove(leverageText.IndexOf(".0)"), leverageText.Length - leverageText.IndexOf(".0)")); leverageValue = double.Parse(leverage); } - profitPercentage = profitPercentage * leverageValue; - double TargetGain = leverageValue * dcaLogEntry.TargetGainValue.Value; - @TargetGain.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))% -
-
@profitPercentage.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))%
- - } + //profitPercentage = profitPercentage * leverageValue; + + @if ( !(sellStrategyText.Contains("WATCHMODE")) && !(sellStrategyText.Contains("PENDING"))) + { + double TargetGain = leverageValue * dcaLogEntry.TargetGainValue.Value; + @TargetGain.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))% +
+
@profitPercentage.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))%
+ + } + else + { + +
None
+
+
@profitPercentage.ToString("#,#0.00", new System.Globalization.CultureInfo("en-US"))%
+ + } + + + //} } else { - No Value! + Lost Value! } @@ -240,6 +262,9 @@ Model.TotalBagCost = Model.TotalBagCost + dcaLogEntry.TotalCost; Model.TotalBagGain = Model.TotalBagGain + bagGain; } + + } + } Totals: diff --git a/Monitor/Program.cs b/Monitor/Program.cs index 4d9066d1..607610af 100644 --- a/Monitor/Program.cs +++ b/Monitor/Program.cs @@ -10,7 +10,7 @@ namespace Monitor public class Program { // Main entry point - [SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)] + //[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)] public static void Main(string[] args) { // Register a global exception handler diff --git a/PTMagic/PTMagic.csproj b/PTMagic/PTMagic.csproj index 10054ea2..68d6734f 100644 --- a/PTMagic/PTMagic.csproj +++ b/PTMagic/PTMagic.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + netcoreapp7.0 diff --git a/PTMagic/Program.cs b/PTMagic/Program.cs index a4be87c6..c12762ac 100644 --- a/PTMagic/Program.cs +++ b/PTMagic/Program.cs @@ -6,7 +6,7 @@ using Microsoft.Extensions.DependencyInjection; -[assembly: AssemblyVersion("2.5.12")] +[assembly: AssemblyVersion("2.6.1")] [assembly: AssemblyProduct("PT Magic")] namespace PTMagic diff --git a/README.md b/README.md index db3d911f..b52f4889 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Profit Trailer Magic -[Go here](https://github.com/PTMagicians/PTMagic/releases) to download the latest version. +[Visit the wiki](https://github.com/PTMagicians/PT-Magic/wiki) to learn about this project. -[Visit the wiki](https://github.com/PTMagicians/PT-Magic/wiki) for instructions, and to learn more about this project. +[Go here](https://github.com/PTMagicians/PTMagic/releases) to download the latest version.