From be7b12234d4d7f16aae894bb83fbe94c8736fbaa Mon Sep 17 00:00:00 2001 From: Jose Cabo Date: Tue, 7 Dec 2021 19:30:15 +0100 Subject: [PATCH 1/9] Adds official freqtrade repo as submodule and checkouts official MGM recommended commit: 3503fdb4 --- .gitignore | 1 - .gitmodules | 3 +++ freqtrade | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 .gitmodules create mode 160000 freqtrade diff --git a/.gitignore b/.gitignore index c1793cdcc..7c71fdd2a 100644 --- a/.gitignore +++ b/.gitignore @@ -67,7 +67,6 @@ config_examples/ docker/ !docker/Dockerfile.MoniGoMani docs/ -freqtrade/ junit/ scripts/ tests/junit/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..cb3e9a71f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "freqtrade"] + path = freqtrade + url = git@github.com:freqtrade/freqtrade.git diff --git a/freqtrade b/freqtrade new file mode 160000 index 000000000..3503fdb4e --- /dev/null +++ b/freqtrade @@ -0,0 +1 @@ +Subproject commit 3503fdb4ec31be99f433fdce039543e0911964d6 From 3bf68067e8b13a5f2e55c6741f216fa2194379ee Mon Sep 17 00:00:00 2001 From: Jose Cabo Date: Tue, 7 Dec 2021 23:50:08 +0100 Subject: [PATCH 2/9] Loads mgm-config files from a directory. --- .gitignore | 31 - .hurry | 8 +- mgm-hurry | 5 +- requirements-mgm-dev.txt | 2 + strategy-config/mgm-config-hyperopt.json | 1438 +++++++++++++++++ .../mgm-config-private.example.json | 0 strategy-config/mgm-config-private.json | 7 + .../mgm-config.example.json | 0 strategy-config/mgm-config.json | 293 ++++ .../mgm_tools/mgm_hurry/MoniGoManiConfig.py | 21 +- .../MasterMoniGoManiHyperStrategy.py | 109 +- 11 files changed, 1810 insertions(+), 104 deletions(-) create mode 100644 requirements-mgm-dev.txt create mode 100644 strategy-config/mgm-config-hyperopt.json rename {user_data => strategy-config}/mgm-config-private.example.json (100%) create mode 100755 strategy-config/mgm-config-private.json rename {user_data => strategy-config}/mgm-config.example.json (100%) create mode 100644 strategy-config/mgm-config.json diff --git a/.gitignore b/.gitignore index 7c71fdd2a..fe3e7f8d0 100644 --- a/.gitignore +++ b/.gitignore @@ -26,16 +26,6 @@ user_data/plot/ .vscode/ *.code-workspace -# Ignore Logo Folder -Logo/ - -# Ignore GitHub Secrets -GitHub-Secrets.txt - -# Ignore fthypt and legacy pickle Files -*.fthypt -*.pickle - # Installer logs pip-log.txt pip-delete-this-directory.txt @@ -59,24 +49,3 @@ test-results*.xml # Ignore pytest cache files .pytest_cache/ - -# Ignore freqtrade installation -.env/ -build_helpers/ -config_examples/ -docker/ -!docker/Dockerfile.MoniGoMani -docs/ -junit/ -scripts/ -tests/junit/ - -freqtrade.service -freqtrade.service.watchdog -freqtrade.egg-info -MANIFEST.in -pyproject.toml -pyproject.yml -setup.cfg -setup.py -setup.sh diff --git a/.hurry b/.hurry index dc2162d6d..9b7737ee8 100644 --- a/.hurry +++ b/.hurry @@ -1,16 +1,12 @@ config: username: MoniGoMani Community exchange: binance - ft_binary: source ./.env/bin/activate; freqtrade + install_type: docker-compose hyperopt: epochs: 1000 loss: MGM_WinRatioAndProfitRatioHyperOptLoss stake_currency: USDT spaces: buy sell strategy: MoniGoManiHyperStrategy - install_type: source - mgm_config_names: - mgm-config: mgm-config.json - mgm-config-hyperopt: mgm-config-hyperopt.json - mgm-config-private: mgm-config-private.json + mgm_config_folder: strategy-config timerange: 20210501-20210616 diff --git a/mgm-hurry b/mgm-hurry index f0b36ab9b..de1a20095 100755 --- a/mgm-hurry +++ b/mgm-hurry @@ -1107,8 +1107,9 @@ class MGMHurry: self.logger.info(Color.title(f'👉 Starting the trader, ' f'{"in Dry-Run Mode!" if dry_run else "in Live-Run Mode, fingers crossed! 🤞"}')) - command = (f'{self.monigomani_config.config["ft_binary"]} trade {self.monigomani_config.command_configs()}' - f'--strategy {self.monigomani_config.config["hyperopt"]["strategy"]}') + command = f'{self.monigomani_config.get_freqtrade_cmd()} trade' + command += f' {self.monigomani_config.get_command_configs()}' + command += f' --strategy {self.monigomani_config.config["hyperopt"]["strategy"]}' if dry_run is True: command += ' --dry-run' diff --git a/requirements-mgm-dev.txt b/requirements-mgm-dev.txt new file mode 100644 index 000000000..0cdaaf228 --- /dev/null +++ b/requirements-mgm-dev.txt @@ -0,0 +1,2 @@ +-r requirements-mgm.txt +pytest==6.2.5 diff --git a/strategy-config/mgm-config-hyperopt.json b/strategy-config/mgm-config-hyperopt.json new file mode 100644 index 000000000..a511ff733 --- /dev/null +++ b/strategy-config/mgm-config-hyperopt.json @@ -0,0 +1,1438 @@ +{ + "strategy_name": "MoniGoManiHyperStrategy", + "params": { + "buy": { + "buy__downwards_trend_signal_triggers_needed": 2, + "buy__downwards_trend_total_signal_needed": 166, + "buy__downwards_trend_total_signal_needed_candles_lookback_window": 5, + "buy__sideways_trend_signal_triggers_needed": 5, + "buy__sideways_trend_total_signal_needed": 310, + "buy__sideways_trend_total_signal_needed_candles_lookback_window": 6, + "buy__upwards_trend_signal_triggers_needed": 5, + "buy__upwards_trend_total_signal_needed": 224, + "buy__upwards_trend_total_signal_needed_candles_lookback_window": 7, + "buy_downwards_trend_macd_weight": 49, + "buy_downwards_trend_mfi_weight": 24, + "buy_downwards_trend_sar_cross_weight": 53, + "buy_downwards_trend_sma_long_golden_cross_weight": 0, + "buy_downwards_trend_sma_short_golden_cross_weight": 0, + "buy_downwards_trend_stoch_weight": 27, + "buy_downwards_trend_tema_weight": 31, + "buy_downwards_trend_vwap_cross_weight": 63, + "buy_sideways_trend_macd_weight": 70, + "buy_sideways_trend_mfi_weight": 0, + "buy_sideways_trend_sar_cross_weight": 73, + "buy_sideways_trend_sma_long_golden_cross_weight": 23, + "buy_sideways_trend_sma_short_golden_cross_weight": 59, + "buy_sideways_trend_stoch_weight": 31, + "buy_sideways_trend_tema_weight": 60, + "buy_sideways_trend_vwap_cross_weight": 58, + "buy_upwards_trend_macd_weight": 44, + "buy_upwards_trend_mfi_weight": 100, + "buy_upwards_trend_sar_cross_weight": 69, + "buy_upwards_trend_sma_long_golden_cross_weight": 54, + "buy_upwards_trend_sma_short_golden_cross_weight": 47, + "buy_upwards_trend_stoch_weight": 43, + "buy_upwards_trend_tema_weight": 52, + "buy_upwards_trend_vwap_cross_weight": 38 + }, + "sell": { + "sell___unclogger_buy_cooldown_minutes_window": 264, + "sell___unclogger_minimal_losing_trade_duration_minutes": 146, + "sell___unclogger_minimal_losing_trades_open": 5, + "sell___unclogger_open_trades_losing_percentage_needed": 38, + "sell___unclogger_trend_lookback_candles_window": 29, + "sell___unclogger_trend_lookback_candles_window_percentage_needed": 45, + "sell__downwards_trend_signal_triggers_needed": 2, + "sell__downwards_trend_total_signal_needed": 192, + "sell__downwards_trend_total_signal_needed_candles_lookback_window": 8, + "sell__sideways_trend_signal_triggers_needed": 8, + "sell__sideways_trend_total_signal_needed": 102, + "sell__sideways_trend_total_signal_needed_candles_lookback_window": 7, + "sell__upwards_trend_signal_triggers_needed": 5, + "sell__upwards_trend_total_signal_needed": 122, + "sell__upwards_trend_total_signal_needed_candles_lookback_window": 7, + "sell_downwards_trend_macd_weight": 48, + "sell_downwards_trend_mfi_weight": 45, + "sell_downwards_trend_sar_cross_weight": 59, + "sell_downwards_trend_sma_long_death_cross_weight": 66, + "sell_downwards_trend_sma_short_death_cross_weight": 57, + "sell_downwards_trend_stoch_weight": 46, + "sell_downwards_trend_tema_weight": 32, + "sell_downwards_trend_vwap_cross_weight": 67, + "sell_sideways_trend_macd_weight": 40, + "sell_sideways_trend_mfi_weight": 52, + "sell_sideways_trend_sar_cross_weight": 23, + "sell_sideways_trend_sma_long_death_cross_weight": 32, + "sell_sideways_trend_sma_short_death_cross_weight": 67, + "sell_sideways_trend_stoch_weight": 42, + "sell_sideways_trend_tema_weight": 72, + "sell_sideways_trend_vwap_cross_weight": 39, + "sell_upwards_trend_macd_weight": 34, + "sell_upwards_trend_mfi_weight": 62, + "sell_upwards_trend_sar_cross_weight": 0, + "sell_upwards_trend_sma_long_death_cross_weight": 69, + "sell_upwards_trend_sma_short_death_cross_weight": 71, + "sell_upwards_trend_stoch_weight": 41, + "sell_upwards_trend_tema_weight": 73, + "sell_upwards_trend_vwap_cross_weight": 60 + }, + "roi": { + "0": 0.614, + "5": 0.6124349969192853, + "10": 0.6108699938385705, + "15": 0.6093049907578558, + "20": 0.6077399876771411, + "25": 0.6061749845964264, + "30": 0.6046099815157117, + "35": 0.6030449784349969, + "40": 0.6014799753542822, + "45": 0.5999149722735675, + "50": 0.5983499691928528, + "55": 0.596784966112138, + "60": 0.5952199630314233, + "65": 0.5936549599507086, + "70": 0.5920899568699938, + "75": 0.590524953789279, + "80": 0.5889599507085643, + "85": 0.5873949476278496, + "90": 0.5858299445471349, + "95": 0.5842649414664202, + "100": 0.5826999383857054, + "105": 0.5811349353049907, + "110": 0.579569932224276, + "115": 0.5780049291435613, + "120": 0.5764399260628466, + "125": 0.5748749229821318, + "130": 0.5733099199014171, + "135": 0.5717449168207024, + "140": 0.5701799137399877, + "145": 0.5686149106592729, + "150": 0.5670499075785582, + "155": 0.5654849044978435, + "160": 0.5639199014171288, + "165": 0.562354898336414, + "170": 0.5607898952556993, + "175": 0.5592248921749846, + "180": 0.5576598890942699, + "185": 0.5560948860135552, + "190": 0.5545298829328404, + "195": 0.5529648798521257, + "200": 0.551399876771411, + "205": 0.5498348736906962, + "210": 0.5482698706099816, + "215": 0.5467048675292667, + "220": 0.5451398644485521, + "225": 0.5435748613678373, + "230": 0.5420098582871226, + "235": 0.5404448552064078, + "240": 0.5388798521256931, + "245": 0.5373148490449784, + "250": 0.5357498459642637, + "255": 0.534184842883549, + "260": 0.5326198398028342, + "265": 0.5310548367221195, + "270": 0.5294898336414048, + "275": 0.5279248305606901, + "280": 0.5263598274799753, + "285": 0.5247948243992606, + "290": 0.5232298213185459, + "295": 0.5216648182378312, + "300": 0.5200998151571165, + "305": 0.5185348120764017, + "310": 0.516969808995687, + "315": 0.5154048059149723, + "320": 0.5138398028342576, + "325": 0.5122747997535428, + "330": 0.5107097966728281, + "335": 0.5091447935921134, + "340": 0.5075797905113987, + "345": 0.506014787430684, + "350": 0.5044497843499691, + "355": 0.5028847812692545, + "360": 0.5013197781885397, + "365": 0.499754775107825, + "370": 0.4981897720271103, + "375": 0.49662476894639557, + "380": 0.49505976586568085, + "385": 0.49349476278496607, + "390": 0.49192975970425135, + "395": 0.4903647566235366, + "400": 0.4887997535428219, + "405": 0.4872347504621072, + "410": 0.48566974738139246, + "415": 0.48410474430067774, + "420": 0.482539741219963, + "425": 0.4809747381392483, + "430": 0.47940973505853357, + "435": 0.47784473197781885, + "440": 0.4762797288971041, + "445": 0.4747147258163894, + "450": 0.4731497227356747, + "455": 0.47158471965495996, + "460": 0.47001971657424524, + "465": 0.4684547134935305, + "470": 0.4668897104128158, + "475": 0.4653247073321011, + "480": 0.4637597042513863, + "485": 0.4621947011706716, + "490": 0.46062969808995685, + "495": 0.45906469500924213, + "500": 0.4574996919285274, + "505": 0.4559346888478127, + "510": 0.45436968576709796, + "515": 0.45280468268638324, + "520": 0.45123967960566846, + "525": 0.44967467652495374, + "530": 0.448109673444239, + "535": 0.4465446703635243, + "540": 0.4449796672828096, + "545": 0.44341466420209485, + "550": 0.44184966112138013, + "555": 0.4402846580406654, + "560": 0.4387196549599507, + "565": 0.43715465187923597, + "570": 0.43558964879852125, + "575": 0.4340246457178065, + "580": 0.4324596426370918, + "585": 0.4308946395563771, + "590": 0.42932963647566236, + "595": 0.42776463339494764, + "600": 0.4261996303142329, + "605": 0.4246346272335182, + "610": 0.42306962415280347, + "615": 0.42150462107208875, + "620": 0.419939617991374, + "625": 0.41837461491065925, + "630": 0.4168096118299445, + "635": 0.4152446087492298, + "640": 0.4136796056685151, + "645": 0.41211460258780036, + "650": 0.41054959950708564, + "655": 0.4089845964263709, + "660": 0.40741959334565614, + "665": 0.4058545902649414, + "670": 0.4042895871842267, + "675": 0.402724584103512, + "680": 0.40115958102279725, + "685": 0.39959457794208253, + "690": 0.3980295748613678, + "695": 0.3964645717806531, + "700": 0.39489956869993836, + "705": 0.39333456561922364, + "710": 0.3917695625385089, + "715": 0.3902045594577942, + "720": 0.3886395563770795, + "725": 0.38707455329636475, + "730": 0.38550955021565003, + "735": 0.3839445471349353, + "740": 0.3823795440542206, + "745": 0.38081454097350587, + "750": 0.37924953789279114, + "755": 0.3776845348120764, + "760": 0.3761195317313617, + "765": 0.3745545286506469, + "770": 0.3729895255699322, + "775": 0.3714245224892175, + "780": 0.36985951940850276, + "785": 0.36829451632778804, + "790": 0.3667295132470733, + "795": 0.3651645101663586, + "800": 0.36359950708564387, + "805": 0.36203450400492915, + "810": 0.3604695009242144, + "815": 0.3589044978434997, + "820": 0.3573394947627849, + "825": 0.3557744916820702, + "830": 0.3542094886013555, + "835": 0.35264448552064076, + "840": 0.35107948243992604, + "845": 0.3495144793592113, + "850": 0.3479494762784966, + "855": 0.3463844731977819, + "860": 0.34481947011706715, + "865": 0.34325446703635243, + "870": 0.3416894639556377, + "875": 0.340124460874923, + "880": 0.33855945779420826, + "885": 0.33699445471349354, + "890": 0.33542945163277876, + "895": 0.33386444855206404, + "900": 0.3322994454713493, + "905": 0.3307344423906346, + "910": 0.3291694393099199, + "915": 0.32760443622920515, + "920": 0.32603943314849043, + "925": 0.3244744300677757, + "930": 0.322909426987061, + "935": 0.32134442390634627, + "940": 0.31977942082563154, + "945": 0.3182144177449168, + "950": 0.3166494146642021, + "955": 0.3150844115834874, + "960": 0.3135194085027726, + "965": 0.3119544054220579, + "970": 0.31038940234134316, + "975": 0.30882439926062843, + "980": 0.3072593961799137, + "985": 0.305694393099199, + "990": 0.30412939001848427, + "995": 0.30256438693776955, + "1000": 0.3009993838570548, + "1005": 0.2994343807763401, + "1010": 0.2978693776956254, + "1015": 0.29630437461491066, + "1020": 0.29473937153419594, + "1025": 0.2931743684534812, + "1030": 0.2916093653727665, + "1035": 0.2900443622920517, + "1040": 0.288479359211337, + "1045": 0.2869143561306223, + "1050": 0.28534935304990755, + "1055": 0.28378434996919283, + "1060": 0.2822193468884781, + "1065": 0.2806543438077634, + "1070": 0.27908934072704866, + "1075": 0.27752433764633394, + "1080": 0.2759593345656192, + "1085": 0.2743943314849045, + "1090": 0.2728293284041898, + "1095": 0.27126432532347505, + "1100": 0.26969932224276033, + "1105": 0.26813431916204555, + "1110": 0.26656931608133083, + "1115": 0.2650043130006161, + "1120": 0.2634393099199014, + "1125": 0.26187430683918667, + "1130": 0.26030930375847194, + "1135": 0.2587443006777572, + "1140": 0.2571792975970425, + "1145": 0.2556142945163278, + "1150": 0.25404929143561306, + "1155": 0.25248428835489833, + "1160": 0.2509192852741836, + "1165": 0.2493542821934689, + "1170": 0.24778927911275417, + "1175": 0.2462242760320394, + "1180": 0.24465927295132467, + "1185": 0.24309426987060995, + "1190": 0.24152926678989523, + "1195": 0.2399642637091805, + "1200": 0.23839926062846578, + "1205": 0.23683425754775106, + "1210": 0.23526925446703634, + "1215": 0.23370425138632162, + "1220": 0.2321392483056069, + "1225": 0.23057424522489217, + "1230": 0.22900924214417745, + "1235": 0.22744423906346273, + "1240": 0.225879235982748, + "1245": 0.22431423290203323, + "1250": 0.2227492298213185, + "1255": 0.22118422674060378, + "1260": 0.21961922365988906, + "1265": 0.21805422057917434, + "1270": 0.21648921749845962, + "1275": 0.2149242144177449, + "1280": 0.21335921133703017, + "1285": 0.21179420825631545, + "1290": 0.21022920517560073, + "1295": 0.208664202094886, + "1300": 0.2070991990141713, + "1305": 0.20553419593345656, + "1310": 0.20396919285274184, + "1315": 0.20240418977202712, + "1320": 0.20083918669131234, + "1325": 0.19927418361059762, + "1330": 0.1977091805298829, + "1335": 0.19614417744916818, + "1340": 0.19457917436845346, + "1345": 0.19301417128773873, + "1350": 0.191449168207024, + "1355": 0.1898841651263093, + "1360": 0.18831916204559457, + "1365": 0.18675415896487985, + "1370": 0.18518915588416512, + "1375": 0.1836241528034504, + "1380": 0.18205914972273568, + "1385": 0.18049414664202096, + "1390": 0.17892914356130618, + "1395": 0.17736414048059146, + "1400": 0.17579913739987674, + "1405": 0.17423413431916202, + "1410": 0.1726691312384473, + "1415": 0.17110412815773257, + "1420": 0.16953912507701785, + "1425": 0.16797412199630313, + "1430": 0.1664091189155884, + "1435": 0.16484411583487368, + "1440": 0.16327911275415896, + "1445": 0.16171410967344424, + "1450": 0.16014910659272952, + "1455": 0.1585841035120148, + "1460": 0.15701910043130002, + "1465": 0.1554540973505853, + "1470": 0.15388909426987057, + "1475": 0.15232409118915585, + "1480": 0.15075908810844113, + "1485": 0.1491940850277264, + "1490": 0.1476290819470117, + "1495": 0.14606407886629696, + "1500": 0.14449907578558224, + "1505": 0.14293407270486752, + "1510": 0.1413690696241528, + "1515": 0.13980406654343808, + "1520": 0.13823906346272335, + "1525": 0.13667406038200863, + "1530": 0.13510905730129386, + "1535": 0.13354405422057913, + "1540": 0.1319790511398644, + "1545": 0.1304140480591497, + "1550": 0.12884904497843497, + "1555": 0.12728404189772025, + "1560": 0.12571903881700552, + "1565": 0.1241540357362908, + "1570": 0.12258903265557608, + "1575": 0.12102402957486136, + "1580": 0.11945902649414664, + "1585": 0.11789402341343191, + "1590": 0.11632902033271719, + "1595": 0.11476401725200247, + "1600": 0.11319901417128775, + "1605": 0.11163401109057303, + "1610": 0.1100690080098583, + "1615": 0.10850400492914358, + "1620": 0.10693900184842886, + "1625": 0.10584935064935067, + "1630": 0.10547272727272729, + "1635": 0.10509610389610391, + "1640": 0.10471948051948053, + "1645": 0.10434285714285715, + "1650": 0.10396623376623378, + "1655": 0.1035896103896104, + "1660": 0.10321298701298702, + "1665": 0.10283636363636364, + "1670": 0.10245974025974026, + "1675": 0.10208311688311689, + "1680": 0.10170649350649352, + "1685": 0.10132987012987014, + "1690": 0.10095324675324677, + "1695": 0.10057662337662339, + "1700": 0.10020000000000001, + "1705": 0.09982337662337663, + "1710": 0.09944675324675326, + "1715": 0.09907012987012988, + "1720": 0.0986935064935065, + "1725": 0.09831688311688312, + "1730": 0.09794025974025974, + "1735": 0.09756363636363638, + "1740": 0.09718701298701299, + "1745": 0.09681038961038962, + "1750": 0.09643376623376625, + "1755": 0.09605714285714287, + "1760": 0.09568051948051949, + "1765": 0.09530389610389611, + "1770": 0.09492727272727274, + "1775": 0.09455064935064936, + "1780": 0.09417402597402598, + "1785": 0.0937974025974026, + "1790": 0.09342077922077922, + "1795": 0.09304415584415585, + "1800": 0.09266753246753248, + "1805": 0.0922909090909091, + "1810": 0.09191428571428573, + "1815": 0.09153766233766235, + "1820": 0.09116103896103897, + "1825": 0.09078441558441559, + "1830": 0.09040779220779221, + "1835": 0.09003116883116884, + "1840": 0.08965454545454546, + "1845": 0.08927792207792208, + "1850": 0.0889012987012987, + "1855": 0.08852467532467534, + "1860": 0.08814805194805195, + "1865": 0.08777142857142858, + "1870": 0.0873948051948052, + "1875": 0.08701818181818183, + "1880": 0.08664155844155845, + "1885": 0.08626493506493507, + "1890": 0.0858883116883117, + "1895": 0.08551168831168832, + "1900": 0.08513506493506494, + "1905": 0.08475844155844156, + "1910": 0.08438181818181818, + "1915": 0.0840051948051948, + "1920": 0.08362857142857144, + "1925": 0.08325194805194805, + "1930": 0.08287532467532469, + "1935": 0.08249870129870131, + "1940": 0.08212207792207793, + "1945": 0.08174545454545455, + "1950": 0.08136883116883117, + "1955": 0.0809922077922078, + "1960": 0.08061558441558442, + "1965": 0.08023896103896104, + "1970": 0.07986233766233766, + "1975": 0.0794857142857143, + "1980": 0.0791090909090909, + "1985": 0.07873246753246754, + "1990": 0.07835584415584415, + "1995": 0.07797922077922079, + "2000": 0.07760259740259741, + "2005": 0.07722597402597403, + "2010": 0.07684935064935065, + "2015": 0.07647272727272728, + "2020": 0.0760961038961039, + "2025": 0.07571948051948052, + "2030": 0.07534285714285714, + "2035": 0.07496623376623376, + "2040": 0.0745896103896104, + "2045": 0.07421298701298701, + "2050": 0.07383636363636364, + "2055": 0.07345974025974025, + "2060": 0.07308311688311689, + "2065": 0.07270649350649351, + "2070": 0.07232987012987013, + "2075": 0.07195324675324676, + "2080": 0.07157662337662338, + "2085": 0.0712, + "2090": 0.07082337662337662, + "2095": 0.07044675324675326, + "2100": 0.07007012987012987, + "2105": 0.0696935064935065, + "2110": 0.06931688311688311, + "2115": 0.06894025974025975, + "2120": 0.06856363636363637, + "2125": 0.06818701298701299, + "2130": 0.06781038961038961, + "2135": 0.06743376623376623, + "2140": 0.06705714285714286, + "2145": 0.06668051948051948, + "2150": 0.0663038961038961, + "2155": 0.06592727272727272, + "2160": 0.06555064935064936, + "2165": 0.06517402597402597, + "2170": 0.0647974025974026, + "2175": 0.06442077922077921, + "2180": 0.06404415584415585, + "2185": 0.06366753246753247, + "2190": 0.06329090909090909, + "2195": 0.06291428571428571, + "2200": 0.06253766233766234, + "2205": 0.06216103896103896, + "2210": 0.06178441558441558, + "2215": 0.06140779220779221, + "2220": 0.06103116883116883, + "2225": 0.060654545454545454, + "2230": 0.060277922077922076, + "2235": 0.0599012987012987, + "2240": 0.05952467532467532, + "2245": 0.05914805194805195, + "2250": 0.05877142857142857, + "2255": 0.058394805194805194, + "2260": 0.058018181818181816, + "2265": 0.05764155844155844, + "2270": 0.05726493506493506, + "2275": 0.05688831168831169, + "2280": 0.05651168831168831, + "2285": 0.056135064935064934, + "2290": 0.055758441558441556, + "2295": 0.05538181818181818, + "2300": 0.0550051948051948, + "2305": 0.05462857142857143, + "2310": 0.05425194805194805, + "2315": 0.05387532467532467, + "2320": 0.053498701298701296, + "2325": 0.05312207792207792, + "2330": 0.05274545454545454, + "2335": 0.05236883116883117, + "2340": 0.05199220779220779, + "2345": 0.05161558441558441, + "2350": 0.051238961038961035, + "2355": 0.05086233766233766, + "2360": 0.05048571428571428, + "2365": 0.05010909090909091, + "2370": 0.04973246753246753, + "2375": 0.04935584415584415, + "2380": 0.048979220779220775, + "2385": 0.0486025974025974, + "2390": 0.04822597402597402, + "2395": 0.04797777777777778, + "2400": 0.04792222222222222, + "2405": 0.04786666666666667, + "2410": 0.04781111111111111, + "2415": 0.04775555555555556, + "2420": 0.0477, + "2425": 0.04764444444444445, + "2430": 0.04758888888888889, + "2435": 0.04753333333333334, + "2440": 0.04747777777777778, + "2445": 0.04742222222222223, + "2450": 0.04736666666666667, + "2455": 0.04731111111111111, + "2460": 0.04725555555555556, + "2465": 0.0472, + "2470": 0.04714444444444445, + "2475": 0.04708888888888889, + "2480": 0.04703333333333334, + "2485": 0.04697777777777778, + "2490": 0.046922222222222226, + "2495": 0.04686666666666667, + "2500": 0.04681111111111111, + "2505": 0.04675555555555556, + "2510": 0.0467, + "2515": 0.04664444444444445, + "2520": 0.04658888888888889, + "2525": 0.046533333333333336, + "2530": 0.04647777777777778, + "2535": 0.046422222222222226, + "2540": 0.04636666666666667, + "2545": 0.04631111111111111, + "2550": 0.04625555555555556, + "2555": 0.0462, + "2560": 0.046144444444444446, + "2565": 0.04608888888888889, + "2570": 0.046033333333333336, + "2575": 0.04597777777777778, + "2580": 0.045922222222222225, + "2585": 0.04586666666666667, + "2590": 0.045811111111111115, + "2595": 0.045755555555555556, + "2600": 0.045700000000000005, + "2605": 0.045644444444444446, + "2610": 0.04558888888888889, + "2615": 0.045533333333333335, + "2620": 0.04547777777777778, + "2625": 0.045422222222222225, + "2630": 0.045366666666666666, + "2635": 0.045311111111111115, + "2640": 0.045255555555555556, + "2645": 0.045200000000000004, + "2650": 0.045144444444444445, + "2655": 0.04508888888888889, + "2660": 0.045033333333333335, + "2665": 0.044977777777777776, + "2670": 0.044922222222222224, + "2675": 0.044866666666666666, + "2680": 0.044811111111111114, + "2685": 0.044755555555555555, + "2690": 0.044700000000000004, + "2695": 0.044644444444444445, + "2700": 0.044588888888888886, + "2705": 0.044533333333333334, + "2710": 0.044477777777777776, + "2715": 0.044422222222222224, + "2720": 0.044366666666666665, + "2725": 0.044311111111111114, + "2730": 0.044255555555555555, + "2735": 0.0442, + "2740": 0.044144444444444444, + "2745": 0.044088888888888886, + "2750": 0.044033333333333334, + "2755": 0.04397777777777778, + "2760": 0.043922222222222224, + "2765": 0.043866666666666665, + "2770": 0.04381111111111111, + "2775": 0.043755555555555554, + "2780": 0.0437, + "2785": 0.043644444444444444, + "2790": 0.04358888888888889, + "2795": 0.043533333333333334, + "2800": 0.04347777777777778, + "2805": 0.04342222222222222, + "2810": 0.043366666666666664, + "2815": 0.04331111111111111, + "2820": 0.043255555555555554, + "2825": 0.0432, + "2830": 0.043144444444444444, + "2835": 0.04308888888888889, + "2840": 0.04303333333333333, + "2845": 0.04297777777777778, + "2850": 0.04292222222222222, + "2855": 0.042866666666666664, + "2860": 0.04281111111111111, + "2865": 0.042755555555555554, + "2870": 0.0427, + "2875": 0.04264444444444444, + "2880": 0.04258888888888889, + "2885": 0.04253333333333333, + "2890": 0.04247777777777778, + "2895": 0.04242222222222222, + "2900": 0.042366666666666664, + "2905": 0.04231111111111111, + "2910": 0.04225555555555556, + "2915": 0.0422, + "2920": 0.04214444444444444, + "2925": 0.04208888888888889, + "2930": 0.04203333333333333, + "2935": 0.04197777777777778, + "2940": 0.04192222222222222, + "2945": 0.04186666666666667, + "2950": 0.04181111111111111, + "2955": 0.04175555555555556, + "2960": 0.0417, + "2965": 0.04164444444444444, + "2970": 0.04158888888888889, + "2975": 0.04153333333333333, + "2980": 0.04147777777777778, + "2985": 0.04142222222222222, + "2990": 0.04136666666666667, + "2995": 0.04131111111111111, + "3000": 0.04125555555555556, + "3005": 0.0412, + "3010": 0.04114444444444444, + "3015": 0.04108888888888889, + "3020": 0.04103333333333333, + "3025": 0.04097777777777778, + "3030": 0.04092222222222222, + "3035": 0.04086666666666667, + "3040": 0.04081111111111111, + "3045": 0.04075555555555556, + "3050": 0.0407, + "3055": 0.04064444444444444, + "3060": 0.04058888888888889, + "3065": 0.04053333333333334, + "3070": 0.04047777777777778, + "3075": 0.04042222222222222, + "3080": 0.04036666666666667, + "3085": 0.04031111111111111, + "3090": 0.04025555555555556, + "3095": 0.0402, + "3100": 0.04014444444444444, + "3105": 0.04008888888888889, + "3110": 0.04003333333333334, + "3115": 0.03997777777777778, + "3120": 0.03992222222222222, + "3125": 0.03986666666666667, + "3130": 0.03981111111111111, + "3135": 0.03975555555555556, + "3140": 0.0397, + "3145": 0.03964444444444445, + "3150": 0.03958888888888889, + "3155": 0.03953333333333334, + "3160": 0.03947777777777778, + "3165": 0.03942222222222222, + "3170": 0.03936666666666667, + "3175": 0.03931111111111111, + "3180": 0.03925555555555556, + "3185": 0.0392, + "3190": 0.03914444444444445, + "3195": 0.03908888888888889, + "3200": 0.03903333333333334, + "3205": 0.03897777777777778, + "3210": 0.03892222222222222, + "3215": 0.03886666666666667, + "3220": 0.038811111111111116, + "3225": 0.03875555555555556, + "3230": 0.0387, + "3235": 0.03864444444444445, + "3240": 0.03858888888888889, + "3245": 0.038533333333333336, + "3250": 0.03847777777777778, + "3255": 0.03842222222222222, + "3260": 0.03836666666666667, + "3265": 0.038311111111111115, + "3270": 0.03825555555555556, + "3275": 0.0382, + "3280": 0.038144444444444446, + "3285": 0.03808888888888889, + "3290": 0.038033333333333336, + "3295": 0.03797777777777778, + "3300": 0.037922222222222225, + "3305": 0.037866666666666667, + "3310": 0.037811111111111115, + "3315": 0.037755555555555556, + "3320": 0.0377, + "3325": 0.037644444444444446, + "3330": 0.03758888888888889, + "3335": 0.037533333333333335, + "3340": 0.037477777777777777, + "3345": 0.037422222222222225, + "3350": 0.037366666666666666, + "3355": 0.037311111111111114, + "3360": 0.037255555555555556, + "3365": 0.0372, + "3370": 0.037144444444444445, + "3375": 0.03708888888888889, + "3380": 0.037033333333333335, + "3385": 0.036977777777777776, + "3390": 0.036922222222222224, + "3395": 0.036866666666666666, + "3400": 0.036811111111111114, + "3405": 0.036755555555555555, + "3410": 0.036699999999999997, + "3415": 0.036644444444444445, + "3420": 0.03658888888888889, + "3425": 0.036533333333333334, + "3430": 0.036477777777777776, + "3435": 0.036422222222222224, + "3440": 0.036366666666666665, + "3445": 0.03631111111111111, + "3450": 0.036255555555555555, + "3455": 0.0362, + "3460": 0.036144444444444444, + "3465": 0.03608888888888889, + "3470": 0.036033333333333334, + "3475": 0.035977777777777775, + "3480": 0.03592222222222222, + "3485": 0.035866666666666665, + "3490": 0.03581111111111111, + "3495": 0.035755555555555554, + "3500": 0.0357, + "3505": 0.035644444444444444, + "3510": 0.03558888888888889, + "3515": 0.03553333333333333, + "3520": 0.035477777777777775, + "3525": 0.03542222222222222, + "3530": 0.03536666666666667, + "3535": 0.03531111111111111, + "3540": 0.035255555555555554, + "3545": 0.0352, + "3550": 0.03514444444444444, + "3555": 0.03508888888888889, + "3560": 0.03503333333333333, + "3565": 0.034977777777777774, + "3570": 0.03492222222222222, + "3575": 0.03486666666666667, + "3580": 0.03481111111111111, + "3585": 0.03475555555555555, + "3590": 0.0347, + "3595": 0.03464444444444444, + "3600": 0.03458888888888889, + "3605": 0.03453333333333333, + "3610": 0.034477777777777774, + "3615": 0.03442222222222222, + "3620": 0.03436666666666667, + "3625": 0.03431111111111111, + "3630": 0.03425555555555555, + "3635": 0.0342, + "3640": 0.03414444444444444, + "3645": 0.03408888888888889, + "3650": 0.03403333333333333, + "3655": 0.03397777777777778, + "3660": 0.03392222222222222, + "3665": 0.03386666666666667, + "3670": 0.03381111111111111, + "3675": 0.03375555555555555, + "3680": 0.0337, + "3685": 0.03364444444444445, + "3690": 0.03358888888888889, + "3695": 0.03353333333333333, + "3700": 0.03347777777777778, + "3705": 0.03342222222222222, + "3710": 0.03336666666666667, + "3715": 0.03331111111111111, + "3720": 0.03325555555555555, + "3725": 0.0332, + "3730": 0.03314444444444445, + "3735": 0.03308888888888889, + "3740": 0.03303333333333333, + "3745": 0.03297777777777778, + "3750": 0.03292222222222222, + "3755": 0.03286666666666667, + "3760": 0.03281111111111111, + "3765": 0.03275555555555555, + "3770": 0.0327, + "3775": 0.03264444444444445, + "3780": 0.03258888888888889, + "3785": 0.03253333333333333, + "3790": 0.03247777777777778, + "3795": 0.03242222222222222, + "3800": 0.03236666666666667, + "3805": 0.03231111111111111, + "3810": 0.03225555555555555, + "3815": 0.0322, + "3820": 0.03214444444444445, + "3825": 0.03208888888888889, + "3830": 0.03203333333333333, + "3835": 0.03197777777777778, + "3840": 0.03192222222222223, + "3845": 0.03186666666666667, + "3850": 0.03181111111111111, + "3855": 0.03175555555555555, + "3860": 0.0317, + "3865": 0.03164444444444445, + "3870": 0.03158888888888889, + "3875": 0.03153333333333333, + "3880": 0.03147777777777778, + "3885": 0.031422222222222226, + "3890": 0.03136666666666667, + "3895": 0.03131111111111111, + "3900": 0.03125555555555556, + "3905": 0.0312, + "3910": 0.031144444444444443, + "3915": 0.031088888888888888, + "3920": 0.031033333333333333, + "3925": 0.030977777777777778, + "3930": 0.030922222222222222, + "3935": 0.030866666666666667, + "3940": 0.030811111111111112, + "3945": 0.030755555555555557, + "3950": 0.0307, + "3955": 0.030644444444444443, + "3960": 0.030588888888888888, + "3965": 0.030533333333333332, + "3970": 0.030477777777777777, + "3975": 0.030422222222222222, + "3980": 0.030366666666666667, + "3985": 0.03031111111111111, + "3990": 0.030255555555555556, + "3995": 0.0302, + "4000": 0.030144444444444446, + "4005": 0.03008888888888889, + "4010": 0.030033333333333332, + "4015": 0.029977777777777777, + "4020": 0.02992222222222222, + "4025": 0.029866666666666666, + "4030": 0.02981111111111111, + "4035": 0.029755555555555556, + "4040": 0.0297, + "4045": 0.029644444444444445, + "4050": 0.02958888888888889, + "4055": 0.029533333333333335, + "4060": 0.029477777777777776, + "4065": 0.02942222222222222, + "4070": 0.029366666666666666, + "4075": 0.02931111111111111, + "4080": 0.029255555555555555, + "4085": 0.0292, + "4090": 0.029144444444444445, + "4095": 0.02908888888888889, + "4100": 0.029033333333333335, + "4105": 0.02897777777777778, + "4110": 0.02892222222222222, + "4115": 0.028866666666666665, + "4120": 0.02881111111111111, + "4125": 0.028755555555555555, + "4130": 0.0287, + "4135": 0.028644444444444445, + "4140": 0.02858888888888889, + "4145": 0.028533333333333334, + "4150": 0.02847777777777778, + "4155": 0.028422222222222224, + "4160": 0.028366666666666665, + "4165": 0.02831111111111111, + "4170": 0.028255555555555555, + "4175": 0.0282, + "4180": 0.028144444444444444, + "4185": 0.02808888888888889, + "4190": 0.028033333333333334, + "4195": 0.02797777777777778, + "4200": 0.027922222222222223, + "4205": 0.027866666666666668, + "4210": 0.027811111111111113, + "4215": 0.027755555555555554, + "4220": 0.0277, + "4225": 0.027644444444444444, + "4230": 0.02758888888888889, + "4235": 0.027533333333333333, + "4240": 0.027477777777777778, + "4245": 0.027422222222222223, + "4250": 0.027366666666666668, + "4255": 0.027311111111111112, + "4260": 0.027255555555555557, + "4265": 0.0272, + "4270": 0.027144444444444443, + "4275": 0.027088888888888888, + "4280": 0.027033333333333333, + "4285": 0.026977777777777778, + "4290": 0.026922222222222222, + "4295": 0.026866666666666667, + "4300": 0.026811111111111112, + "4305": 0.026755555555555557, + "4310": 0.0267, + "4315": 0.026644444444444443, + "4320": 0.026588888888888888, + "4325": 0.026533333333333332, + "4330": 0.026477777777777777, + "4335": 0.026422222222222222, + "4340": 0.026366666666666667, + "4345": 0.02631111111111111, + "4350": 0.026255555555555556, + "4355": 0.0262, + "4360": 0.026144444444444446, + "4365": 0.026088888888888887, + "4370": 0.026033333333333332, + "4375": 0.025977777777777777, + "4380": 0.02592222222222222, + "4385": 0.025866666666666666, + "4390": 0.02581111111111111, + "4395": 0.025755555555555556, + "4400": 0.0257, + "4405": 0.025644444444444445, + "4410": 0.02558888888888889, + "4415": 0.025533333333333335, + "4420": 0.025477777777777776, + "4425": 0.02542222222222222, + "4430": 0.025366666666666666, + "4435": 0.02531111111111111, + "4440": 0.025255555555555555, + "4445": 0.0252, + "4450": 0.025144444444444445, + "4455": 0.02508888888888889, + "4460": 0.025033333333333335, + "4465": 0.02497777777777778, + "4470": 0.02492222222222222, + "4475": 0.024866666666666665, + "4480": 0.02481111111111111, + "4485": 0.024755555555555555, + "4490": 0.0247, + "4495": 0.024644444444444445, + "4500": 0.02458888888888889, + "4505": 0.024533333333333334, + "4510": 0.02447777777777778, + "4515": 0.024422222222222224, + "4520": 0.024366666666666665, + "4525": 0.02431111111111111, + "4530": 0.024255555555555555, + "4535": 0.0242, + "4540": 0.024144444444444444, + "4545": 0.02408888888888889, + "4550": 0.024033333333333334, + "4555": 0.02397777777777778, + "4560": 0.023922222222222223, + "4565": 0.023866666666666668, + "4570": 0.02381111111111111, + "4575": 0.023755555555555554, + "4580": 0.0237, + "4585": 0.023644444444444444, + "4590": 0.02358888888888889, + "4595": 0.023533333333333333, + "4600": 0.023477777777777778, + "4605": 0.023422222222222223, + "4610": 0.023366666666666668, + "4615": 0.023311111111111112, + "4620": 0.023255555555555557, + "4625": 0.0232, + "4630": 0.023144444444444443, + "4635": 0.023088888888888888, + "4640": 0.023033333333333333, + "4645": 0.022977777777777778, + "4650": 0.022922222222222222, + "4655": 0.022866666666666667, + "4660": 0.022811111111111112, + "4665": 0.022755555555555557, + "4670": 0.0227, + "4675": 0.022644444444444443, + "4680": 0.022588888888888888, + "4685": 0.022533333333333332, + "4690": 0.022477777777777777, + "4695": 0.022422222222222222, + "4700": 0.022366666666666667, + "4705": 0.02231111111111111, + "4710": 0.022255555555555556, + "4715": 0.0222, + "4720": 0.022144444444444446, + "4725": 0.022088888888888887, + "4730": 0.022033333333333332, + "4735": 0.021977777777777777, + "4740": 0.02192222222222222, + "4745": 0.021866666666666666, + "4750": 0.02181111111111111, + "4755": 0.021755555555555556, + "4760": 0.0217, + "4765": 0.021644444444444445, + "4770": 0.02158888888888889, + "4775": 0.02153333333333333, + "4780": 0.021477777777777776, + "4785": 0.02142222222222222, + "4790": 0.021366666666666666, + "4795": 0.02131111111111111, + "4800": 0.021255555555555555, + "4805": 0.0212, + "4810": 0.021144444444444445, + "4815": 0.02108888888888889, + "4820": 0.021033333333333334, + "4825": 0.020977777777777776, + "4830": 0.02092222222222222, + "4835": 0.020866666666666665, + "4840": 0.02081111111111111, + "4845": 0.020755555555555555, + "4850": 0.0207, + "4855": 0.020644444444444444, + "4860": 0.02058888888888889, + "4865": 0.020533333333333334, + "4870": 0.02047777777777778, + "4875": 0.020422222222222224, + "4880": 0.020366666666666665, + "4885": 0.02031111111111111, + "4890": 0.020255555555555554, + "4895": 0.0202, + "4900": 0.020144444444444444, + "4905": 0.02008888888888889, + "4910": 0.020033333333333334, + "4915": 0.01997777777777778, + "4920": 0.019922222222222223, + "4925": 0.019866666666666668, + "4930": 0.01981111111111111, + "4935": 0.019755555555555554, + "4940": 0.0197, + "4945": 0.019644444444444444, + "4950": 0.01958888888888889, + "4955": 0.019533333333333333, + "4960": 0.019477777777777778, + "4965": 0.019422222222222223, + "4970": 0.019366666666666667, + "4975": 0.019311111111111112, + "4980": 0.019255555555555554, + "4985": 0.0192, + "4990": 0.019144444444444443, + "4995": 0.019088888888888888, + "5000": 0.019033333333333333, + "5005": 0.018977777777777777, + "5010": 0.018922222222222222, + "5015": 0.018866666666666667, + "5020": 0.018811111111111112, + "5025": 0.018755555555555557, + "5030": 0.018699999999999998, + "5035": 0.018644444444444443, + "5040": 0.018588888888888887, + "5045": 0.018533333333333332, + "5050": 0.018477777777777777, + "5055": 0.018422222222222222, + "5060": 0.018366666666666667, + "5065": 0.01831111111111111, + "5070": 0.018255555555555556, + "5075": 0.0182, + "5080": 0.018144444444444446, + "5085": 0.018088888888888887, + "5090": 0.018033333333333332, + "5095": 0.017977777777777777, + "5100": 0.01792222222222222, + "5105": 0.017866666666666666, + "5110": 0.01781111111111111, + "5115": 0.017755555555555556, + "5120": 0.0177, + "5125": 0.017644444444444445, + "5130": 0.01758888888888889, + "5135": 0.01753333333333333, + "5140": 0.017477777777777776, + "5145": 0.01742222222222222, + "5150": 0.017366666666666666, + "5155": 0.01731111111111111, + "5160": 0.017255555555555555, + "5165": 0.0172, + "5170": 0.017144444444444445, + "5175": 0.01708888888888889, + "5180": 0.017033333333333334, + "5185": 0.016977777777777776, + "5190": 0.01692222222222222, + "5195": 0.016866666666666665, + "5200": 0.01681111111111111, + "5205": 0.016755555555555555, + "5210": 0.0167, + "5215": 0.01664444444444444, + "5220": 0.01658888888888889, + "5225": 0.01653333333333333, + "5230": 0.01647777777777778, + "5235": 0.01642222222222222, + "5240": 0.016366666666666668, + "5245": 0.01631111111111111, + "5250": 0.016255555555555558, + "5255": 0.0162, + "5260": 0.016144444444444447, + "5265": 0.01608888888888889, + "5270": 0.01603333333333333, + "5275": 0.015977777777777778, + "5280": 0.01592222222222222, + "5285": 0.015866666666666668, + "5290": 0.01581111111111111, + "5295": 0.015755555555555557, + "5300": 0.0157, + "5305": 0.015644444444444447, + "5310": 0.015588888888888888, + "5315": 0.01553333333333333, + "5320": 0.015477777777777778, + "5325": 0.015422222222222219, + "5330": 0.015366666666666667, + "5335": 0.015311111111111109, + "5340": 0.015255555555555557, + "5345": 0.015199999999999998, + "5350": 0.015144444444444446, + "5355": 0.015088888888888888, + "5360": 0.015033333333333336, + "5365": 0.014977777777777777, + "5370": 0.014922222222222219, + "5375": 0.014866666666666667, + "5380": 0.014811111111111108, + "5385": 0.014755555555555556, + "5390": 0.014699999999999998, + "5395": 0.014644444444444446, + "5400": 0.014588888888888887, + "5405": 0.014533333333333336, + "5410": 0.014477777777777777, + "5415": 0.014422222222222218, + "5420": 0.014366666666666666, + "5425": 0.014311111111111108, + "5430": 0.014255555555555556, + "5435": 0.014199999999999997, + "5440": 0.014144444444444446, + "5445": 0.014088888888888887, + "5450": 0.014033333333333335, + "5455": 0.013977777777777776, + "5460": 0.013922222222222225, + "5465": 0.013866666666666666, + "5470": 0.013811111111111107, + "5475": 0.013755555555555556, + "5480": 0.013699999999999997, + "5485": 0.013644444444444445, + "5490": 0.013588888888888886, + "5495": 0.013533333333333335, + "5500": 0.013477777777777776, + "5505": 0.013422222222222224, + "5510": 0.013366666666666666, + "5515": 0.013311111111111114, + "5520": 0.013255555555555555, + "5525": 0.013199999999999996, + "5530": 0.013144444444444445, + "5535": 0.013088888888888886, + "5540": 0.013033333333333334, + "5545": 0.012977777777777776, + "5550": 0.012922222222222224, + "5555": 0.012866666666666665, + "5560": 0.012811111111111113, + "5565": 0.012755555555555555, + "5570": 0.012699999999999996, + "5575": 0.012644444444444444, + "5580": 0.012588888888888886, + "5585": 0.012533333333333334, + "5590": 0.012477777777777775, + "5595": 0.012422222222222223, + "5600": 0.012366666666666665, + "5605": 0.012311111111111113, + "5610": 0.012255555555555554, + "5615": 0.012200000000000003, + "5620": 0.012144444444444444, + "5625": 0.012088888888888885, + "5630": 0.012033333333333333, + "5635": 0.011977777777777775, + "5640": 0.011922222222222223, + "5645": 0.011866666666666664, + "5650": 0.011811111111111113, + "5655": 0.011755555555555554, + "5660": 0.011700000000000002, + "5665": 0.011644444444444443, + "5670": 0.011588888888888885, + "5675": 0.011533333333333333, + "5680": 0.011477777777777774, + "5685": 0.011422222222222222, + "5690": 0.011366666666666664, + "5695": 0.011311111111111112, + "5700": 0.011255555555555553, + "5705": 0.011200000000000002, + "5710": 0.011144444444444443, + "5715": 0.011088888888888891, + "5720": 0.011033333333333332, + "5725": 0.010977777777777774, + "5730": 0.010922222222222222, + "5735": 0.010866666666666663, + "5740": 0.010811111111111112, + "5745": 0.010755555555555553, + "5750": 0.010700000000000001, + "5755": 0.010644444444444442, + "5760": 0.01058888888888889, + "5765": 0.010533333333333332, + "5770": 0.01047777777777778, + "5775": 0.010422222222222222, + "5780": 0.010366666666666663, + "5785": 0.010311111111111111, + "5790": 0.010255555555555552, + "5795": 0.0102, + "5800": 0.010144444444444442, + "5805": 0.01008888888888889, + "5810": 0.010033333333333332, + "5815": 0.00997777777777778, + "5820": 0.009922222222222221, + "5825": 0.009866666666666662, + "5830": 0.00981111111111111, + "5835": 0.009755555555555552, + "5840": 0.0097, + "5845": 0.009644444444444442, + "5850": 0.00958888888888889, + "5855": 0.009533333333333331, + "5860": 0.00947777777777778, + "5865": 0.00942222222222222, + "5870": 0.009366666666666669, + "5875": 0.00931111111111111, + "5880": 0.009255555555555552, + "5885": 0.0092, + "5890": 0.009144444444444441, + "5895": 0.00908888888888889, + "5900": 0.00903333333333333, + "5905": 0.008977777777777779, + "5910": 0.00892222222222222, + "5915": 0.008866666666666669, + "5920": 0.00881111111111111, + "5925": 0.008755555555555558, + "5930": 0.0087, + "5935": 0.00864444444444444, + "5940": 0.008588888888888889, + "5945": 0.00853333333333333, + "5950": 0.008477777777777779, + "5955": 0.00842222222222222, + "5960": 0.008366666666666668, + "5965": 0.00831111111111111, + "5970": 0.008255555555555558, + "5975": 0.008199999999999999, + "5980": 0.00814444444444444, + "5985": 0.008088888888888889, + "5990": 0.00803333333333333, + "5995": 0.007977777777777778, + "6000": 0.00792222222222222, + "6005": 0.007866666666666668, + "6010": 0.007811111111111109, + "6015": 0.007755555555555557, + "6020": 0.0076999999999999985, + "6025": 0.007644444444444447, + "6030": 0.007588888888888888, + "6035": 0.007533333333333329, + "6040": 0.007477777777777778, + "6045": 0.007422222222222219, + "6050": 0.007366666666666667, + "6055": 0.0073111111111111085, + "6060": 0.007255555555555557, + "6065": 0.007199999999999998, + "6070": 0.007144444444444446, + "6075": 0.007088888888888888, + "6080": 0.007033333333333329, + "6085": 0.006977777777777777, + "6090": 0.0069222222222222185, + "6095": 0.006866666666666667, + "6100": 0.006811111111111108, + "6105": 0.006755555555555556, + "6110": 0.006699999999999998, + "6115": 0.006644444444444446, + "6120": 0.006588888888888887, + "6125": 0.0065333333333333354, + "6130": 0.006477777777777777, + "6135": 0.006422222222222218, + "6140": 0.006366666666666666, + "6145": 0.006311111111111108, + "6150": 0.006255555555555556, + "6155": 0.006199999999999997, + "6160": 0.006144444444444445, + "6165": 0.006088888888888887, + "6170": 0.006033333333333335, + "6175": 0.005977777777777776, + "6180": 0.0059222222222222246, + "6185": 0.005866666666666666, + "6190": 0.005811111111111107, + "6195": 0.005755555555555555, + "6200": 0.005699999999999997, + "6205": 0.005644444444444445, + "6210": 0.005588888888888886, + "6215": 0.0055333333333333345, + "6220": 0.005477777777777776, + "6225": 0.005422222222222224, + "6230": 0.005366666666666665, + "6235": 0.005311111111111107, + "6240": 0.005255555555555555, + "6245": 0.005199999999999996, + "6250": 0.0051444444444444445, + "6255": 0.005088888888888886, + "6260": 0.005033333333333334, + "6265": 0.004977777777777775, + "6270": 0.004922222222222224, + "6275": 0.004866666666666665, + "6280": 0.004811111111111113, + "6285": 0.0047555555555555545, + "6290": 0.004699999999999996, + "6295": 0.004644444444444444, + "6300": 0.004588888888888885, + "6305": 0.004533333333333334, + "6310": 0.004477777777777775, + "6315": 0.004422222222222223, + "6320": 0.0043666666666666645, + "6325": 0.004311111111111113, + "6330": 0.004255555555555554, + "6335": 0.004200000000000002, + "6340": 0.004144444444444444, + "6345": 0.004088888888888885, + "6350": 0.004033333333333333, + "6355": 0.0039777777777777745, + "6360": 0.003922222222222223, + "6365": 0.003866666666666664, + "6370": 0.0038111111111111123, + "6375": 0.0037555555555555536, + "6380": 0.003700000000000002, + "6385": 0.003644444444444443, + "6390": 0.0035888888888888845, + "6395": 0.0035333333333333328, + "6400": 0.003477777777777774, + "6405": 0.0034222222222222223, + "6410": 0.0033666666666666636, + "6415": 0.003311111111111112, + "6420": 0.003255555555555553, + "6425": 0.0032000000000000015, + "6430": 0.0031444444444444428, + "6435": 0.003088888888888891, + "6440": 0.0030333333333333323, + "6445": 0.0029777777777777736, + "6450": 0.002922222222222222, + "6455": 0.002866666666666663, + "6460": 0.0028111111111111114, + "6465": 0.0027555555555555528, + "6470": 0.002700000000000001, + "6475": 0.0026444444444444423, + "6480": 0.0025888888888888906, + "6485": 0.002533333333333332, + "6490": 0.002477777777777773, + "6495": 0.0024222222222222214, + "6500": 0.0023666666666666628, + "6505": 0.002311111111111111, + "6510": 0.0022555555555555523, + "6515": 0.0022000000000000006, + "6520": 0.002144444444444442, + "6525": 0.00208888888888889, + "6530": 0.0020333333333333314, + "6535": 0.0019777777777777797, + "6540": 0.001922222222222221, + "6545": 0.0018666666666666623, + "6550": 0.0018111111111111106, + "6555": 0.0017555555555555519, + "6560": 0.0017000000000000001, + "6565": 0.0016444444444444414, + "6570": 0.0015888888888888897, + "6575": 0.001533333333333331, + "6580": 0.0014777777777777792, + "6585": 0.0014222222222222206, + "6590": 0.0013666666666666688, + "6595": 0.0013111111111111101, + "6600": 0.0012555555555555514, + "6605": 0.0011999999999999997, + "6610": 0.001144444444444441, + "6615": 0.0010888888888888892, + "6620": 0.0010333333333333306, + "6625": 0.0009777777777777788, + "6630": 0.0009222222222222201, + "6635": 0.0008666666666666684, + "6640": 0.0008111111111111097, + "6645": 0.000755555555555551, + "6650": 0.0006999999999999992, + "6655": 0.0006444444444444405, + "6660": 0.0005888888888888888, + "6665": 0.0005333333333333301, + "6670": 0.00047777777777777836, + "6675": 0.00042222222222221967, + "6680": 0.0003666666666666679, + "6685": 0.00031111111111110923, + "6690": 0.0002555555555555575, + "6695": 0.0001999999999999988, + "6700": 0.0001444444444444401, + "6705": 8.888888888888835e-05, + "6710": 3.333333333332966e-05, + "6715": 0 + }, + "stoploss": { + "stoploss": -0.237 + }, + "trailing": { + "trailing_stop": true, + "trailing_stop_positive": 0.02, + "trailing_stop_positive_offset": 0.11900000000000001, + "trailing_only_offset_is_reached": false + } + }, + "ft_stratparam_v": 1, + "export_time": "2021-11-24 09:05:18.171996+00:00" +} \ No newline at end of file diff --git a/user_data/mgm-config-private.example.json b/strategy-config/mgm-config-private.example.json similarity index 100% rename from user_data/mgm-config-private.example.json rename to strategy-config/mgm-config-private.example.json diff --git a/strategy-config/mgm-config-private.json b/strategy-config/mgm-config-private.json new file mode 100755 index 000000000..37485d0d5 --- /dev/null +++ b/strategy-config/mgm-config-private.json @@ -0,0 +1,7 @@ +{ + "exchange": { + "name": "binance", + "key": "", + "secret": "" + } +} \ No newline at end of file diff --git a/user_data/mgm-config.example.json b/strategy-config/mgm-config.example.json similarity index 100% rename from user_data/mgm-config.example.json rename to strategy-config/mgm-config.example.json diff --git a/strategy-config/mgm-config.json b/strategy-config/mgm-config.json new file mode 100644 index 000000000..58e1bec5a --- /dev/null +++ b/strategy-config/mgm-config.json @@ -0,0 +1,293 @@ +{ + "monigomani_settings": { + "timeframes": { + "backtest_timeframe": "5m", + "core_trend_timeframe": "4h", + "roi_timeframe": "4h", + "timeframe": "30m" + }, + "startup_candle_count": 400, + "precision": 1, + "trading_during_trends": { + "buy_trades_when_downwards": true, + "buy_trades_when_sideways": true, + "buy_trades_when_upwards": true, + "sell_trades_when_downwards": true, + "sell_trades_when_sideways": true, + "sell_trades_when_upwards": true + }, + "weighted_signal_spaces": { + "sell_profit_only": true, + "min_weighted_signal_value": 0, + "max_weighted_signal_value": 100, + "min_trend_total_signal_needed_value": 60, + "min_trend_total_signal_needed_candles_lookback_window_value": 1, + "max_trend_total_signal_needed_candles_lookback_window_value": 8, + "min_trend_signal_triggers_needed": 2, + "search_threshold_weighted_signal_values": 22, + "search_threshold_trend_total_signal_needed_candles_lookback_window_value": 1, + "search_threshold_trend_signal_triggers_needed": 1 + }, + "stoploss_spaces": { + "stoploss_min_value": -0.02, + "stoploss_max_value": -0.3, + "trailing_stop_positive_min_value": 0.01, + "trailing_stop_positive_max_value": 0.08, + "trailing_stop_positive_offset_min_value": 0.011, + "trailing_stop_positive_offset_max_value": 0.1 + }, + "roi_spaces": { + "roi_delay": 120, + "roi_table_step_size": 5, + "roi_time_interval_scaling": 1.6, + "roi_value_step_scaling": 0.9, + "roi_when_downwards": true, + "roi_when_sideways": true, + "roi_when_upwards": false + }, + "unclogger_spaces": { + "unclogger_buy_cooldown_minutes_window": { + "min": 180, + "max": 360, + "threshold": 20 + }, + "unclogger_enabled": true, + "unclogger_minimal_losing_trade_duration_minutes": { + "min": 15, + "max": 560 + }, + "unclogger_minimal_losing_trades_open": { + "min": 1, + "max": 5, + "threshold": 1 + }, + "unclogger_open_trades_losing_percentage_needed": { + "min": 1, + "max": 60 + }, + "unclogger_trend_lookback_candles_window": { + "min": 10, + "max": 60 + }, + "unclogger_trend_lookback_candles_window_percentage_needed": { + "min": 10, + "max": 45 + }, + "unclogger_trend_lookback_candles_window_recent_past_weight_separator": 2, + "unclogger_trend_lookback_window_uses_downwards_candles": true, + "unclogger_trend_lookback_window_uses_sideways_candles": true, + "unclogger_trend_lookback_window_uses_upwards_candles": false + }, + "default_stub_values": { + "minimal_roi": { + "0": 100 + }, + "stoploss": -1, + "trailing_stop": false, + "trailing_stop_positive": 0.01, + "trailing_stop_positive_offset": 0.03, + "trailing_only_offset_is_reached": false + }, + "debuggable_weighted_signal_dataframe": true, + "use_mgm_logging": false, + "mgm_log_levels_enabled": { + "info": true, + "warning": true, + "error": true, + "debug": true, + "custom": true + } + }, + "monigomani_hyperoptloss_settings": { + "average_duration": { + "average_duration_weight": 75, + "expected_average_duration_minutes": 300, + "average_duration_threshold_high": 600, + "average_duration_threshold_low": 120 + }, + "average_profit": { + "average_profit_weight": 100, + "expected_average_profit": 1.5, + "average_profit_threshold_high": 3, + "average_profit_threshold_low": 0.5 + }, + "max_drawdown": { + "max_drawdown_weight": 75, + "expected_max_drawdown": 90, + "max_drawdown_threshold_high": 150, + "max_drawdown_threshold_low": 30 + }, + "total_profit": { + "total_profit_weight": 200, + "expected_total_profit": 70, + "total_profit_threshold_high": 100, + "total_profit_threshold_low": 30 + }, + "total_trades": { + "total_trades_weight": 100, + "expected_total_trades": 500, + "total_trades_threshold_high": 1000, + "total_trades_threshold_low": 100 + }, + "win_ratio": { + "win_ratio_weight": 100, + "expected_win_ratio": 70, + "win_ratio_threshold_high": 90, + "win_ratio_threshold_low": 50 + } + }, + "dry_run": true, + "dry_run_wallet": 0.015, + "max_open_trades": 10, + "stake_currency": "BTC", + "stake_amount": "unlimited", + "tradable_balance_ratio": 0.99, + "amount_reserve_percent": 0.05, + "amend_last_stake_amount": false, + "last_stake_amount_min_ratio": 0.5, + "cancel_open_orders_on_exit": false, + "use_sell_signal": true, + "sell_profit_only": false, + "sell_profit_offset": 0, + "ignore_roi_if_buy_signal": true, + "unfilledtimeout": { + "buy": 10, + "sell": 30, + "unit": "minutes" + }, + "bid_strategy": { + "price_side": "bid", + "use_order_book": true, + "ask_last_balance": 0, + "order_book_top": 1, + "check_depth_of_market": { + "enabled": false, + "bids_to_ask_delta": 0.95 + } + }, + "ask_strategy": { + "price_side": "ask", + "use_order_book": true, + "order_book_top": 1 + }, + "order_types": { + "buy": "limit", + "sell": "limit", + "emergencysell": "market", + "forcesell": "market", + "forcebuy": "market", + "stoploss": "market", + "stoploss_on_exchange": false, + "stoploss_on_exchange_interval": 60 + }, + "order_time_in_force": { + "buy": "gtc", + "sell": "gtc" + }, + "exchange": { + "sandbox": false, + "ccxt_config": { + "enableRateLimit": true + }, + "ccxt_async_config": { + "enableRateLimit": true, + "rateLimit": 500, + "aiohttp_trust_env": false + }, + "pair_blacklist": [ + ".*USD.*/.*", + ".*BULL.*/.*", + ".*BEAR.*/.*", + ".*UP.*/.*", + ".*DOWN.*/.*", + ".*HEDGE.*/.*", + ".*PREMIUM.*/.*", + ".*PERP.*/.*", + ".*/BNB", + "BNB/.*", + "EPS/.*", + "EUR/.*", + "GBP/.*" + ], + "outdated_offset": 5, + "markets_refresh_interval": 60, + "pair_whitelist": [ + "ETH/BTC", + "DOGE/BTC", + "SOL/BTC", + "LUNA/BTC", + "ADA/BTC", + "STPT/BTC", + "AXS/BTC" + ] + }, + "pairlists": [ + { + "method": "StaticPairList" + } + ], + "_pairlists": [ + { + "method": "VolumePairList", + "number_assets": 60, + "sort_key": "quoteVolume", + "refresh_period": 1800 + }, + { + "method": "AgeFilter", + "min_days_listed": 7 + }, + { + "method": "SpreadFilter", + "max_spread_ratio": 0.005 + }, + { + "method": "PriceFilter", + "low_price_ratio": 0.001 + }, + { + "method": "RangeStabilityFilter", + "lookback_days": 3, + "min_rate_of_change": 0.1, + "refresh_period": 1440 + }, + { + "method": "VolatilityFilter", + "lookback_days": 4, + "min_volatility": 0.02, + "max_volatility": 0.75, + "refresh_period": 86400 + }, + { + "method": "VolumePairList", + "number_assets": 10, + "sort_key": "quoteVolume" + } + ], + "protections": [ + { + "method": "StoplossGuard", + "lookback_period": 1440, + "trade_limit": 10, + "stop_duration": 1440, + "only_per_pair": false + }, + { + "method": "StoplossGuard", + "lookback_period": 1440, + "trade_limit": 2, + "stop_duration": 1440, + "only_per_pair": true + } + ], + "initial_state": "running", + "forcebuy_enable": false, + "internals": { + "process_throttle_secs": 5, + "heartbeat_interval": 60 + }, + "disable_dataframe_checks": false, + "strategy_path": "user_data/strategies/", + "dataformat_ohlcv": "json", + "dataformat_trades": "jsongz" +} diff --git a/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py b/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py index 1bd3f7c46..82530a63f 100644 --- a/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py +++ b/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py @@ -206,6 +206,19 @@ def read_hurry_config(self) -> dict: return hurry_config + def get_freqtrade_cmd(self): + if self.config['install_type'] == 'docker-compose': + cmd = 'docker-compose run' + + # cmd += f' -v {self.__basedir}/{self.config["mgm_config_folder"]}:/strategy-config' + cmd += f' -e MGM_CONFIG_FOLDER_PATH=/strategy-config' + + cmd += f' --rm freqtrade' + + return cmd + else: + raise "TODO install_type unsupported" + def get_config_filepath(self, cfg_key: str) -> str: """ Transforms given cfg_key into the corresponding absolute config filepath. @@ -474,15 +487,15 @@ def save_weak_strong_signal_overrides(self) -> bool: self.logger.debug(f'Strong and weak signals automatically over-written in "{mgm_config_hyperopt_name}"') return True - def command_configs(self) -> str: + def get_command_configs(self) -> str: """ Returns a string with the 'mgm-config' & 'mgm-config-private' names loaded from '.hurry' ready to implement in a freqtrade command. :return str: String with 'mgm-config' & 'mgm-config-private' for a freqtrade command """ - mgm_json_name = self.config['mgm_config_names']['mgm-config'] - mgm_private_json_name = self.config['mgm_config_names']['mgm-config-private'] - return f'-c ./user_data/{mgm_json_name} -c ./user_data/{mgm_private_json_name} ' + mgm_config_folder_path = self.config['mgm_config_folder'] + + return '-c /strategy-config/mgm-config.json -c /strategy-config/mgm-config-private.json' def get_preset_timerange(self, timerange: str) -> str: """ diff --git a/user_data/strategies/MasterMoniGoManiHyperStrategy.py b/user_data/strategies/MasterMoniGoManiHyperStrategy.py index 32b65d266..00e6d34e9 100644 --- a/user_data/strategies/MasterMoniGoManiHyperStrategy.py +++ b/user_data/strategies/MasterMoniGoManiHyperStrategy.py @@ -9,6 +9,7 @@ from abc import ABC from datetime import datetime, timedelta from functools import reduce +from pprint import pprint from typing import Any, Dict, List, Optional, Union import numpy as np # noqa @@ -32,6 +33,7 @@ # --- ↑ Do not remove these libs ↑ ------------------------------------------------------------------------------------- +MGM_CONFIG_FOLDER_PATH = os.environ["MGM_CONFIG_FOLDER_PATH"] class MasterMoniGoManiHyperStrategy(IStrategy, ABC): """ @@ -67,30 +69,15 @@ class MasterMoniGoManiHyperStrategy(IStrategy, ABC): buy_params = {} sell_params = {} - # Load the MoniGoMani config names from '.hurry' - mgm_config_name = mgm_config_hyperopt_name = None - hurry_config_path = f'{os.getcwd()}/.hurry' - if os.path.isfile(hurry_config_path) is True: - with open(hurry_config_path, 'r') as yml_file: - config = full_load(yml_file) or {} - - if 'config' in config: - hurry_config = config['config'] - mgm_config_name = hurry_config['mgm_config_names']['mgm-config'] - mgm_config_hyperopt_name = hurry_config['mgm_config_names']['mgm-config-hyperopt'] - - if (mgm_config_name is None) or (mgm_config_hyperopt_name is None): - sys.exit('MoniGoManiHyperStrategy - ERROR - The MoniGoMani Configuration filenames could not be loaded from' - '".hurry"... Please run "python3 ./mgm-hurry setup" to create your ".hurry" file') + mgm_config_path = f'{MGM_CONFIG_FOLDER_PATH}/mgm-config.json' + mgm_config_hyperopt_path = f'{MGM_CONFIG_FOLDER_PATH}/mgm-config-hyperopt.json' # Load the MoniGoMani settings - mgm_config_path = f'{os.getcwd()}/user_data/{mgm_config_name}' - if os.path.isfile(mgm_config_path) is True: - # Load the 'mgm-config.json' file as an object and parse it as a dictionary - file_object = open(mgm_config_path, ) - json_data = json.load(file_object) - mgm_config = json_data['monigomani_settings'] - else: + try: + with open(mgm_config_path, 'r') as f: + mgm_config_object = json.load(f) + mgm_config = mgm_config_object['monigomani_settings'] + except IOError: sys.exit(f'MoniGoManiHyperStrategy - ERROR - The main MoniGoMani configuration file "mgm-config" can\'t ' f'be found at: {mgm_config_path}... Please provide the correct file and/or alter "mgm_config_name" in ' f'".hurry"') @@ -153,45 +140,41 @@ class MasterMoniGoManiHyperStrategy(IStrategy, ABC): f': \nhttps://github.com/Rikj000/MoniGoMani/blob/development/user_data/mgm-config.example.json') # If results from a previous HyperOpt Run are found then continue the next HyperOpt Run upon them - mgm_config_hyperopt_path = f'{os.getcwd()}/user_data/{mgm_config_hyperopt_name}' - if os.path.isfile(mgm_config_hyperopt_path) is True: - # Try to load the previous 'mgm-config-hyperopt' file as an object and parse it as a dictionary - # if the parse fails, warn and continue as if it didn't exist. - try: - file_object = open(mgm_config_hyperopt_path, ) - mgm_config_hyperopt = json.load(file_object) - except ValueError as e: - mgm_config_hyperopt = {} - logger.warning(f'MoniGoManiHyperStrategy - WARN - {mgm_config_hyperopt_path} is inaccessible or is ' - f'not valid JSON, disregarding existing "mgm-config-hyperopt" file and ' - f'treating as first hyperopt run!') - - # Convert the loaded 'mgm-config-hyperopt' data to the needed HyperOpt Results format if it's found - # Default stub values from 'mgm-config' are used otherwise. - if mgm_config_hyperopt != {}: - for space in mgm_config_hyperopt['params']: - if space in ['buy', 'sell']: - for param, param_value in mgm_config_hyperopt['params'][space].items(): - if param.startswith('buy'): - buy_params[param] = param_value - else: - sell_params[param] = param_value - - if space == 'roi': - minimal_roi = mgm_config_hyperopt['params'][space] - - if space == 'stoploss': - stoploss = mgm_config_hyperopt['params'][space][space] - - if space == 'trailing': - trailing_stop = mgm_config_hyperopt['params'][space]['trailing_stop'] - trailing_stop_positive = mgm_config_hyperopt['params'][space]['trailing_stop_positive'] - trailing_stop_positive_offset = mgm_config_hyperopt[ - 'params'][space]['trailing_stop_positive_offset'] - trailing_only_offset_is_reached = mgm_config_hyperopt[ - 'params'][space]['trailing_only_offset_is_reached'] - else: - mgm_config_hyperopt = {} + try: + with open(mgm_config_hyperopt_path) as f: + mgm_config_hyperopt = json.load(f) + except ValueError: + mgm_config_hyperopt = None + logger.warning(f'MoniGoManiHyperStrategy - WARN - {mgm_config_hyperopt_path} is inaccessible or is ' + f'not valid JSON, disregarding existing "mgm-config-hyperopt" file and ' + f'treating as first hyperopt run!') + except IOError: + mgm_config_hyperopt = None + + # Convert the loaded 'mgm-config-hyperopt' data to the needed HyperOpt Results format if it's found + # Default stub values from 'mgm-config' are used otherwise. + if mgm_config_hyperopt is not None: + for space in mgm_config_hyperopt['params']: + if space in ['buy', 'sell']: + for param, param_value in mgm_config_hyperopt['params'][space].items(): + if param.startswith('buy'): + buy_params[param] = param_value + else: + sell_params[param] = param_value + + if space == 'roi': + minimal_roi = mgm_config_hyperopt['params'][space] + + if space == 'stoploss': + stoploss = mgm_config_hyperopt['params'][space][space] + + if space == 'trailing': + trailing_stop = mgm_config_hyperopt['params'][space]['trailing_stop'] + trailing_stop_positive = mgm_config_hyperopt['params'][space]['trailing_stop_positive'] + trailing_stop_positive_offset = mgm_config_hyperopt[ + 'params'][space]['trailing_stop_positive_offset'] + trailing_only_offset_is_reached = mgm_config_hyperopt[ + 'params'][space]['trailing_only_offset_is_reached'] # Create dictionary to store custom information MoniGoMani will be using in RAM initial_custom_info: dict = {'open_trades': {}, 'unclogger_cooldown_pairs': {}} @@ -341,6 +324,10 @@ def __init__(self, config: dict): :param config: (dict) """ + logger.info('start') + logger.info(config['monigomani_hyperoptloss_settings']) + logger.info('end') + i = 'Initialization' if RunMode(config.get('runmode', RunMode.OTHER)) in (RunMode.BACKTEST, RunMode.HYPEROPT): self.timeframe = self.backtest_timeframe From bd58082f5f8ecadb3f1d7f1081680160bbf08b9d Mon Sep 17 00:00:00 2001 From: Jose Cabo Date: Wed, 8 Dec 2021 23:48:13 +0100 Subject: [PATCH 3/9] Adds docker-compose. --- docker-compose.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..6908c64ec --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +--- +version: '3' +services: + freqtrade: + image: fq:mgm-recommended + # image: freqtradeorg/freqtrade:stable + # image: freqtradeorg/freqtrade:develop + # Use plotting image + # image: freqtradeorg/freqtrade:develop_plot + # Build step - only needed when additional dependencies are needed + # build: + # context: . + # dockerfile: "./docker/Dockerfile.custom" + restart: unless-stopped + container_name: freqtrade + volumes: + - "./user_data:/freqtrade/user_data" + - "./strategy-config:/strategy-config" + # Expose api on port 8080 (localhost only) + # Please read the https://www.freqtrade.io/en/stable/rest-api/ documentation + # before enabling this. + ports: + # - "127.0.0.1:8080:8080" + - "127.0.0.1:8080:8080" # Unsafe + # Default command used when running `docker compose up` + command: > + trade + --logfile /freqtrade/user_data/logs/freqtrade.log + --db-url sqlite:////freqtrade/user_data/tradesv3.sqlite + --config /freqtrade/user_data/config.json + --strategy SampleStrategy From cb0e9b15fa10c199db550b351483344279b73335 Mon Sep 17 00:00:00 2001 From: Jose Cabo Date: Fri, 10 Dec 2021 23:05:25 +0100 Subject: [PATCH 4/9] Updates support for "command" installation type. --- mgm-hurry | 45 +++++++++---------- user_data/mgm_tools/mgm_hurry/FreqtradeCli.py | 30 ++++++++----- .../mgm_tools/mgm_hurry/MoniGoManiConfig.py | 23 +++++++--- .../MasterMoniGoManiHyperStrategy.py | 4 -- 4 files changed, 58 insertions(+), 44 deletions(-) diff --git a/mgm-hurry b/mgm-hurry index de1a20095..be76ca118 100755 --- a/mgm-hurry +++ b/mgm-hurry @@ -69,6 +69,7 @@ class MGMHurry: self.freqtrade_cli = FreqtradeCli(self.basedir) self.monigomani_cli = MoniGoManiCli(self.basedir) + # TODO redo. def version(self): if self.freqtrade_cli.install_type == 'source': if self.freqtrade_cli.installation_exists(silent=True): @@ -82,7 +83,6 @@ class MGMHurry: self.monigomani_cli.run_command('git log -1; echo "";') else: self.logger.warning(Color.yellow('"No Freqtrade installation detected!')) - else: self.logger.warning(Color.yellow('"version" command currently only supported on "source" installations.')) @@ -577,8 +577,9 @@ class MGMHurry: self.logger.info(f'👉 Downloading candle data ({tickers}) for timerange ({timerange})') - command = (f'{self.monigomani_config.config["ft_binary"]} download-data --timerange {timerange} ' - f'-t {tickers} {self.monigomani_config.command_configs()}') + command = f'{self.monigomani_config.get_freqtrade_cmd()} download-data' + command += f' --timerange {timerange}' + command += f' -t {tickers} {self.monigomani_config.command_configs()}' if self.monigomani_config.config['exchange'] == 'kraken': command += ' --dl-trades' @@ -698,30 +699,24 @@ class MGMHurry: if spaces is None: spaces = self.monigomani_config.config['hyperopt']['spaces'] - command = (f'$ft_binary hyperopt -s $ho_strategy {self.monigomani_config.command_configs()}' - f'--hyperopt-loss $ho_loss --spaces $ho_spaces -e $ho_epochs --timerange $timerange ') + command = f'{self.monigomani_config.get_freqtrade_cmd()} hyperopt' + command += f' {self.monigomani_config.command_configs()}' + command += f' --hyperopt-loss {strategy}' + command += f' --spaces {spaces}' + command += f' -e {epochs}' + command += f' --timerange {timerange}' if enable_protections is True: - command = f'{command.strip()} --enable-protections ' + command = f' {command.strip()} --enable-protections' if random_state is not None: - command = f'{command.strip()} --random-state $random_state ' + command = f' {command.strip()} --random-state {random_state}' if jobs is not None: - command = f'{command.strip()} -j $jobs ' + command = f' {command.strip()} -j {jobs}' if min_trades is not None: - command = f'{command.strip()} --min-trades $min_trades ' - - command = Template(command).substitute( - ft_binary=self.monigomani_config.config['ft_binary'], - ho_strategy=strategy, - ho_loss=loss, - ho_spaces=spaces, - ho_epochs=epochs, - timerange=timerange, - random_state=random_state, - jobs=jobs, - min_trades=min_trades) + command = f' {command.strip()} --min-trades {min_trades}' self.logger.debug(command) + if output_file_name is None: output_file_name = f'{strategy}-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}' hyperopt_file_name = f'HyperOptResults-{output_file_name}' @@ -794,7 +789,7 @@ class MGMHurry: best = '--best' if only_best is True else '' profit = '--profitable' if only_profitable is True else '' - command = (f'{self.monigomani_config.config["ft_binary"]} hyperopt-list ' + command = (f'{self.monigomani_config.get_freqtrade_cmd()} hyperopt-list ' f'--hyperopt-filename "{choice}" {best} {profit}') self.logger.debug(command) @@ -823,7 +818,7 @@ class MGMHurry: self.logger.info(f'👉 Showing {"" if apply is False else "and applying "}HyperOpt results for epoch #{epoch}') - command = (f'{self.monigomani_config.config["ft_binary"]} hyperopt-show -n {epoch} ' + command = (f'{self.monigomani_config.get_freqtrade_cmd()} hyperopt-show -n {epoch} ' f'{self.monigomani_config.command_configs()}') if fthypt_name is not None: @@ -857,7 +852,7 @@ class MGMHurry: self.logger.info(Color.title('👉 Start BackTesting. Lets see how it all turns out!')) timerange = self.monigomani_config.get_preset_timerange(timerange) - command = (f'$ft_binary backtesting -s $ho_strategy {self.monigomani_config.command_configs()}' + command = (f'{self.monigomani_config.get_freqtrade_cmd()} backtesting -s $ho_strategy {self.monigomani_config.command_configs()}' f'--timerange $timerange') if timerange is None: @@ -950,7 +945,7 @@ class MGMHurry: output_file_path = f'{self.basedir}/user_data/plot/{plot_profit_file_name}.html' self.monigomani_cli.run_command( - f'{self.monigomani_config.config["ft_binary"]} plot-profit {self.monigomani_config.command_configs()}' + f'{self.monigomani_config.get_freqtrade_cmd()} plot-profit {self.monigomani_config.command_configs()}' f'--export-filename {backtest_results_path} --timerange {timerange} --timeframe {timeframe} && ' f'mv {self.basedir}/user_data/plot/freqtrade-profit-plot.html {output_file_path}') @@ -1108,7 +1103,7 @@ class MGMHurry: f'{"in Dry-Run Mode!" if dry_run else "in Live-Run Mode, fingers crossed! 🤞"}')) command = f'{self.monigomani_config.get_freqtrade_cmd()} trade' - command += f' {self.monigomani_config.get_command_configs()}' + command += f' {self.monigomani_config.command_configs()}' command += f' --strategy {self.monigomani_config.config["hyperopt"]["strategy"]}' if dry_run is True: diff --git a/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py b/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py index 86e0d9384..ebc7f2c9c 100644 --- a/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py +++ b/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py @@ -13,6 +13,7 @@ # \_| |_| \___| \__, | \__||_| \__,_| \__,_| \___| \____/|_||_| # | | # |_| +import shutil import distro import glob @@ -129,27 +130,36 @@ def installation_exists(self, silent: bool = False) -> bool: return False # Well if install_type is docker, we return True because we don't verify if docker is installed - if self.install_type == 'docker': + if self.install_type == 'docker-compose': if silent is False: self.cli_logger.debug('FreqtradeCli - installation_exists() succeeded because ' 'install_type is set to docker.') return True - if self.freqtrade_binary is None: - if silent is False: - self.cli_logger.warning(Color.yellow('FreqtradeCli - installation_exists() failed. ' - 'No freqtrade_binary.')) - return False - - if self.install_type == 'source': + if self.install_type == 'command': if silent is False: self.cli_logger.debug('FreqtradeCli - installation_exists() install_type is "source".') - if os.path.exists(f'{self.basedir}/.env/bin/freqtrade'): + + if os.path.isfile('freqtrade/.env/bin/freqtrade'): return True if silent is False: self.cli_logger.warning(Color.yellow(f'FreqtradeCli - installation_exists() failed. Freqtrade binary ' - f'not found in {self.basedir}/.env/bin/freqtrade.')) + f'not found.')) + + if self.install_type == 'custom' and self.freqtrade_binary: + if os.path.isfile(self.freqtrade_binary): + if silent is False: + self.cli_logger.debug('FreqtradeCli - installation_exists() succeeded because ' + 'install_type is set to custom.') + else: + if silent is False: + self.cli_logger.warning(Color.yellow(f'FreqtradeCli - installation_exists() failed. Freqtrade binary ' + f'not found.')) + + if silent is False: + self.cli_logger.warning(Color.yellow('FreqtradeCli - installation_exists() failed. ' + 'No freqtrade_binary.')) return False diff --git a/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py b/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py index 82530a63f..eeb771cf5 100644 --- a/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py +++ b/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py @@ -210,14 +210,21 @@ def get_freqtrade_cmd(self): if self.config['install_type'] == 'docker-compose': cmd = 'docker-compose run' - # cmd += f' -v {self.__basedir}/{self.config["mgm_config_folder"]}:/strategy-config' + cmd += f' -v {self.__basedir}/{self.config["mgm_config_folder"]}:/strategy-config' cmd += f' -e MGM_CONFIG_FOLDER_PATH=/strategy-config' cmd += f' --rm freqtrade' return cmd - else: - raise "TODO install_type unsupported" + elif self.config['install_type'] == 'command': + cmd = f'source freqtrade/.env/bin/activate;' + + cmd += f' MGM_CONFIG_FOLDER_PATH="{self.__basedir}/{self.config["mgm_config_folder"]}"' + cmd += ' freqtrade' + + return cmd + elif self.config['install_type'] == 'custom': + raise "TODO install_type 'custom' unsupported" def get_config_filepath(self, cfg_key: str) -> str: """ @@ -487,7 +494,7 @@ def save_weak_strong_signal_overrides(self) -> bool: self.logger.debug(f'Strong and weak signals automatically over-written in "{mgm_config_hyperopt_name}"') return True - def get_command_configs(self) -> str: + def command_configs(self) -> str: """ Returns a string with the 'mgm-config' & 'mgm-config-private' names loaded from '.hurry' ready to implement in a freqtrade command. @@ -495,7 +502,13 @@ def get_command_configs(self) -> str: """ mgm_config_folder_path = self.config['mgm_config_folder'] - return '-c /strategy-config/mgm-config.json -c /strategy-config/mgm-config-private.json' + if self.config['install_type'] == 'docker-compose': + return '-c /strategy-config/mgm-config.json -c /strategy-config/mgm-config-private.json' + else: + config_args = f'-c {self.basedir}/{mgm_config_folder_path}/mgm-config.json' + config_args += f' -c {self.basedir}/{mgm_config_folder_path}/mgm-config-private.json' + + return config_args def get_preset_timerange(self, timerange: str) -> str: """ diff --git a/user_data/strategies/MasterMoniGoManiHyperStrategy.py b/user_data/strategies/MasterMoniGoManiHyperStrategy.py index 00e6d34e9..bb292ecd9 100644 --- a/user_data/strategies/MasterMoniGoManiHyperStrategy.py +++ b/user_data/strategies/MasterMoniGoManiHyperStrategy.py @@ -324,10 +324,6 @@ def __init__(self, config: dict): :param config: (dict) """ - logger.info('start') - logger.info(config['monigomani_hyperoptloss_settings']) - logger.info('end') - i = 'Initialization' if RunMode(config.get('runmode', RunMode.OTHER)) in (RunMode.BACKTEST, RunMode.HYPEROPT): self.timeframe = self.backtest_timeframe From e4a6e899c69c89363e82bd93daa63f439d93ce1d Mon Sep 17 00:00:00 2001 From: Jose Cabo Date: Sat, 11 Dec 2021 00:18:40 +0100 Subject: [PATCH 5/9] Adds new command to mgm-hurry. --- mgm-hurry | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/mgm-hurry b/mgm-hurry index be76ca118..33fcb7a7c 100755 --- a/mgm-hurry +++ b/mgm-hurry @@ -20,6 +20,7 @@ import glob import json import logging import os +import shutil import sys from datetime import datetime from string import Template @@ -1093,6 +1094,44 @@ class MGMHurry: message=f'🚀 Fresh **{strategy}** SpreadSheet (.csv) Results ⬇️', results_paths=[output_file_path]) + def use_configuration(self, config_ho: str = None, config: str = None, config_private: str = None, override: bool = False) -> None: + """ + Configure the bot with the given configuration. Use this to quickly move between different configurations + stored in your filesystem. + + :param config_ho: (str) + :param config: (str, Optional) + :param config_private: (str, Optional) + :param override: (bool) + """ + self.logger.info(Color.title('👉 Configuring the bot with strategy:')) + + if not override: + self.logger.error('Impossible to use provided configuration without overridden the present one.' + ' Include the `--override` flag if you wish to override the current configuration.') + return + + if os.path.isfile(config_ho): + self.logger.info(f'Using config-hyperopt from: {config_ho}') + + shutil.copy(config_ho, f'{self.basedir}/user_data/mgm-config-hyperopt.json') + elif config_ho is not None: + self.logger.error(f'Can\'t locate config-hyperopt file from: {config_ho}') + + if os.path.isfile(config): + self.logger.info(f'Using config from: {config}') + + shutil.copy(config, f'{self.basedir}/user_data/mgm-config.json') + elif config is not None: + self.logger.error(f'Can\'t locate config file from: {config}') + + if os.path.isfile(config_private): + self.logger.info(f'Using config-private from: {config_private}') + + shutil.copy(config_private, f'{self.basedir}/user_data/mgm-config-private.json') + elif config_private is not None: + self.logger.error(f'Can\'t locate config-private file from: {config_private}') + def start_trader(self, dry_run: bool = True): """ Start the trader. Your ultimate goal! From c90c71bf8b17c92a25183aa7d703962c93195f9d Mon Sep 17 00:00:00 2001 From: Jose Cabo Date: Sat, 11 Dec 2021 13:33:07 +0100 Subject: [PATCH 6/9] Simplifies loading the trading configuration. --- .hurry | 3 +-- docker-compose.yml | 1 - user_data/mgm_tools/mgm_hurry/FreqtradeCli.py | 2 +- .../mgm_tools/mgm_hurry/MoniGoManiConfig.py | 25 ++++--------------- .../MasterMoniGoManiHyperStrategy.py | 6 ++--- 5 files changed, 9 insertions(+), 28 deletions(-) diff --git a/.hurry b/.hurry index 9b7737ee8..dcc462132 100644 --- a/.hurry +++ b/.hurry @@ -1,12 +1,11 @@ config: username: MoniGoMani Community exchange: binance - install_type: docker-compose + install_type: submodule hyperopt: epochs: 1000 loss: MGM_WinRatioAndProfitRatioHyperOptLoss stake_currency: USDT spaces: buy sell strategy: MoniGoManiHyperStrategy - mgm_config_folder: strategy-config timerange: 20210501-20210616 diff --git a/docker-compose.yml b/docker-compose.yml index 6908c64ec..9d60d2bd8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,6 @@ services: container_name: freqtrade volumes: - "./user_data:/freqtrade/user_data" - - "./strategy-config:/strategy-config" # Expose api on port 8080 (localhost only) # Please read the https://www.freqtrade.io/en/stable/rest-api/ documentation # before enabling this. diff --git a/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py b/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py index ebc7f2c9c..fcbde5089 100644 --- a/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py +++ b/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py @@ -136,7 +136,7 @@ def installation_exists(self, silent: bool = False) -> bool: 'install_type is set to docker.') return True - if self.install_type == 'command': + if self.install_type == 'submodule': if silent is False: self.cli_logger.debug('FreqtradeCli - installation_exists() install_type is "source".') diff --git a/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py b/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py index eeb771cf5..f2f339b5b 100644 --- a/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py +++ b/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py @@ -208,19 +208,11 @@ def read_hurry_config(self) -> dict: def get_freqtrade_cmd(self): if self.config['install_type'] == 'docker-compose': - cmd = 'docker-compose run' - - cmd += f' -v {self.__basedir}/{self.config["mgm_config_folder"]}:/strategy-config' - cmd += f' -e MGM_CONFIG_FOLDER_PATH=/strategy-config' - - cmd += f' --rm freqtrade' + cmd = 'docker-compose run --rm freqtrade' return cmd - elif self.config['install_type'] == 'command': - cmd = f'source freqtrade/.env/bin/activate;' - - cmd += f' MGM_CONFIG_FOLDER_PATH="{self.__basedir}/{self.config["mgm_config_folder"]}"' - cmd += ' freqtrade' + elif self.config['install_type'] == 'submodule': + cmd = f'{self.basedir}/freqtrade/.env/bin/freqtrade' return cmd elif self.config['install_type'] == 'custom': @@ -496,19 +488,12 @@ def save_weak_strong_signal_overrides(self) -> bool: def command_configs(self) -> str: """ - Returns a string with the 'mgm-config' & 'mgm-config-private' names loaded from '.hurry' + Returns a string with the 'mgm-config' & 'mgm-config-private' file paths ready to implement in a freqtrade command. :return str: String with 'mgm-config' & 'mgm-config-private' for a freqtrade command """ - mgm_config_folder_path = self.config['mgm_config_folder'] - - if self.config['install_type'] == 'docker-compose': - return '-c /strategy-config/mgm-config.json -c /strategy-config/mgm-config-private.json' - else: - config_args = f'-c {self.basedir}/{mgm_config_folder_path}/mgm-config.json' - config_args += f' -c {self.basedir}/{mgm_config_folder_path}/mgm-config-private.json' - return config_args + return '-c ./user_data/mgm-config.json -c ./user_data/mgm-config-private.json' def get_preset_timerange(self, timerange: str) -> str: """ diff --git a/user_data/strategies/MasterMoniGoManiHyperStrategy.py b/user_data/strategies/MasterMoniGoManiHyperStrategy.py index bb292ecd9..2d70fc10c 100644 --- a/user_data/strategies/MasterMoniGoManiHyperStrategy.py +++ b/user_data/strategies/MasterMoniGoManiHyperStrategy.py @@ -33,8 +33,6 @@ # --- ↑ Do not remove these libs ↑ ------------------------------------------------------------------------------------- -MGM_CONFIG_FOLDER_PATH = os.environ["MGM_CONFIG_FOLDER_PATH"] - class MasterMoniGoManiHyperStrategy(IStrategy, ABC): """ #################################################################################### @@ -69,8 +67,8 @@ class MasterMoniGoManiHyperStrategy(IStrategy, ABC): buy_params = {} sell_params = {} - mgm_config_path = f'{MGM_CONFIG_FOLDER_PATH}/mgm-config.json' - mgm_config_hyperopt_path = f'{MGM_CONFIG_FOLDER_PATH}/mgm-config-hyperopt.json' + mgm_config_path = './user_data/mgm-config.json' + mgm_config_hyperopt_path = './user_data/mgm-config-hyperopt.json' # Load the MoniGoMani settings try: From e8e8fbe802af55503ecb34d7ccb575b2156b9c92 Mon Sep 17 00:00:00 2001 From: Jose Cabo Date: Sat, 11 Dec 2021 14:21:40 +0100 Subject: [PATCH 7/9] Removes unnecessary files. --- strategy-config/mgm-config-hyperopt.json | 1438 ---------------------- strategy-config/mgm-config-private.json | 7 - strategy-config/mgm-config.json | 293 ----- 3 files changed, 1738 deletions(-) delete mode 100644 strategy-config/mgm-config-hyperopt.json delete mode 100755 strategy-config/mgm-config-private.json delete mode 100644 strategy-config/mgm-config.json diff --git a/strategy-config/mgm-config-hyperopt.json b/strategy-config/mgm-config-hyperopt.json deleted file mode 100644 index a511ff733..000000000 --- a/strategy-config/mgm-config-hyperopt.json +++ /dev/null @@ -1,1438 +0,0 @@ -{ - "strategy_name": "MoniGoManiHyperStrategy", - "params": { - "buy": { - "buy__downwards_trend_signal_triggers_needed": 2, - "buy__downwards_trend_total_signal_needed": 166, - "buy__downwards_trend_total_signal_needed_candles_lookback_window": 5, - "buy__sideways_trend_signal_triggers_needed": 5, - "buy__sideways_trend_total_signal_needed": 310, - "buy__sideways_trend_total_signal_needed_candles_lookback_window": 6, - "buy__upwards_trend_signal_triggers_needed": 5, - "buy__upwards_trend_total_signal_needed": 224, - "buy__upwards_trend_total_signal_needed_candles_lookback_window": 7, - "buy_downwards_trend_macd_weight": 49, - "buy_downwards_trend_mfi_weight": 24, - "buy_downwards_trend_sar_cross_weight": 53, - "buy_downwards_trend_sma_long_golden_cross_weight": 0, - "buy_downwards_trend_sma_short_golden_cross_weight": 0, - "buy_downwards_trend_stoch_weight": 27, - "buy_downwards_trend_tema_weight": 31, - "buy_downwards_trend_vwap_cross_weight": 63, - "buy_sideways_trend_macd_weight": 70, - "buy_sideways_trend_mfi_weight": 0, - "buy_sideways_trend_sar_cross_weight": 73, - "buy_sideways_trend_sma_long_golden_cross_weight": 23, - "buy_sideways_trend_sma_short_golden_cross_weight": 59, - "buy_sideways_trend_stoch_weight": 31, - "buy_sideways_trend_tema_weight": 60, - "buy_sideways_trend_vwap_cross_weight": 58, - "buy_upwards_trend_macd_weight": 44, - "buy_upwards_trend_mfi_weight": 100, - "buy_upwards_trend_sar_cross_weight": 69, - "buy_upwards_trend_sma_long_golden_cross_weight": 54, - "buy_upwards_trend_sma_short_golden_cross_weight": 47, - "buy_upwards_trend_stoch_weight": 43, - "buy_upwards_trend_tema_weight": 52, - "buy_upwards_trend_vwap_cross_weight": 38 - }, - "sell": { - "sell___unclogger_buy_cooldown_minutes_window": 264, - "sell___unclogger_minimal_losing_trade_duration_minutes": 146, - "sell___unclogger_minimal_losing_trades_open": 5, - "sell___unclogger_open_trades_losing_percentage_needed": 38, - "sell___unclogger_trend_lookback_candles_window": 29, - "sell___unclogger_trend_lookback_candles_window_percentage_needed": 45, - "sell__downwards_trend_signal_triggers_needed": 2, - "sell__downwards_trend_total_signal_needed": 192, - "sell__downwards_trend_total_signal_needed_candles_lookback_window": 8, - "sell__sideways_trend_signal_triggers_needed": 8, - "sell__sideways_trend_total_signal_needed": 102, - "sell__sideways_trend_total_signal_needed_candles_lookback_window": 7, - "sell__upwards_trend_signal_triggers_needed": 5, - "sell__upwards_trend_total_signal_needed": 122, - "sell__upwards_trend_total_signal_needed_candles_lookback_window": 7, - "sell_downwards_trend_macd_weight": 48, - "sell_downwards_trend_mfi_weight": 45, - "sell_downwards_trend_sar_cross_weight": 59, - "sell_downwards_trend_sma_long_death_cross_weight": 66, - "sell_downwards_trend_sma_short_death_cross_weight": 57, - "sell_downwards_trend_stoch_weight": 46, - "sell_downwards_trend_tema_weight": 32, - "sell_downwards_trend_vwap_cross_weight": 67, - "sell_sideways_trend_macd_weight": 40, - "sell_sideways_trend_mfi_weight": 52, - "sell_sideways_trend_sar_cross_weight": 23, - "sell_sideways_trend_sma_long_death_cross_weight": 32, - "sell_sideways_trend_sma_short_death_cross_weight": 67, - "sell_sideways_trend_stoch_weight": 42, - "sell_sideways_trend_tema_weight": 72, - "sell_sideways_trend_vwap_cross_weight": 39, - "sell_upwards_trend_macd_weight": 34, - "sell_upwards_trend_mfi_weight": 62, - "sell_upwards_trend_sar_cross_weight": 0, - "sell_upwards_trend_sma_long_death_cross_weight": 69, - "sell_upwards_trend_sma_short_death_cross_weight": 71, - "sell_upwards_trend_stoch_weight": 41, - "sell_upwards_trend_tema_weight": 73, - "sell_upwards_trend_vwap_cross_weight": 60 - }, - "roi": { - "0": 0.614, - "5": 0.6124349969192853, - "10": 0.6108699938385705, - "15": 0.6093049907578558, - "20": 0.6077399876771411, - "25": 0.6061749845964264, - "30": 0.6046099815157117, - "35": 0.6030449784349969, - "40": 0.6014799753542822, - "45": 0.5999149722735675, - "50": 0.5983499691928528, - "55": 0.596784966112138, - "60": 0.5952199630314233, - "65": 0.5936549599507086, - "70": 0.5920899568699938, - "75": 0.590524953789279, - "80": 0.5889599507085643, - "85": 0.5873949476278496, - "90": 0.5858299445471349, - "95": 0.5842649414664202, - "100": 0.5826999383857054, - "105": 0.5811349353049907, - "110": 0.579569932224276, - "115": 0.5780049291435613, - "120": 0.5764399260628466, - "125": 0.5748749229821318, - "130": 0.5733099199014171, - "135": 0.5717449168207024, - "140": 0.5701799137399877, - "145": 0.5686149106592729, - "150": 0.5670499075785582, - "155": 0.5654849044978435, - "160": 0.5639199014171288, - "165": 0.562354898336414, - "170": 0.5607898952556993, - "175": 0.5592248921749846, - "180": 0.5576598890942699, - "185": 0.5560948860135552, - "190": 0.5545298829328404, - "195": 0.5529648798521257, - "200": 0.551399876771411, - "205": 0.5498348736906962, - "210": 0.5482698706099816, - "215": 0.5467048675292667, - "220": 0.5451398644485521, - "225": 0.5435748613678373, - "230": 0.5420098582871226, - "235": 0.5404448552064078, - "240": 0.5388798521256931, - "245": 0.5373148490449784, - "250": 0.5357498459642637, - "255": 0.534184842883549, - "260": 0.5326198398028342, - "265": 0.5310548367221195, - "270": 0.5294898336414048, - "275": 0.5279248305606901, - "280": 0.5263598274799753, - "285": 0.5247948243992606, - "290": 0.5232298213185459, - "295": 0.5216648182378312, - "300": 0.5200998151571165, - "305": 0.5185348120764017, - "310": 0.516969808995687, - "315": 0.5154048059149723, - "320": 0.5138398028342576, - "325": 0.5122747997535428, - "330": 0.5107097966728281, - "335": 0.5091447935921134, - "340": 0.5075797905113987, - "345": 0.506014787430684, - "350": 0.5044497843499691, - "355": 0.5028847812692545, - "360": 0.5013197781885397, - "365": 0.499754775107825, - "370": 0.4981897720271103, - "375": 0.49662476894639557, - "380": 0.49505976586568085, - "385": 0.49349476278496607, - "390": 0.49192975970425135, - "395": 0.4903647566235366, - "400": 0.4887997535428219, - "405": 0.4872347504621072, - "410": 0.48566974738139246, - "415": 0.48410474430067774, - "420": 0.482539741219963, - "425": 0.4809747381392483, - "430": 0.47940973505853357, - "435": 0.47784473197781885, - "440": 0.4762797288971041, - "445": 0.4747147258163894, - "450": 0.4731497227356747, - "455": 0.47158471965495996, - "460": 0.47001971657424524, - "465": 0.4684547134935305, - "470": 0.4668897104128158, - "475": 0.4653247073321011, - "480": 0.4637597042513863, - "485": 0.4621947011706716, - "490": 0.46062969808995685, - "495": 0.45906469500924213, - "500": 0.4574996919285274, - "505": 0.4559346888478127, - "510": 0.45436968576709796, - "515": 0.45280468268638324, - "520": 0.45123967960566846, - "525": 0.44967467652495374, - "530": 0.448109673444239, - "535": 0.4465446703635243, - "540": 0.4449796672828096, - "545": 0.44341466420209485, - "550": 0.44184966112138013, - "555": 0.4402846580406654, - "560": 0.4387196549599507, - "565": 0.43715465187923597, - "570": 0.43558964879852125, - "575": 0.4340246457178065, - "580": 0.4324596426370918, - "585": 0.4308946395563771, - "590": 0.42932963647566236, - "595": 0.42776463339494764, - "600": 0.4261996303142329, - "605": 0.4246346272335182, - "610": 0.42306962415280347, - "615": 0.42150462107208875, - "620": 0.419939617991374, - "625": 0.41837461491065925, - "630": 0.4168096118299445, - "635": 0.4152446087492298, - "640": 0.4136796056685151, - "645": 0.41211460258780036, - "650": 0.41054959950708564, - "655": 0.4089845964263709, - "660": 0.40741959334565614, - "665": 0.4058545902649414, - "670": 0.4042895871842267, - "675": 0.402724584103512, - "680": 0.40115958102279725, - "685": 0.39959457794208253, - "690": 0.3980295748613678, - "695": 0.3964645717806531, - "700": 0.39489956869993836, - "705": 0.39333456561922364, - "710": 0.3917695625385089, - "715": 0.3902045594577942, - "720": 0.3886395563770795, - "725": 0.38707455329636475, - "730": 0.38550955021565003, - "735": 0.3839445471349353, - "740": 0.3823795440542206, - "745": 0.38081454097350587, - "750": 0.37924953789279114, - "755": 0.3776845348120764, - "760": 0.3761195317313617, - "765": 0.3745545286506469, - "770": 0.3729895255699322, - "775": 0.3714245224892175, - "780": 0.36985951940850276, - "785": 0.36829451632778804, - "790": 0.3667295132470733, - "795": 0.3651645101663586, - "800": 0.36359950708564387, - "805": 0.36203450400492915, - "810": 0.3604695009242144, - "815": 0.3589044978434997, - "820": 0.3573394947627849, - "825": 0.3557744916820702, - "830": 0.3542094886013555, - "835": 0.35264448552064076, - "840": 0.35107948243992604, - "845": 0.3495144793592113, - "850": 0.3479494762784966, - "855": 0.3463844731977819, - "860": 0.34481947011706715, - "865": 0.34325446703635243, - "870": 0.3416894639556377, - "875": 0.340124460874923, - "880": 0.33855945779420826, - "885": 0.33699445471349354, - "890": 0.33542945163277876, - "895": 0.33386444855206404, - "900": 0.3322994454713493, - "905": 0.3307344423906346, - "910": 0.3291694393099199, - "915": 0.32760443622920515, - "920": 0.32603943314849043, - "925": 0.3244744300677757, - "930": 0.322909426987061, - "935": 0.32134442390634627, - "940": 0.31977942082563154, - "945": 0.3182144177449168, - "950": 0.3166494146642021, - "955": 0.3150844115834874, - "960": 0.3135194085027726, - "965": 0.3119544054220579, - "970": 0.31038940234134316, - "975": 0.30882439926062843, - "980": 0.3072593961799137, - "985": 0.305694393099199, - "990": 0.30412939001848427, - "995": 0.30256438693776955, - "1000": 0.3009993838570548, - "1005": 0.2994343807763401, - "1010": 0.2978693776956254, - "1015": 0.29630437461491066, - "1020": 0.29473937153419594, - "1025": 0.2931743684534812, - "1030": 0.2916093653727665, - "1035": 0.2900443622920517, - "1040": 0.288479359211337, - "1045": 0.2869143561306223, - "1050": 0.28534935304990755, - "1055": 0.28378434996919283, - "1060": 0.2822193468884781, - "1065": 0.2806543438077634, - "1070": 0.27908934072704866, - "1075": 0.27752433764633394, - "1080": 0.2759593345656192, - "1085": 0.2743943314849045, - "1090": 0.2728293284041898, - "1095": 0.27126432532347505, - "1100": 0.26969932224276033, - "1105": 0.26813431916204555, - "1110": 0.26656931608133083, - "1115": 0.2650043130006161, - "1120": 0.2634393099199014, - "1125": 0.26187430683918667, - "1130": 0.26030930375847194, - "1135": 0.2587443006777572, - "1140": 0.2571792975970425, - "1145": 0.2556142945163278, - "1150": 0.25404929143561306, - "1155": 0.25248428835489833, - "1160": 0.2509192852741836, - "1165": 0.2493542821934689, - "1170": 0.24778927911275417, - "1175": 0.2462242760320394, - "1180": 0.24465927295132467, - "1185": 0.24309426987060995, - "1190": 0.24152926678989523, - "1195": 0.2399642637091805, - "1200": 0.23839926062846578, - "1205": 0.23683425754775106, - "1210": 0.23526925446703634, - "1215": 0.23370425138632162, - "1220": 0.2321392483056069, - "1225": 0.23057424522489217, - "1230": 0.22900924214417745, - "1235": 0.22744423906346273, - "1240": 0.225879235982748, - "1245": 0.22431423290203323, - "1250": 0.2227492298213185, - "1255": 0.22118422674060378, - "1260": 0.21961922365988906, - "1265": 0.21805422057917434, - "1270": 0.21648921749845962, - "1275": 0.2149242144177449, - "1280": 0.21335921133703017, - "1285": 0.21179420825631545, - "1290": 0.21022920517560073, - "1295": 0.208664202094886, - "1300": 0.2070991990141713, - "1305": 0.20553419593345656, - "1310": 0.20396919285274184, - "1315": 0.20240418977202712, - "1320": 0.20083918669131234, - "1325": 0.19927418361059762, - "1330": 0.1977091805298829, - "1335": 0.19614417744916818, - "1340": 0.19457917436845346, - "1345": 0.19301417128773873, - "1350": 0.191449168207024, - "1355": 0.1898841651263093, - "1360": 0.18831916204559457, - "1365": 0.18675415896487985, - "1370": 0.18518915588416512, - "1375": 0.1836241528034504, - "1380": 0.18205914972273568, - "1385": 0.18049414664202096, - "1390": 0.17892914356130618, - "1395": 0.17736414048059146, - "1400": 0.17579913739987674, - "1405": 0.17423413431916202, - "1410": 0.1726691312384473, - "1415": 0.17110412815773257, - "1420": 0.16953912507701785, - "1425": 0.16797412199630313, - "1430": 0.1664091189155884, - "1435": 0.16484411583487368, - "1440": 0.16327911275415896, - "1445": 0.16171410967344424, - "1450": 0.16014910659272952, - "1455": 0.1585841035120148, - "1460": 0.15701910043130002, - "1465": 0.1554540973505853, - "1470": 0.15388909426987057, - "1475": 0.15232409118915585, - "1480": 0.15075908810844113, - "1485": 0.1491940850277264, - "1490": 0.1476290819470117, - "1495": 0.14606407886629696, - "1500": 0.14449907578558224, - "1505": 0.14293407270486752, - "1510": 0.1413690696241528, - "1515": 0.13980406654343808, - "1520": 0.13823906346272335, - "1525": 0.13667406038200863, - "1530": 0.13510905730129386, - "1535": 0.13354405422057913, - "1540": 0.1319790511398644, - "1545": 0.1304140480591497, - "1550": 0.12884904497843497, - "1555": 0.12728404189772025, - "1560": 0.12571903881700552, - "1565": 0.1241540357362908, - "1570": 0.12258903265557608, - "1575": 0.12102402957486136, - "1580": 0.11945902649414664, - "1585": 0.11789402341343191, - "1590": 0.11632902033271719, - "1595": 0.11476401725200247, - "1600": 0.11319901417128775, - "1605": 0.11163401109057303, - "1610": 0.1100690080098583, - "1615": 0.10850400492914358, - "1620": 0.10693900184842886, - "1625": 0.10584935064935067, - "1630": 0.10547272727272729, - "1635": 0.10509610389610391, - "1640": 0.10471948051948053, - "1645": 0.10434285714285715, - "1650": 0.10396623376623378, - "1655": 0.1035896103896104, - "1660": 0.10321298701298702, - "1665": 0.10283636363636364, - "1670": 0.10245974025974026, - "1675": 0.10208311688311689, - "1680": 0.10170649350649352, - "1685": 0.10132987012987014, - "1690": 0.10095324675324677, - "1695": 0.10057662337662339, - "1700": 0.10020000000000001, - "1705": 0.09982337662337663, - "1710": 0.09944675324675326, - "1715": 0.09907012987012988, - "1720": 0.0986935064935065, - "1725": 0.09831688311688312, - "1730": 0.09794025974025974, - "1735": 0.09756363636363638, - "1740": 0.09718701298701299, - "1745": 0.09681038961038962, - "1750": 0.09643376623376625, - "1755": 0.09605714285714287, - "1760": 0.09568051948051949, - "1765": 0.09530389610389611, - "1770": 0.09492727272727274, - "1775": 0.09455064935064936, - "1780": 0.09417402597402598, - "1785": 0.0937974025974026, - "1790": 0.09342077922077922, - "1795": 0.09304415584415585, - "1800": 0.09266753246753248, - "1805": 0.0922909090909091, - "1810": 0.09191428571428573, - "1815": 0.09153766233766235, - "1820": 0.09116103896103897, - "1825": 0.09078441558441559, - "1830": 0.09040779220779221, - "1835": 0.09003116883116884, - "1840": 0.08965454545454546, - "1845": 0.08927792207792208, - "1850": 0.0889012987012987, - "1855": 0.08852467532467534, - "1860": 0.08814805194805195, - "1865": 0.08777142857142858, - "1870": 0.0873948051948052, - "1875": 0.08701818181818183, - "1880": 0.08664155844155845, - "1885": 0.08626493506493507, - "1890": 0.0858883116883117, - "1895": 0.08551168831168832, - "1900": 0.08513506493506494, - "1905": 0.08475844155844156, - "1910": 0.08438181818181818, - "1915": 0.0840051948051948, - "1920": 0.08362857142857144, - "1925": 0.08325194805194805, - "1930": 0.08287532467532469, - "1935": 0.08249870129870131, - "1940": 0.08212207792207793, - "1945": 0.08174545454545455, - "1950": 0.08136883116883117, - "1955": 0.0809922077922078, - "1960": 0.08061558441558442, - "1965": 0.08023896103896104, - "1970": 0.07986233766233766, - "1975": 0.0794857142857143, - "1980": 0.0791090909090909, - "1985": 0.07873246753246754, - "1990": 0.07835584415584415, - "1995": 0.07797922077922079, - "2000": 0.07760259740259741, - "2005": 0.07722597402597403, - "2010": 0.07684935064935065, - "2015": 0.07647272727272728, - "2020": 0.0760961038961039, - "2025": 0.07571948051948052, - "2030": 0.07534285714285714, - "2035": 0.07496623376623376, - "2040": 0.0745896103896104, - "2045": 0.07421298701298701, - "2050": 0.07383636363636364, - "2055": 0.07345974025974025, - "2060": 0.07308311688311689, - "2065": 0.07270649350649351, - "2070": 0.07232987012987013, - "2075": 0.07195324675324676, - "2080": 0.07157662337662338, - "2085": 0.0712, - "2090": 0.07082337662337662, - "2095": 0.07044675324675326, - "2100": 0.07007012987012987, - "2105": 0.0696935064935065, - "2110": 0.06931688311688311, - "2115": 0.06894025974025975, - "2120": 0.06856363636363637, - "2125": 0.06818701298701299, - "2130": 0.06781038961038961, - "2135": 0.06743376623376623, - "2140": 0.06705714285714286, - "2145": 0.06668051948051948, - "2150": 0.0663038961038961, - "2155": 0.06592727272727272, - "2160": 0.06555064935064936, - "2165": 0.06517402597402597, - "2170": 0.0647974025974026, - "2175": 0.06442077922077921, - "2180": 0.06404415584415585, - "2185": 0.06366753246753247, - "2190": 0.06329090909090909, - "2195": 0.06291428571428571, - "2200": 0.06253766233766234, - "2205": 0.06216103896103896, - "2210": 0.06178441558441558, - "2215": 0.06140779220779221, - "2220": 0.06103116883116883, - "2225": 0.060654545454545454, - "2230": 0.060277922077922076, - "2235": 0.0599012987012987, - "2240": 0.05952467532467532, - "2245": 0.05914805194805195, - "2250": 0.05877142857142857, - "2255": 0.058394805194805194, - "2260": 0.058018181818181816, - "2265": 0.05764155844155844, - "2270": 0.05726493506493506, - "2275": 0.05688831168831169, - "2280": 0.05651168831168831, - "2285": 0.056135064935064934, - "2290": 0.055758441558441556, - "2295": 0.05538181818181818, - "2300": 0.0550051948051948, - "2305": 0.05462857142857143, - "2310": 0.05425194805194805, - "2315": 0.05387532467532467, - "2320": 0.053498701298701296, - "2325": 0.05312207792207792, - "2330": 0.05274545454545454, - "2335": 0.05236883116883117, - "2340": 0.05199220779220779, - "2345": 0.05161558441558441, - "2350": 0.051238961038961035, - "2355": 0.05086233766233766, - "2360": 0.05048571428571428, - "2365": 0.05010909090909091, - "2370": 0.04973246753246753, - "2375": 0.04935584415584415, - "2380": 0.048979220779220775, - "2385": 0.0486025974025974, - "2390": 0.04822597402597402, - "2395": 0.04797777777777778, - "2400": 0.04792222222222222, - "2405": 0.04786666666666667, - "2410": 0.04781111111111111, - "2415": 0.04775555555555556, - "2420": 0.0477, - "2425": 0.04764444444444445, - "2430": 0.04758888888888889, - "2435": 0.04753333333333334, - "2440": 0.04747777777777778, - "2445": 0.04742222222222223, - "2450": 0.04736666666666667, - "2455": 0.04731111111111111, - "2460": 0.04725555555555556, - "2465": 0.0472, - "2470": 0.04714444444444445, - "2475": 0.04708888888888889, - "2480": 0.04703333333333334, - "2485": 0.04697777777777778, - "2490": 0.046922222222222226, - "2495": 0.04686666666666667, - "2500": 0.04681111111111111, - "2505": 0.04675555555555556, - "2510": 0.0467, - "2515": 0.04664444444444445, - "2520": 0.04658888888888889, - "2525": 0.046533333333333336, - "2530": 0.04647777777777778, - "2535": 0.046422222222222226, - "2540": 0.04636666666666667, - "2545": 0.04631111111111111, - "2550": 0.04625555555555556, - "2555": 0.0462, - "2560": 0.046144444444444446, - "2565": 0.04608888888888889, - "2570": 0.046033333333333336, - "2575": 0.04597777777777778, - "2580": 0.045922222222222225, - "2585": 0.04586666666666667, - "2590": 0.045811111111111115, - "2595": 0.045755555555555556, - "2600": 0.045700000000000005, - "2605": 0.045644444444444446, - "2610": 0.04558888888888889, - "2615": 0.045533333333333335, - "2620": 0.04547777777777778, - "2625": 0.045422222222222225, - "2630": 0.045366666666666666, - "2635": 0.045311111111111115, - "2640": 0.045255555555555556, - "2645": 0.045200000000000004, - "2650": 0.045144444444444445, - "2655": 0.04508888888888889, - "2660": 0.045033333333333335, - "2665": 0.044977777777777776, - "2670": 0.044922222222222224, - "2675": 0.044866666666666666, - "2680": 0.044811111111111114, - "2685": 0.044755555555555555, - "2690": 0.044700000000000004, - "2695": 0.044644444444444445, - "2700": 0.044588888888888886, - "2705": 0.044533333333333334, - "2710": 0.044477777777777776, - "2715": 0.044422222222222224, - "2720": 0.044366666666666665, - "2725": 0.044311111111111114, - "2730": 0.044255555555555555, - "2735": 0.0442, - "2740": 0.044144444444444444, - "2745": 0.044088888888888886, - "2750": 0.044033333333333334, - "2755": 0.04397777777777778, - "2760": 0.043922222222222224, - "2765": 0.043866666666666665, - "2770": 0.04381111111111111, - "2775": 0.043755555555555554, - "2780": 0.0437, - "2785": 0.043644444444444444, - "2790": 0.04358888888888889, - "2795": 0.043533333333333334, - "2800": 0.04347777777777778, - "2805": 0.04342222222222222, - "2810": 0.043366666666666664, - "2815": 0.04331111111111111, - "2820": 0.043255555555555554, - "2825": 0.0432, - "2830": 0.043144444444444444, - "2835": 0.04308888888888889, - "2840": 0.04303333333333333, - "2845": 0.04297777777777778, - "2850": 0.04292222222222222, - "2855": 0.042866666666666664, - "2860": 0.04281111111111111, - "2865": 0.042755555555555554, - "2870": 0.0427, - "2875": 0.04264444444444444, - "2880": 0.04258888888888889, - "2885": 0.04253333333333333, - "2890": 0.04247777777777778, - "2895": 0.04242222222222222, - "2900": 0.042366666666666664, - "2905": 0.04231111111111111, - "2910": 0.04225555555555556, - "2915": 0.0422, - "2920": 0.04214444444444444, - "2925": 0.04208888888888889, - "2930": 0.04203333333333333, - "2935": 0.04197777777777778, - "2940": 0.04192222222222222, - "2945": 0.04186666666666667, - "2950": 0.04181111111111111, - "2955": 0.04175555555555556, - "2960": 0.0417, - "2965": 0.04164444444444444, - "2970": 0.04158888888888889, - "2975": 0.04153333333333333, - "2980": 0.04147777777777778, - "2985": 0.04142222222222222, - "2990": 0.04136666666666667, - "2995": 0.04131111111111111, - "3000": 0.04125555555555556, - "3005": 0.0412, - "3010": 0.04114444444444444, - "3015": 0.04108888888888889, - "3020": 0.04103333333333333, - "3025": 0.04097777777777778, - "3030": 0.04092222222222222, - "3035": 0.04086666666666667, - "3040": 0.04081111111111111, - "3045": 0.04075555555555556, - "3050": 0.0407, - "3055": 0.04064444444444444, - "3060": 0.04058888888888889, - "3065": 0.04053333333333334, - "3070": 0.04047777777777778, - "3075": 0.04042222222222222, - "3080": 0.04036666666666667, - "3085": 0.04031111111111111, - "3090": 0.04025555555555556, - "3095": 0.0402, - "3100": 0.04014444444444444, - "3105": 0.04008888888888889, - "3110": 0.04003333333333334, - "3115": 0.03997777777777778, - "3120": 0.03992222222222222, - "3125": 0.03986666666666667, - "3130": 0.03981111111111111, - "3135": 0.03975555555555556, - "3140": 0.0397, - "3145": 0.03964444444444445, - "3150": 0.03958888888888889, - "3155": 0.03953333333333334, - "3160": 0.03947777777777778, - "3165": 0.03942222222222222, - "3170": 0.03936666666666667, - "3175": 0.03931111111111111, - "3180": 0.03925555555555556, - "3185": 0.0392, - "3190": 0.03914444444444445, - "3195": 0.03908888888888889, - "3200": 0.03903333333333334, - "3205": 0.03897777777777778, - "3210": 0.03892222222222222, - "3215": 0.03886666666666667, - "3220": 0.038811111111111116, - "3225": 0.03875555555555556, - "3230": 0.0387, - "3235": 0.03864444444444445, - "3240": 0.03858888888888889, - "3245": 0.038533333333333336, - "3250": 0.03847777777777778, - "3255": 0.03842222222222222, - "3260": 0.03836666666666667, - "3265": 0.038311111111111115, - "3270": 0.03825555555555556, - "3275": 0.0382, - "3280": 0.038144444444444446, - "3285": 0.03808888888888889, - "3290": 0.038033333333333336, - "3295": 0.03797777777777778, - "3300": 0.037922222222222225, - "3305": 0.037866666666666667, - "3310": 0.037811111111111115, - "3315": 0.037755555555555556, - "3320": 0.0377, - "3325": 0.037644444444444446, - "3330": 0.03758888888888889, - "3335": 0.037533333333333335, - "3340": 0.037477777777777777, - "3345": 0.037422222222222225, - "3350": 0.037366666666666666, - "3355": 0.037311111111111114, - "3360": 0.037255555555555556, - "3365": 0.0372, - "3370": 0.037144444444444445, - "3375": 0.03708888888888889, - "3380": 0.037033333333333335, - "3385": 0.036977777777777776, - "3390": 0.036922222222222224, - "3395": 0.036866666666666666, - "3400": 0.036811111111111114, - "3405": 0.036755555555555555, - "3410": 0.036699999999999997, - "3415": 0.036644444444444445, - "3420": 0.03658888888888889, - "3425": 0.036533333333333334, - "3430": 0.036477777777777776, - "3435": 0.036422222222222224, - "3440": 0.036366666666666665, - "3445": 0.03631111111111111, - "3450": 0.036255555555555555, - "3455": 0.0362, - "3460": 0.036144444444444444, - "3465": 0.03608888888888889, - "3470": 0.036033333333333334, - "3475": 0.035977777777777775, - "3480": 0.03592222222222222, - "3485": 0.035866666666666665, - "3490": 0.03581111111111111, - "3495": 0.035755555555555554, - "3500": 0.0357, - "3505": 0.035644444444444444, - "3510": 0.03558888888888889, - "3515": 0.03553333333333333, - "3520": 0.035477777777777775, - "3525": 0.03542222222222222, - "3530": 0.03536666666666667, - "3535": 0.03531111111111111, - "3540": 0.035255555555555554, - "3545": 0.0352, - "3550": 0.03514444444444444, - "3555": 0.03508888888888889, - "3560": 0.03503333333333333, - "3565": 0.034977777777777774, - "3570": 0.03492222222222222, - "3575": 0.03486666666666667, - "3580": 0.03481111111111111, - "3585": 0.03475555555555555, - "3590": 0.0347, - "3595": 0.03464444444444444, - "3600": 0.03458888888888889, - "3605": 0.03453333333333333, - "3610": 0.034477777777777774, - "3615": 0.03442222222222222, - "3620": 0.03436666666666667, - "3625": 0.03431111111111111, - "3630": 0.03425555555555555, - "3635": 0.0342, - "3640": 0.03414444444444444, - "3645": 0.03408888888888889, - "3650": 0.03403333333333333, - "3655": 0.03397777777777778, - "3660": 0.03392222222222222, - "3665": 0.03386666666666667, - "3670": 0.03381111111111111, - "3675": 0.03375555555555555, - "3680": 0.0337, - "3685": 0.03364444444444445, - "3690": 0.03358888888888889, - "3695": 0.03353333333333333, - "3700": 0.03347777777777778, - "3705": 0.03342222222222222, - "3710": 0.03336666666666667, - "3715": 0.03331111111111111, - "3720": 0.03325555555555555, - "3725": 0.0332, - "3730": 0.03314444444444445, - "3735": 0.03308888888888889, - "3740": 0.03303333333333333, - "3745": 0.03297777777777778, - "3750": 0.03292222222222222, - "3755": 0.03286666666666667, - "3760": 0.03281111111111111, - "3765": 0.03275555555555555, - "3770": 0.0327, - "3775": 0.03264444444444445, - "3780": 0.03258888888888889, - "3785": 0.03253333333333333, - "3790": 0.03247777777777778, - "3795": 0.03242222222222222, - "3800": 0.03236666666666667, - "3805": 0.03231111111111111, - "3810": 0.03225555555555555, - "3815": 0.0322, - "3820": 0.03214444444444445, - "3825": 0.03208888888888889, - "3830": 0.03203333333333333, - "3835": 0.03197777777777778, - "3840": 0.03192222222222223, - "3845": 0.03186666666666667, - "3850": 0.03181111111111111, - "3855": 0.03175555555555555, - "3860": 0.0317, - "3865": 0.03164444444444445, - "3870": 0.03158888888888889, - "3875": 0.03153333333333333, - "3880": 0.03147777777777778, - "3885": 0.031422222222222226, - "3890": 0.03136666666666667, - "3895": 0.03131111111111111, - "3900": 0.03125555555555556, - "3905": 0.0312, - "3910": 0.031144444444444443, - "3915": 0.031088888888888888, - "3920": 0.031033333333333333, - "3925": 0.030977777777777778, - "3930": 0.030922222222222222, - "3935": 0.030866666666666667, - "3940": 0.030811111111111112, - "3945": 0.030755555555555557, - "3950": 0.0307, - "3955": 0.030644444444444443, - "3960": 0.030588888888888888, - "3965": 0.030533333333333332, - "3970": 0.030477777777777777, - "3975": 0.030422222222222222, - "3980": 0.030366666666666667, - "3985": 0.03031111111111111, - "3990": 0.030255555555555556, - "3995": 0.0302, - "4000": 0.030144444444444446, - "4005": 0.03008888888888889, - "4010": 0.030033333333333332, - "4015": 0.029977777777777777, - "4020": 0.02992222222222222, - "4025": 0.029866666666666666, - "4030": 0.02981111111111111, - "4035": 0.029755555555555556, - "4040": 0.0297, - "4045": 0.029644444444444445, - "4050": 0.02958888888888889, - "4055": 0.029533333333333335, - "4060": 0.029477777777777776, - "4065": 0.02942222222222222, - "4070": 0.029366666666666666, - "4075": 0.02931111111111111, - "4080": 0.029255555555555555, - "4085": 0.0292, - "4090": 0.029144444444444445, - "4095": 0.02908888888888889, - "4100": 0.029033333333333335, - "4105": 0.02897777777777778, - "4110": 0.02892222222222222, - "4115": 0.028866666666666665, - "4120": 0.02881111111111111, - "4125": 0.028755555555555555, - "4130": 0.0287, - "4135": 0.028644444444444445, - "4140": 0.02858888888888889, - "4145": 0.028533333333333334, - "4150": 0.02847777777777778, - "4155": 0.028422222222222224, - "4160": 0.028366666666666665, - "4165": 0.02831111111111111, - "4170": 0.028255555555555555, - "4175": 0.0282, - "4180": 0.028144444444444444, - "4185": 0.02808888888888889, - "4190": 0.028033333333333334, - "4195": 0.02797777777777778, - "4200": 0.027922222222222223, - "4205": 0.027866666666666668, - "4210": 0.027811111111111113, - "4215": 0.027755555555555554, - "4220": 0.0277, - "4225": 0.027644444444444444, - "4230": 0.02758888888888889, - "4235": 0.027533333333333333, - "4240": 0.027477777777777778, - "4245": 0.027422222222222223, - "4250": 0.027366666666666668, - "4255": 0.027311111111111112, - "4260": 0.027255555555555557, - "4265": 0.0272, - "4270": 0.027144444444444443, - "4275": 0.027088888888888888, - "4280": 0.027033333333333333, - "4285": 0.026977777777777778, - "4290": 0.026922222222222222, - "4295": 0.026866666666666667, - "4300": 0.026811111111111112, - "4305": 0.026755555555555557, - "4310": 0.0267, - "4315": 0.026644444444444443, - "4320": 0.026588888888888888, - "4325": 0.026533333333333332, - "4330": 0.026477777777777777, - "4335": 0.026422222222222222, - "4340": 0.026366666666666667, - "4345": 0.02631111111111111, - "4350": 0.026255555555555556, - "4355": 0.0262, - "4360": 0.026144444444444446, - "4365": 0.026088888888888887, - "4370": 0.026033333333333332, - "4375": 0.025977777777777777, - "4380": 0.02592222222222222, - "4385": 0.025866666666666666, - "4390": 0.02581111111111111, - "4395": 0.025755555555555556, - "4400": 0.0257, - "4405": 0.025644444444444445, - "4410": 0.02558888888888889, - "4415": 0.025533333333333335, - "4420": 0.025477777777777776, - "4425": 0.02542222222222222, - "4430": 0.025366666666666666, - "4435": 0.02531111111111111, - "4440": 0.025255555555555555, - "4445": 0.0252, - "4450": 0.025144444444444445, - "4455": 0.02508888888888889, - "4460": 0.025033333333333335, - "4465": 0.02497777777777778, - "4470": 0.02492222222222222, - "4475": 0.024866666666666665, - "4480": 0.02481111111111111, - "4485": 0.024755555555555555, - "4490": 0.0247, - "4495": 0.024644444444444445, - "4500": 0.02458888888888889, - "4505": 0.024533333333333334, - "4510": 0.02447777777777778, - "4515": 0.024422222222222224, - "4520": 0.024366666666666665, - "4525": 0.02431111111111111, - "4530": 0.024255555555555555, - "4535": 0.0242, - "4540": 0.024144444444444444, - "4545": 0.02408888888888889, - "4550": 0.024033333333333334, - "4555": 0.02397777777777778, - "4560": 0.023922222222222223, - "4565": 0.023866666666666668, - "4570": 0.02381111111111111, - "4575": 0.023755555555555554, - "4580": 0.0237, - "4585": 0.023644444444444444, - "4590": 0.02358888888888889, - "4595": 0.023533333333333333, - "4600": 0.023477777777777778, - "4605": 0.023422222222222223, - "4610": 0.023366666666666668, - "4615": 0.023311111111111112, - "4620": 0.023255555555555557, - "4625": 0.0232, - "4630": 0.023144444444444443, - "4635": 0.023088888888888888, - "4640": 0.023033333333333333, - "4645": 0.022977777777777778, - "4650": 0.022922222222222222, - "4655": 0.022866666666666667, - "4660": 0.022811111111111112, - "4665": 0.022755555555555557, - "4670": 0.0227, - "4675": 0.022644444444444443, - "4680": 0.022588888888888888, - "4685": 0.022533333333333332, - "4690": 0.022477777777777777, - "4695": 0.022422222222222222, - "4700": 0.022366666666666667, - "4705": 0.02231111111111111, - "4710": 0.022255555555555556, - "4715": 0.0222, - "4720": 0.022144444444444446, - "4725": 0.022088888888888887, - "4730": 0.022033333333333332, - "4735": 0.021977777777777777, - "4740": 0.02192222222222222, - "4745": 0.021866666666666666, - "4750": 0.02181111111111111, - "4755": 0.021755555555555556, - "4760": 0.0217, - "4765": 0.021644444444444445, - "4770": 0.02158888888888889, - "4775": 0.02153333333333333, - "4780": 0.021477777777777776, - "4785": 0.02142222222222222, - "4790": 0.021366666666666666, - "4795": 0.02131111111111111, - "4800": 0.021255555555555555, - "4805": 0.0212, - "4810": 0.021144444444444445, - "4815": 0.02108888888888889, - "4820": 0.021033333333333334, - "4825": 0.020977777777777776, - "4830": 0.02092222222222222, - "4835": 0.020866666666666665, - "4840": 0.02081111111111111, - "4845": 0.020755555555555555, - "4850": 0.0207, - "4855": 0.020644444444444444, - "4860": 0.02058888888888889, - "4865": 0.020533333333333334, - "4870": 0.02047777777777778, - "4875": 0.020422222222222224, - "4880": 0.020366666666666665, - "4885": 0.02031111111111111, - "4890": 0.020255555555555554, - "4895": 0.0202, - "4900": 0.020144444444444444, - "4905": 0.02008888888888889, - "4910": 0.020033333333333334, - "4915": 0.01997777777777778, - "4920": 0.019922222222222223, - "4925": 0.019866666666666668, - "4930": 0.01981111111111111, - "4935": 0.019755555555555554, - "4940": 0.0197, - "4945": 0.019644444444444444, - "4950": 0.01958888888888889, - "4955": 0.019533333333333333, - "4960": 0.019477777777777778, - "4965": 0.019422222222222223, - "4970": 0.019366666666666667, - "4975": 0.019311111111111112, - "4980": 0.019255555555555554, - "4985": 0.0192, - "4990": 0.019144444444444443, - "4995": 0.019088888888888888, - "5000": 0.019033333333333333, - "5005": 0.018977777777777777, - "5010": 0.018922222222222222, - "5015": 0.018866666666666667, - "5020": 0.018811111111111112, - "5025": 0.018755555555555557, - "5030": 0.018699999999999998, - "5035": 0.018644444444444443, - "5040": 0.018588888888888887, - "5045": 0.018533333333333332, - "5050": 0.018477777777777777, - "5055": 0.018422222222222222, - "5060": 0.018366666666666667, - "5065": 0.01831111111111111, - "5070": 0.018255555555555556, - "5075": 0.0182, - "5080": 0.018144444444444446, - "5085": 0.018088888888888887, - "5090": 0.018033333333333332, - "5095": 0.017977777777777777, - "5100": 0.01792222222222222, - "5105": 0.017866666666666666, - "5110": 0.01781111111111111, - "5115": 0.017755555555555556, - "5120": 0.0177, - "5125": 0.017644444444444445, - "5130": 0.01758888888888889, - "5135": 0.01753333333333333, - "5140": 0.017477777777777776, - "5145": 0.01742222222222222, - "5150": 0.017366666666666666, - "5155": 0.01731111111111111, - "5160": 0.017255555555555555, - "5165": 0.0172, - "5170": 0.017144444444444445, - "5175": 0.01708888888888889, - "5180": 0.017033333333333334, - "5185": 0.016977777777777776, - "5190": 0.01692222222222222, - "5195": 0.016866666666666665, - "5200": 0.01681111111111111, - "5205": 0.016755555555555555, - "5210": 0.0167, - "5215": 0.01664444444444444, - "5220": 0.01658888888888889, - "5225": 0.01653333333333333, - "5230": 0.01647777777777778, - "5235": 0.01642222222222222, - "5240": 0.016366666666666668, - "5245": 0.01631111111111111, - "5250": 0.016255555555555558, - "5255": 0.0162, - "5260": 0.016144444444444447, - "5265": 0.01608888888888889, - "5270": 0.01603333333333333, - "5275": 0.015977777777777778, - "5280": 0.01592222222222222, - "5285": 0.015866666666666668, - "5290": 0.01581111111111111, - "5295": 0.015755555555555557, - "5300": 0.0157, - "5305": 0.015644444444444447, - "5310": 0.015588888888888888, - "5315": 0.01553333333333333, - "5320": 0.015477777777777778, - "5325": 0.015422222222222219, - "5330": 0.015366666666666667, - "5335": 0.015311111111111109, - "5340": 0.015255555555555557, - "5345": 0.015199999999999998, - "5350": 0.015144444444444446, - "5355": 0.015088888888888888, - "5360": 0.015033333333333336, - "5365": 0.014977777777777777, - "5370": 0.014922222222222219, - "5375": 0.014866666666666667, - "5380": 0.014811111111111108, - "5385": 0.014755555555555556, - "5390": 0.014699999999999998, - "5395": 0.014644444444444446, - "5400": 0.014588888888888887, - "5405": 0.014533333333333336, - "5410": 0.014477777777777777, - "5415": 0.014422222222222218, - "5420": 0.014366666666666666, - "5425": 0.014311111111111108, - "5430": 0.014255555555555556, - "5435": 0.014199999999999997, - "5440": 0.014144444444444446, - "5445": 0.014088888888888887, - "5450": 0.014033333333333335, - "5455": 0.013977777777777776, - "5460": 0.013922222222222225, - "5465": 0.013866666666666666, - "5470": 0.013811111111111107, - "5475": 0.013755555555555556, - "5480": 0.013699999999999997, - "5485": 0.013644444444444445, - "5490": 0.013588888888888886, - "5495": 0.013533333333333335, - "5500": 0.013477777777777776, - "5505": 0.013422222222222224, - "5510": 0.013366666666666666, - "5515": 0.013311111111111114, - "5520": 0.013255555555555555, - "5525": 0.013199999999999996, - "5530": 0.013144444444444445, - "5535": 0.013088888888888886, - "5540": 0.013033333333333334, - "5545": 0.012977777777777776, - "5550": 0.012922222222222224, - "5555": 0.012866666666666665, - "5560": 0.012811111111111113, - "5565": 0.012755555555555555, - "5570": 0.012699999999999996, - "5575": 0.012644444444444444, - "5580": 0.012588888888888886, - "5585": 0.012533333333333334, - "5590": 0.012477777777777775, - "5595": 0.012422222222222223, - "5600": 0.012366666666666665, - "5605": 0.012311111111111113, - "5610": 0.012255555555555554, - "5615": 0.012200000000000003, - "5620": 0.012144444444444444, - "5625": 0.012088888888888885, - "5630": 0.012033333333333333, - "5635": 0.011977777777777775, - "5640": 0.011922222222222223, - "5645": 0.011866666666666664, - "5650": 0.011811111111111113, - "5655": 0.011755555555555554, - "5660": 0.011700000000000002, - "5665": 0.011644444444444443, - "5670": 0.011588888888888885, - "5675": 0.011533333333333333, - "5680": 0.011477777777777774, - "5685": 0.011422222222222222, - "5690": 0.011366666666666664, - "5695": 0.011311111111111112, - "5700": 0.011255555555555553, - "5705": 0.011200000000000002, - "5710": 0.011144444444444443, - "5715": 0.011088888888888891, - "5720": 0.011033333333333332, - "5725": 0.010977777777777774, - "5730": 0.010922222222222222, - "5735": 0.010866666666666663, - "5740": 0.010811111111111112, - "5745": 0.010755555555555553, - "5750": 0.010700000000000001, - "5755": 0.010644444444444442, - "5760": 0.01058888888888889, - "5765": 0.010533333333333332, - "5770": 0.01047777777777778, - "5775": 0.010422222222222222, - "5780": 0.010366666666666663, - "5785": 0.010311111111111111, - "5790": 0.010255555555555552, - "5795": 0.0102, - "5800": 0.010144444444444442, - "5805": 0.01008888888888889, - "5810": 0.010033333333333332, - "5815": 0.00997777777777778, - "5820": 0.009922222222222221, - "5825": 0.009866666666666662, - "5830": 0.00981111111111111, - "5835": 0.009755555555555552, - "5840": 0.0097, - "5845": 0.009644444444444442, - "5850": 0.00958888888888889, - "5855": 0.009533333333333331, - "5860": 0.00947777777777778, - "5865": 0.00942222222222222, - "5870": 0.009366666666666669, - "5875": 0.00931111111111111, - "5880": 0.009255555555555552, - "5885": 0.0092, - "5890": 0.009144444444444441, - "5895": 0.00908888888888889, - "5900": 0.00903333333333333, - "5905": 0.008977777777777779, - "5910": 0.00892222222222222, - "5915": 0.008866666666666669, - "5920": 0.00881111111111111, - "5925": 0.008755555555555558, - "5930": 0.0087, - "5935": 0.00864444444444444, - "5940": 0.008588888888888889, - "5945": 0.00853333333333333, - "5950": 0.008477777777777779, - "5955": 0.00842222222222222, - "5960": 0.008366666666666668, - "5965": 0.00831111111111111, - "5970": 0.008255555555555558, - "5975": 0.008199999999999999, - "5980": 0.00814444444444444, - "5985": 0.008088888888888889, - "5990": 0.00803333333333333, - "5995": 0.007977777777777778, - "6000": 0.00792222222222222, - "6005": 0.007866666666666668, - "6010": 0.007811111111111109, - "6015": 0.007755555555555557, - "6020": 0.0076999999999999985, - "6025": 0.007644444444444447, - "6030": 0.007588888888888888, - "6035": 0.007533333333333329, - "6040": 0.007477777777777778, - "6045": 0.007422222222222219, - "6050": 0.007366666666666667, - "6055": 0.0073111111111111085, - "6060": 0.007255555555555557, - "6065": 0.007199999999999998, - "6070": 0.007144444444444446, - "6075": 0.007088888888888888, - "6080": 0.007033333333333329, - "6085": 0.006977777777777777, - "6090": 0.0069222222222222185, - "6095": 0.006866666666666667, - "6100": 0.006811111111111108, - "6105": 0.006755555555555556, - "6110": 0.006699999999999998, - "6115": 0.006644444444444446, - "6120": 0.006588888888888887, - "6125": 0.0065333333333333354, - "6130": 0.006477777777777777, - "6135": 0.006422222222222218, - "6140": 0.006366666666666666, - "6145": 0.006311111111111108, - "6150": 0.006255555555555556, - "6155": 0.006199999999999997, - "6160": 0.006144444444444445, - "6165": 0.006088888888888887, - "6170": 0.006033333333333335, - "6175": 0.005977777777777776, - "6180": 0.0059222222222222246, - "6185": 0.005866666666666666, - "6190": 0.005811111111111107, - "6195": 0.005755555555555555, - "6200": 0.005699999999999997, - "6205": 0.005644444444444445, - "6210": 0.005588888888888886, - "6215": 0.0055333333333333345, - "6220": 0.005477777777777776, - "6225": 0.005422222222222224, - "6230": 0.005366666666666665, - "6235": 0.005311111111111107, - "6240": 0.005255555555555555, - "6245": 0.005199999999999996, - "6250": 0.0051444444444444445, - "6255": 0.005088888888888886, - "6260": 0.005033333333333334, - "6265": 0.004977777777777775, - "6270": 0.004922222222222224, - "6275": 0.004866666666666665, - "6280": 0.004811111111111113, - "6285": 0.0047555555555555545, - "6290": 0.004699999999999996, - "6295": 0.004644444444444444, - "6300": 0.004588888888888885, - "6305": 0.004533333333333334, - "6310": 0.004477777777777775, - "6315": 0.004422222222222223, - "6320": 0.0043666666666666645, - "6325": 0.004311111111111113, - "6330": 0.004255555555555554, - "6335": 0.004200000000000002, - "6340": 0.004144444444444444, - "6345": 0.004088888888888885, - "6350": 0.004033333333333333, - "6355": 0.0039777777777777745, - "6360": 0.003922222222222223, - "6365": 0.003866666666666664, - "6370": 0.0038111111111111123, - "6375": 0.0037555555555555536, - "6380": 0.003700000000000002, - "6385": 0.003644444444444443, - "6390": 0.0035888888888888845, - "6395": 0.0035333333333333328, - "6400": 0.003477777777777774, - "6405": 0.0034222222222222223, - "6410": 0.0033666666666666636, - "6415": 0.003311111111111112, - "6420": 0.003255555555555553, - "6425": 0.0032000000000000015, - "6430": 0.0031444444444444428, - "6435": 0.003088888888888891, - "6440": 0.0030333333333333323, - "6445": 0.0029777777777777736, - "6450": 0.002922222222222222, - "6455": 0.002866666666666663, - "6460": 0.0028111111111111114, - "6465": 0.0027555555555555528, - "6470": 0.002700000000000001, - "6475": 0.0026444444444444423, - "6480": 0.0025888888888888906, - "6485": 0.002533333333333332, - "6490": 0.002477777777777773, - "6495": 0.0024222222222222214, - "6500": 0.0023666666666666628, - "6505": 0.002311111111111111, - "6510": 0.0022555555555555523, - "6515": 0.0022000000000000006, - "6520": 0.002144444444444442, - "6525": 0.00208888888888889, - "6530": 0.0020333333333333314, - "6535": 0.0019777777777777797, - "6540": 0.001922222222222221, - "6545": 0.0018666666666666623, - "6550": 0.0018111111111111106, - "6555": 0.0017555555555555519, - "6560": 0.0017000000000000001, - "6565": 0.0016444444444444414, - "6570": 0.0015888888888888897, - "6575": 0.001533333333333331, - "6580": 0.0014777777777777792, - "6585": 0.0014222222222222206, - "6590": 0.0013666666666666688, - "6595": 0.0013111111111111101, - "6600": 0.0012555555555555514, - "6605": 0.0011999999999999997, - "6610": 0.001144444444444441, - "6615": 0.0010888888888888892, - "6620": 0.0010333333333333306, - "6625": 0.0009777777777777788, - "6630": 0.0009222222222222201, - "6635": 0.0008666666666666684, - "6640": 0.0008111111111111097, - "6645": 0.000755555555555551, - "6650": 0.0006999999999999992, - "6655": 0.0006444444444444405, - "6660": 0.0005888888888888888, - "6665": 0.0005333333333333301, - "6670": 0.00047777777777777836, - "6675": 0.00042222222222221967, - "6680": 0.0003666666666666679, - "6685": 0.00031111111111110923, - "6690": 0.0002555555555555575, - "6695": 0.0001999999999999988, - "6700": 0.0001444444444444401, - "6705": 8.888888888888835e-05, - "6710": 3.333333333332966e-05, - "6715": 0 - }, - "stoploss": { - "stoploss": -0.237 - }, - "trailing": { - "trailing_stop": true, - "trailing_stop_positive": 0.02, - "trailing_stop_positive_offset": 0.11900000000000001, - "trailing_only_offset_is_reached": false - } - }, - "ft_stratparam_v": 1, - "export_time": "2021-11-24 09:05:18.171996+00:00" -} \ No newline at end of file diff --git a/strategy-config/mgm-config-private.json b/strategy-config/mgm-config-private.json deleted file mode 100755 index 37485d0d5..000000000 --- a/strategy-config/mgm-config-private.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "exchange": { - "name": "binance", - "key": "", - "secret": "" - } -} \ No newline at end of file diff --git a/strategy-config/mgm-config.json b/strategy-config/mgm-config.json deleted file mode 100644 index 58e1bec5a..000000000 --- a/strategy-config/mgm-config.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "monigomani_settings": { - "timeframes": { - "backtest_timeframe": "5m", - "core_trend_timeframe": "4h", - "roi_timeframe": "4h", - "timeframe": "30m" - }, - "startup_candle_count": 400, - "precision": 1, - "trading_during_trends": { - "buy_trades_when_downwards": true, - "buy_trades_when_sideways": true, - "buy_trades_when_upwards": true, - "sell_trades_when_downwards": true, - "sell_trades_when_sideways": true, - "sell_trades_when_upwards": true - }, - "weighted_signal_spaces": { - "sell_profit_only": true, - "min_weighted_signal_value": 0, - "max_weighted_signal_value": 100, - "min_trend_total_signal_needed_value": 60, - "min_trend_total_signal_needed_candles_lookback_window_value": 1, - "max_trend_total_signal_needed_candles_lookback_window_value": 8, - "min_trend_signal_triggers_needed": 2, - "search_threshold_weighted_signal_values": 22, - "search_threshold_trend_total_signal_needed_candles_lookback_window_value": 1, - "search_threshold_trend_signal_triggers_needed": 1 - }, - "stoploss_spaces": { - "stoploss_min_value": -0.02, - "stoploss_max_value": -0.3, - "trailing_stop_positive_min_value": 0.01, - "trailing_stop_positive_max_value": 0.08, - "trailing_stop_positive_offset_min_value": 0.011, - "trailing_stop_positive_offset_max_value": 0.1 - }, - "roi_spaces": { - "roi_delay": 120, - "roi_table_step_size": 5, - "roi_time_interval_scaling": 1.6, - "roi_value_step_scaling": 0.9, - "roi_when_downwards": true, - "roi_when_sideways": true, - "roi_when_upwards": false - }, - "unclogger_spaces": { - "unclogger_buy_cooldown_minutes_window": { - "min": 180, - "max": 360, - "threshold": 20 - }, - "unclogger_enabled": true, - "unclogger_minimal_losing_trade_duration_minutes": { - "min": 15, - "max": 560 - }, - "unclogger_minimal_losing_trades_open": { - "min": 1, - "max": 5, - "threshold": 1 - }, - "unclogger_open_trades_losing_percentage_needed": { - "min": 1, - "max": 60 - }, - "unclogger_trend_lookback_candles_window": { - "min": 10, - "max": 60 - }, - "unclogger_trend_lookback_candles_window_percentage_needed": { - "min": 10, - "max": 45 - }, - "unclogger_trend_lookback_candles_window_recent_past_weight_separator": 2, - "unclogger_trend_lookback_window_uses_downwards_candles": true, - "unclogger_trend_lookback_window_uses_sideways_candles": true, - "unclogger_trend_lookback_window_uses_upwards_candles": false - }, - "default_stub_values": { - "minimal_roi": { - "0": 100 - }, - "stoploss": -1, - "trailing_stop": false, - "trailing_stop_positive": 0.01, - "trailing_stop_positive_offset": 0.03, - "trailing_only_offset_is_reached": false - }, - "debuggable_weighted_signal_dataframe": true, - "use_mgm_logging": false, - "mgm_log_levels_enabled": { - "info": true, - "warning": true, - "error": true, - "debug": true, - "custom": true - } - }, - "monigomani_hyperoptloss_settings": { - "average_duration": { - "average_duration_weight": 75, - "expected_average_duration_minutes": 300, - "average_duration_threshold_high": 600, - "average_duration_threshold_low": 120 - }, - "average_profit": { - "average_profit_weight": 100, - "expected_average_profit": 1.5, - "average_profit_threshold_high": 3, - "average_profit_threshold_low": 0.5 - }, - "max_drawdown": { - "max_drawdown_weight": 75, - "expected_max_drawdown": 90, - "max_drawdown_threshold_high": 150, - "max_drawdown_threshold_low": 30 - }, - "total_profit": { - "total_profit_weight": 200, - "expected_total_profit": 70, - "total_profit_threshold_high": 100, - "total_profit_threshold_low": 30 - }, - "total_trades": { - "total_trades_weight": 100, - "expected_total_trades": 500, - "total_trades_threshold_high": 1000, - "total_trades_threshold_low": 100 - }, - "win_ratio": { - "win_ratio_weight": 100, - "expected_win_ratio": 70, - "win_ratio_threshold_high": 90, - "win_ratio_threshold_low": 50 - } - }, - "dry_run": true, - "dry_run_wallet": 0.015, - "max_open_trades": 10, - "stake_currency": "BTC", - "stake_amount": "unlimited", - "tradable_balance_ratio": 0.99, - "amount_reserve_percent": 0.05, - "amend_last_stake_amount": false, - "last_stake_amount_min_ratio": 0.5, - "cancel_open_orders_on_exit": false, - "use_sell_signal": true, - "sell_profit_only": false, - "sell_profit_offset": 0, - "ignore_roi_if_buy_signal": true, - "unfilledtimeout": { - "buy": 10, - "sell": 30, - "unit": "minutes" - }, - "bid_strategy": { - "price_side": "bid", - "use_order_book": true, - "ask_last_balance": 0, - "order_book_top": 1, - "check_depth_of_market": { - "enabled": false, - "bids_to_ask_delta": 0.95 - } - }, - "ask_strategy": { - "price_side": "ask", - "use_order_book": true, - "order_book_top": 1 - }, - "order_types": { - "buy": "limit", - "sell": "limit", - "emergencysell": "market", - "forcesell": "market", - "forcebuy": "market", - "stoploss": "market", - "stoploss_on_exchange": false, - "stoploss_on_exchange_interval": 60 - }, - "order_time_in_force": { - "buy": "gtc", - "sell": "gtc" - }, - "exchange": { - "sandbox": false, - "ccxt_config": { - "enableRateLimit": true - }, - "ccxt_async_config": { - "enableRateLimit": true, - "rateLimit": 500, - "aiohttp_trust_env": false - }, - "pair_blacklist": [ - ".*USD.*/.*", - ".*BULL.*/.*", - ".*BEAR.*/.*", - ".*UP.*/.*", - ".*DOWN.*/.*", - ".*HEDGE.*/.*", - ".*PREMIUM.*/.*", - ".*PERP.*/.*", - ".*/BNB", - "BNB/.*", - "EPS/.*", - "EUR/.*", - "GBP/.*" - ], - "outdated_offset": 5, - "markets_refresh_interval": 60, - "pair_whitelist": [ - "ETH/BTC", - "DOGE/BTC", - "SOL/BTC", - "LUNA/BTC", - "ADA/BTC", - "STPT/BTC", - "AXS/BTC" - ] - }, - "pairlists": [ - { - "method": "StaticPairList" - } - ], - "_pairlists": [ - { - "method": "VolumePairList", - "number_assets": 60, - "sort_key": "quoteVolume", - "refresh_period": 1800 - }, - { - "method": "AgeFilter", - "min_days_listed": 7 - }, - { - "method": "SpreadFilter", - "max_spread_ratio": 0.005 - }, - { - "method": "PriceFilter", - "low_price_ratio": 0.001 - }, - { - "method": "RangeStabilityFilter", - "lookback_days": 3, - "min_rate_of_change": 0.1, - "refresh_period": 1440 - }, - { - "method": "VolatilityFilter", - "lookback_days": 4, - "min_volatility": 0.02, - "max_volatility": 0.75, - "refresh_period": 86400 - }, - { - "method": "VolumePairList", - "number_assets": 10, - "sort_key": "quoteVolume" - } - ], - "protections": [ - { - "method": "StoplossGuard", - "lookback_period": 1440, - "trade_limit": 10, - "stop_duration": 1440, - "only_per_pair": false - }, - { - "method": "StoplossGuard", - "lookback_period": 1440, - "trade_limit": 2, - "stop_duration": 1440, - "only_per_pair": true - } - ], - "initial_state": "running", - "forcebuy_enable": false, - "internals": { - "process_throttle_secs": 5, - "heartbeat_interval": 60 - }, - "disable_dataframe_checks": false, - "strategy_path": "user_data/strategies/", - "dataformat_ohlcv": "json", - "dataformat_trades": "jsongz" -} From 4e7ecbda16ca1f33c957b6bfcca605ffd9b226d3 Mon Sep 17 00:00:00 2001 From: Jose Cabo Date: Sat, 11 Dec 2021 15:31:47 +0100 Subject: [PATCH 8/9] Moves back to `source` as an allowed value in the .hurry file install_type property. --- .hurry | 2 +- user_data/mgm_tools/mgm_hurry/FreqtradeCli.py | 2 +- user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.hurry b/.hurry index dcc462132..bf1cd880a 100644 --- a/.hurry +++ b/.hurry @@ -1,7 +1,7 @@ config: username: MoniGoMani Community exchange: binance - install_type: submodule + install_type: source hyperopt: epochs: 1000 loss: MGM_WinRatioAndProfitRatioHyperOptLoss diff --git a/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py b/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py index fcbde5089..ef2ddf9ce 100644 --- a/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py +++ b/user_data/mgm_tools/mgm_hurry/FreqtradeCli.py @@ -136,7 +136,7 @@ def installation_exists(self, silent: bool = False) -> bool: 'install_type is set to docker.') return True - if self.install_type == 'submodule': + if self.install_type == 'source': if silent is False: self.cli_logger.debug('FreqtradeCli - installation_exists() install_type is "source".') diff --git a/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py b/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py index f2f339b5b..187f46765 100644 --- a/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py +++ b/user_data/mgm_tools/mgm_hurry/MoniGoManiConfig.py @@ -211,7 +211,7 @@ def get_freqtrade_cmd(self): cmd = 'docker-compose run --rm freqtrade' return cmd - elif self.config['install_type'] == 'submodule': + elif self.config['install_type'] == 'source': cmd = f'{self.basedir}/freqtrade/.env/bin/freqtrade' return cmd From 4ff410d3b31805bb4d3ea49785370af0bbb48304 Mon Sep 17 00:00:00 2001 From: Rikj000 Date: Sat, 18 Dec 2021 18:53:06 +0000 Subject: [PATCH 9/9] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Re-added=20Logo=20fold?= =?UTF-8?q?er=20to=20`.gitignore`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index fe3e7f8d0..808248844 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,9 @@ user_data/plot/ .vscode/ *.code-workspace +# Ignore Logo Folder +Logo/ + # Installer logs pip-log.txt pip-delete-this-directory.txt