Rokas Kupstys
bb89e44e19
[SQUASH] Address PR comments.
...
* Split Parameter into IntParameter/FloatParameter/CategoricalParameter.
* Rename IHyperStrategy to HyperStrategyMixin and use it as mixin.
* --hyperopt parameter is now optional if strategy uses HyperStrategyMixin.
* Use OperationalException() instead of asserts.
2021-03-26 16:56:24 +02:00
Rokas Kupstys
0a205f52b0
Optional support for defining hyperopt parameters in a strategy file and reusing common hyperopt/strategy parts.
2021-03-26 16:56:24 +02:00
Matthias
76ca3c219f
extract result-printing from hyperopt class
2021-03-17 20:45:15 +01:00
Rokas Kupstys
5e872273d1
Provide access to strategy instance from hyperopt class.
2021-03-13 15:13:42 +02:00
Matthias
0db5c9746f
Merge pull request #4454 from freqtrade/backtest_compound_speed
...
Backtest compound, wallet, ...
2021-03-10 10:07:40 +01:00
Patrick Weber
4532222010
Fixed line length in HyperOpt for new name
...
Fixed line length errors and multiple f strings to facilitate strategy being added in the name
2021-03-05 13:16:49 -06:00
Patrick Weber
345f7404e9
Add strategy name to HyperOpt results filename
...
This just extends the HyperOpt result filename by adding the strategy name. This allows analysis of HyperOpt results folder with no additional necessary context. An alternative idea would be to expand the result dict, but the additional static copies are non value added.
2021-03-05 12:56:11 -06:00
Matthias
731ab5d2a7
Fix too long line errors
2021-03-05 19:22:57 +01:00
raoulus
0968ecc1af
added "Median profit" column to hyperopt -> export-csv
2021-03-04 17:27:04 +01:00
Matthias
e4abe902fc
Enable compounding for backtesting
2021-02-27 09:32:59 +01:00
Matthias
b5177eadab
Extract close method for exchange
2021-02-27 09:32:59 +01:00
Matthias
4ce4eadc23
remove only ccxt objects when hyperopting
2021-02-27 09:32:59 +01:00
Matthias
009a447d8a
Adjust documentation for new parameter in loss functions
2021-02-16 19:51:09 +01:00
Florian Merz
3e06cd8b3a
pass data and config to loss function
2021-02-16 10:11:33 +01:00
Matthias
c659150d9f
Also print trade_duration in seconds to json
2021-01-25 19:42:34 +01:00
Matthias
8ee264bc59
Don't use profit_percent for backtesting results anymore
2021-01-24 08:58:41 +01:00
Matthias
baa1142afa
Use preprocessed to get min/max date in hyperopt
2021-01-14 19:09:21 +01:00
Matthias
e2d15f4082
Add parameter to enable protections for backtesting
2020-12-07 11:39:01 +01:00
Matthias
cf2ae788d7
Convert backtesting rows to Tuples for performance gains
2020-10-18 17:16:57 +02:00
Matthias
2591a34db4
Don't use arrow objects for backtesting
2020-10-18 16:18:52 +02:00
Matthias
40b61bbfe3
Adjust trailing-stop to be python compliant
2020-10-05 07:44:12 +02:00
Matthias
cb74c9bcde
Fix hyperopt output
2020-10-03 13:27:06 +02:00
Matthias
6977ffdbf9
Merge branch 'develop' into isort_config
2020-09-28 20:21:55 +02:00
Matthias
253b7b763e
Apply isort to freqtrade codebase
2020-09-28 19:40:46 +02:00
Matthias
c42a924df8
Load latest file
2020-09-27 16:50:42 +02:00
Matthias
ff96cf154c
Keep hyperopt result history
2020-09-27 16:33:26 +02:00
Matthias
b736691e0e
Remove hyperopt --continue
2020-09-27 16:18:28 +02:00
Matthias
f0d7f18cf9
Pad wins / draws / losses for hyperopt with spaces instead of 0's
2020-09-19 17:32:22 +02:00
Allen Day
f63a378967
Update hyperopt.py
...
zero pad wins/draws/losses (W/D/L) column to preserve alignment in console pretty print
2020-09-07 23:26:55 +08:00
Matthias
3d93236709
Remove unused import
2020-08-21 14:55:47 +02:00
Matthias
301f74fd1b
Merge pull request #3418 from freqtrade/hyperopt_colorama_init
...
Test colorama init again (after the fixes done to progressbar)
2020-08-21 14:54:35 +02:00
Matthias
3d515ed5bf
Merge pull request #3558 from freqtrade/bt_add_maxdrawdown
...
Revise backtesting export format, add some metrics
2020-08-19 06:39:47 +02:00
Matthias
a6dac9acf3
Merge pull request #3667 from freqtrade/hyperopt_enable_dataprovider
...
Hyperopt enable dataprovider
2020-08-17 07:00:48 +02:00
Matthias
b98107375e
Improve formatting of result string to be a bit conciser
2020-08-14 07:31:14 +02:00
Matthias
d76ee43246
Show wins / draws / losses in hyperopt table
2020-08-14 07:14:10 +02:00
Matthias
05bd099f51
Merge branch 'develop' into pr/yazeed/3008
2020-08-14 06:58:09 +02:00
Matthias
dd430455e4
Enable dataprovier for hyperopt
2020-08-08 17:04:32 +02:00
Matthias
fbddfaeacf
Introduce DatetimePrintFormat
2020-07-03 06:58:27 +02:00
Matthias
0b2982caed
Merge branch 'develop' into hyperopt_colorama_init
2020-06-16 10:16:41 +02:00
hroff-1902
ea77edce05
Make flake happy
2020-06-13 18:54:54 +03:00
hroff-1902
3d9b107761
Changes after review
2020-06-13 17:12:37 +03:00
Felipe Lambert
69ac5c1ac7
change hyperopt return to better copy to strategy file
2020-06-10 14:35:31 -03:00
Matthias
d9afef8fe1
Move colorama_init to where it was
2020-06-01 09:37:10 +02:00
Matthias
ffa93377b4
Test colorama init again (after the fixes done to progressbar)
2020-06-01 09:34:03 +02:00
Florian Merz
889a153731
fix PEP8
2020-05-03 17:29:56 +02:00
Florian Merz
690bb7646a
hyperopt csv export - add params
2020-05-03 17:00:12 +02:00
Matthias
509f38d3aa
Use non-deprectated parameter for progressbar
2020-05-01 17:59:24 +02:00
hroff-1902
726e52aaa7
Use skopt model_queue_size instead of custom hack
2020-04-29 10:49:25 +03:00
hroff-1902
c26835048c
Hyperopt cleanup, do not use 'trials'
2020-04-28 22:56:19 +03:00
hroff-1902
a01ed170f5
Improve hyperopt-list logging
2020-04-28 17:33:07 +03:00
hroff-1902
9ebc997e9d
Merge pull request #3215 from freqtrade/backtest_use_pairlists
...
Backtest use pairlists
2020-04-27 13:34:06 +03:00
Matthias
e8530c36d3
Remove pairlists from hyperopt too (it holds a reference to exchange)
2020-04-25 15:46:20 +02:00
hroff-1902
d9f255a6c0
Fix asterisk printing for csv output
2020-04-25 12:49:14 +03:00
Yazeed Al Oyoun
c9711678fd
fixed indent
2020-04-25 11:31:51 +02:00
Yazeed Al Oyoun
181b12b3a8
added wins/draws/losses
2020-04-25 11:31:51 +02:00
Yazeed Al Oyoun
6147498fd4
fixed indent
2020-04-25 11:31:51 +02:00
Yazeed Al Oyoun
2fb3d94938
added wins/draws/losses
2020-04-25 11:31:51 +02:00
hroff-1902
2d994f6feb
Better printing of asterisk
2020-04-24 21:57:29 +03:00
hroff-1902
6e5f0869b3
Remove another unused method
2020-04-24 18:39:08 +03:00
hroff-1902
5c012d79eb
Remove unused method
2020-04-24 18:14:07 +03:00
Matthias
d36e2cf6ab
Fix random test failure in hyperopt
2020-04-16 07:06:47 +02:00
Fredrik81
2c1c1c7f16
Update freqtrade/optimize/hyperopt.py
...
nice find
Co-Authored-By: Matthias <xmatthias@outlook.com>
2020-04-11 17:42:32 +02:00
Fredrik81
d9e54ab7a4
Update freqtrade/optimize/hyperopt.py
...
nice find
Co-Authored-By: Matthias <xmatthias@outlook.com>
2020-04-11 17:42:19 +02:00
Fredrik81
4707484a4c
Fix issue with colring enabled + styling
2020-04-09 11:42:13 +02:00
Fredrik81
cdc774549e
Merge branch 'develop' into progress-bar
2020-04-08 01:56:43 +02:00
Fredrik81
132f5f73f5
Update hyperopt.py
2020-04-07 10:44:18 +02:00
Fredrik81
c95906cfcf
Update hyperopt.py
2020-04-07 10:42:15 +02:00
Fredrik81
d5609d4997
Changed back to progressbar2 for better handling of logger.
...
Coloring still needs some work (bug + what colors to use)
2020-04-06 13:12:32 +02:00
hroff-1902
51f52c8609
Merge branch 'develop' into no-ticker-2
2020-03-13 16:43:52 +03:00
hroff-1902
a7ed51c642
return back the name of the hyperopt data file
2020-03-13 04:04:23 +03:00
Fredrik81
5737139979
Small fix
2020-03-12 16:47:09 +01:00
Fredrik81
1a59fc11be
doh
2020-03-12 02:36:18 +01:00
Fredrik81
df1ae565dc
clean-up
2020-03-12 02:26:41 +01:00
Fredrik81
9387ed923c
fix for empty lines
2020-03-12 02:07:50 +01:00
Fredrik81
81cbb92556
Switch to TQDM
2020-03-11 22:30:36 +01:00
Fredrik81
3a8b68c0fd
Initial work on progressbar
2020-03-10 20:30:36 +01:00
hroff-1902
f148b5f734
cosmetics in lambdas
2020-03-10 10:38:37 +03:00
Fredrik81
bd158eefd2
Fixed loggin
2020-03-10 03:02:52 +01:00
Fredrik81
2f5fc731bb
Removed overwrite option
2020-03-09 18:53:30 +01:00
Fredrik81
cb419614cd
Spelling miss
2020-03-08 23:00:21 +01:00
Fredrik81
4ad93ed6bb
Changed output for null columns
2020-03-08 22:41:05 +01:00
hroff-1902
3208faf7ed
Do not use ticker where it's not a ticker
2020-03-08 20:47:02 +03:00
Fredrik81
7606d814fa
Initial work on csv-file export. Missing docs and tests
2020-03-05 01:58:33 +01:00
hroff-1902
57523d58df
Merge pull request #2994 from Fredrik81/hyperopt-table
...
Added dynamic print table function to hyperopt
2020-03-04 23:44:53 +03:00
Fredrik81
090d1e8a70
Alignment and cleanups
2020-03-04 20:51:09 +01:00
Fredrik81
7652a2bb95
Updated table layout and aligning better for hyperopt
2020-03-04 00:10:47 +01:00
Fredrik81
399c419163
Changed table formating. Adding some code to align hyperopt table generation. WIP
2020-03-03 01:14:56 +01:00
hroff-1902
52cd5f9127
Better use enumerate: more correct and more pythonic
2020-03-03 01:42:25 +03:00
hroff-1902
45c9496792
Do not run optimizer for 'jobs' epochs for the last iteration
2020-03-03 01:33:11 +03:00
hroff-1902
a7d4755859
optimize calculation of current_jobs
2020-03-03 01:20:14 +03:00
hroff-1902
92425642da
Fix config_jobs
2020-03-03 01:00:24 +03:00
Fredrik81
0e4862b0c8
Added logging if argument is miss-configured
2020-03-02 22:58:54 +01:00
Fredrik81
7713cfeb79
Corrected logic for -j + and - argument
2020-03-02 21:02:32 +01:00
Fredrik81
f08c7eedf1
Changed jobs to be dynamic for last loop
2020-03-01 14:35:13 +01:00
Fredrik81
75b4f1a442
Fix alignment of higher values
2020-03-01 14:12:27 +01:00
Fredrik81
e89fd33229
Fix for more arguments
2020-02-29 23:57:15 +01:00
Fredrik81
7a4edb1cd8
Fix: When total epochs is less than cpu cores
2020-02-29 23:41:59 +01:00
Fredrik81
23ae0653bd
Changed table output to match hyperopt-list command
2020-02-29 23:24:08 +01:00
Fredrik81
349aa2f957
Added dynamic print table function to hyperopt
2020-02-28 21:54:04 +01:00
hroff-1902
893d9cde8d
Merge pull request #2943 from Fredrik81/add-print-table
...
Added function to print hyperopt-list as table using tabulate
2020-02-27 05:22:41 +03:00
Fredrik81
cd7efde6c0
Fixed coloring so it's only targeting the values not the table borders
2020-02-24 22:06:21 +01:00
Fredrik81
23bf135b8a
Alignment of table content, changed coloring, changed 'Best' column to show if it's initial_point or best
2020-02-24 11:01:14 +01:00
Fredrik Rydin
2058b492eb
Added function to print hyperopt-list as table using tabulate
2020-02-18 22:46:53 +01:00
Matthias
d65a06947d
Merge branch 'develop' into data_handler
2020-02-09 15:16:43 +01:00
hroff-1902
d457d43999
Merge pull request #2833 from hroff-1902/type-hints
...
Add some type hints
2020-02-03 23:24:26 +03:00
hroff-1902
f3d500085c
Add some type hints
2020-02-02 07:00:40 +03:00
Yazeed Al Oyoun
d038bcedb0
fixed some more line alignments
2020-01-31 22:37:05 +01:00
Matthias
1b9af9d2d8
Merge branch 'develop' into data_handler
2020-01-26 20:31:13 +01:00
hroff-1902
f4c7edf551
No args for backtest(), use arguments
2020-01-25 12:49:37 +01:00
Matthias
699c0d6bc3
Merge branch 'develop' into data_handler
2019-12-30 19:40:43 +01:00
Matthias
1ffda29fd2
Adjust improts to new exception location
2019-12-30 15:02:17 +01:00
Matthias
416517b0c9
Move trim_dataframe from history to converter
2019-12-28 11:01:41 +01:00
Matthias
6d5aca4f32
Convert hyperoptloss resolver to static loader
2019-12-23 10:09:08 +01:00
Matthias
248ef5a0ea
Convert HyperoptResolver to static loader
2019-12-23 10:06:19 +01:00
hroff-1902
cf4c3642ce
Minor improvements in data.history
2019-12-18 01:06:03 +03:00
Matthias
2f7181e236
Merge pull request #2648 from hroff-1902/hyperopt-random-state
...
Seed hyperopt random_state if not passed
2019-12-14 15:54:59 +01:00
hroff-1902
f2266ea9f4
Use shorter range for seeded random-state
2019-12-14 15:17:45 +03:00
Matthias
703924d6c4
Merge pull request #2643 from freqtrade/mins
...
Remove min (plural) from codebase
2019-12-12 14:27:39 +01:00
hroff-1902
6e778ad710
Seed hyperopt random_state if not passed
2019-12-12 03:12:28 +03:00
Matthias
f44e3dc319
Merge pull request #2642 from hroff-1902/fix-hyperopt-trailing
...
Fix generation of hyperopt trailing params
2019-12-11 19:53:42 +01:00
Matthias
7c7ca1cb90
Remove min (plural) from codebase
2019-12-11 07:12:37 +01:00
Matthias
b2a9b87be3
Merge pull request #2632 from freqtrade/dependabot/pip/develop/scikit-learn-0.22
...
Bump scikit-learn from 0.21.3 to 0.22
2019-12-10 16:20:39 +01:00
Matthias
3f9f29ba4e
Fix Flake8 import error
2019-12-10 16:10:51 +01:00
hroff-1902
3448f86263
Suppress scikit-learn FutureWarnings from skopt imports
2019-12-10 15:46:29 +03:00
hroff-1902
641e3fdf7a
Fix generation of hyperopt trailing params
2019-12-10 03:32:43 +03:00
hroff-1902
0e4ef33d6a
Merge pull request #2581 from hroff-1902/hyperopt-list
...
Add hyperopt-list and hyperopt-show commands
2019-12-10 00:30:26 +03:00
hroff-1902
d21ae4edd3
Add fixes for comments in the review
2019-12-05 23:29:31 +03:00
Matthias
4b0a4c936a
Fix hyperopt with ticker_interval from strategy
2019-12-05 20:31:02 +01:00
hroff-1902
b61f43835d
Make flake happy
2019-12-05 01:11:06 +03:00
hroff-1902
017a94adc1
Merge develop
2019-12-05 01:08:38 +03:00
hroff-1902
54694dd3a4
Manual merge of some conflicts in hyperopt
2019-12-04 23:14:47 +03:00
hroff-1902
668d42447f
Refactor log_trials_result()
2019-12-01 16:15:00 +03:00
hroff-1902
69b0767165
Merge remote-tracking branch 'upstream/develop' into hyperopt-trailing-space
2019-12-01 03:28:23 +03:00
hroff-1902
8f9b5095b5
Fix some tests
2019-11-27 22:52:43 +03:00
hroff-1902
8e7512161a
Add hyperopt-list and hyperopt-show commands
2019-11-26 15:01:42 +03:00
hroff-1902
067267f4cf
Log messages improved (plural/singular)
2019-11-23 12:20:41 +03:00
hroff-1902
737c07c5b6
Make mypy happy
2019-11-23 11:51:52 +03:00
hroff-1902
097cdcb57a
Save epochs at intermediate points
2019-11-23 11:32:33 +03:00
hroff-1902
31ab32f0b9
Always set trailing_stop=True with 'trailing' hyperspace
2019-11-08 12:47:28 +03:00
hroff-1902
f90676cfc5
Add trailing stoploss hyperspace
2019-11-08 03:07:43 +03:00
Matthias
ca77dbe8da
Fix UnicodeError in hyperopt output
2019-11-06 19:33:15 +01:00
Matthias
132a4da7cf
Small style fixes and adjusted tests
2019-10-27 10:56:38 +01:00
Matthias
33164ac78e
Refactor loading of bt data to backtesting ...
2019-10-27 09:44:56 +01:00
hroff-1902
9b23376415
Move experimental settings to ask_strategy
2019-10-05 13:29:59 +03:00
Matthias
b994f5c273
Merge pull request #2294 from hroff-1902/fix-skopt-memory3
...
Fix skopt memory exhaustion
2019-09-25 19:55:27 +02:00
hroff-1902
665e0570ae
Fix hyperopt position stacking
2019-09-25 03:41:22 +03:00
hroff-1902
6ffb8b7a70
Fix wordings in comment
2019-09-23 13:25:31 +03:00
hroff-1902
0c6164df7e
Fix memory exhaustion in skopt models list
2019-09-23 13:03:43 +03:00
Matthias
1cd8ed0c1a
Remove --refresh-pairs
2019-09-20 20:02:07 +02:00
hroff-1902
69f29e8907
minor: Cleanup for backtesting
2019-09-18 22:57:17 +03:00
hroff-1902
5cbc073dd1
minor: Cleanup hyperopt
2019-09-16 21:46:15 +03:00
Matthias
972b8a1726
Remove defaulting to test_data folder when no datadir is present
2019-09-07 21:06:20 +02:00
Matthias
7af445adf3
Merge pull request #2137 from hroff-1902/hyperopt-adaptive-roi-space
...
Hyperopt: adaptive roi_space
2019-09-06 06:26:52 +02:00
Matthias
513e84880e
Don't escape ticks where it's not needed
2019-08-25 20:38:51 +02:00
hroff-1902
067208bc9d
make backtesting an attribute of Hyperopt
2019-08-24 00:10:35 +03:00
hroff-1902
17b3f01b28
Merge branch 'develop' into hyperopt-adaptive-roi-space
2019-08-20 23:00:23 +03:00
hroff-1902
cadf573170
round printed stoploss value as well
2019-08-20 22:24:59 +03:00
hroff-1902
a12876da92
fine printing for floats in the roi tables (round to 5 digits after the decimal point)
2019-08-20 22:17:21 +03:00
Matthias
0a478bc0dc
Merge branch 'develop' into align_userdata
2019-08-18 15:00:12 +02:00
hroff-1902
e525275d10
make flake and mypy happy
2019-08-15 23:13:46 +03:00
hroff-1902
4fa92ec0fa
hyperopt: --print-json option added
2019-08-15 21:39:04 +03:00
hroff-1902
5b9711c002
adaptive roi_space
2019-08-14 13:25:49 +03:00
Matthias
51c3a31bb5
Correct imports and calls to parse_timerange
2019-08-14 10:07:32 +02:00
hroff-1902
8f92912852
final colorization schema
...
colorization schema-2: red, green, bright/dim
colorization schema-3: red, green, bright only green bests
colorization schema-4: no red, green for profit, bright for bests
2019-08-12 21:08:52 +03:00
hroff-1902
ae39f6fba5
use of termcolor eliminated
2019-08-09 14:51:03 +03:00
Matthias
383b24ab84
Merge branch 'develop' into align_userdata
2019-08-05 06:55:51 +02:00
hroff-1902
9cbab35de0
colorization by means of termcolor and colorama
2019-08-04 22:54:19 +03:00
hroff-1902
f200f52a16
hyperopt print colorized results
2019-08-03 19:09:42 +03:00
hroff-1902
13620df717
'with values:' line removed
2019-08-03 11:05:05 +03:00
hroff-1902
3b65c986ee
wordings fixed
2019-08-03 10:20:20 +03:00
hroff-1902
aa8f44f68c
improvements to hyperopt output
2019-08-02 22:22:58 +03:00
Matthias
39e8e507d9
Merge branch 'develop' into align_userdata
2019-08-02 20:08:26 +02:00
hroff-1902
065ebd39ef
cleanup in hyperopt
2019-08-01 23:57:26 +03:00
Matthias
bcccdda7c0
Merge branch 'develop' into align_userdata
2019-08-01 19:33:45 +02:00
Matthias
8cef567abc
create and use hyperopt-results folder
2019-07-31 07:10:17 +02:00
hroff-1902
8f1f416a52
hyperopt cleanup and output improvements
2019-07-30 11:47:28 +03:00
Matthias
2c7a248307
Use user_data_dir in hyperopt
2019-07-28 14:57:05 +02:00
Matthias
0a253d66d0
Remove os.path from hyperopt
2019-07-28 14:57:05 +02:00
Matthias
639a4d5cf7
Allow importing interface from hyperopt.py
2019-07-17 07:15:43 +02:00
Matthias
8ccfc0f316
Remove unused variables
2019-07-17 06:24:40 +02:00
Matthias
d23179e25c
Update hyperopt-loss to use resolver
2019-07-16 06:27:43 +02:00
Matthias
7d62bb8c53
Revert --clean argument to --continue
2019-07-16 05:51:26 +02:00
Matthias
07a1c48e8c
Fix wrong intendation for custom-hyperopt check
2019-07-15 23:14:07 +02:00
Matthias
7be25313a5
Add some mypy ignores
2019-07-15 22:59:28 +02:00
Matthias
55e8092cbf
Add sharpe ratio as loss function
2019-07-15 22:52:33 +02:00
Matthias
e5170582de
Adapt tests to new loss-function method
2019-07-15 22:45:14 +02:00
Matthias
710443d200
Add documentation for custom hyperopt
2019-07-15 21:38:49 +02:00
Matthias
2a20423be6
Allow loading custom hyperopt loss functions
2019-07-15 21:35:42 +02:00
Matthias
2fedae6060
Move unnecessary things out of generate_optimizer
2019-07-15 20:31:55 +02:00
Matthias
b1b4048f97
Add test for hyperopt
2019-07-15 20:28:02 +02:00
Matthias
107f00ff8f
Add hyperopt option to clean temporary pickle files
2019-07-15 20:17:15 +02:00
Matthias
5144e98a82
Merge pull request #2015 from hroff-1902/refactor/config2
...
Make configuration a module
2019-07-15 19:41:57 +02:00
Matthias
cbe25178d7
Merge pull request #2009 from hroff-1902/fix-2008
...
fix #2008
2019-07-15 10:55:33 +02:00
hroff-1902
65f77306d3
using logger.debug, info was too noisy
2019-07-14 21:00:48 +03:00
hroff-1902
efbc7cccb1
enable --dmmp for hyperopt
2019-07-14 20:56:17 +03:00
hroff-1902
1bdffcc73b
make configuration a sep. module, including arguments
2019-07-12 00:49:23 +03:00
hroff-1902
e993e010f4
Fix #2013
2019-07-11 23:02:57 +03:00
hroff-1902
c474e2ac86
fix #2008
2019-07-10 01:53:40 +03:00
Matthias
89ff614e1d
Add pair as parameter, and warn when fillup was necessary
2019-06-15 13:46:19 +02:00
hroff-1902
90b0f1daa8
minor optimize cleanup
2019-06-10 02:08:54 +03:00