Fixes to marketdata in non UTC timezones + small tweaks
This commit is contained in:
parent
9b16bb5841
commit
5e69348c23
Core
PTMagic/_presets
|
@ -604,6 +604,7 @@ namespace Core.Main
|
||||||
this.Log.DoLogInfo("Detected a '" + e.ChangeType.ToString() + "' change in the following preset file: " + e.FullPath);
|
this.Log.DoLogInfo("Detected a '" + e.ChangeType.ToString() + "' change in the following preset file: " + e.FullPath);
|
||||||
|
|
||||||
// Reprocess now
|
// Reprocess now
|
||||||
|
this.EnforceSettingsReapply = true;
|
||||||
PTMagicIntervalTimer_Elapsed(new object(), null);
|
PTMagicIntervalTimer_Elapsed(new object(), null);
|
||||||
|
|
||||||
// Enable the file watcher again
|
// Enable the file watcher again
|
||||||
|
@ -961,7 +962,7 @@ namespace Core.Main
|
||||||
|
|
||||||
FileInfo generalSettingsFile = new FileInfo(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "settings.general.json");
|
FileInfo generalSettingsFile = new FileInfo(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "settings.general.json");
|
||||||
FileInfo analyzerSettingsFile = new FileInfo(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "settings.analyzer.json");
|
FileInfo analyzerSettingsFile = new FileInfo(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "settings.analyzer.json");
|
||||||
if (generalSettingsFile.LastWriteTimeUtc > this.LastSettingFileCheck || analyzerSettingsFile.LastWriteTimeUtc > this.LastSettingFileCheck || EnforceSettingsReapply)
|
if (generalSettingsFile.LastWriteTimeUtc > this.LastSettingFileCheck || analyzerSettingsFile.LastWriteTimeUtc > this.LastSettingFileCheck)
|
||||||
{
|
{
|
||||||
Log.DoLogInfo("Detected configuration changes. Reloading settings...");
|
Log.DoLogInfo("Detected configuration changes. Reloading settings...");
|
||||||
|
|
||||||
|
@ -1199,7 +1200,6 @@ namespace Core.Main
|
||||||
}
|
}
|
||||||
else if (this.PTMagicConfiguration.GeneralSettings.Application.Exchange.Equals("Binance", StringComparison.InvariantCultureIgnoreCase))
|
else if (this.PTMagicConfiguration.GeneralSettings.Application.Exchange.Equals("Binance", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
|
|
||||||
// Get most recent market data from Binance
|
// Get most recent market data from Binance
|
||||||
this.ExchangeMarketList = Binance.GetMarketData(this.LastRuntimeSummary.MainMarket, this.MarketInfos, this.PTMagicConfiguration, this.Log);
|
this.ExchangeMarketList = Binance.GetMarketData(this.LastRuntimeSummary.MainMarket, this.MarketInfos, this.PTMagicConfiguration, this.Log);
|
||||||
}
|
}
|
||||||
|
@ -1379,14 +1379,7 @@ namespace Core.Main
|
||||||
if (this.EnforceSettingsReapply || !activeSettingName.Equals(triggeredSetting.SettingName, StringComparison.InvariantCultureIgnoreCase))
|
if (this.EnforceSettingsReapply || !activeSettingName.Equals(triggeredSetting.SettingName, StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
// Check if we need to force a refresh of the settings
|
// Check if we need to force a refresh of the settings
|
||||||
if (this.EnforceSettingsReapply)
|
|
||||||
{
|
|
||||||
this.Log.DoLogInfo("Reapplying '" + activeSettingName + "' as the settings.analyzer.json or a preset file got changed.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.Log.DoLogInfo("Setting '" + activeSettingName + "' currently active. Checking for flood protection...");
|
this.Log.DoLogInfo("Setting '" + activeSettingName + "' currently active. Checking for flood protection...");
|
||||||
}
|
|
||||||
|
|
||||||
// If the setting we are about to activate is the default one, do not list matched triggers
|
// If the setting we are about to activate is the default one, do not list matched triggers
|
||||||
if (triggeredSetting.SettingName.Equals(this.DefaultSettingName, StringComparison.InvariantCultureIgnoreCase))
|
if (triggeredSetting.SettingName.Equals(this.DefaultSettingName, StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
@ -1402,6 +1395,10 @@ namespace Core.Main
|
||||||
{
|
{
|
||||||
this.Log.DoLogInfo("Switching global settings to '" + triggeredSetting.SettingName + "'...");
|
this.Log.DoLogInfo("Switching global settings to '" + triggeredSetting.SettingName + "'...");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Log.DoLogInfo("Applying '" + triggeredSetting.SettingName + "' as the settings.analyzer.json or a preset file got changed.");
|
||||||
|
}
|
||||||
|
|
||||||
SettingsHandler.CompileProperties(this, triggeredSetting);
|
SettingsHandler.CompileProperties(this, triggeredSetting);
|
||||||
this.GlobalSettingWritten = true;
|
this.GlobalSettingWritten = true;
|
||||||
|
@ -1412,8 +1409,6 @@ namespace Core.Main
|
||||||
|
|
||||||
// Build Telegram message
|
// Build Telegram message
|
||||||
string telegramMessage;
|
string telegramMessage;
|
||||||
if (!EnforceSettingsReapply)
|
|
||||||
{
|
|
||||||
telegramMessage = this.PTMagicConfiguration.GeneralSettings.Application.InstanceName + ": Setting switched to '*" + SystemHelper.SplitCamelCase(triggeredSetting.SettingName) + "*'.";
|
telegramMessage = this.PTMagicConfiguration.GeneralSettings.Application.InstanceName + ": Setting switched to '*" + SystemHelper.SplitCamelCase(triggeredSetting.SettingName) + "*'.";
|
||||||
|
|
||||||
if (matchedTriggers.Count > 0)
|
if (matchedTriggers.Count > 0)
|
||||||
|
@ -1433,14 +1428,12 @@ namespace Core.Main
|
||||||
telegramMessage += "\n" + key + ": " + this.AverageMarketTrendChanges[key].ToString("#,#0.00", new System.Globalization.CultureInfo("en-US")) + "%";
|
telegramMessage += "\n" + key + ": " + this.AverageMarketTrendChanges[key].ToString("#,#0.00", new System.Globalization.CultureInfo("en-US")) + "%";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
telegramMessage = this.PTMagicConfiguration.GeneralSettings.Application.InstanceName + ": Reapplying settings '*" + SystemHelper.SplitCamelCase(triggeredSetting.SettingName) + "*'.";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send Telegram message
|
// Send Telegram message
|
||||||
if (this.PTMagicConfiguration.GeneralSettings.Telegram.IsEnabled) TelegramHelper.SendMessage(this.PTMagicConfiguration.GeneralSettings.Telegram.BotToken, this.PTMagicConfiguration.GeneralSettings.Telegram.ChatId, telegramMessage, this.PTMagicConfiguration.GeneralSettings.Telegram.SilentMode, this.Log);
|
if (this.PTMagicConfiguration.GeneralSettings.Telegram.IsEnabled)
|
||||||
|
{
|
||||||
|
TelegramHelper.SendMessage(this.PTMagicConfiguration.GeneralSettings.Telegram.BotToken, this.PTMagicConfiguration.GeneralSettings.Telegram.ChatId, telegramMessage, this.PTMagicConfiguration.GeneralSettings.Telegram.SilentMode, this.Log);
|
||||||
|
}
|
||||||
|
|
||||||
// Record last settings run
|
// Record last settings run
|
||||||
this.LastSetting = activeSettingName;
|
this.LastSetting = activeSettingName;
|
||||||
|
@ -2483,11 +2476,8 @@ namespace Core.Main
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.LastRuntimeSummary.MarketSummary.ContainsKey(marketPair))
|
|
||||||
{
|
|
||||||
this.LastRuntimeSummary.MarketSummary.Add(marketPair, mpSummary);
|
this.LastRuntimeSummary.MarketSummary.Add(marketPair, mpSummary);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
this.Log.DoLogInfo("Summary: Current single market properties saved.");
|
this.Log.DoLogInfo("Summary: Current single market properties saved.");
|
||||||
|
|
||||||
|
|
|
@ -345,7 +345,17 @@ namespace Core.MarketAnalyzer
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<MarketTrendChange> GetMarketTrendChanges(string platform, string mainMarket, MarketTrend marketTrend, List<string> marketList, Dictionary<string, Market> recentMarkets, Dictionary<string, Market> trendMarkets, string sortBy, bool isGlobal, PTMagicConfiguration systemConfiguration, LogHelper log)
|
public static List<MarketTrendChange> GetMarketTrendChanges(
|
||||||
|
string platform,
|
||||||
|
string mainMarket,
|
||||||
|
MarketTrend marketTrend,
|
||||||
|
List<string> marketList,
|
||||||
|
Dictionary<string, Market> recentMarkets,
|
||||||
|
Dictionary<string, Market> trendMarkets,
|
||||||
|
string sortBy,
|
||||||
|
bool isGlobal,
|
||||||
|
PTMagicConfiguration systemConfiguration,
|
||||||
|
LogHelper log)
|
||||||
{
|
{
|
||||||
List<MarketTrendChange> result = new List<MarketTrendChange>();
|
List<MarketTrendChange> result = new List<MarketTrendChange>();
|
||||||
|
|
||||||
|
@ -368,7 +378,6 @@ namespace Core.MarketAnalyzer
|
||||||
|
|
||||||
if (platform.Equals("CoinMarketCap", StringComparison.InvariantCulture) && excludeMainCurrency)
|
if (platform.Equals("CoinMarketCap", StringComparison.InvariantCulture) && excludeMainCurrency)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Check if this is the main currency (only for CoinMarketCap)
|
// Check if this is the main currency (only for CoinMarketCap)
|
||||||
if (recentMarketPair.Value.Symbol.Equals(mainMarket, StringComparison.InvariantCultureIgnoreCase))
|
if (recentMarketPair.Value.Symbol.Equals(mainMarket, StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
|
@ -377,6 +386,7 @@ namespace Core.MarketAnalyzer
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Market recentMarket = recentMarkets[recentMarketPair.Key];
|
Market recentMarket = recentMarkets[recentMarketPair.Key];
|
||||||
|
|
||||||
if (trendMarkets.ContainsKey(recentMarketPair.Key))
|
if (trendMarkets.ContainsKey(recentMarketPair.Key))
|
||||||
|
|
|
@ -11,6 +11,7 @@ using Core.ProfitTrailer;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
|
||||||
namespace Core.MarketAnalyzer
|
namespace Core.MarketAnalyzer
|
||||||
{
|
{
|
||||||
|
@ -108,7 +109,7 @@ namespace Core.MarketAnalyzer
|
||||||
|
|
||||||
Binance.CheckForMarketDataRecreation(mainMarket, markets, systemConfiguration, log);
|
Binance.CheckForMarketDataRecreation(mainMarket, markets, systemConfiguration, log);
|
||||||
|
|
||||||
DateTime fileDateTime = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0).ToUniversalTime();
|
DateTime fileDateTime = DateTime.UtcNow;
|
||||||
|
|
||||||
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathExchange + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets), fileDateTime, fileDateTime);
|
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathExchange + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets), fileDateTime, fileDateTime);
|
||||||
|
|
||||||
|
@ -360,13 +361,17 @@ namespace Core.MarketAnalyzer
|
||||||
|
|
||||||
// Get Ticks for all markets
|
// Get Ticks for all markets
|
||||||
log.DoLogDebug("Binance - Getting ticks for '" + markets.Count + "' markets");
|
log.DoLogDebug("Binance - Getting ticks for '" + markets.Count + "' markets");
|
||||||
Dictionary<string, List<MarketTick>> marketTicks = new Dictionary<string, List<MarketTick>>();
|
ConcurrentDictionary<string, List<MarketTick>> marketTicks = new ConcurrentDictionary<string, List<MarketTick>>();
|
||||||
|
|
||||||
Parallel.ForEach(markets.Keys,
|
Parallel.ForEach(markets.Keys,
|
||||||
new ParallelOptions { MaxDegreeOfParallelism = 5 },
|
new ParallelOptions { MaxDegreeOfParallelism = 5 },
|
||||||
(key) =>
|
(key) =>
|
||||||
{
|
{
|
||||||
marketTicks.Add(key, Binance.GetMarketTicks(key, totalTicks, systemConfiguration, log));
|
if (!marketTicks.TryAdd(key, GetMarketTicks(key, totalTicks, systemConfiguration, log)))
|
||||||
|
{
|
||||||
|
// Failed to add ticks to dictionary
|
||||||
|
throw new Exception("Failed to add ticks for " + key + " to the memory dictionary, results may be incorrectly calculated!");
|
||||||
|
}
|
||||||
|
|
||||||
if ((marketTicks.Count % 10) == 0)
|
if ((marketTicks.Count % 10) == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -115,7 +115,7 @@ namespace Core.MarketAnalyzer
|
||||||
|
|
||||||
Bittrex.CheckForMarketDataRecreation(mainMarket, markets, systemConfiguration, log);
|
Bittrex.CheckForMarketDataRecreation(mainMarket, markets, systemConfiguration, log);
|
||||||
|
|
||||||
DateTime fileDateTime = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0).ToUniversalTime();
|
DateTime fileDateTime = DateTime.UtcNow;
|
||||||
|
|
||||||
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathExchange + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets), fileDateTime, fileDateTime);
|
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathExchange + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets), fileDateTime, fileDateTime);
|
||||||
|
|
||||||
|
@ -239,7 +239,11 @@ namespace Core.MarketAnalyzer
|
||||||
new ParallelOptions { MaxDegreeOfParallelism = 5 },
|
new ParallelOptions { MaxDegreeOfParallelism = 5 },
|
||||||
(key) =>
|
(key) =>
|
||||||
{
|
{
|
||||||
marketTicks.Add(key, Bittrex.GetMarketTicks(key, systemConfiguration, log));
|
if (!marketTicks.TryAdd(key, Bittrex.GetMarketTicks(key, systemConfiguration, log)))
|
||||||
|
{
|
||||||
|
// Failed to add ticks to dictionary
|
||||||
|
throw new Exception("Failed to add ticks for " + key + " to the memory dictionary, results may be incorrectly calculated!");
|
||||||
|
}
|
||||||
|
|
||||||
if ((marketTicks.Count % 10) == 0)
|
if ((marketTicks.Count % 10) == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -53,11 +53,10 @@ namespace Core.MarketAnalyzer
|
||||||
|
|
||||||
CoinMarketCap.CheckForMarketDataRecreation(markets, systemConfiguration, log);
|
CoinMarketCap.CheckForMarketDataRecreation(markets, systemConfiguration, log);
|
||||||
|
|
||||||
DateTime fileDateTime = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0).ToUniversalTime();
|
// Save the data
|
||||||
|
DateTime fileDateTime = DateTime.UtcNow;
|
||||||
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathCoinMarketCap + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets), fileDateTime, fileDateTime);
|
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathCoinMarketCap + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets), fileDateTime, fileDateTime);
|
||||||
|
|
||||||
|
|
||||||
log.DoLogInfo("CoinMarketCap - Market data saved.");
|
log.DoLogInfo("CoinMarketCap - Market data saved.");
|
||||||
|
|
||||||
FileHelper.CleanupFiles(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathCoinMarketCap + Path.DirectorySeparatorChar, systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours);
|
FileHelper.CleanupFiles(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathCoinMarketCap + Path.DirectorySeparatorChar, systemConfiguration.AnalyzerSettings.MarketAnalyzer.StoreDataMaxHours);
|
||||||
|
@ -139,11 +138,10 @@ namespace Core.MarketAnalyzer
|
||||||
markets24h.Add(markets[key].Name, market24h);
|
markets24h.Add(markets[key].Name, market24h);
|
||||||
}
|
}
|
||||||
|
|
||||||
DateTime fileDateTime = new DateTime(DateTime.UtcNow.ToLocalTime().AddHours(-24).Year, DateTime.UtcNow.ToLocalTime().AddHours(-24).Month, DateTime.UtcNow.ToLocalTime().AddHours(-24).Day, DateTime.UtcNow.ToLocalTime().AddHours(-24).Hour, DateTime.UtcNow.ToLocalTime().AddHours(-24).Minute, 0).ToUniversalTime();
|
// Save the 24hr market data
|
||||||
|
DateTime fileDateTime = DateTime.UtcNow.AddHours(-24);
|
||||||
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathCoinMarketCap + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets24h), fileDateTime, fileDateTime);
|
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathCoinMarketCap + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets24h), fileDateTime, fileDateTime);
|
||||||
|
|
||||||
|
|
||||||
log.DoLogInfo("CoinMarketCap - 24h market data rebuilt.");
|
log.DoLogInfo("CoinMarketCap - 24h market data rebuilt.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ namespace Core.MarketAnalyzer
|
||||||
|
|
||||||
Poloniex.CheckForMarketDataRecreation(mainMarket, markets, systemConfiguration, log);
|
Poloniex.CheckForMarketDataRecreation(mainMarket, markets, systemConfiguration, log);
|
||||||
|
|
||||||
DateTime fileDateTime = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0).ToUniversalTime();
|
DateTime fileDateTime = DateTime.UtcNow;
|
||||||
|
|
||||||
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathExchange + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets), fileDateTime, fileDateTime);
|
FileHelper.WriteTextToFile(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + Constants.PTMagicPathData + Path.DirectorySeparatorChar + Constants.PTMagicPathExchange + Path.DirectorySeparatorChar, "MarketData_" + fileDateTime.ToString("yyyy-MM-dd_HH.mm") + ".json", JsonConvert.SerializeObject(markets), fileDateTime, fileDateTime);
|
||||||
|
|
||||||
|
@ -273,7 +273,11 @@ namespace Core.MarketAnalyzer
|
||||||
new ParallelOptions { MaxDegreeOfParallelism = 5 },
|
new ParallelOptions { MaxDegreeOfParallelism = 5 },
|
||||||
(key) =>
|
(key) =>
|
||||||
{
|
{
|
||||||
marketTicks.Add(key, Poloniex.GetMarketTicks(key, systemConfiguration, log));
|
if (!marketTicks.TryAdd(key, Bittrex.GetMarketTicks(key, systemConfiguration, log)))
|
||||||
|
{
|
||||||
|
// Failed to add ticks to dictionary
|
||||||
|
throw new Exception("Failed to add ticks for " + key + " to the memory dictionary, results may be incorrectly calculated!");
|
||||||
|
}
|
||||||
|
|
||||||
if ((marketTicks.Count % 10) == 0)
|
if ((marketTicks.Count % 10) == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,68 +1,233 @@
|
||||||
# ####################################
|
# ####################################
|
||||||
# ####### PTMagic Current Setting ########
|
# ####### PTMagic Current Setting ########
|
||||||
# PTMagic_ActiveSetting = Default
|
# PTMagic_ActiveSetting = Default
|
||||||
# PTMagic_LastChanged = 3/26/2018 11:52 AM
|
# PTMagic_LastChanged = 5/14/2018 13:54
|
||||||
# ####################################
|
# ####################################
|
||||||
|
##
|
||||||
|
##
|
||||||
|
## BTC PT2.2/PTM2.1 (DCA)
|
||||||
|
##
|
||||||
|
##
|
||||||
#
|
#
|
||||||
|
#GENERAL SETTINGS#
|
||||||
|
DEFAULT_DCA_ignore_sell_only_mode = true
|
||||||
DCA_keep_balance = 0
|
DCA_keep_balance = 0
|
||||||
DCA_keep_balance_percentage = 0
|
|
||||||
#
|
|
||||||
DEFAULT_DCA_max_cost = 0
|
DEFAULT_DCA_max_cost = 0
|
||||||
DEFAULT_DCA_max_buy_times = 20
|
DEFAULT_DCA_pending_order_wait_time = 0
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_A_buy_strategy = LOWBB
|
DCA_keep_balance_percentage = 20
|
||||||
DEFAULT_DCA_A_buy_value = 5
|
DEFAULT_DCA_buy_percentage = 75
|
||||||
DEFAULT_DCA_A_buy_value_limit = -2.5
|
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_B_buy_strategy = RSI
|
#---------------------------------------------------------------
|
||||||
DEFAULT_DCA_B_buy_value = 33
|
#BUY FILTER SETTINGS#
|
||||||
DEFAULT_DCA_B_buy_value_limit = 5
|
DEFAULT_DCA_max_buy_spread = 1
|
||||||
|
DEFAULT_DCA_min_buy_volume = 300
|
||||||
|
DEFAULT_DCA_min_orderbook_volume_percentage = 75
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_trailing_buy = 0
|
DEFAULT_DCA_buy_min_change_percentage = -6
|
||||||
|
DEFAULT_DCA_buy_max_change_percentage = 0
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_buy_trigger = 0
|
#---------------------------------------------------------------
|
||||||
|
#BUY SETTINGS#
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_buy_percentage_1 = 100
|
DEFAULT_DCA_rebuy_timeout = 60
|
||||||
DEFAULT_DCA_buy_percentage_2 = 50
|
DEFAULT_DCA_buy_trigger = -2
|
||||||
|
#
|
||||||
|
DEFAULT_DCA_A_buy_strategy = EMAGAIN
|
||||||
|
DEFAULT_DCA_A_buy_value = -0.2
|
||||||
|
DEFAULT_DCA_A_buy_value_limit = 0
|
||||||
|
#
|
||||||
|
DEFAULT_DCA_trailing_buy = 0.27
|
||||||
|
#
|
||||||
|
DEFAULT_DCA_B_buy_strategy = LOWBB
|
||||||
|
DEFAULT_DCA_B_buy_value = 20
|
||||||
|
DEFAULT_DCA_B_buy_value_limit = 0
|
||||||
|
#
|
||||||
|
DEFAULT_DCA_C_buy_strategy = STOCHRSIK
|
||||||
|
DEFAULT_DCA_C_buy_value = 30
|
||||||
|
DEFAULT_DCA_C_buy_value_limit = 0
|
||||||
|
#
|
||||||
|
DEFAULT_DCA_D_buy_strategy = DISABLED
|
||||||
|
DEFAULT_DCA_D_buy_value = 0
|
||||||
|
DEFAULT_DCA_D_buy_value_limit = 0
|
||||||
|
DEFAULT_DCA_E_buy_strategy = DISABLED
|
||||||
|
DEFAULT_DCA_E_buy_value = 0
|
||||||
|
DEFAULT_DCA_E_buy_value_limit = 0
|
||||||
|
#
|
||||||
|
#---------------------------------------------------------------
|
||||||
|
# DCA SETTINGS
|
||||||
|
#DEFAULT_DCA_max_buy_times = 6
|
||||||
|
#DEFAULT_DCA_buy_trigger_1 = -1.5
|
||||||
|
#DEFAULT_DCA_buy_trigger_2 = -2
|
||||||
|
#DEFAULT_DCA_buy_trigger_3 = -5
|
||||||
|
#DEFAULT_DCA_buy_trigger_4 = -6
|
||||||
|
#DEFAULT_DCA_buy_trigger_5 = -6
|
||||||
|
#DEFAULT_DCA_buy_trigger_6 = -7
|
||||||
|
#
|
||||||
|
#DEFAULT_DCA_buy_percentage_1 = 75
|
||||||
|
#DEFAULT_DCA_buy_percentage_2 = 125
|
||||||
|
#DEFAULT_DCA_buy_percentage_3 = 100
|
||||||
|
#DEFAULT_DCA_buy_percentage_4 = 100
|
||||||
|
#DEFAULT_DCA_buy_percentage_5 = 75
|
||||||
|
#DEFAULT_DCA_buy_percentage_6 = 75
|
||||||
|
#
|
||||||
|
DEFAULT_DCA_buy_percentage_1 = 60
|
||||||
|
DEFAULT_DCA_buy_percentage_2 = 75
|
||||||
DEFAULT_DCA_buy_percentage_3 = 50
|
DEFAULT_DCA_buy_percentage_3 = 50
|
||||||
DEFAULT_DCA_buy_percentage_4 = 25
|
DEFAULT_DCA_buy_percentage_4 = 37.5
|
||||||
DEFAULT_DCA_buy_percentage_5 = 30
|
DEFAULT_DCA_buy_percentage_5 = 30
|
||||||
DEFAULT_DCA_buy_percentage_6 = 25
|
DEFAULT_DCA_buy_percentage_6 = 25
|
||||||
DEFAULT_DCA_buy_percentage_7 = 20
|
DEFAULT_DCA_buy_percentage_7 = 21.42857143
|
||||||
DEFAULT_DCA_buy_percentage_8 = 15.5
|
DEFAULT_DCA_buy_percentage_8 = 18.75
|
||||||
DEFAULT_DCA_buy_percentage_9 = 12.11
|
DEFAULT_DCA_buy_percentage_9 = 16.66666667
|
||||||
DEFAULT_DCA_buy_percentage_10 = 10
|
DEFAULT_DCA_buy_percentage_10 = 15
|
||||||
DEFAULT_DCA_buy_percentage_11 = 8
|
DEFAULT_DCA_buy_percentage_11 = 13.63636364
|
||||||
DEFAULT_DCA_buy_percentage_12 = 7
|
DEFAULT_DCA_buy_percentage_12 = 12.5
|
||||||
DEFAULT_DCA_buy_percentage_13 = 6
|
DEFAULT_DCA_buy_percentage_13 = 11.53846154
|
||||||
DEFAULT_DCA_buy_percentage_14 = 6
|
DEFAULT_DCA_buy_percentage_14 = 10.71428571
|
||||||
DEFAULT_DCA_buy_percentage_15 = 5
|
DEFAULT_DCA_buy_percentage_15 = 10
|
||||||
DEFAULT_DCA_buy_percentage_16 = 5
|
DEFAULT_DCA_buy_percentage_16 = 9.375
|
||||||
DEFAULT_DCA_buy_percentage_17 = 5
|
DEFAULT_DCA_buy_percentage_17 = 8.823529412
|
||||||
DEFAULT_DCA_buy_percentage_18 = 5
|
DEFAULT_DCA_buy_percentage_18 = 8.333333333
|
||||||
DEFAULT_DCA_buy_percentage_19 = 5
|
DEFAULT_DCA_buy_percentage_19 = 7.894736842
|
||||||
DEFAULT_DCA_buy_percentage_20 = 5
|
DEFAULT_DCA_buy_percentage_20 = 7.5
|
||||||
|
DEFAULT_DCA_buy_percentage_21 = 7.142857143
|
||||||
|
DEFAULT_DCA_buy_percentage_22 = 6.818181818
|
||||||
|
DEFAULT_DCA_buy_percentage_23 = 6.52173913
|
||||||
|
DEFAULT_DCA_buy_percentage_24 = 6.25
|
||||||
|
DEFAULT_DCA_buy_percentage_25 = 6
|
||||||
|
DEFAULT_DCA_buy_percentage_26 = 5.769230769
|
||||||
|
DEFAULT_DCA_buy_percentage_27 = 5.555555556
|
||||||
|
DEFAULT_DCA_buy_percentage_28 = 5.357142857
|
||||||
|
DEFAULT_DCA_buy_percentage_29 = 5.172413793
|
||||||
|
DEFAULT_DCA_buy_percentage_30 = 5
|
||||||
|
DEFAULT_DCA_buy_percentage_31 = 4.838709677
|
||||||
|
DEFAULT_DCA_buy_percentage_32 = 4.6875
|
||||||
|
DEFAULT_DCA_buy_percentage_33 = 4.545454545
|
||||||
|
DEFAULT_DCA_buy_percentage_34 = 4.411764706
|
||||||
|
DEFAULT_DCA_buy_percentage_35 = 4.285714286
|
||||||
|
DEFAULT_DCA_buy_percentage_36 = 4.166666667
|
||||||
|
DEFAULT_DCA_buy_percentage_37 = 4.054054054
|
||||||
|
DEFAULT_DCA_buy_percentage_38 = 3.947368421
|
||||||
|
DEFAULT_DCA_buy_percentage_39 = 3.846153846
|
||||||
|
DEFAULT_DCA_buy_percentage_40 = 3.75
|
||||||
|
DEFAULT_DCA_buy_percentage_41 = 3.658536585
|
||||||
|
DEFAULT_DCA_buy_percentage_42 = 3.571428571
|
||||||
|
DEFAULT_DCA_buy_percentage_43 = 3.488372093
|
||||||
|
DEFAULT_DCA_buy_percentage_44 = 3.409090909
|
||||||
|
DEFAULT_DCA_buy_percentage_45 = 3.333333333
|
||||||
|
DEFAULT_DCA_buy_percentage_46 = 3.260869565
|
||||||
|
DEFAULT_DCA_buy_percentage_47 = 3.191489362
|
||||||
|
DEFAULT_DCA_buy_percentage_48 = 3.125
|
||||||
|
DEFAULT_DCA_buy_percentage_49 = 3.06122449
|
||||||
|
DEFAULT_DCA_buy_percentage_50 = 3
|
||||||
|
DEFAULT_DCA_buy_percentage_51 = 2.941176471
|
||||||
|
DEFAULT_DCA_buy_percentage_52 = 2.884615385
|
||||||
|
DEFAULT_DCA_buy_percentage_53 = 2.830188679
|
||||||
|
DEFAULT_DCA_buy_percentage_54 = 2.777777778
|
||||||
|
DEFAULT_DCA_buy_percentage_55 = 2.727272727
|
||||||
|
DEFAULT_DCA_buy_percentage_56 = 2.678571429
|
||||||
|
DEFAULT_DCA_buy_percentage_57 = 2.631578947
|
||||||
|
DEFAULT_DCA_buy_percentage_58 = 2.586206897
|
||||||
|
DEFAULT_DCA_buy_percentage_59 = 2.542372881
|
||||||
|
DEFAULT_DCA_buy_percentage_60 = 2.5
|
||||||
|
DEFAULT_DCA_buy_percentage_61 = 2.459016393
|
||||||
|
DEFAULT_DCA_buy_percentage_62 = 2.419354839
|
||||||
|
DEFAULT_DCA_buy_percentage_63 = 2.380952381
|
||||||
|
DEFAULT_DCA_buy_percentage_64 = 2.34375
|
||||||
|
DEFAULT_DCA_buy_percentage_65 = 2.307692308
|
||||||
|
DEFAULT_DCA_buy_percentage_66 = 2.272727273
|
||||||
|
DEFAULT_DCA_buy_percentage_67 = 2.23880597
|
||||||
|
DEFAULT_DCA_buy_percentage_68 = 2.205882353
|
||||||
|
DEFAULT_DCA_buy_percentage_69 = 2.173913043
|
||||||
|
DEFAULT_DCA_buy_percentage_70 = 2.142857143
|
||||||
|
DEFAULT_DCA_buy_percentage_71 = 2.112676056
|
||||||
|
DEFAULT_DCA_buy_percentage_72 = 2.083333333
|
||||||
|
DEFAULT_DCA_buy_percentage_73 = 2.054794521
|
||||||
|
DEFAULT_DCA_buy_percentage_74 = 2.027027027
|
||||||
|
DEFAULT_DCA_buy_percentage_75 = 2
|
||||||
|
DEFAULT_DCA_buy_percentage_76 = 1.973684211
|
||||||
|
DEFAULT_DCA_buy_percentage_77 = 1.948051948
|
||||||
|
DEFAULT_DCA_buy_percentage_78 = 1.923076923
|
||||||
|
DEFAULT_DCA_buy_percentage_79 = 1.898734177
|
||||||
|
DEFAULT_DCA_buy_percentage_80 = 1.875
|
||||||
|
DEFAULT_DCA_buy_percentage_81 = 1.851851852
|
||||||
|
DEFAULT_DCA_buy_percentage_82 = 1.829268293
|
||||||
|
DEFAULT_DCA_buy_percentage_83 = 1.807228916
|
||||||
|
DEFAULT_DCA_buy_percentage_84 = 1.785714286
|
||||||
|
DEFAULT_DCA_buy_percentage_85 = 1.764705882
|
||||||
|
DEFAULT_DCA_buy_percentage_86 = 1.744186047
|
||||||
|
DEFAULT_DCA_buy_percentage_87 = 1.724137931
|
||||||
|
DEFAULT_DCA_buy_percentage_88 = 1.704545455
|
||||||
|
DEFAULT_DCA_buy_percentage_89 = 1.685393258
|
||||||
|
DEFAULT_DCA_buy_percentage_90 = 1.666666667
|
||||||
|
DEFAULT_DCA_buy_percentage_91 = 1.648351648
|
||||||
|
DEFAULT_DCA_buy_percentage_92 = 1.630434783
|
||||||
|
DEFAULT_DCA_buy_percentage_93 = 1.612903226
|
||||||
|
DEFAULT_DCA_buy_percentage_94 = 1.595744681
|
||||||
|
DEFAULT_DCA_buy_percentage_95 = 1.578947368
|
||||||
|
DEFAULT_DCA_buy_percentage_96 = 1.5625
|
||||||
|
DEFAULT_DCA_buy_percentage_97 = 1.546391753
|
||||||
|
DEFAULT_DCA_buy_percentage_98 = 1.530612245
|
||||||
|
DEFAULT_DCA_buy_percentage_99 = 1.515151515
|
||||||
|
DEFAULT_DCA_buy_percentage_100 = 1.5
|
||||||
|
#
|
||||||
|
#---------------------------------------------------------------
|
||||||
|
#SELL SETTINGS
|
||||||
|
#
|
||||||
|
DCA_orderbook_profit_calculation = true
|
||||||
|
#DEFAULT_DCA_trailing_profit_rebound_count = 2
|
||||||
|
#
|
||||||
|
DCA_orderbook_profit_calculation = true
|
||||||
|
#DEFAULT_DCA_trailing_profit_rebound_count = 2
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_A_sell_strategy = GAIN
|
DEFAULT_DCA_A_sell_strategy = GAIN
|
||||||
DEFAULT_DCA_A_sell_value = 1
|
DEFAULT_DCA_A_sell_value = 1.573
|
||||||
|
DEFAULT_DCA_trailing_profit = 0.27
|
||||||
|
DEFAULT_DCA_trailing_profit_type = GROW
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_B_sell_strategy = RSI
|
DEFAULT_DCA_B_sell_strategy = HIGHBB
|
||||||
DEFAULT_DCA_B_sell_value = 40
|
DEFAULT_DCA_B_sell_value = 50
|
||||||
|
#
|
||||||
|
DEFAULT_DCA_C_sell_strategy = STOCHRSIK
|
||||||
|
DEFAULT_DCA_C_sell_value = 60
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_trailing_profit = 0.147
|
|
||||||
DEFAULT_DCA_max_profit = 0
|
DEFAULT_DCA_max_profit = 0
|
||||||
#
|
DEFAULT_DCA_take_profit_wait_time = 60
|
||||||
DEFAULT_DCA_min_order_book_volume_percentage = 100
|
DEFAULT_DCA_take_profit_reset_percentage_move = .25
|
||||||
#
|
DEFAULT_DCA_take_profit_percentage = 0.5
|
||||||
DEFAULT_DCA_ignore_sell_only_mode = true
|
|
||||||
#
|
|
||||||
DEFAULT_DCA_max_buy_spread = 2
|
|
||||||
DEFAULT_DCA_rebuy_timeout = 10
|
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_stop_loss_trigger = 0
|
DEFAULT_DCA_stop_loss_trigger = 0
|
||||||
DEFAULT_DCA_stop_loss_timeout = 0
|
DEFAULT_DCA_stop_loss_timeout = 0
|
||||||
DEFAULT_DCA_pending_order_wait_time = 0
|
|
||||||
#
|
#
|
||||||
DEFAULT_DCA_buy_min_price_increase = 0
|
#========================================
|
||||||
DEFAULT_DCA_buy_max_price_increase = 0
|
|
||||||
#
|
#
|
||||||
|
#--------------------------------TUSD
|
||||||
|
#
|
||||||
|
#TUSD_DCA_A_sell_value = 1.5
|
||||||
|
#TUSD_DCA_trailing_profit = 0.45
|
||||||
|
#TUSD_DCA_trailing_profit_type = GROW
|
||||||
|
#TUSD_DCA_B_sell_value = 75
|
||||||
|
#TUSD_DCA_C_sell_value = 0
|
||||||
|
#
|
||||||
|
#TUSD_DCA_buy_min_change_percentage = -10
|
||||||
|
#TUSD_DCA_max_buy_spread = 2
|
||||||
|
TUSD_DCA_buy_trigger = -1.5
|
||||||
|
#
|
||||||
|
#DEFAULT_DCA_take_profit_wait_time = 60
|
||||||
|
#DEFAULT_DCA_take_profit_reset_percentage_move = .3
|
||||||
|
#DEFAULT_DCA_take_profit_percentage = 2
|
||||||
|
#
|
||||||
|
#========================================
|
||||||
|
#
|
||||||
|
#------------------------ STOP LOSS TRIGGERS
|
||||||
|
#
|
||||||
|
#DCA_stop_before_complete = true
|
||||||
|
#TRX_DCA_stop_loss_trigger = -2
|
||||||
|
#TUSD_DCA_stop_loss_trigger = -7
|
||||||
|
#
|
||||||
|
#========================================
|
||||||
|
#----------------------------------------
|
||||||
|
# Coin Specific STRATEGY
|
||||||
|
#----------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,78 @@
|
||||||
# ####################################
|
# ####################################
|
||||||
# ####### PTMagic Current Setting ########
|
# ####### PTMagic Current Setting ########
|
||||||
# PTMagic_ActiveSetting = Default
|
# PTMagic_ActiveSetting = ElDorado-V4
|
||||||
# PTMagic_LastChanged = 3/26/2018 11:52 AM
|
# PTMagic_LastChanged = 11/30/2018 16:41
|
||||||
# ####################################
|
# ####################################
|
||||||
#
|
|
||||||
|
# Standard Deviation
|
||||||
BB_std = 2
|
BB_std = 2
|
||||||
BB_candle_period = 300
|
# Define how many candles back to look back
|
||||||
BB_length = 20
|
BB_length = 20
|
||||||
#
|
# Define the period (in seconds) used by all BB calculation of ProfitTrailer.
|
||||||
SMA_cross_candles = 2
|
BB_candle_period = 900
|
||||||
SMA_candle_period = 300
|
# Define how many candles back to look and see if the SMA lines just crossed.
|
||||||
SMA_fast_length = 12
|
SMA_cross_candles = 4
|
||||||
SMA_slow_length = 24
|
# Define the period (in seconds) used to calculate the SMA lines
|
||||||
#
|
SMA_candle_period = 3600
|
||||||
EMA_cross_candles = 3
|
# Define the SMA time frame (in candles) used to calculate the fast SMA line.
|
||||||
EMA_candle_period = 300
|
SMA_fast_length = 21
|
||||||
EMA_fast_length = 3
|
# Define the SMA time frame (in candles) used to calculate the slow SMA line.
|
||||||
EMA_slow_length = 24
|
SMA_slow_length = 55
|
||||||
#
|
# Define how many candles back to look and see if the EMA lines just crossed.
|
||||||
RSI_candle_period = 300
|
EMA_cross_candles = 12
|
||||||
RSI_length = 14
|
# Define the period (in seconds) used to calculate the EMA lines.
|
||||||
#
|
EMA_candle_period = 900
|
||||||
|
# Define the EMA time frame (in candles) used to calculate the fast EMA line.
|
||||||
|
EMA_fast_length = 8
|
||||||
|
# Define the EMA time frame (in candles) used to calculate the slow EMA line.
|
||||||
|
EMA_slow_length = 13
|
||||||
|
# Define the period (in seconds) used to calculate the RSI lines.
|
||||||
|
RSI_candle_period = 900
|
||||||
|
# Define the RSI time frame (in candles) used by all RSI calculations
|
||||||
|
RSI_length = 2
|
||||||
|
# Define the period (in seconds) used to calculate the STOCH.
|
||||||
|
STOCH_candle_period = 900
|
||||||
|
# Define the Stochastics RSI time frame (in candles) used by all STOCHRSI calculations
|
||||||
STOCH_length = 14
|
STOCH_length = 14
|
||||||
#
|
# The Stochastic Oscillator (STOCH) is range bound between 0 and 100.
|
||||||
MACD_candle_period = 300
|
# Both K and D represent lines on a price action chart.
|
||||||
|
# The first line (known as K) displays the current close (ie. the percentage of the
|
||||||
|
# price at closing) in relation to the price range (high/low) along the number of
|
||||||
|
# candles used to look back along the price action chart.
|
||||||
|
STOCH_K = 1
|
||||||
|
# The second line (known as D) is a simple moving average of the first line, typically
|
||||||
|
# based on the last three candle periods for smoothing.
|
||||||
|
STOCH_D = 1
|
||||||
|
# Define the period (in seconds) used to calculate the MACD lines.
|
||||||
|
MACD_candle_period = 900
|
||||||
|
# Define the MA time frame (in candles) used to calculate the fast MACD line.
|
||||||
MACD_fast_length = 12
|
MACD_fast_length = 12
|
||||||
|
# Define the MA time frame (in candles) used to calculate the slow MACD line.
|
||||||
MACD_slow_length = 26
|
MACD_slow_length = 26
|
||||||
|
# Define the time frame (in days) of the EMA (Exponential Moving Average) of the MACD
|
||||||
MACD_signal = 9
|
MACD_signal = 9
|
||||||
|
# Define the period (in seconds) used to calculate the RSI lines.
|
||||||
|
OBV_candle_period = 900
|
||||||
|
# Total count of candles used to calculate the OBV values, e.g. 15 means we have 15 OBV values
|
||||||
|
OBV_length = 50
|
||||||
|
# The number (integer) of the first OBV value used for the calculation of the percentage change.
|
||||||
|
OBV_signal = 1
|
||||||
|
# Always uses 5 minute candles
|
||||||
|
SOM_trigger_length = 288
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
STOCHRSI_candle_period = 900
|
||||||
|
STOCHRSIK_candle_period = 900
|
||||||
|
STOCHRSID_candle_period = 900
|
||||||
|
#
|
||||||
|
STOCHRSI_stoch_length = 14
|
||||||
|
STOCHRSIK_stoch_length = 14
|
||||||
|
STOCHRSID_stoch_length = 14
|
||||||
|
#
|
||||||
|
STOCHRSI_rsi_length = 14
|
||||||
|
STOCHRSIK_rsi_length = 14
|
||||||
|
STOCHRSID_rsi_length = 14
|
||||||
|
#
|
||||||
|
STOCHRSIK_K = 3
|
||||||
|
STOCHRSID_K = 3
|
||||||
|
STOCHRSID_D = 3
|
|
@ -1,67 +1,165 @@
|
||||||
# ####################################
|
# ####################################
|
||||||
# ####### PTMagic Current Setting ########
|
# ####### PTMagic Current Setting ########
|
||||||
# PTMagic_ActiveSetting = Default
|
# PTMagic_ActiveSetting = Default
|
||||||
# PTMagic_LastChanged = 23.05.2018 07:29
|
# PTMagic_LastChanged = 2/16/2019 4:05 PM
|
||||||
# ####################################
|
# ####################################
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
market = USDT
|
|
||||||
#
|
#
|
||||||
start_balance = 1105.17429444
|
# BTC PT2.2/PTM2.1
|
||||||
USDT_dust = 3.50
|
|
||||||
#
|
#
|
||||||
enabled_pairs = ADA, BCC, BTC, BTG, ETH, LTC, NEO, OMG, XMR, XRP, ZEC
|
|
||||||
hidden_pairs = ALL
|
|
||||||
#
|
#
|
||||||
max_trading_pairs = 5
|
#========================================
|
||||||
|
# >>> Hotconfig <<<
|
||||||
|
#========================================
|
||||||
|
#http://localhost:8082/settings/sellOnlyMode?type=&enabled=false
|
||||||
#
|
#
|
||||||
keep_balance = 0
|
#---------------------------------
|
||||||
keep_balance_percentage = 0
|
#xxx_reset_stored_average = true
|
||||||
|
#xxx_bought_price = xxxxxxx
|
||||||
#
|
#
|
||||||
consecutive_buy_trigger = 0
|
#XXX_DCA_set_buy_times = 0
|
||||||
consecutive_sell_trigger = 0
|
|
||||||
#
|
#
|
||||||
|
# ================================== DCA
|
||||||
|
#
|
||||||
|
DEFAULT_DCA_enabled = -0.1
|
||||||
|
#BNB_DCA_enabled = false
|
||||||
|
#BAT_DCA_enabled =
|
||||||
|
#NPXS_DCA_enabled = false
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#========================================
|
||||||
|
# Saftey Triggers
|
||||||
|
#========================================
|
||||||
|
#
|
||||||
|
#NANO_panic_sell_enabled = true
|
||||||
|
#
|
||||||
|
DEFAULT_sell_only_mode_enabled = false
|
||||||
DEFAULT_trading_enabled = true
|
DEFAULT_trading_enabled = true
|
||||||
DEFAULT_sell_only_mode_enabled = true
|
#consecutive_buy_trigger = 4
|
||||||
|
#consecutive_sell_trigger = 1
|
||||||
#
|
#
|
||||||
pair_min_listed_days = 14
|
#price_trigger_market = BTC
|
||||||
DEFAULT_DCA_enabled = true
|
#price_rise_trigger = 5
|
||||||
|
#price_rise_recover_trigger = 4
|
||||||
|
#price_drop_trigger = 8
|
||||||
|
#price_drop_recover_trigger = 6.4
|
||||||
#
|
#
|
||||||
DEFAULT_initial_cost = 10
|
#========================================
|
||||||
DEFAULT_initial_cost_percentage = 0
|
# Money Management $ $ $
|
||||||
DEFAULT_min_buy_volume = 300000
|
#========================================
|
||||||
DEFAULT_min_buy_price = 0
|
market = BTC
|
||||||
|
start_balance = 2.3
|
||||||
|
max_trading_pairs = 14
|
||||||
|
DEFAULT_initial_cost = 0
|
||||||
|
DEFAULT_initial_cost_percentage = 4
|
||||||
|
keep_balance_percentage = 75
|
||||||
|
#
|
||||||
|
#========================================
|
||||||
|
# WHAT TO TRADE
|
||||||
|
#========================================
|
||||||
|
enabled_pairs = ALL
|
||||||
|
DEFAULT_buy_min_change_percentage = -3
|
||||||
|
DEFAULT_buy_max_change_percentage = 20
|
||||||
|
pair_min_listed_days = 15
|
||||||
|
#
|
||||||
|
DEFAULT_min_buy_volume = 350
|
||||||
|
#
|
||||||
|
DEFAULT_min_buy_price = 0.00000250
|
||||||
|
DEFAULT_min_orderbook_volume_percentage = 120
|
||||||
DEFAULT_max_buy_spread = 1
|
DEFAULT_max_buy_spread = 1
|
||||||
DEFAULT_min_order_book_volume_percentage = 100
|
#DEFAULT_sell_wall_orderbook_depth = 40
|
||||||
|
#DEFAULT_sell_wall_diff_percentage = 600
|
||||||
|
DEFAULT_rebuy_timeout = 10
|
||||||
#
|
#
|
||||||
DEFAULT_A_buy_strategy = LOWBB
|
# ------------------------------ DO NOT TRADE
|
||||||
DEFAULT_A_buy_value = 5
|
hidden_pairs = ALL
|
||||||
DEFAULT_A_buy_value_limit = -2.5
|
#ZIL_trading_enabled = false
|
||||||
#
|
#
|
||||||
DEFAULT_B_buy_strategy = RSI
|
#KMD_sell_only_mode_enabled = true
|
||||||
DEFAULT_B_buy_value = 33
|
#
|
||||||
|
# ------------------------------ DELISTING
|
||||||
|
CLOAK_trading_enabled = false
|
||||||
|
MOD_trading_enabled = false
|
||||||
|
SALT_trading_enabled = false
|
||||||
|
SUB_trading_enabled = false
|
||||||
|
WINGS_trading_enabled = false
|
||||||
|
#
|
||||||
|
#========================================
|
||||||
|
# BUY
|
||||||
|
#========================================
|
||||||
|
#
|
||||||
|
DEFAULT_A_buy_strategy = EMAGAIN
|
||||||
|
DEFAULT_A_buy_value = -0.23
|
||||||
|
DEFAULT_A_buy_value_limit = 0
|
||||||
|
#
|
||||||
|
DEFAULT_trailing_buy = 0.27
|
||||||
|
#
|
||||||
|
DEFAULT_B_buy_strategy = LOWBB
|
||||||
|
DEFAULT_B_buy_value = 25
|
||||||
DEFAULT_B_buy_value_limit = 0
|
DEFAULT_B_buy_value_limit = 0
|
||||||
#
|
#
|
||||||
DEFAULT_trailing_buy = 0
|
DEFAULT_C_buy_strategy = STOCHRSIK
|
||||||
|
DEFAULT_C_buy_value = 25
|
||||||
|
DEFAULT_C_buy_value_limit = 0
|
||||||
|
#
|
||||||
|
DEFAULT_D_buy_strategy = DISABLED
|
||||||
|
DEFAULT_D_buy_value = 0
|
||||||
|
DEFAULT_D_buy_value_limit = 0
|
||||||
|
DEFAULT_E_buy_strategy = DISABLED
|
||||||
|
DEFAULT_E_buy_value = 0
|
||||||
|
DEFAULT_E_buy_value_limit = 0
|
||||||
|
#
|
||||||
|
#========================================
|
||||||
|
# SELL
|
||||||
|
#========================================
|
||||||
|
orderbook_profit_calculation = true
|
||||||
#
|
#
|
||||||
DEFAULT_A_sell_strategy = GAIN
|
DEFAULT_A_sell_strategy = GAIN
|
||||||
DEFAULT_A_sell_value = 1
|
DEFAULT_A_sell_value = 1.73
|
||||||
|
DEFAULT_trailing_profit_type = GROW
|
||||||
|
DEFAULT_trailing_profit = 0.33
|
||||||
#
|
#
|
||||||
DEFAULT_B_sell_strategy = RSI
|
DEFAULT_B_sell_strategy = HIGHBB
|
||||||
DEFAULT_B_sell_value = 40
|
DEFAULT_B_sell_value = 50
|
||||||
|
#
|
||||||
|
#DEFAULT_C_sell_strategy = STOCHRSIK
|
||||||
|
DEFAULT_C_sell_strategy = RSI
|
||||||
|
DEFAULT_C_sell_value = 50
|
||||||
|
#
|
||||||
|
DEFAULT_take_profit_wait_time = 90
|
||||||
|
DEFAULT_take_profit_percentage = 0.75
|
||||||
|
DEFAULT_take_profit_reset_percentage_move = 0.25
|
||||||
|
orderbook_profit_calculation = true
|
||||||
#
|
#
|
||||||
DEFAULT_trailing_profit = 0.16
|
|
||||||
DEFAULT_max_profit = 0
|
DEFAULT_max_profit = 0
|
||||||
#
|
|
||||||
DEFAULT_stop_loss_trigger = 0
|
|
||||||
DEFAULT_stop_loss_timeout = 0
|
|
||||||
DEFAULT_panic_sell_enabled = false
|
|
||||||
DEFAULT_rebuy_timeout = 5
|
|
||||||
#
|
|
||||||
DEFAULT_buy_min_price_increase = 0
|
|
||||||
DEFAULT_buy_max_price_increase = 0
|
|
||||||
#
|
|
||||||
DEFAULT_pending_order_wait_time = 0
|
DEFAULT_pending_order_wait_time = 0
|
||||||
DEFAULT_combined_cancel_pending_trigger = 0
|
DEFAULT_combined_cancel_pending_trigger = 0
|
||||||
|
DEFAULT_stop_loss_trigger = 0
|
||||||
|
DEFAULT_stop_loss_timeout = 0
|
||||||
#
|
#
|
||||||
|
#========================================
|
||||||
|
#
|
||||||
|
#------------------------- TUSD
|
||||||
|
#
|
||||||
|
#TUSD_A_sell_value = 3
|
||||||
|
#TUSD_trailing_profit = 0.75
|
||||||
|
#TUSD_trailing_profit_type = GROWTH
|
||||||
|
#TUSD_B_sell_value = 75
|
||||||
|
#
|
||||||
|
#TUSD_take_profit_wait_time = 90
|
||||||
|
#TUSD_take_profit_reset_percentage_move = .25
|
||||||
|
#
|
||||||
|
#TUSD_DCA_enabled = false
|
||||||
|
#
|
||||||
|
#========================================
|
||||||
|
#
|
||||||
|
#------------------------ STOP LOSS TRIGGERS
|
||||||
|
#
|
||||||
|
#TRX_stop_loss_trigger = -2
|
||||||
|
#TUSD_stop_loss_trigger = -3.5
|
||||||
|
#
|
||||||
|
#========================================
|
||||||
|
#----------------------------------------
|
||||||
|
# Coin Specific STRATEGY
|
||||||
|
#----------------------------------------
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
# ####################################
|
||||||
|
# ####### PTMagic Current Setting ########
|
||||||
|
# PTMagic_ActiveSetting = ElDorado-V4
|
||||||
|
# PTMagic_LastChanged = 11/30/2018 16:41
|
||||||
|
# ####################################
|
||||||
|
#
|
||||||
|
# Standard Deviation
|
||||||
|
BB_std = 2
|
||||||
|
# Define how many candles back to look back
|
||||||
|
BB_length = 20
|
||||||
|
# Define the period (in seconds) used by all BB calculation of ProfitTrailer.
|
||||||
|
BB_candle_period = 900
|
||||||
|
# Define how many candles back to look and see if the SMA lines just crossed.
|
||||||
|
SMA_cross_candles = 4
|
||||||
|
# Define the period (in seconds) used to calculate the SMA lines
|
||||||
|
SMA_candle_period = 3600
|
||||||
|
# Define the SMA time frame (in candles) used to calculate the fast SMA line.
|
||||||
|
SMA_fast_length = 21
|
||||||
|
# Define the SMA time frame (in candles) used to calculate the slow SMA line.
|
||||||
|
SMA_slow_length = 55
|
||||||
|
# Define how many candles back to look and see if the EMA lines just crossed.
|
||||||
|
EMA_cross_candles = 12
|
||||||
|
# Define the period (in seconds) used to calculate the EMA lines.
|
||||||
|
EMA_candle_period = 900
|
||||||
|
# Define the EMA time frame (in candles) used to calculate the fast EMA line.
|
||||||
|
EMA_fast_length = 8
|
||||||
|
# Define the EMA time frame (in candles) used to calculate the slow EMA line.
|
||||||
|
EMA_slow_length = 13
|
||||||
|
# Define the period (in seconds) used to calculate the RSI lines.
|
||||||
|
RSI_candle_period = 900
|
||||||
|
# Define the RSI time frame (in candles) used by all RSI calculations
|
||||||
|
RSI_length = 2
|
||||||
|
# Define the period (in seconds) used to calculate the STOCH.
|
||||||
|
STOCH_candle_period = 900
|
||||||
|
# Define the Stochastics RSI time frame (in candles) used by all STOCHRSI calculations
|
||||||
|
STOCH_length = 14
|
||||||
|
# The Stochastic Oscillator (STOCH) is range bound between 0 and 100.
|
||||||
|
# Both K and D represent lines on a price action chart.
|
||||||
|
# The first line (known as K) displays the current close (ie. the percentage of the
|
||||||
|
# price at closing) in relation to the price range (high/low) along the number of
|
||||||
|
# candles used to look back along the price action chart.
|
||||||
|
STOCH_K = 1
|
||||||
|
# The second line (known as D) is a simple moving average of the first line, typically
|
||||||
|
# based on the last three candle periods for smoothing.
|
||||||
|
STOCH_D = 1
|
||||||
|
# Define the period (in seconds) used to calculate the MACD lines.
|
||||||
|
MACD_candle_period = 900
|
||||||
|
# Define the MA time frame (in candles) used to calculate the fast MACD line.
|
||||||
|
MACD_fast_length = 12
|
||||||
|
# Define the MA time frame (in candles) used to calculate the slow MACD line.
|
||||||
|
MACD_slow_length = 26
|
||||||
|
# Define the time frame (in days) of the EMA (Exponential Moving Average) of the MACD
|
||||||
|
MACD_signal = 9
|
||||||
|
# Define the period (in seconds) used to calculate the RSI lines.
|
||||||
|
OBV_candle_period = 900
|
||||||
|
# Total count of candles used to calculate the OBV values, e.g. 15 means we have 15 OBV values
|
||||||
|
OBV_length = 50
|
||||||
|
# The number (integer) of the first OBV value used for the calculation of the percentage change.
|
||||||
|
OBV_signal = 1
|
||||||
|
# Always uses 5 minute candles
|
||||||
|
SOM_trigger_length = 288
|
||||||
|
#
|
||||||
|
#
|
||||||
|
STOCHRSI_candle_period = 900
|
||||||
|
STOCHRSIK_candle_period = 900
|
||||||
|
STOCHRSID_candle_period = 900
|
||||||
|
#
|
||||||
|
STOCHRSI_stoch_length = 14
|
||||||
|
STOCHRSIK_stoch_length = 14
|
||||||
|
STOCHRSID_stoch_length = 14
|
||||||
|
#
|
||||||
|
STOCHRSI_rsi_length = 14
|
||||||
|
STOCHRSIK_rsi_length = 14
|
||||||
|
STOCHRSID_rsi_length = 14
|
||||||
|
#
|
||||||
|
STOCHRSIK_K = 3
|
||||||
|
STOCHRSID_K = 3
|
||||||
|
STOCHRSID_D = 3
|
|
@ -0,0 +1,78 @@
|
||||||
|
# ####################################
|
||||||
|
# ####### PTMagic Current Setting ####
|
||||||
|
# PTMagic_ActiveSetting = ElDorado-V4
|
||||||
|
# PTMagic_LastChanged = 11/30/2018 16:41
|
||||||
|
# ####################################
|
||||||
|
|
||||||
|
# Standard Deviation
|
||||||
|
BB_std = 2
|
||||||
|
# Define how many candles back to look back
|
||||||
|
BB_length = 20
|
||||||
|
# Define the period (in seconds) used by all BB calculation of ProfitTrailer.
|
||||||
|
BB_candle_period = 900
|
||||||
|
# Define how many candles back to look and see if the SMA lines just crossed.
|
||||||
|
SMA_cross_candles = 4
|
||||||
|
# Define the period (in seconds) used to calculate the SMA lines
|
||||||
|
SMA_candle_period = 3600
|
||||||
|
# Define the SMA time frame (in candles) used to calculate the fast SMA line.
|
||||||
|
SMA_fast_length = 21
|
||||||
|
# Define the SMA time frame (in candles) used to calculate the slow SMA line.
|
||||||
|
SMA_slow_length = 55
|
||||||
|
# Define how many candles back to look and see if the EMA lines just crossed.
|
||||||
|
EMA_cross_candles = 12
|
||||||
|
# Define the period (in seconds) used to calculate the EMA lines.
|
||||||
|
EMA_candle_period = 900
|
||||||
|
# Define the EMA time frame (in candles) used to calculate the fast EMA line.
|
||||||
|
EMA_fast_length = 8
|
||||||
|
# Define the EMA time frame (in candles) used to calculate the slow EMA line.
|
||||||
|
EMA_slow_length = 13
|
||||||
|
# Define the period (in seconds) used to calculate the RSI lines.
|
||||||
|
RSI_candle_period = 900
|
||||||
|
# Define the RSI time frame (in candles) used by all RSI calculations
|
||||||
|
RSI_length = 2
|
||||||
|
# Define the period (in seconds) used to calculate the STOCH.
|
||||||
|
STOCH_candle_period = 900
|
||||||
|
# Define the Stochastics RSI time frame (in candles) used by all STOCHRSI calculations
|
||||||
|
STOCH_length = 14
|
||||||
|
# The Stochastic Oscillator (STOCH) is range bound between 0 and 100.
|
||||||
|
# Both K and D represent lines on a price action chart.
|
||||||
|
# The first line (known as K) displays the current close (ie. the percentage of the
|
||||||
|
# price at closing) in relation to the price range (high/low) along the number of
|
||||||
|
# candles used to look back along the price action chart.
|
||||||
|
STOCH_K = 1
|
||||||
|
# The second line (known as D) is a simple moving average of the first line, typically
|
||||||
|
# based on the last three candle periods for smoothing.
|
||||||
|
STOCH_D = 1
|
||||||
|
# Define the period (in seconds) used to calculate the MACD lines.
|
||||||
|
MACD_candle_period = 900
|
||||||
|
# Define the MA time frame (in candles) used to calculate the fast MACD line.
|
||||||
|
MACD_fast_length = 12
|
||||||
|
# Define the MA time frame (in candles) used to calculate the slow MACD line.
|
||||||
|
MACD_slow_length = 26
|
||||||
|
# Define the time frame (in days) of the EMA (Exponential Moving Average) of the MACD
|
||||||
|
MACD_signal = 9
|
||||||
|
# Define the period (in seconds) used to calculate the RSI lines.
|
||||||
|
OBV_candle_period = 900
|
||||||
|
# Total count of candles used to calculate the OBV values, e.g. 15 means we have 15 OBV values
|
||||||
|
OBV_length = 50
|
||||||
|
# The number (integer) of the first OBV value used for the calculation of the percentage change.
|
||||||
|
OBV_signal = 1
|
||||||
|
# Always uses 5 minute candles
|
||||||
|
SOM_trigger_length = 288
|
||||||
|
#
|
||||||
|
#
|
||||||
|
STOCHRSI_candle_period = 900
|
||||||
|
STOCHRSIK_candle_period = 900
|
||||||
|
STOCHRSID_candle_period = 900
|
||||||
|
#
|
||||||
|
STOCHRSI_stoch_length = 14
|
||||||
|
STOCHRSIK_stoch_length = 14
|
||||||
|
STOCHRSID_stoch_length = 14
|
||||||
|
#
|
||||||
|
STOCHRSI_rsi_length = 14
|
||||||
|
STOCHRSIK_rsi_length = 14
|
||||||
|
STOCHRSID_rsi_length = 14
|
||||||
|
#
|
||||||
|
STOCHRSIK_K = 3
|
||||||
|
STOCHRSID_K = 3
|
||||||
|
STOCHRSID_D = 3
|
Loading…
Reference in New Issue