mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-11-29 00:23:07 +00:00
Compare commits
4946 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c66e221012 | ||
|
|
f38d2466df | ||
|
|
1cc92c645a | ||
|
|
ab764df411 | ||
|
|
87c5f89b6c | ||
|
|
780c794ef0 | ||
|
|
8b4070dbcf | ||
|
|
4e089fd17e | ||
|
|
f454006ec3 | ||
|
|
f5002929ee | ||
|
|
4e1d75a3e1 | ||
|
|
d4462ba5d8 | ||
|
|
6dc71269a2 | ||
|
|
730ccba535 | ||
|
|
1175721579 | ||
|
|
e5157d5471 | ||
|
|
7fcb23e0c7 | ||
|
|
f075d90d99 | ||
|
|
bf94748058 | ||
|
|
2890d13d92 | ||
|
|
9232778732 | ||
|
|
70a25f9837 | ||
|
|
4434df1999 | ||
|
|
b9e9f6f040 | ||
|
|
f92caf0f1f | ||
|
|
55b90917e4 | ||
|
|
d0546e998a | ||
|
|
e9f414b29c | ||
|
|
7638261e8f | ||
|
|
a049d6eab1 | ||
|
|
61f46b959e | ||
|
|
ccb1e4af02 | ||
|
|
06424cae28 | ||
|
|
9aeb2eaabd | ||
|
|
c6061daec4 | ||
|
|
5be0352705 | ||
|
|
06995f26fd | ||
|
|
7b45844670 | ||
|
|
0a0c2adf7d | ||
|
|
7aab3b34d6 | ||
|
|
c4aa221c9b | ||
|
|
da12071d8f | ||
|
|
581a9bb1c9 | ||
|
|
f5258510cc | ||
|
|
99401f9d69 | ||
|
|
729bea2d8e | ||
|
|
8b72e4f23e | ||
|
|
17202c6d29 | ||
|
|
567d4331fd | ||
|
|
92c9f443e8 | ||
|
|
dd2d7bb863 | ||
|
|
9c0d612729 | ||
|
|
07d5636d1e | ||
|
|
977cabb580 | ||
|
|
15a7e1d9d1 | ||
|
|
953ffcf204 | ||
|
|
b24e6e72c7 | ||
|
|
82b05f6b5a | ||
|
|
a662802011 | ||
|
|
5483ade786 | ||
|
|
ae02a7007b | ||
|
|
3c6e058b00 | ||
|
|
ad3ddcaadb | ||
|
|
be56052417 | ||
|
|
9a888d9896 | ||
|
|
24a7e585e4 | ||
|
|
2120f1ed5b | ||
|
|
3a2bb22cb3 | ||
|
|
a7c4ec6eaf | ||
|
|
f7b934b306 | ||
|
|
d34e7a1e8e | ||
|
|
4804ec986a | ||
|
|
16117e5b6c | ||
|
|
985805e0d5 | ||
|
|
78acaf8f4c | ||
|
|
a1dad065b2 | ||
|
|
3b03d4346c | ||
|
|
c6551819cd | ||
|
|
e58635a881 | ||
|
|
8e3331d0db | ||
|
|
8391a0612d | ||
|
|
68c00d1c4d | ||
|
|
f48f24ce2e | ||
|
|
9d5a88416a | ||
|
|
a314786056 | ||
|
|
aee9b2c749 | ||
|
|
3fffee3b05 | ||
|
|
72abae7b94 | ||
|
|
a300df7ff3 | ||
|
|
8e500d4601 | ||
|
|
f6e1442fdf | ||
|
|
d8d8260d76 | ||
|
|
72dd0d062b | ||
|
|
03c67d6a3b | ||
|
|
314cd10e27 | ||
|
|
6e6a929fac | ||
|
|
d069f5477e | ||
|
|
a4a5fbe4a8 | ||
|
|
01e288297a | ||
|
|
7564b1e6df | ||
|
|
cf010c3f17 | ||
|
|
5ff95db9e1 | ||
|
|
ada72d2264 | ||
|
|
9f436dcd1e | ||
|
|
95a710d4a8 | ||
|
|
bf5d300a54 | ||
|
|
f7a1325339 | ||
|
|
e13152715c | ||
|
|
19a35ed111 | ||
|
|
e62ba8ed1e | ||
|
|
f62ded94bb | ||
|
|
74f459d7ed | ||
|
|
815a351435 | ||
|
|
9857f30703 | ||
|
|
a7de2cf682 | ||
|
|
5e2f4924d6 | ||
|
|
b74a334f25 | ||
|
|
58c9a61cf0 | ||
|
|
d5620cf8b5 | ||
|
|
2e50c100f9 | ||
|
|
776d9ac5e0 | ||
|
|
301e348789 | ||
|
|
6467d85059 | ||
|
|
4b4d090d39 | ||
|
|
2ddafa28f2 | ||
|
|
d6bb47816c | ||
|
|
f40d90cf08 | ||
|
|
ab7c1ec24f | ||
|
|
be5969a1e1 | ||
|
|
992d173adc | ||
|
|
5396519b20 | ||
|
|
d8122f5d33 | ||
|
|
92f8b2dd02 | ||
|
|
29e35cf824 | ||
|
|
26ff88c71a | ||
|
|
7b3951f1e5 | ||
|
|
5dbfc92c5a | ||
|
|
a14281722a | ||
|
|
a80f3ae919 | ||
|
|
5f558137d3 | ||
|
|
ecd66f8a64 | ||
|
|
8d965d4833 | ||
|
|
25a3de653c | ||
|
|
ac519a273b | ||
|
|
68429f9c37 | ||
|
|
5cb41badc1 | ||
|
|
54bebeabb7 | ||
|
|
3a17c2b55c | ||
|
|
7b7b8b8f8b | ||
|
|
55201b6224 | ||
|
|
49b9296cd9 | ||
|
|
09fabd911e | ||
|
|
43be752847 | ||
|
|
6cfd31c705 | ||
|
|
3bce9278bd | ||
|
|
068caf159d | ||
|
|
eb8875b64b | ||
|
|
97578c0831 | ||
|
|
7219f71bc1 | ||
|
|
eea9133b3f | ||
|
|
a8f543ce62 | ||
|
|
b35172a3b8 | ||
|
|
7b8f0583a4 | ||
|
|
7ae89711dd | ||
|
|
a2c3729254 | ||
|
|
14c9f783d5 | ||
|
|
6c9c709c65 | ||
|
|
1c2ffc6aaa | ||
|
|
a6d2bc5238 | ||
|
|
737d2804d2 | ||
|
|
3e14c2664e | ||
|
|
78bd8554aa | ||
|
|
f1d5679fba | ||
|
|
a9e82b7fc2 | ||
|
|
21f77f9c5d | ||
|
|
c4c0198d20 | ||
|
|
d72d13ed58 | ||
|
|
5ea0705547 | ||
|
|
575b50deda | ||
|
|
a0d1a04605 | ||
|
|
aa4704e37d | ||
|
|
4143a2559a | ||
|
|
693a8fa979 | ||
|
|
6ec639d347 | ||
|
|
52d5d35afb | ||
|
|
8a21cc6d18 | ||
|
|
b6bedf20ce | ||
|
|
9f02279d5a | ||
|
|
6f9906e935 | ||
|
|
e934c3934d | ||
|
|
d6f78e4cc8 | ||
|
|
f9cc05b202 | ||
|
|
76eb92b821 | ||
|
|
e749051dbc | ||
|
|
6de7c70e7e | ||
|
|
74f52b14cd | ||
|
|
e33363bf6c | ||
|
|
7d77e63b81 | ||
|
|
cfa855dec8 | ||
|
|
34a72a0555 | ||
|
|
a9db7d0286 | ||
|
|
19140e9cfa | ||
|
|
b0c3f2ff7f | ||
|
|
8686b56b9e | ||
|
|
6ab731acdb | ||
|
|
8ca63cf0ee | ||
|
|
5774c08b4a | ||
|
|
b731cdef56 | ||
|
|
b51c93fbc1 | ||
|
|
e948839fb5 | ||
|
|
587ec513db | ||
|
|
efed5700be | ||
|
|
5ddaea7efc | ||
|
|
66577b741f | ||
|
|
09017980b6 | ||
|
|
3a7721ebe8 | ||
|
|
35cc3efd5a | ||
|
|
95ad756909 | ||
|
|
816ca2ea15 | ||
|
|
246891a8f6 | ||
|
|
25fd63c6d0 | ||
|
|
cadbbd0e2e | ||
|
|
65b83c46fb | ||
|
|
31204a37a5 | ||
|
|
67774c71e5 | ||
|
|
44b65daf1c | ||
|
|
48ff0c5744 | ||
|
|
3934aa118f | ||
|
|
d40efb883c | ||
|
|
84ec09565a | ||
|
|
387431e4df | ||
|
|
662747c06c | ||
|
|
89272e9ddb | ||
|
|
23d4d25e39 | ||
|
|
488a608c90 | ||
|
|
a94d18a10b | ||
|
|
94aba0f9ac | ||
|
|
35c3ca91eb | ||
|
|
53328bc595 | ||
|
|
bb7a4c4739 | ||
|
|
7d38963c61 | ||
|
|
a7e7c17134 | ||
|
|
0544af1f68 | ||
|
|
ba87f3e7d7 | ||
|
|
b60a3802e7 | ||
|
|
4beb6a8049 | ||
|
|
bd10afc796 | ||
|
|
2868efa779 | ||
|
|
fe466e2e86 | ||
|
|
6c5771b40c | ||
|
|
5c81d31bd1 | ||
|
|
b1b3b42489 | ||
|
|
5b03fc1a89 | ||
|
|
dd73c724c4 | ||
|
|
5cbcd68446 | ||
|
|
3bc1afd149 | ||
|
|
877761ecd3 | ||
|
|
9ef464e002 | ||
|
|
3deb089d64 | ||
|
|
f4f2249447 | ||
|
|
1c5a4f4f39 | ||
|
|
1909fc3139 | ||
|
|
2de831f1b2 | ||
|
|
1739200ee4 | ||
|
|
31a44178a4 | ||
|
|
eb9f233a78 | ||
|
|
3986dc2617 | ||
|
|
1f7f2ee3dd | ||
|
|
6e0da1aa3a | ||
|
|
af3b0ed39f | ||
|
|
1302b67772 | ||
|
|
6d44248607 | ||
|
|
5f1d9cbab1 | ||
|
|
aad21195df | ||
|
|
739a67fdcb | ||
|
|
48bd5cb2c0 | ||
|
|
9c079ccdfd | ||
|
|
2542102280 | ||
|
|
5407c2efec | ||
|
|
81a5d49687 | ||
|
|
321b44b779 | ||
|
|
61a1ed897f | ||
|
|
5bb4cffa21 | ||
|
|
5c314b6f1c | ||
|
|
cee8855dca | ||
|
|
1196237f82 | ||
|
|
9d5295fdb4 | ||
|
|
71e1c91148 | ||
|
|
e9718e064f | ||
|
|
3e8bb29c9f | ||
|
|
2fd703fcc5 | ||
|
|
2a84b00dad | ||
|
|
711ebfea28 | ||
|
|
8cd2ee95f9 | ||
|
|
539937c0eb | ||
|
|
fefd698e96 | ||
|
|
3512d788dc | ||
|
|
54c4dd1ce6 | ||
|
|
daaff66ff0 | ||
|
|
8610f9883d | ||
|
|
e503d4a9c0 | ||
|
|
eaf3fc8833 | ||
|
|
94c5ddc13d | ||
|
|
a3fedbaba7 | ||
|
|
1cf1d9e3d7 | ||
|
|
6b250f9dfe | ||
|
|
3d24ef66d8 | ||
|
|
ef0fc13235 | ||
|
|
394ff1bbf6 | ||
|
|
5cdd087465 | ||
|
|
93051f4f97 | ||
|
|
1c2eed1421 | ||
|
|
532f5ab080 | ||
|
|
e3ffe56549 | ||
|
|
564634be45 | ||
|
|
ab3ae3dc62 | ||
|
|
d037f67f74 | ||
|
|
b1b6341a6e | ||
|
|
8c92f9407d | ||
|
|
e0aa660b56 | ||
|
|
25d4cabe3b | ||
|
|
7539b6ffda | ||
|
|
8e623ee64c | ||
|
|
59ab51c06c | ||
|
|
2eb2617b6f | ||
|
|
b284572ea7 | ||
|
|
1e5d9ecfa3 | ||
|
|
e8bda298e3 | ||
|
|
489cd008d6 | ||
|
|
22ddd9a7d4 | ||
|
|
128ea45fee | ||
|
|
3ff1e31a81 | ||
|
|
2495f68751 | ||
|
|
70ee652be5 | ||
|
|
bb1d34c33d | ||
|
|
8f6d64f5e1 | ||
|
|
b40848373d | ||
|
|
2824bcff41 | ||
|
|
e8b967d634 | ||
|
|
12d617cf8d | ||
|
|
48ab5ed990 | ||
|
|
3363b1062e | ||
|
|
d35dde6757 | ||
|
|
6016d4886e | ||
|
|
f77eaa4083 | ||
|
|
460d88ced7 | ||
|
|
6bb559f1b0 | ||
|
|
7c91eb0091 | ||
|
|
ae672e1110 | ||
|
|
1c4bf67e29 | ||
|
|
c4e671fdc3 | ||
|
|
c5c5198fb3 | ||
|
|
634ec3c85f | ||
|
|
d15aa4b337 | ||
|
|
e160739a28 | ||
|
|
030e07030c | ||
|
|
a50a15ebc6 | ||
|
|
514452c4ec | ||
|
|
f091db3b0e | ||
|
|
caf1d6e7f2 | ||
|
|
81f6637803 | ||
|
|
f764f1fc10 | ||
|
|
9a8ef17c73 | ||
|
|
8fe582a7a7 | ||
|
|
5cf3a2256a | ||
|
|
caf4ffbc0b | ||
|
|
d156f36f99 | ||
|
|
4390324d22 | ||
|
|
8d7ef1929e | ||
|
|
08fb8e42f7 | ||
|
|
eaf6abecc8 | ||
|
|
b4796cbf73 | ||
|
|
e042b2e07b | ||
|
|
9f021cbee6 | ||
|
|
bf615e415b | ||
|
|
c72f5b79fe | ||
|
|
51c1674663 | ||
|
|
e445452d35 | ||
|
|
9fff38d0a3 | ||
|
|
bdd69dbfbc | ||
|
|
ec4767acd5 | ||
|
|
78c8054954 | ||
|
|
f21c5ea88a | ||
|
|
82903cc567 | ||
|
|
0233c38711 | ||
|
|
24f5096ec6 | ||
|
|
030bc8641b | ||
|
|
c9403eb946 | ||
|
|
87b0a6d3f3 | ||
|
|
c0d404edb5 | ||
|
|
a7a16d1e1e | ||
|
|
1f21d5e2c2 | ||
|
|
a531f8644d | ||
|
|
765a0b52cb | ||
|
|
4919d6944e | ||
|
|
ac20596f10 | ||
|
|
5e79a93235 | ||
|
|
2e8decbb6d | ||
|
|
196e599dc8 | ||
|
|
485cad2dc6 | ||
|
|
61cbe0c4b1 | ||
|
|
5510e138db | ||
|
|
c9e9f9bd82 | ||
|
|
768ba1baaf | ||
|
|
ad25a60149 | ||
|
|
3fdcd6e8f1 | ||
|
|
be0c0761e3 | ||
|
|
00dd3f05ac | ||
|
|
c6f30989c9 | ||
|
|
4ab6fba9e7 | ||
|
|
3ef082e2d9 | ||
|
|
cccf44cd68 | ||
|
|
506d665a43 | ||
|
|
8514e35ad0 | ||
|
|
af0a3f9a8d | ||
|
|
2df1a93dfc | ||
|
|
75e39d3154 | ||
|
|
5d755e3ca0 | ||
|
|
fbeb2e4789 | ||
|
|
6b288d46af | ||
|
|
394cdfcc15 | ||
|
|
28df02da82 | ||
|
|
d4ee725747 | ||
|
|
6617d3bb46 | ||
|
|
2453e344f4 | ||
|
|
7f0e886cfd | ||
|
|
e34ea393d9 | ||
|
|
a00a5e52c4 | ||
|
|
6abc0a3fb9 | ||
|
|
7e4b9d7481 | ||
|
|
e3f241acb7 | ||
|
|
eee233f894 | ||
|
|
615095c780 | ||
|
|
b22bce3dd8 | ||
|
|
9f1d9add18 | ||
|
|
36f2bef6b8 | ||
|
|
07906d2576 | ||
|
|
5c977c212b | ||
|
|
09b084e85a | ||
|
|
aefc72554a | ||
|
|
33c2cc806a | ||
|
|
74aa17d534 | ||
|
|
4de1501c68 | ||
|
|
dc12b3e750 | ||
|
|
dacd09db8b | ||
|
|
c63d0e167c | ||
|
|
6ccd98d795 | ||
|
|
52b0e64950 | ||
|
|
5e5137edc1 | ||
|
|
5d4edb5ec0 | ||
|
|
6dccab9bfe | ||
|
|
653c160d76 | ||
|
|
3f65ed452e | ||
|
|
09cdc7ceca | ||
|
|
e98e6d8aee | ||
|
|
f10223bf13 | ||
|
|
38b3062653 | ||
|
|
6063e4accb | ||
|
|
06e249f569 | ||
|
|
d064bd4f34 | ||
|
|
765d2c332c | ||
|
|
8857c77645 | ||
|
|
1ff4e40824 | ||
|
|
09d59c79a7 | ||
|
|
dd6ac4b196 | ||
|
|
67fe3682b5 | ||
|
|
a07e6183bb | ||
|
|
ac99537c25 | ||
|
|
734a6f0442 | ||
|
|
da52ef8729 | ||
|
|
c934535dc8 | ||
|
|
3e3f092f0c | ||
|
|
834aafb8f2 | ||
|
|
df19c77bcf | ||
|
|
6edcda1e42 | ||
|
|
fe8c367bce | ||
|
|
a37edf8c62 | ||
|
|
09ef2c9dea | ||
|
|
42b1d8ecf8 | ||
|
|
32437a95f3 | ||
|
|
2e29d3523b | ||
|
|
530300a951 | ||
|
|
612a09634c | ||
|
|
fd6a2456d0 | ||
|
|
1ad0e7e365 | ||
|
|
055ee5c88f | ||
|
|
ae676d8e03 | ||
|
|
0dc665e45b | ||
|
|
bc6ea16db8 | ||
|
|
a1d0528adb | ||
|
|
ecfa1fd5b5 | ||
|
|
eaf76047e3 | ||
|
|
761d3f216e | ||
|
|
e7d9ac2247 | ||
|
|
842e651928 | ||
|
|
091d1c2d55 | ||
|
|
47bf2d1f26 | ||
|
|
758392c206 | ||
|
|
647011bf0c | ||
|
|
580413b5f8 | ||
|
|
c8c9e5167e | ||
|
|
2e8707059d | ||
|
|
e0d9d01493 | ||
|
|
45bf1ace7d | ||
|
|
39a5328f5a | ||
|
|
9f82738c96 | ||
|
|
f69f6ec8be | ||
|
|
8b3fb11f14 | ||
|
|
b0f4c57fa8 | ||
|
|
d759deae8f | ||
|
|
b695b5a83c | ||
|
|
b8883b790e | ||
|
|
423197cb23 | ||
|
|
38107664b5 | ||
|
|
42d3f557bc | ||
|
|
1a3c913176 | ||
|
|
83de41ad0e | ||
|
|
8cc4664823 | ||
|
|
aaecbc2206 | ||
|
|
e36df7eff5 | ||
|
|
95f58b2b8c | ||
|
|
8df0ce3fb5 | ||
|
|
4177809f71 | ||
|
|
96aa214fc5 | ||
|
|
a3c1c8c1b4 | ||
|
|
2bf3494cbc | ||
|
|
e3dd3478bb | ||
|
|
457af15b35 | ||
|
|
1eef1675cc | ||
|
|
89ef31b381 | ||
|
|
c00472c42d | ||
|
|
c0143b04c8 | ||
|
|
d1c901ae94 | ||
|
|
dd0aeaf380 | ||
|
|
3e8e250a65 | ||
|
|
a34b580444 | ||
|
|
e7ea9d09c9 | ||
|
|
e4e11be331 | ||
|
|
9774c51a97 | ||
|
|
87ff8dc7bc | ||
|
|
2434ae5476 | ||
|
|
e474294d55 | ||
|
|
b081716df7 | ||
|
|
e1af43b133 | ||
|
|
1ea6a99c48 | ||
|
|
79fc80957f | ||
|
|
937eedd8ca | ||
|
|
93ae45dcbb | ||
|
|
1adbd525bc | ||
|
|
ced7465c1f | ||
|
|
d635cb8516 | ||
|
|
2b578633ab | ||
|
|
824f555d48 | ||
|
|
999fd15bee | ||
|
|
be07879a1e | ||
|
|
ab543c2680 | ||
|
|
79aa0bce5a | ||
|
|
05a76c0297 | ||
|
|
15eeac3c48 | ||
|
|
d8a84a7d6b | ||
|
|
863a5b7b81 | ||
|
|
4ad049aec3 | ||
|
|
03c16d034d | ||
|
|
c1f8dce109 | ||
|
|
887f513438 | ||
|
|
12fbae7204 | ||
|
|
a05cb8f1c5 | ||
|
|
cffee80b0e | ||
|
|
0c0f2e43e8 | ||
|
|
35456a1f32 | ||
|
|
b6a6bca41b | ||
|
|
102cc87618 | ||
|
|
1ec45dcf19 | ||
|
|
f2fb1b7919 | ||
|
|
78c5b18937 | ||
|
|
86de1dee29 | ||
|
|
7afd3cb730 | ||
|
|
b887e2ad21 | ||
|
|
ea2350f1ed | ||
|
|
786c858452 | ||
|
|
a6b643a33f | ||
|
|
0e5235e6dc | ||
|
|
c93c97c2de | ||
|
|
271ba462b1 | ||
|
|
690918f8d3 | ||
|
|
de5dd66512 | ||
|
|
c8593b2307 | ||
|
|
fc21757e40 | ||
|
|
b6d0cde29f | ||
|
|
f0dfc23a5f | ||
|
|
c9dda3480d | ||
|
|
45804e1bef | ||
|
|
6dd5dc5d2c | ||
|
|
a5db75d361 | ||
|
|
4c4bc2be9b | ||
|
|
e9cc9bb38a | ||
|
|
3b6395ddb8 | ||
|
|
fdcbb3c0d0 | ||
|
|
b07ffbf721 | ||
|
|
a7b7e10c09 | ||
|
|
f18472479a | ||
|
|
18c37b9b8f | ||
|
|
d28abc18ea | ||
|
|
80b50141ee | ||
|
|
b15d49f9ae | ||
|
|
668635892c | ||
|
|
670a29d420 | ||
|
|
fd0d089f43 | ||
|
|
b5fb6888f0 | ||
|
|
edc23dcd2f | ||
|
|
1dc299f6f4 | ||
|
|
99d2423534 | ||
|
|
b8b8da2eb2 | ||
|
|
4237d9fd11 | ||
|
|
b98a91ba4c | ||
|
|
e74db3e024 | ||
|
|
ead3282229 | ||
|
|
dfd9e7e777 | ||
|
|
71362c9140 | ||
|
|
68114691c6 | ||
|
|
37a3bdd507 | ||
|
|
50389cbbf4 | ||
|
|
a7e5d3e427 | ||
|
|
48d1106546 | ||
|
|
6452521002 | ||
|
|
52374b39f2 | ||
|
|
300a866aac | ||
|
|
9873a862e0 | ||
|
|
1c8bbc14b8 | ||
|
|
afa1311ff8 | ||
|
|
3ecc9c30cb | ||
|
|
a85bb040f2 | ||
|
|
841e480ff5 | ||
|
|
a0e9b77f75 | ||
|
|
47d59f8ff4 | ||
|
|
676c48411b | ||
|
|
954950c8cb | ||
|
|
2520b7cd51 | ||
|
|
f9d7f05d38 | ||
|
|
46d4ff3d36 | ||
|
|
9347d823fc | ||
|
|
5e8bd359c8 | ||
|
|
bae8a55f81 | ||
|
|
56c672b6d2 | ||
|
|
de3956f2f9 | ||
|
|
ddd7009fa8 | ||
|
|
31891b25af | ||
|
|
187b19b1d6 | ||
|
|
e55d8512e7 | ||
|
|
697912f244 | ||
|
|
2f3ad09cf5 | ||
|
|
523dd305ba | ||
|
|
2d87d74829 | ||
|
|
820791e889 | ||
|
|
a130122cc6 | ||
|
|
3a58297a8d | ||
|
|
65d22f9f1c | ||
|
|
ec5df87318 | ||
|
|
cf1533c478 | ||
|
|
fc34f8cad2 | ||
|
|
3fbb38730c | ||
|
|
6a327440e0 | ||
|
|
f1c8d8325b | ||
|
|
d2557a70d7 | ||
|
|
bf76347751 | ||
|
|
a99a49e2af | ||
|
|
b7fc924e82 | ||
|
|
ef55bf6800 | ||
|
|
25ffc76655 | ||
|
|
15b1cff9c2 | ||
|
|
c1ba2936ec | ||
|
|
f08c0c9870 | ||
|
|
3b5b8bd007 | ||
|
|
74067d454b | ||
|
|
16359d617d | ||
|
|
ae9f83ed30 | ||
|
|
49626ca31c | ||
|
|
884f543fb7 | ||
|
|
29df7499c5 | ||
|
|
5e64416dfa | ||
|
|
1118032c1f | ||
|
|
277828b1d4 | ||
|
|
47dcf7bc93 | ||
|
|
75081ab046 | ||
|
|
571497e58b | ||
|
|
d710c85cda | ||
|
|
978f9c804b | ||
|
|
31522c681e | ||
|
|
a5ac8a95a7 | ||
|
|
35dab9b566 | ||
|
|
2b05a49671 | ||
|
|
b79b5b6c32 | ||
|
|
78124cd025 | ||
|
|
7c4c789711 | ||
|
|
30b32a0d2e | ||
|
|
d33768ecee | ||
|
|
ccf20b2fe1 | ||
|
|
23bbbddcdb | ||
|
|
c6ed64746c | ||
|
|
8f4dfbf55d | ||
|
|
5296a3be23 | ||
|
|
c92c64bac2 | ||
|
|
aaca904455 | ||
|
|
19b57ad87e | ||
|
|
583738040c | ||
|
|
6e38b72601 | ||
|
|
8bf8ccfe50 | ||
|
|
e721a741ca | ||
|
|
19e9effae4 | ||
|
|
84100ca7ae | ||
|
|
a6f94f7d24 | ||
|
|
0a32be3fc3 | ||
|
|
065203c3db | ||
|
|
758ae42092 | ||
|
|
6fdc0f1b22 | ||
|
|
7c9fe22b9f | ||
|
|
53aecfa856 | ||
|
|
bf511f12d4 | ||
|
|
0eed655e7c | ||
|
|
d2d283a4b2 | ||
|
|
85492c1084 | ||
|
|
f07134bf66 | ||
|
|
7678a59b1f | ||
|
|
daced63d00 | ||
|
|
002d8c4022 | ||
|
|
8c85448ed7 | ||
|
|
2236b08fc2 | ||
|
|
24f904efc4 | ||
|
|
3eaa862caf | ||
|
|
469587e656 | ||
|
|
b24064d706 | ||
|
|
c4a29a0178 | ||
|
|
aedbe0d1d2 | ||
|
|
c5e3f7d0ba | ||
|
|
bc019d6b6d | ||
|
|
f889061b95 | ||
|
|
1f52ff3f94 | ||
|
|
d0c3b30289 | ||
|
|
e77feafee0 | ||
|
|
1889a315a3 | ||
|
|
cc998afb44 | ||
|
|
97f30cf13d | ||
|
|
ccbc48b590 | ||
|
|
dde6001ad0 | ||
|
|
aae3ab23ac | ||
|
|
604e08382e | ||
|
|
2ecadabd92 | ||
|
|
17c7826756 | ||
|
|
fe92df7842 | ||
|
|
e6dd932436 | ||
|
|
8acc05bb2d | ||
|
|
c39f6f892b | ||
|
|
f13b51cf91 | ||
|
|
e90c60c940 | ||
|
|
60029c2a8b | ||
|
|
14429d449c | ||
|
|
cba9d6078c | ||
|
|
2dfad98ed6 | ||
|
|
9de9cac23a | ||
|
|
d1fd7c3f6e | ||
|
|
8fd5b93127 | ||
|
|
dafa5d4bac | ||
|
|
d29cd5b9d9 | ||
|
|
60094c6581 | ||
|
|
dd32e228ce | ||
|
|
81639c61a8 | ||
|
|
ae1fcbcffb | ||
|
|
263d035181 | ||
|
|
8ecd7011cb | ||
|
|
f7d42ba60d | ||
|
|
701cf47c4b | ||
|
|
315009a7f0 | ||
|
|
6e98a369de | ||
|
|
fa69b7017b | ||
|
|
e98f3cfedf | ||
|
|
5f4184536a | ||
|
|
ac904c60c8 | ||
|
|
16defdbfdf | ||
|
|
d010a050d3 | ||
|
|
7b541ff958 | ||
|
|
78a47920ef | ||
|
|
e5a2011a85 | ||
|
|
640cab2ca8 | ||
|
|
deb8bde078 | ||
|
|
79f0271720 | ||
|
|
5b8b80cf59 | ||
|
|
a7ee45a0ba | ||
|
|
37cc949d94 | ||
|
|
5f59e1435e | ||
|
|
e1f26aeb4e | ||
|
|
b49dafc412 | ||
|
|
7c84059b3a | ||
|
|
10a0bf386b | ||
|
|
2936cb425d | ||
|
|
e5a9c65e66 | ||
|
|
81fdff1039 | ||
|
|
5101b1767b | ||
|
|
e90aa6abda | ||
|
|
1dd56df5d8 | ||
|
|
9bd8b7acf5 | ||
|
|
2a5a422079 | ||
|
|
e92afb74c6 | ||
|
|
4421e54cde | ||
|
|
b5938985f2 | ||
|
|
0601f15bd0 | ||
|
|
66020d250c | ||
|
|
909286c0f7 | ||
|
|
5efad94d3d | ||
|
|
1e24653e79 | ||
|
|
c9bc2b880a | ||
|
|
545cd3a994 | ||
|
|
51a09585db | ||
|
|
b98816635d | ||
|
|
f6ed609134 | ||
|
|
aec2dc5bb0 | ||
|
|
cc807d1cf9 | ||
|
|
15c836c566 | ||
|
|
5f907a4b1a | ||
|
|
a464a2fdbc | ||
|
|
fa3d95fd89 | ||
|
|
ba8778b181 | ||
|
|
6421f767c6 | ||
|
|
f18c7f0cad | ||
|
|
e63017a2b9 | ||
|
|
049cc10169 | ||
|
|
595db54ac7 | ||
|
|
bfa9c818e6 | ||
|
|
30afedd4f8 | ||
|
|
6049ac1561 | ||
|
|
25c24ddc9c | ||
|
|
03df35b49b | ||
|
|
3b441cd08f | ||
|
|
0f67d32b75 | ||
|
|
820a83c96f | ||
|
|
fae30c6ff9 | ||
|
|
3e4ffb9c1d | ||
|
|
f6d10dad6a | ||
|
|
79b530d98e | ||
|
|
3b8e521b81 | ||
|
|
7e228ba7ab | ||
|
|
6050d09ed8 | ||
|
|
b7f158a79e | ||
|
|
bc13d1636c | ||
|
|
021fdcab43 | ||
|
|
d206b601b3 | ||
|
|
949c7318f4 | ||
|
|
3666362479 | ||
|
|
f27540d221 | ||
|
|
31dc0fe327 | ||
|
|
1125c60f07 | ||
|
|
9f5fd574b4 | ||
|
|
74eb0d9f88 | ||
|
|
52c78966ef | ||
|
|
1641f56956 | ||
|
|
d27981f8cf | ||
|
|
6031ccabac | ||
|
|
c64b6b0d69 | ||
|
|
4203693428 | ||
|
|
c76c26cc34 | ||
|
|
1c87748b99 | ||
|
|
4ae80423e0 | ||
|
|
4e6ae88557 | ||
|
|
102c33d68b | ||
|
|
12a72fa161 | ||
|
|
3a5b555f1e | ||
|
|
8f2ee28395 | ||
|
|
e57d0e3bc4 | ||
|
|
f5205da459 | ||
|
|
bd773b9baf | ||
|
|
7b4a6a48ee | ||
|
|
24a3a29360 | ||
|
|
6a279043fa | ||
|
|
60764500db | ||
|
|
ba5a64aa34 | ||
|
|
f40576091a | ||
|
|
de3eedb39e | ||
|
|
fded8bf43e | ||
|
|
5a45b4a3e1 | ||
|
|
0b3ea4d0ed | ||
|
|
822dce09b7 | ||
|
|
2ebc5374f4 | ||
|
|
3465f35d75 | ||
|
|
2165c3e542 | ||
|
|
5e059660d4 | ||
|
|
5ca69687dc | ||
|
|
d042085b24 | ||
|
|
effd989796 | ||
|
|
ca85deafb8 | ||
|
|
d46cc552be | ||
|
|
1dc2bcb47e | ||
|
|
d6bf20b7b4 | ||
|
|
2d842ea129 | ||
|
|
76d5423eee | ||
|
|
489b7e6d18 | ||
|
|
18dfb0fe39 | ||
|
|
63efed736c | ||
|
|
4c568e40c2 | ||
|
|
b54d231b79 | ||
|
|
58f361f8b3 | ||
|
|
f78d383448 | ||
|
|
1be9a79e96 | ||
|
|
d9e98bb687 | ||
|
|
7fd7061304 | ||
|
|
db50d2b85d | ||
|
|
d2a1e52d79 | ||
|
|
70e78e6521 | ||
|
|
913148bf1d | ||
|
|
0ecb3e45f6 | ||
|
|
74f870c435 | ||
|
|
8f62462e15 | ||
|
|
38183fe952 | ||
|
|
215b111cff | ||
|
|
4ea9d70743 | ||
|
|
0893350285 | ||
|
|
27bd34c3be | ||
|
|
ebf6ca1a5f | ||
|
|
a91ed0b4d9 | ||
|
|
097b27208d | ||
|
|
136623b3f5 | ||
|
|
02648e29c4 | ||
|
|
beb6d41360 | ||
|
|
a1207eca56 | ||
|
|
1a247a1035 | ||
|
|
4e0203d4af | ||
|
|
332518c1a0 | ||
|
|
15353f44f0 | ||
|
|
093cdae39c | ||
|
|
5dd5b95d6a | ||
|
|
20e0b542e3 | ||
|
|
1d24f9047c | ||
|
|
f2c37e2575 | ||
|
|
95fbe04225 | ||
|
|
43c5b8d0ed | ||
|
|
301d85ef4f | ||
|
|
48f3d612e9 | ||
|
|
c53c70d597 | ||
|
|
aa89ce80ab | ||
|
|
971dfef0ee | ||
|
|
5d8a3cdb31 | ||
|
|
5246eecaf6 | ||
|
|
18b6f374d6 | ||
|
|
95c6997209 | ||
|
|
ca79b84e4a | ||
|
|
3670df8771 | ||
|
|
ff06d58ace | ||
|
|
1b4592a2f3 | ||
|
|
5138e97b70 | ||
|
|
340cad3707 | ||
|
|
ca32cb9e61 | ||
|
|
c911b7fa70 | ||
|
|
9323b6b946 | ||
|
|
92ef1ef761 | ||
|
|
e38504b9db | ||
|
|
e437847916 | ||
|
|
a3a30f9046 | ||
|
|
df507e2335 | ||
|
|
2f1f60a8fc | ||
|
|
1c1a165ba4 | ||
|
|
00fe02c854 | ||
|
|
6ff26b075e | ||
|
|
03a46ec784 | ||
|
|
ec31764aed | ||
|
|
1ba411cccf | ||
|
|
7957231ce4 | ||
|
|
6b88c49e0a | ||
|
|
4fe99e0333 | ||
|
|
9a38dfcc26 | ||
|
|
3ecbfeb1d5 | ||
|
|
02229c959f | ||
|
|
2a2f205fbe | ||
|
|
c415dab846 | ||
|
|
5b47960567 | ||
|
|
3f9749b03b | ||
|
|
528b11af07 | ||
|
|
0a31ff3747 | ||
|
|
e1ee566634 | ||
|
|
1cff4d13de | ||
|
|
22b1bc7210 | ||
|
|
c741c168e8 | ||
|
|
c997f02085 | ||
|
|
ead6d89e35 | ||
|
|
985c15bdd9 | ||
|
|
7fb7c43e45 | ||
|
|
0e68de0c6d | ||
|
|
ba5f771e65 | ||
|
|
e0f147e076 | ||
|
|
b874ceaf2f | ||
|
|
11f339f802 | ||
|
|
9d46fd21dc | ||
|
|
286f385f99 | ||
|
|
69cca13d15 | ||
|
|
37d03a5b44 | ||
|
|
0e1d3e279c | ||
|
|
ae671c736e | ||
|
|
28064d013c | ||
|
|
5b9c03e7e2 | ||
|
|
f2569e36e8 | ||
|
|
bf2092977c | ||
|
|
613e31a9a5 | ||
|
|
326a4f17d2 | ||
|
|
a8d617d747 | ||
|
|
ba9f795df5 | ||
|
|
dbccc69f05 | ||
|
|
db80318946 | ||
|
|
5698793dcc | ||
|
|
bf96be2b71 | ||
|
|
2af454333b | ||
|
|
cb869a2e4d | ||
|
|
afc5205bea | ||
|
|
842f3a2a36 | ||
|
|
582871b0d5 | ||
|
|
c6c2934741 | ||
|
|
d3b5be6cb6 | ||
|
|
473a15c4ef | ||
|
|
2c4452453a | ||
|
|
da6affcd6a | ||
|
|
3ebbe2b56c | ||
|
|
8f13a5db29 | ||
|
|
3155dfc14c | ||
|
|
cc30e71ab2 | ||
|
|
f5cb486f5e | ||
|
|
42c8795141 | ||
|
|
f878d051df | ||
|
|
aefa7e401c | ||
|
|
dc06510d4a | ||
|
|
7740b61f02 | ||
|
|
950f5a722e | ||
|
|
9b56245b1d | ||
|
|
b05fb57fb7 | ||
|
|
1a4db77131 | ||
|
|
71920cefb1 | ||
|
|
b5cbbd7c30 | ||
|
|
f75a0817a6 | ||
|
|
d12132ae7a | ||
|
|
a81bec0da2 | ||
|
|
cc41cb831f | ||
|
|
2b70ec896d | ||
|
|
470dbb6060 | ||
|
|
afc61ca788 | ||
|
|
ba62e5e007 | ||
|
|
9af401b091 | ||
|
|
1fdbace02d | ||
|
|
cfeda4493b | ||
|
|
0de48d90f8 | ||
|
|
c4eb26be9d | ||
|
|
04a8539f10 | ||
|
|
d600461a84 | ||
|
|
ce46cd7343 | ||
|
|
d1cca4ac51 | ||
|
|
28399aaab2 | ||
|
|
eb5d5e0d3f | ||
|
|
560085ab92 | ||
|
|
17c315bf4a | ||
|
|
e8145e0057 | ||
|
|
ae9073885f | ||
|
|
61886942c5 | ||
|
|
12d31c4acb | ||
|
|
14cfdb13c5 | ||
|
|
e58ab7852a | ||
|
|
77dcc5354c | ||
|
|
3ac4a872b1 | ||
|
|
b8b94d58c4 | ||
|
|
dfae7ca2ec | ||
|
|
17cd0452ec | ||
|
|
33b5482065 | ||
|
|
9fe361f6fc | ||
|
|
da7f35db8d | ||
|
|
4f216eb861 | ||
|
|
53383f3184 | ||
|
|
b51c937e87 | ||
|
|
f3d7f67671 | ||
|
|
87001d0806 | ||
|
|
ffce0dfb2e | ||
|
|
c1d08019d9 | ||
|
|
bfa95ad976 | ||
|
|
4a4b39f898 | ||
|
|
215499a3f8 | ||
|
|
8c11974644 | ||
|
|
7dcbd8108e | ||
|
|
43fea43363 | ||
|
|
e00b74c0e0 | ||
|
|
5ef439dd0f | ||
|
|
538c7b3c97 | ||
|
|
81456b2340 | ||
|
|
dfec3f16ab | ||
|
|
e67499e6cc | ||
|
|
a1b5e7899f | ||
|
|
a88a149999 | ||
|
|
168593d7af | ||
|
|
c646abc05d | ||
|
|
f2a1561d31 | ||
|
|
d7a3aeaa1b | ||
|
|
4b9a63de19 | ||
|
|
07985c2cae | ||
|
|
0c13414f14 | ||
|
|
1021c7a7af | ||
|
|
5306fb3709 | ||
|
|
1afddf9db4 | ||
|
|
929538dd5f | ||
|
|
f432e65a14 | ||
|
|
dfc1193c52 | ||
|
|
25077a1008 | ||
|
|
b3b3bf6c1d | ||
|
|
29ae71333a | ||
|
|
a7ebbd89c0 | ||
|
|
ee25635c79 | ||
|
|
b8e19ae78a | ||
|
|
937bd892fd | ||
|
|
adce6e4f68 | ||
|
|
0b1ba0458d | ||
|
|
7668b95900 | ||
|
|
47465f198c | ||
|
|
f3d03dd26a | ||
|
|
ecdd84efd8 | ||
|
|
0ad6a6a951 | ||
|
|
dc97f709d7 | ||
|
|
34ccf141d1 | ||
|
|
f0b16c277c | ||
|
|
68061444d8 | ||
|
|
93356286d8 | ||
|
|
84e816fc5b | ||
|
|
12a482a6ba | ||
|
|
a26a40d00f | ||
|
|
64c6b4718d | ||
|
|
d1ebdf5df2 | ||
|
|
496c4947bd | ||
|
|
82f98746bd | ||
|
|
65418c7c00 | ||
|
|
bbf6bade7c | ||
|
|
b6cde05f0d | ||
|
|
0a3a1d7eca | ||
|
|
947cbdd858 | ||
|
|
7a84d1ecba | ||
|
|
8c999cd60c | ||
|
|
ad5d2a36bc | ||
|
|
1666746692 | ||
|
|
3a74fc85b4 | ||
|
|
92a1c304a8 | ||
|
|
d8c24663fc | ||
|
|
195c15c8dc | ||
|
|
44c06f6d20 | ||
|
|
c268f20d18 | ||
|
|
83c92f3ac1 | ||
|
|
b4a3eccfa3 | ||
|
|
837d006e11 | ||
|
|
c1f1639807 | ||
|
|
8f71e45666 | ||
|
|
17fa2c9933 | ||
|
|
22fdf157ef | ||
|
|
6c8b39d32a | ||
|
|
5a2b3d9d87 | ||
|
|
8641796d04 | ||
|
|
c5c5cfb4d5 | ||
|
|
c74033d7f1 | ||
|
|
d8c6873ee9 | ||
|
|
b0cc2a2a1d | ||
|
|
226f9b7857 | ||
|
|
1abf72855e | ||
|
|
b044410e42 | ||
|
|
b64052850f | ||
|
|
8868b10042 | ||
|
|
b18190891d | ||
|
|
5b001eec3e | ||
|
|
882ca44816 | ||
|
|
60157606fe | ||
|
|
cbb0294cd2 | ||
|
|
1b4802ab73 | ||
|
|
6b7f210ef3 | ||
|
|
571b154345 | ||
|
|
9a2b5a1219 | ||
|
|
fe9de41d58 | ||
|
|
daff50e79e | ||
|
|
09b687d66f | ||
|
|
665ff9f14e | ||
|
|
bd1a12ceaa | ||
|
|
d33e931a0d | ||
|
|
fbe38c362c | ||
|
|
718efc828a | ||
|
|
6d3ed84807 | ||
|
|
28e5efc902 | ||
|
|
510c47bd78 | ||
|
|
2e0065216f | ||
|
|
ce024c74e1 | ||
|
|
90e2935abf | ||
|
|
12cd654bce | ||
|
|
c3ea793abb | ||
|
|
c901f6d1dd | ||
|
|
193cfb634c | ||
|
|
a2b7620b64 | ||
|
|
9d91a4a298 | ||
|
|
3b6dbaccf8 | ||
|
|
3fe9e6b82b | ||
|
|
b6614045aa | ||
|
|
cbf27f0bdb | ||
|
|
bc78e2e1b9 | ||
|
|
deafe39f76 | ||
|
|
1f63eca1a8 | ||
|
|
3fb6bc888b | ||
|
|
2c0db908b5 | ||
|
|
ca9403f981 | ||
|
|
a8d96087c1 | ||
|
|
1649505121 | ||
|
|
41a063e2ac | ||
|
|
ba019ad143 | ||
|
|
6f3071f6ce | ||
|
|
5cdb2dd601 | ||
|
|
4db41f0225 | ||
|
|
cc8581164d | ||
|
|
7d50353697 | ||
|
|
d742f8b88f | ||
|
|
22bf036a66 | ||
|
|
c45351beff | ||
|
|
6d1d0751e8 | ||
|
|
15012ec58c | ||
|
|
fed91ff5a1 | ||
|
|
0228ec796b | ||
|
|
5b92af6a90 | ||
|
|
442a1ba50d | ||
|
|
c3f6aa17ee | ||
|
|
69de7b4045 | ||
|
|
8dc278f1a0 | ||
|
|
5f907d4219 | ||
|
|
c39c5f254f | ||
|
|
0dfc4ed696 | ||
|
|
950a0df8b1 | ||
|
|
2a0dd4cf55 | ||
|
|
575c381e65 | ||
|
|
87061bcce8 | ||
|
|
a6d3995013 | ||
|
|
d0d40f4fce | ||
|
|
ce7d81325d | ||
|
|
7cfecab7e2 | ||
|
|
8f8da51808 | ||
|
|
f94fd7d5fc | ||
|
|
befc41ae54 | ||
|
|
02092926ab | ||
|
|
a49b4ab93a | ||
|
|
bd7549bc8b | ||
|
|
47e1d209db | ||
|
|
5d2f5ec12f | ||
|
|
2d2dc7f14a | ||
|
|
43bd2a060c | ||
|
|
b518d66aa2 | ||
|
|
2ba59cebe3 | ||
|
|
f165c85e69 | ||
|
|
fca454bba3 | ||
|
|
3dc1adfad4 | ||
|
|
38754e0598 | ||
|
|
8fb4446d82 | ||
|
|
3725ac145b | ||
|
|
7df0d06005 | ||
|
|
4e855b638b | ||
|
|
9783aba09c | ||
|
|
1936b20309 | ||
|
|
69de9687d0 | ||
|
|
bdeeca7d43 | ||
|
|
a7ba3cad85 | ||
|
|
ef5fcad8cf | ||
|
|
d8de6c8f7b | ||
|
|
c3239da266 | ||
|
|
1edf948e49 | ||
|
|
224c4a717b | ||
|
|
6202436bfd | ||
|
|
122144857e | ||
|
|
92bcf672fb | ||
|
|
6f4ffa0758 | ||
|
|
82186c8a7f | ||
|
|
50596e1a6a | ||
|
|
9edcbbb9a8 | ||
|
|
a59805d739 | ||
|
|
b96c06ffdc | ||
|
|
8abe358c1e | ||
|
|
2142b2aea3 | ||
|
|
53ba3ced06 | ||
|
|
a0f336c31f | ||
|
|
081fa2209a | ||
|
|
ca67d3fb2c | ||
|
|
5a6b43da46 | ||
|
|
7d3fa41911 | ||
|
|
b8f3f5e8d2 | ||
|
|
4849d5413f | ||
|
|
8b8bf6f97d | ||
|
|
9eea958e17 | ||
|
|
f8a151c2a5 | ||
|
|
1013c32316 | ||
|
|
d9ed7e1fb2 | ||
|
|
689da4c479 | ||
|
|
87d954a322 | ||
|
|
74f601b352 | ||
|
|
a3359b62d4 | ||
|
|
064708a354 | ||
|
|
066a46d7aa | ||
|
|
333660e628 | ||
|
|
81f80a6b22 | ||
|
|
dd613ac86c | ||
|
|
73c28890d7 | ||
|
|
61dd94ceb0 | ||
|
|
1fec5a873e | ||
|
|
9c4abcc927 | ||
|
|
b74e38ef63 | ||
|
|
86f640627f | ||
|
|
e27568a9d8 | ||
|
|
149133cc44 | ||
|
|
1b2d5a357f | ||
|
|
ecc6371733 | ||
|
|
0c66180cf3 | ||
|
|
5954c64cc3 | ||
|
|
d0b7a52202 | ||
|
|
c18085d173 | ||
|
|
b11119dbe5 | ||
|
|
67f88ea97a | ||
|
|
14353afa78 | ||
|
|
cefc833ab1 | ||
|
|
5c7c3a88fb | ||
|
|
14e2e160af | ||
|
|
000eb875a2 | ||
|
|
33c8969411 | ||
|
|
d90666d2e8 | ||
|
|
f568d63c41 | ||
|
|
a77618cc6b | ||
|
|
cac2c363fa | ||
|
|
ced1ce340a | ||
|
|
78943bf88d | ||
|
|
1b8a42d472 | ||
|
|
1d99b7d0f9 | ||
|
|
5c47a75f63 | ||
|
|
1ef2eeb456 | ||
|
|
faa398053a | ||
|
|
c32f8e972a | ||
|
|
23e4943b3a | ||
|
|
b3ec69fa8a | ||
|
|
dc4aaf0a82 | ||
|
|
d5b9c6dde8 | ||
|
|
bdfd3396cc | ||
|
|
c9256e0d9f | ||
|
|
c7e02b9a7f | ||
|
|
7d5cd998a3 | ||
|
|
96e8319e82 | ||
|
|
12d8fc8c3a | ||
|
|
1ad0e423c9 | ||
|
|
2ef1e203c6 | ||
|
|
959f81f4ac | ||
|
|
3090e47a12 | ||
|
|
02ab0eb139 | ||
|
|
5d8759de78 | ||
|
|
b13b00df17 | ||
|
|
04492e75b2 | ||
|
|
8d0ca7f5c1 | ||
|
|
d8b51875bf | ||
|
|
7f12f3a0e4 | ||
|
|
6afcc80937 | ||
|
|
efdb726362 | ||
|
|
3ca7407b09 | ||
|
|
22ba0e61e3 | ||
|
|
6e83890a13 | ||
|
|
8a8cc5e563 | ||
|
|
e1bf3bb825 | ||
|
|
0a4f82bc22 | ||
|
|
5ee7f8037d | ||
|
|
12728c0fcc | ||
|
|
875216cdc5 | ||
|
|
362f0895f4 | ||
|
|
4e2ccfc091 | ||
|
|
903b580026 | ||
|
|
e4b1e1118b | ||
|
|
073b625355 | ||
|
|
b3b21e6b93 | ||
|
|
b8b4b2d2f3 | ||
|
|
0cf1f6dc88 | ||
|
|
502d50c988 | ||
|
|
ed8b8fbf61 | ||
|
|
956398ab21 | ||
|
|
f3154423bd | ||
|
|
fb64ac942b | ||
|
|
3fc40f45b3 | ||
|
|
ca5ccc8799 | ||
|
|
057cc2538e | ||
|
|
ed22789a1a | ||
|
|
2abf22e37b | ||
|
|
9b08b51ad8 | ||
|
|
83cdf76636 | ||
|
|
f545113840 | ||
|
|
f86bc71c43 | ||
|
|
8af9875d45 | ||
|
|
8a9b31eccd | ||
|
|
124c051432 | ||
|
|
67bcf38ea5 | ||
|
|
a98dd0eea3 | ||
|
|
103f64227f | ||
|
|
5b481009d6 | ||
|
|
3da6a8146e | ||
|
|
a8b313d387 | ||
|
|
574419f3a4 | ||
|
|
5793888113 | ||
|
|
b835af58c5 | ||
|
|
ca0b6998f0 | ||
|
|
77c3894fe2 | ||
|
|
0c46afaee4 | ||
|
|
b6e9609039 | ||
|
|
1b6dadbc87 | ||
|
|
1b18856d0b | ||
|
|
35e9805ef1 | ||
|
|
dcf38557ee | ||
|
|
54d78fd1c6 | ||
|
|
6040c391d3 | ||
|
|
b4a5f66f29 | ||
|
|
e105ea660b | ||
|
|
1149393789 | ||
|
|
d4655660f4 | ||
|
|
e656063771 | ||
|
|
0c6ed588b5 | ||
|
|
45dc667233 | ||
|
|
10d79f6232 | ||
|
|
3c20106e7d | ||
|
|
1e1c9a28f2 | ||
|
|
6a01985fd1 | ||
|
|
be572ba046 | ||
|
|
f711afd843 | ||
|
|
d6f58cd6cf | ||
|
|
9dd1ce71ca | ||
|
|
0a0a8428d5 | ||
|
|
fdc248a1b1 | ||
|
|
bfadd54ea3 | ||
|
|
ed23dc0f72 | ||
|
|
27e3ae8c24 | ||
|
|
f6cb446bff | ||
|
|
72786ca706 | ||
|
|
825c059c2e | ||
|
|
3e2a799d9f | ||
|
|
8e8f4dbdd3 | ||
|
|
841f57800e | ||
|
|
865c253922 | ||
|
|
cd6e06c86e | ||
|
|
422f225e8e | ||
|
|
9921c54882 | ||
|
|
5b6ea5ca90 | ||
|
|
162c1c606c | ||
|
|
de0759c36a | ||
|
|
1dbef58fe9 | ||
|
|
a63280bfa5 | ||
|
|
093a3f0e25 | ||
|
|
f8fc8a7f33 | ||
|
|
f8bf850673 | ||
|
|
d06a531c72 | ||
|
|
b341bc5a8c | ||
|
|
5ac1cf929b | ||
|
|
eca2ca3dc2 | ||
|
|
1d8fd059c6 | ||
|
|
a95972ae3f | ||
|
|
37985dfeea | ||
|
|
768efc45ff | ||
|
|
e6b5233d2f | ||
|
|
6fa1133c61 | ||
|
|
b1adb2b13d | ||
|
|
16378d32d7 | ||
|
|
33105a996e | ||
|
|
20fca07d8f | ||
|
|
8ee40ade45 | ||
|
|
a6d76cad39 | ||
|
|
30ead79e11 | ||
|
|
5c859d929b | ||
|
|
c89058788e | ||
|
|
35c3868c56 | ||
|
|
3d1568783e | ||
|
|
194d53acf8 | ||
|
|
85689ebc1c | ||
|
|
ba2e798f7d | ||
|
|
4fcc9dd587 | ||
|
|
85edef8394 | ||
|
|
05f19d574a | ||
|
|
1a24559729 | ||
|
|
7a51c9d540 | ||
|
|
1d22377cad | ||
|
|
82cd343fc1 | ||
|
|
751d98495f | ||
|
|
49b119f1dc | ||
|
|
6ba0eaf593 | ||
|
|
87f07d5f91 | ||
|
|
a24f5d64a1 | ||
|
|
559f6e2791 | ||
|
|
30eb32862c | ||
|
|
6ae5724ad1 | ||
|
|
90a57e7384 | ||
|
|
16379bbcc5 | ||
|
|
05bb7e2fad | ||
|
|
6e98635345 | ||
|
|
de8dd83340 | ||
|
|
b3296b75e9 | ||
|
|
2f9ec970a5 | ||
|
|
568c579cab | ||
|
|
e116b71400 | ||
|
|
a85dc6972d | ||
|
|
feab28de91 | ||
|
|
0aa05855d5 | ||
|
|
44591053b6 | ||
|
|
c11de3ac38 | ||
|
|
b797a5bf2f | ||
|
|
1d9d2fce7f | ||
|
|
0e92372b0b | ||
|
|
68fbab5c32 | ||
|
|
596f6711f3 | ||
|
|
c2296d83c3 | ||
|
|
9a3ada65f5 | ||
|
|
df50e03239 | ||
|
|
9d0f5df549 | ||
|
|
6b41594c53 | ||
|
|
2d194995bc | ||
|
|
904580b914 | ||
|
|
9373779fba | ||
|
|
692bb36c80 | ||
|
|
8de5e2b7b8 | ||
|
|
6185761727 | ||
|
|
6c625c77c0 | ||
|
|
9950ed715e | ||
|
|
9b9ef6ae6d | ||
|
|
8075106286 | ||
|
|
6b033c211e | ||
|
|
8be31275d7 | ||
|
|
a3d3a4de51 | ||
|
|
f1b890954a | ||
|
|
0f2ff70bdf | ||
|
|
4c42bd7100 | ||
|
|
9acf8943ed | ||
|
|
4986f356ee | ||
|
|
ca390eea6a | ||
|
|
cd9c45e875 | ||
|
|
c90ac30077 | ||
|
|
466914d5c7 | ||
|
|
f86f955e24 | ||
|
|
affab24185 | ||
|
|
125126fb86 | ||
|
|
010ed6992b | ||
|
|
d8bbd4054e | ||
|
|
baefaeb311 | ||
|
|
288db16198 | ||
|
|
eb4199fe80 | ||
|
|
9a151b1ecf | ||
|
|
7dddab18c4 | ||
|
|
a85afd9af3 | ||
|
|
d09efa6dd1 | ||
|
|
f817b21d17 | ||
|
|
b7298f472c | ||
|
|
96baa90003 | ||
|
|
fae7198bb4 | ||
|
|
55be046933 | ||
|
|
38fa7068ca | ||
|
|
e5389be209 | ||
|
|
19a997a2db | ||
|
|
eac440649b | ||
|
|
21a47bb1ac | ||
|
|
b839e159a8 | ||
|
|
91df1257e7 | ||
|
|
88f8e831d7 | ||
|
|
627eee5fcf | ||
|
|
26c7752b7c | ||
|
|
1aaf0c2034 | ||
|
|
ac3a5900b4 | ||
|
|
60695fe205 | ||
|
|
2e2f40ca10 | ||
|
|
1f09b90dbe | ||
|
|
9c39b99ec6 | ||
|
|
2e343b9fbd | ||
|
|
90aaaa50fc | ||
|
|
087fb31f26 | ||
|
|
3edc442f48 | ||
|
|
b6cf3cc57d | ||
|
|
be2d97b559 | ||
|
|
a3f23fd4fb | ||
|
|
68f32d76ae | ||
|
|
bffb3120c1 | ||
|
|
bb596d6f8d | ||
|
|
ca573a828f | ||
|
|
e9cd840f5b | ||
|
|
3fcf6559ab | ||
|
|
7894c08b83 | ||
|
|
296c14afc0 | ||
|
|
b2b1518708 | ||
|
|
93967ad8f0 | ||
|
|
6082beb58d | ||
|
|
8309853439 | ||
|
|
2522a3be61 | ||
|
|
19b38a02fa | ||
|
|
4935e23271 | ||
|
|
a4f9a25007 | ||
|
|
795a0b81ee | ||
|
|
e5268a0449 | ||
|
|
c81761e3e2 | ||
|
|
8fbb4e1e60 | ||
|
|
937aa5c70e | ||
|
|
db647ab4d5 | ||
|
|
98652bfd89 | ||
|
|
63010bc5e9 | ||
|
|
dd388a51e0 | ||
|
|
22f109bab1 | ||
|
|
67e2d9c730 | ||
|
|
07fb941758 | ||
|
|
6fca35adae | ||
|
|
85f4a8daea | ||
|
|
2595479e43 | ||
|
|
ac9b26cc57 | ||
|
|
31aa397492 | ||
|
|
b77739b5ca | ||
|
|
b603771242 | ||
|
|
722d5b2319 | ||
|
|
91ace759c5 | ||
|
|
3d8d2fc0c6 | ||
|
|
58154d76ae | ||
|
|
9c1183bc59 | ||
|
|
38feb90f9e | ||
|
|
4632839fc5 | ||
|
|
26ea4fdcc9 | ||
|
|
3637d7a54c | ||
|
|
6ee500db4f | ||
|
|
583e20dc9d | ||
|
|
b3296a06d9 | ||
|
|
09051fb641 | ||
|
|
3c6500c2bc | ||
|
|
f242110957 | ||
|
|
6b78b1c882 | ||
|
|
ee3d46c8fa | ||
|
|
59e52bb601 | ||
|
|
553dbccec7 | ||
|
|
2e06eb0e7b | ||
|
|
31c4d35932 | ||
|
|
eb03382b2d | ||
|
|
bb08880c4a | ||
|
|
948487518d | ||
|
|
9480331b45 | ||
|
|
be5d158761 | ||
|
|
4f2681500a | ||
|
|
00237d68e4 | ||
|
|
20325a2b5e | ||
|
|
be40e828a9 | ||
|
|
916ef43f7f | ||
|
|
2b01d2e06b | ||
|
|
fcd0c1d606 | ||
|
|
0553486e55 | ||
|
|
4fa8c3f9ab | ||
|
|
543c77fe00 | ||
|
|
e77ce8d481 | ||
|
|
285867f8c6 | ||
|
|
276ef6cdde | ||
|
|
c5088e6b66 | ||
|
|
62f05964b4 | ||
|
|
7c5b2fdffb | ||
|
|
8cf3f3826f | ||
|
|
799ce4e1f2 | ||
|
|
1fdce89806 | ||
|
|
e1f2f0cb64 | ||
|
|
c3b6258dfe | ||
|
|
4154a7058d | ||
|
|
bdfa9c146e | ||
|
|
c6d6bc62eb | ||
|
|
2347195b0b | ||
|
|
f3101e8a75 | ||
|
|
43dd90f6d4 | ||
|
|
7ef52365f7 | ||
|
|
00bdf13fae | ||
|
|
5f8608d3b3 | ||
|
|
d19498667a | ||
|
|
b2898cf742 | ||
|
|
31625befd1 | ||
|
|
394535c2e8 | ||
|
|
16576d37b1 | ||
|
|
53bd2d71a0 | ||
|
|
df4b44d09e | ||
|
|
b6b3429b62 | ||
|
|
0adb264c9b | ||
|
|
286371c1e4 | ||
|
|
445c3a67db | ||
|
|
06c4b661f7 | ||
|
|
3ffc69ad02 | ||
|
|
7b44dd17ae | ||
|
|
5b0b44069a | ||
|
|
85fc936431 | ||
|
|
04a28b2550 | ||
|
|
9fa3a15e24 | ||
|
|
23b10161d5 | ||
|
|
b8dffe0eb0 | ||
|
|
85772ac7f7 | ||
|
|
3ec72f88e2 | ||
|
|
4f4f927b97 | ||
|
|
46fab55378 | ||
|
|
1d44f75659 | ||
|
|
a4416b885a | ||
|
|
209c2e0ceb | ||
|
|
324aada2bc | ||
|
|
6f58e01f8e | ||
|
|
31e4501765 | ||
|
|
50d60fad89 | ||
|
|
7286568447 | ||
|
|
3116fd34cf | ||
|
|
f70815dd8e | ||
|
|
47151e77e1 | ||
|
|
5a1f96d35c | ||
|
|
fe03bf7ce0 | ||
|
|
d09160fff8 | ||
|
|
f46c8cdc4a | ||
|
|
db57f83922 | ||
|
|
c6e64bad49 | ||
|
|
bbf0ac83a1 | ||
|
|
a9714727b1 | ||
|
|
8e2de9ef7e | ||
|
|
5ea7ba6b9a | ||
|
|
e3e924d888 | ||
|
|
02b0f0abd6 | ||
|
|
7735ea91bb | ||
|
|
7178ce8559 | ||
|
|
26ba076143 | ||
|
|
425701ddcf | ||
|
|
42e45a0a65 | ||
|
|
b97f3ca818 | ||
|
|
dfc77945ce | ||
|
|
6d8011e075 | ||
|
|
1b4f8dfa54 | ||
|
|
48b7a85c90 | ||
|
|
0d7854ff1b | ||
|
|
d3464ac2dc | ||
|
|
95f5db9dcd | ||
|
|
61b29962c4 | ||
|
|
b83754c5a4 | ||
|
|
9a1f2d42a7 | ||
|
|
bd511c2158 | ||
|
|
6b6d7fc310 | ||
|
|
c6959c92ac | ||
|
|
7bc6a2279c | ||
|
|
b431c5b343 | ||
|
|
176f5518ea | ||
|
|
06406b7103 | ||
|
|
17e4f5ed1f | ||
|
|
578ba9ea4a | ||
|
|
83a8651d41 | ||
|
|
ba0c22b6f0 | ||
|
|
90219f040b | ||
|
|
fef234d80f | ||
|
|
68ad688665 | ||
|
|
0c7a2747d3 | ||
|
|
23187f0c41 | ||
|
|
f66d81c4b8 | ||
|
|
87a64cbe68 | ||
|
|
ef58aaf9e9 | ||
|
|
4a432760ed | ||
|
|
484943a640 | ||
|
|
eec16cfc8a | ||
|
|
fddceb2572 | ||
|
|
d665a01fe6 | ||
|
|
8f93ac5770 | ||
|
|
33164ec041 | ||
|
|
0e6cd72edd | ||
|
|
4f218e4fb2 | ||
|
|
0bf411ae19 | ||
|
|
283199b6ed | ||
|
|
0270a61cba | ||
|
|
1aeed3951b | ||
|
|
ba38f8120c | ||
|
|
7de9e2c4b6 | ||
|
|
331c6beafc | ||
|
|
93cbbbbe31 | ||
|
|
ddd2e2cc3b | ||
|
|
55301b8d0c | ||
|
|
a47ed1dbdb | ||
|
|
17b161cb03 | ||
|
|
5d3c764e27 | ||
|
|
f3aac3d66d | ||
|
|
39903d521e | ||
|
|
7255beddea | ||
|
|
a95c3ace92 | ||
|
|
d543feb032 | ||
|
|
623f27341f | ||
|
|
55dc2d4bf4 | ||
|
|
24e94cfaa7 | ||
|
|
7db62689c4 | ||
|
|
da53b5d115 | ||
|
|
03dfe4ec45 | ||
|
|
39288d2e53 | ||
|
|
2a6dc3e45d | ||
|
|
5964845265 | ||
|
|
9911d2aa32 | ||
|
|
bfd2c3f942 | ||
|
|
74c837519a | ||
|
|
415e361c66 | ||
|
|
7e154c6fb6 | ||
|
|
385b39ff66 | ||
|
|
9d232c4949 | ||
|
|
85ccc31a63 | ||
|
|
65d19c38b6 | ||
|
|
5b8752e649 | ||
|
|
8832bae371 | ||
|
|
a85e044e99 | ||
|
|
7b1ee84b34 | ||
|
|
79ebc943a2 | ||
|
|
eabcaa38e2 | ||
|
|
e930221b78 | ||
|
|
08c4f24bdf | ||
|
|
56c23f9dd8 | ||
|
|
6edee269d8 | ||
|
|
f9d978f16a | ||
|
|
1eac77fe0b | ||
|
|
a98121ea26 | ||
|
|
cc9c373a76 | ||
|
|
390b113776 | ||
|
|
bf33f8b632 | ||
|
|
030dcfdd83 | ||
|
|
cd77758852 | ||
|
|
1aa6c2ad55 | ||
|
|
55d71cecdd | ||
|
|
70a81c86ba | ||
|
|
1c6c710696 | ||
|
|
4ca2a043b5 | ||
|
|
41418784e3 | ||
|
|
9afd572948 | ||
|
|
51a99f2a66 | ||
|
|
969b0570c2 | ||
|
|
e94ccece93 | ||
|
|
cd435098bd | ||
|
|
33659ee273 | ||
|
|
c30db9d0d6 | ||
|
|
429505b134 | ||
|
|
2c2cc086c3 | ||
|
|
fe16654733 | ||
|
|
f85891941f | ||
|
|
493b6f6592 | ||
|
|
97faa7fc5a | ||
|
|
5402b14336 | ||
|
|
4c7ff7ab0c | ||
|
|
8288a5cf91 | ||
|
|
442b29e0ea | ||
|
|
b6a65ce125 | ||
|
|
743422ccf3 | ||
|
|
d69b1566b1 | ||
|
|
5c01023d55 | ||
|
|
97d303579a | ||
|
|
265a798f78 | ||
|
|
db19446e27 | ||
|
|
e62a0f76ed | ||
|
|
673447794e | ||
|
|
76aefccd03 | ||
|
|
b0b9e398e1 | ||
|
|
fac0491658 | ||
|
|
7770f082c8 | ||
|
|
3281049264 | ||
|
|
fe48f6769f | ||
|
|
6a5be68367 | ||
|
|
6613366343 | ||
|
|
48c1aaaa38 | ||
|
|
23928e55a3 | ||
|
|
6d84b93715 | ||
|
|
5b1011668a | ||
|
|
30d2298d54 | ||
|
|
98b6f58eb2 | ||
|
|
a0cbdc9135 | ||
|
|
805e03b83b | ||
|
|
35cc7da9b3 | ||
|
|
6efe6bbfc2 | ||
|
|
ac29ef67fd | ||
|
|
4a7140c05d | ||
|
|
cd971cff4f | ||
|
|
538139ef31 | ||
|
|
8bd4926c29 | ||
|
|
a9195c8ff9 | ||
|
|
93c8a11824 | ||
|
|
aec496a73b | ||
|
|
7bc1398574 | ||
|
|
3371bad504 | ||
|
|
64e27637dc | ||
|
|
ee4f05a5b8 | ||
|
|
6636a2fda8 | ||
|
|
754936d253 | ||
|
|
3762f40538 | ||
|
|
4a3c45af2d | ||
|
|
29fdbc8f7f | ||
|
|
6116c6abb9 | ||
|
|
466c21e9fd | ||
|
|
d461d6f8e8 | ||
|
|
53f68a3834 | ||
|
|
76d43782db | ||
|
|
e7a6db8916 | ||
|
|
cdb7fa83e4 | ||
|
|
f785f9ff00 | ||
|
|
4d87d13165 | ||
|
|
9128011208 | ||
|
|
3dd7f7f17b | ||
|
|
7665d3d1f2 | ||
|
|
e055feb1d3 | ||
|
|
dfe6982099 | ||
|
|
ad2aef09c4 | ||
|
|
facfdfd85c | ||
|
|
1bba2a5f21 | ||
|
|
ef239b8d0c | ||
|
|
bccbac9f23 | ||
|
|
113efe129d | ||
|
|
8d73cccde5 | ||
|
|
055c56edfc | ||
|
|
942c1c1f5c | ||
|
|
243a91a141 | ||
|
|
281bd69fa5 | ||
|
|
6630259833 | ||
|
|
674d28622b | ||
|
|
e21aedfb73 | ||
|
|
8f22c58875 | ||
|
|
e3d1c4c9c7 | ||
|
|
40f87c9ab5 | ||
|
|
bd5f02a8df | ||
|
|
91438affc8 | ||
|
|
1548fdfca6 | ||
|
|
4bebb20477 | ||
|
|
3fb4524c5a | ||
|
|
cdd1273ed0 | ||
|
|
717f17a9b5 | ||
|
|
11763e8cd1 | ||
|
|
5e50348150 | ||
|
|
ccfc690281 | ||
|
|
e1f6702932 | ||
|
|
13e9f8a98e | ||
|
|
cc0337585e | ||
|
|
3070e37335 | ||
|
|
c50edafac6 | ||
|
|
7ccac492bb | ||
|
|
a23409b72f | ||
|
|
5b9102f9a8 | ||
|
|
f447de4840 | ||
|
|
186bc4d272 | ||
|
|
06fd176286 | ||
|
|
c5fd6f4519 | ||
|
|
efe0275ae1 | ||
|
|
ba98f1a9be | ||
|
|
5380b22729 | ||
|
|
338bc7c677 | ||
|
|
449a5e85b4 | ||
|
|
0f5cb87c65 | ||
|
|
822e7bad1f | ||
|
|
86a5240174 | ||
|
|
7b7c8d9374 | ||
|
|
fde3547dbb | ||
|
|
9bd7fac86f | ||
|
|
8085d8cd00 | ||
|
|
3f656a9758 | ||
|
|
38f1981d6f | ||
|
|
d55b3e0228 | ||
|
|
d3f8bef2ef | ||
|
|
f78f52f78e | ||
|
|
d451dcf28b | ||
|
|
063964ed38 | ||
|
|
ac70d559a4 | ||
|
|
685e575f6b | ||
|
|
1640267798 | ||
|
|
d5585dd5e3 | ||
|
|
90e2db708e | ||
|
|
64303e90d6 | ||
|
|
901dfa21fc | ||
|
|
5e7d883732 | ||
|
|
840f074c66 | ||
|
|
0408ad1095 | ||
|
|
e262110c3b | ||
|
|
09b9ff2c68 | ||
|
|
e76574b79f | ||
|
|
08587d826e | ||
|
|
584b84a941 | ||
|
|
44182783c0 | ||
|
|
90f52ba8ad | ||
|
|
f8f10f27e9 | ||
|
|
7f393252e2 | ||
|
|
dd8938ced2 | ||
|
|
67ce9a41f2 | ||
|
|
756bada570 | ||
|
|
25c0036012 | ||
|
|
3b03fae939 | ||
|
|
0f9e61371c | ||
|
|
1970cc65c0 | ||
|
|
8d74e8b8dd | ||
|
|
fc4e09f398 | ||
|
|
a45d941b11 | ||
|
|
39fd27c7ec | ||
|
|
fa939a7f66 | ||
|
|
6fc81fa9c7 | ||
|
|
89cd46d2e5 | ||
|
|
f287d0ad24 | ||
|
|
93e3bbea5a | ||
|
|
6be25bd86a | ||
|
|
ec82894990 | ||
|
|
ea1b7c692a | ||
|
|
0e08173235 | ||
|
|
cdf33761c0 | ||
|
|
63ca07aeac | ||
|
|
5022407021 | ||
|
|
f54b7d56d3 | ||
|
|
382befb053 | ||
|
|
11404ef230 | ||
|
|
8964cfc123 | ||
|
|
ec97723c54 | ||
|
|
4cfbcefb33 | ||
|
|
1f575d95e6 | ||
|
|
d4900c28e1 | ||
|
|
f12964f543 | ||
|
|
c339853ec0 | ||
|
|
3924514d2b | ||
|
|
aae92c29db | ||
|
|
5683063379 | ||
|
|
5ab993b6d5 | ||
|
|
9584f6c549 | ||
|
|
2a95a3aefe | ||
|
|
36eeac365e | ||
|
|
2b8c4942fd | ||
|
|
4a190bd13c | ||
|
|
cf6a89e161 | ||
|
|
a29c5322ab | ||
|
|
4e2d2639ae | ||
|
|
a54f895ea9 | ||
|
|
ad55615ecb | ||
|
|
c8aff5687d | ||
|
|
02c2e451b1 | ||
|
|
84d49a0f53 | ||
|
|
22b096be25 | ||
|
|
b285cdd491 | ||
|
|
b2881affc0 | ||
|
|
b3e0b42155 | ||
|
|
314c017dd3 | ||
|
|
9fbc413d4d | ||
|
|
ad96fa0f58 | ||
|
|
f2283410ce | ||
|
|
f14c4ebcc8 | ||
|
|
ceff757bc6 | ||
|
|
c3c6207cda | ||
|
|
975ad26eb8 | ||
|
|
8a5ff4ed0d | ||
|
|
7d19e0e692 | ||
|
|
a1a5cab04e | ||
|
|
8182947f29 | ||
|
|
2231ba3f04 | ||
|
|
bf0a08f5a7 | ||
|
|
552575c7e6 | ||
|
|
d0979d560f | ||
|
|
e3a9b0aa17 | ||
|
|
7caa22c7a7 | ||
|
|
91131d7884 | ||
|
|
967ad2f8ff | ||
|
|
d00f82a641 | ||
|
|
2f83f07fd3 | ||
|
|
78d213a8a0 | ||
|
|
44d798239d | ||
|
|
08e1a616a0 | ||
|
|
8009c03629 | ||
|
|
ae068bd6f5 | ||
|
|
2350aa6a27 | ||
|
|
8394826d62 | ||
|
|
a46d41a594 | ||
|
|
a0d8055917 | ||
|
|
3ec892a5ab | ||
|
|
3deffb57ce | ||
|
|
db8c1917e0 | ||
|
|
57f55d416c | ||
|
|
315421037f | ||
|
|
0b4a6e7e11 | ||
|
|
f918a66292 | ||
|
|
d795af5921 | ||
|
|
21b8982e55 | ||
|
|
5a9f66e6d6 | ||
|
|
4fd77e7ee7 | ||
|
|
428ca972e2 | ||
|
|
3913e4fa96 | ||
|
|
e296242072 | ||
|
|
82001d1e8b | ||
|
|
137bfc2b56 | ||
|
|
a8ae767576 | ||
|
|
b9c77124fc | ||
|
|
f060548134 | ||
|
|
18ce8af084 | ||
|
|
7f7cff85c1 | ||
|
|
9a22e5c775 | ||
|
|
2cfb8834b6 | ||
|
|
013006050f | ||
|
|
99df346bf5 | ||
|
|
2e57158556 | ||
|
|
b75eb85e66 | ||
|
|
dbb9f225d0 | ||
|
|
85753be7cb | ||
|
|
18b35b0657 | ||
|
|
857aeaa9eb | ||
|
|
3e06971038 | ||
|
|
323b9f8693 | ||
|
|
a412ff76bc | ||
|
|
2bfd66d271 | ||
|
|
8cad9c8436 | ||
|
|
3504073428 | ||
|
|
b4af89380b | ||
|
|
c131493eca | ||
|
|
37031ba83d | ||
|
|
69106633cd | ||
|
|
a2e674b237 | ||
|
|
c1c9f0151e | ||
|
|
963ec23ae2 | ||
|
|
0c35f3a47a | ||
|
|
f4fdcfc78d | ||
|
|
97c67d55c6 | ||
|
|
9983b44e6f | ||
|
|
78bf9bf60d | ||
|
|
9d22dac28d | ||
|
|
37e16acc80 | ||
|
|
6d5cd69764 | ||
|
|
3a8c594ae8 | ||
|
|
5f72ed9b3c | ||
|
|
bee897f5b7 | ||
|
|
75542cdd93 | ||
|
|
97da78c499 | ||
|
|
d8d35ec234 | ||
|
|
86d65f8428 | ||
|
|
973aa6a0c3 | ||
|
|
aaab2a1c86 | ||
|
|
16924525ff | ||
|
|
f1f355330c | ||
|
|
4c5c054bca | ||
|
|
0181e00c19 | ||
|
|
ecf013dd18 | ||
|
|
59837ef6ac | ||
|
|
b42a91d783 | ||
|
|
187c8b8070 | ||
|
|
a807d2d6c8 | ||
|
|
fda7b0f1ef | ||
|
|
ae42f8d512 | ||
|
|
6fb74fa166 | ||
|
|
7dd0f2174c | ||
|
|
e1cc7dcfdf | ||
|
|
6b3fff6b7e | ||
|
|
5d4324dd55 | ||
|
|
fc0cae21e6 | ||
|
|
89b6cc89a3 | ||
|
|
26af62e4dd | ||
|
|
f90cd44a9e | ||
|
|
35f7c97c76 | ||
|
|
d530527f11 | ||
|
|
8af8260b7c | ||
|
|
7a17cd781a | ||
|
|
7c8b934c1d | ||
|
|
ba244cd2f6 | ||
|
|
10eef02e58 | ||
|
|
20380b616a | ||
|
|
7d3c8b48dd | ||
|
|
6931b81daa | ||
|
|
92405f94ec | ||
|
|
3e1daf50b0 | ||
|
|
94010287cc | ||
|
|
24ebe1a205 | ||
|
|
63ca884dbe | ||
|
|
a6005fde28 | ||
|
|
486a4ed5c0 | ||
|
|
fd4cd11de2 | ||
|
|
262cfedfc9 | ||
|
|
0e807d4a18 | ||
|
|
de8b3a89fd | ||
|
|
0caeb6b5f7 | ||
|
|
85d235958e | ||
|
|
62e3f408a6 | ||
|
|
008f875282 | ||
|
|
9b0beb0e6d | ||
|
|
939e3e4a53 | ||
|
|
e257589fdb | ||
|
|
4d00309717 | ||
|
|
41535bef1f | ||
|
|
ddad3ba616 | ||
|
|
d70a48970d | ||
|
|
b91deaa0cd | ||
|
|
152705bc62 | ||
|
|
f288381a08 | ||
|
|
cfbc6a524c | ||
|
|
1495a15563 | ||
|
|
4a582e5ce5 | ||
|
|
5b06db2529 | ||
|
|
8e357934ed | ||
|
|
223ea8acec | ||
|
|
567a4f9aad | ||
|
|
997f914d56 | ||
|
|
4a9483c669 | ||
|
|
319ea1072d | ||
|
|
33eaa4b53e | ||
|
|
cf563c1a56 | ||
|
|
99b2857d3d | ||
|
|
eb24d11259 | ||
|
|
f9d4d38523 | ||
|
|
b01de10ab2 | ||
|
|
fa4a540f9e | ||
|
|
4ee875ce2a | ||
|
|
78c71cdf87 | ||
|
|
1aac8dfa59 | ||
|
|
8b42c2558a | ||
|
|
40f56e43cc | ||
|
|
e9c961802b | ||
|
|
948b6e041d | ||
|
|
80d776af56 | ||
|
|
e62d84e35d | ||
|
|
098a6551f6 | ||
|
|
6e15fd0da6 | ||
|
|
1f2dadc333 | ||
|
|
c3b7a2b382 | ||
|
|
3746305b5a | ||
|
|
af3f9d5a75 | ||
|
|
33549a6cef | ||
|
|
a0bc3d968b | ||
|
|
8aab8bc528 | ||
|
|
aa595ae8cb | ||
|
|
b657e349a2 | ||
|
|
77e6b2a108 | ||
|
|
d3f6227d3f | ||
|
|
2a370aecd8 | ||
|
|
0cfb73b74b | ||
|
|
867020606c | ||
|
|
222da034d1 | ||
|
|
63b72fb4eb | ||
|
|
7e08828537 | ||
|
|
d843216343 | ||
|
|
120194ff1e | ||
|
|
27a9cbf5e4 | ||
|
|
08b18b7ff6 | ||
|
|
c3cc58a1af | ||
|
|
713979d80c | ||
|
|
3d28765238 | ||
|
|
9efa48f2a8 | ||
|
|
4a7a51035d | ||
|
|
7f2e6966a6 | ||
|
|
1d22cf98c8 | ||
|
|
03a22186bb | ||
|
|
f4bc956b1b | ||
|
|
f8f21cfc9c | ||
|
|
2b915a76df | ||
|
|
eb41cc3b00 | ||
|
|
c1d812c307 | ||
|
|
952a647c69 | ||
|
|
dff308062e | ||
|
|
81b4285d17 | ||
|
|
822521136f | ||
|
|
6f307e1e3d | ||
|
|
588bf357a9 | ||
|
|
9158a3d7d9 | ||
|
|
47a86c3d54 | ||
|
|
1e27c8af0a | ||
|
|
38bf71f02f | ||
|
|
ffef87f7d1 | ||
|
|
fc1feb9abc | ||
|
|
a3b1428d28 | ||
|
|
63c63560dd | ||
|
|
0358a4d23b | ||
|
|
df71670e6d | ||
|
|
0a09c6cbd7 | ||
|
|
152358ee18 | ||
|
|
d710ea448f | ||
|
|
36e4842fe9 | ||
|
|
141286a88c | ||
|
|
1e2450d5b9 | ||
|
|
f773905d8e | ||
|
|
2044af24a3 | ||
|
|
6bca604bf9 | ||
|
|
5d3a056ae5 | ||
|
|
e9eee11b2e | ||
|
|
cf5b6e5e20 | ||
|
|
13050f0d67 | ||
|
|
61e5b4755c | ||
|
|
5e0ea48011 | ||
|
|
aceb3ac764 | ||
|
|
6b1af9b9a2 | ||
|
|
e350dbd552 | ||
|
|
f7f78ad2a4 | ||
|
|
26983c637a | ||
|
|
733cd22dee | ||
|
|
1e61aea23b | ||
|
|
419d5d9946 | ||
|
|
d02b4d4c3f | ||
|
|
5f89708be4 | ||
|
|
e80ddcabe7 | ||
|
|
12e0dcd523 | ||
|
|
4a6027b43f | ||
|
|
e81489807d | ||
|
|
a6601ba7d2 | ||
|
|
2b4d3b3f15 | ||
|
|
a326af830f | ||
|
|
cbe38c6f41 | ||
|
|
d54af598ac | ||
|
|
1e1b4239e7 | ||
|
|
f5be8fc70a | ||
|
|
807fcffdae | ||
|
|
96cea99d4f | ||
|
|
14acc6609f | ||
|
|
8029729ab1 | ||
|
|
b525ba85c8 | ||
|
|
6db42f5fbc | ||
|
|
1f0b23c5fc | ||
|
|
a13feaf49f | ||
|
|
2697ac3581 | ||
|
|
70d9ac09d1 | ||
|
|
be2907acca | ||
|
|
5b555cca57 | ||
|
|
f1c5d4a970 | ||
|
|
2e482fbb3a | ||
|
|
35f914afa3 | ||
|
|
5356fc3191 | ||
|
|
16ef348222 | ||
|
|
01ce4e42c6 | ||
|
|
6addab2eae | ||
|
|
f428e81469 | ||
|
|
039bffb0e6 | ||
|
|
ea649fbdbf | ||
|
|
15a99b02bd | ||
|
|
f7c94f7e44 | ||
|
|
76ab888714 | ||
|
|
c52a07f2f1 | ||
|
|
e987858109 | ||
|
|
a8dc5339ab | ||
|
|
fb09d4c534 | ||
|
|
538c8c9805 | ||
|
|
0e5f072f6c | ||
|
|
ca6153715a | ||
|
|
2a1144c827 | ||
|
|
ffaf648d5c | ||
|
|
b1c5e0458c | ||
|
|
cf1e8934aa | ||
|
|
153e2f9628 | ||
|
|
1b28be974c | ||
|
|
5bfd503cd8 | ||
|
|
c90cfa896c | ||
|
|
1a59ecf98e | ||
|
|
711e680198 | ||
|
|
e5d508a507 | ||
|
|
75fb2a0c86 | ||
|
|
092a9ff5db | ||
|
|
dc7246413b | ||
|
|
fbad2d5c89 | ||
|
|
a6e44c9e4a | ||
|
|
cb0fc9c1a9 | ||
|
|
b57cedeab7 | ||
|
|
b863c6830d | ||
|
|
3a8aba13d9 | ||
|
|
09c272515e | ||
|
|
c266490ee4 | ||
|
|
ecd2d013df | ||
|
|
fa306b090e | ||
|
|
6ca5d42c89 | ||
|
|
353e3da2f8 | ||
|
|
054bccf24e | ||
|
|
96490b7b7a | ||
|
|
fc9ea6d153 | ||
|
|
817707711d | ||
|
|
e2bdf2a97f | ||
|
|
5bb109884c | ||
|
|
64c2c6a524 | ||
|
|
6760d44761 | ||
|
|
1f0d304190 | ||
|
|
de2b8dcfdd | ||
|
|
0e5a88bf93 | ||
|
|
a19872d640 | ||
|
|
ee63e51cc5 | ||
|
|
82e3e3d66e | ||
|
|
cb5fd6ea71 | ||
|
|
d12d3ac0b3 | ||
|
|
489440fbc3 | ||
|
|
5a3b7f8915 | ||
|
|
49ef2393fb | ||
|
|
af673f568d | ||
|
|
eed89d2749 | ||
|
|
a883114c92 | ||
|
|
22905baf55 | ||
|
|
999fc2208a | ||
|
|
767a145374 | ||
|
|
4ef5a878d6 | ||
|
|
70a53d68a4 | ||
|
|
4297c5830f | ||
|
|
00d1f14bcc | ||
|
|
c100009b00 | ||
|
|
93c2d6a7ad | ||
|
|
649739b8e4 | ||
|
|
f109d08bd0 | ||
|
|
6b96d4d145 | ||
|
|
98e49ab187 | ||
|
|
b70d02e46d | ||
|
|
4f1bf6a1f0 | ||
|
|
5f0df2c1de | ||
|
|
ece7b0d9f2 | ||
|
|
e620f55cd6 | ||
|
|
08fa82dc53 | ||
|
|
a9483edaac | ||
|
|
2fe9ceab8d | ||
|
|
f6bf6c52c5 | ||
|
|
5f5e51326f | ||
|
|
7c148a0123 | ||
|
|
452358541b | ||
|
|
37c10c9b06 | ||
|
|
3682fcba4d | ||
|
|
046e1534f3 | ||
|
|
fd7272ba63 | ||
|
|
12adbeb7f3 | ||
|
|
11976f11b0 | ||
|
|
ea96abecd0 | ||
|
|
5589578872 | ||
|
|
fb4aae080b | ||
|
|
471df70f62 | ||
|
|
90b1e15eb2 | ||
|
|
9c825fb156 | ||
|
|
676cdab9a9 | ||
|
|
c4b34ea60c | ||
|
|
af0d719b2c | ||
|
|
0866b8fdca | ||
|
|
32d966a8a6 | ||
|
|
b6f6afa15e | ||
|
|
9f69b4f1b6 | ||
|
|
d23c3120e6 | ||
|
|
9beae3d164 | ||
|
|
503eb1e55d | ||
|
|
0919d4c274 | ||
|
|
f4c004347e | ||
|
|
d2beb07eef | ||
|
|
466e834680 | ||
|
|
5266f74708 | ||
|
|
243f219e22 | ||
|
|
0f5ef03dc9 | ||
|
|
c1e032a4f0 | ||
|
|
c460511574 | ||
|
|
8624a9c306 | ||
|
|
1f6a0dccd5 | ||
|
|
99ba489874 | ||
|
|
ea00260e79 | ||
|
|
fcc7c5cf5c | ||
|
|
4285602323 | ||
|
|
9e0b9962ce | ||
|
|
4d2863baf5 | ||
|
|
10969b7139 | ||
|
|
a4f3fe70c5 | ||
|
|
3903e4455c | ||
|
|
0f2d3f2638 | ||
|
|
3ed1454168 | ||
|
|
b6867d956c | ||
|
|
392486bc17 | ||
|
|
dfcf4ba7fd | ||
|
|
0f4330a6bb | ||
|
|
e5da4d4be1 | ||
|
|
44d9cb85a0 | ||
|
|
59f3d88c58 | ||
|
|
3e5ab8549f | ||
|
|
af28656138 | ||
|
|
4ff200d315 | ||
|
|
5700f789e2 | ||
|
|
689767e3ca | ||
|
|
66efc9a469 | ||
|
|
4c3e477667 | ||
|
|
8cdae5f56e | ||
|
|
347295ecaf | ||
|
|
7272204d58 | ||
|
|
0032f9a960 | ||
|
|
5ca31508fb | ||
|
|
a58fde367c | ||
|
|
3f41910eb4 | ||
|
|
9a201566f2 | ||
|
|
a180cb95dc | ||
|
|
fbb757fa2f | ||
|
|
6ee38adbb5 | ||
|
|
6f3dca44a3 | ||
|
|
a4ae5b74a4 | ||
|
|
fc970a1af4 | ||
|
|
10063b205c | ||
|
|
6c94b75172 | ||
|
|
7a619594f6 | ||
|
|
0682d12fe3 | ||
|
|
1119ee1cdd | ||
|
|
8fe1f3cb95 | ||
|
|
6121fb30a9 | ||
|
|
a40b2816a1 | ||
|
|
bb372e380d | ||
|
|
aa99baf268 | ||
|
|
606013a697 | ||
|
|
a88675b693 | ||
|
|
b08a93a287 | ||
|
|
2768155e7d | ||
|
|
9f2142135e | ||
|
|
258b85a860 | ||
|
|
b1bf56cfab | ||
|
|
d2d6c6fa81 | ||
|
|
b1fc271a7e | ||
|
|
37bbb0e0e0 | ||
|
|
2a9a3e020c | ||
|
|
cd2520603a | ||
|
|
b5748fee6e | ||
|
|
b092dfa2c9 | ||
|
|
2ad1fbd771 | ||
|
|
1ca594bbcb | ||
|
|
e66611c965 | ||
|
|
c5a95dc682 | ||
|
|
d7ccbfef20 | ||
|
|
79f35bb553 | ||
|
|
9e30e5c34c | ||
|
|
4963a9668f | ||
|
|
e59bd71c17 | ||
|
|
5750d05891 | ||
|
|
1810a911d4 | ||
|
|
51ae0f0377 | ||
|
|
215b648edf | ||
|
|
d73f01701e | ||
|
|
010b282679 | ||
|
|
6ef8291b2e | ||
|
|
b820810afe | ||
|
|
cef21860eb | ||
|
|
0c08656965 | ||
|
|
59b1460e30 | ||
|
|
b75ac1243a | ||
|
|
93af2b7b1d | ||
|
|
7092edfe4c | ||
|
|
0663335011 | ||
|
|
6cc0c2be91 | ||
|
|
4a256ed7ca | ||
|
|
2a526a815e | ||
|
|
0a81658881 | ||
|
|
5ac95a0507 | ||
|
|
cefacf4a6d | ||
|
|
c9aa202be8 | ||
|
|
77e36ed313 | ||
|
|
52933e977b | ||
|
|
cf4c29a57f | ||
|
|
90cd381efa | ||
|
|
9405f415d0 | ||
|
|
3dcc130903 | ||
|
|
9d022180e7 | ||
|
|
ba42d8d8c6 | ||
|
|
117887ff3a | ||
|
|
b62fa8190b | ||
|
|
eadd4a7bb2 | ||
|
|
a93a1b8b48 | ||
|
|
12cbe70371 | ||
|
|
ed3367244c | ||
|
|
b8b69eecb8 | ||
|
|
65acd5d827 | ||
|
|
4d6732cd19 | ||
|
|
dc5942115d | ||
|
|
c14492a6cf | ||
|
|
07682c396e | ||
|
|
84e5a9521d | ||
|
|
48b0ffac06 | ||
|
|
5c42c89505 | ||
|
|
d37e23f68e | ||
|
|
9953903193 | ||
|
|
48506f2945 | ||
|
|
503305cbdb | ||
|
|
0a27a7ad38 | ||
|
|
32f592444a | ||
|
|
daf655cd24 | ||
|
|
04813e452c | ||
|
|
b50d9f5c59 | ||
|
|
44c29aa998 | ||
|
|
2a45ff08e4 | ||
|
|
7b1ea81a27 | ||
|
|
d559572718 | ||
|
|
2c1400a9ff | ||
|
|
85af1c91a2 | ||
|
|
dcc8c8800f | ||
|
|
5a24292d34 | ||
|
|
c492dcc7ba | ||
|
|
c5f89f34fd | ||
|
|
1ef4b063ea | ||
|
|
d05cae10f7 | ||
|
|
478387531d | ||
|
|
0b9cca27e2 | ||
|
|
ca9589b2e8 | ||
|
|
e7b1a7e493 | ||
|
|
c112b84d0f | ||
|
|
40cb70fca1 | ||
|
|
7d5f021717 | ||
|
|
0b0bbd4c42 | ||
|
|
4704f2b08e | ||
|
|
f9bd11f6fb | ||
|
|
0d73e961a4 | ||
|
|
e1f759e70e | ||
|
|
66380566c8 | ||
|
|
8cb69e4d5a | ||
|
|
8ee2c849b4 | ||
|
|
564d874869 | ||
|
|
d38fcd2db4 | ||
|
|
06e20b38b5 | ||
|
|
c8b7449b25 | ||
|
|
6edfebdfed | ||
|
|
c4b39a4fb1 | ||
|
|
cdcca3da1c | ||
|
|
9207cf501c | ||
|
|
44d1f169c3 | ||
|
|
d805ee6f3d | ||
|
|
ed2427852b | ||
|
|
5af894047e | ||
|
|
fc1c3a8f97 | ||
|
|
83e56a09c2 | ||
|
|
47613b1cf9 | ||
|
|
fced0c4952 | ||
|
|
609893f7ec | ||
|
|
3f795a8918 | ||
|
|
a5907db5d8 | ||
|
|
ad7b70a354 | ||
|
|
d992772492 | ||
|
|
7ba879c441 | ||
|
|
3fa2238e9c | ||
|
|
274136dacb | ||
|
|
d5d65cfd56 | ||
|
|
17c11d09fc | ||
|
|
6bf42173a1 | ||
|
|
c8649a77d2 | ||
|
|
d780d56b9a | ||
|
|
2587b549a0 | ||
|
|
dd805c4c25 | ||
|
|
5cd1892dee | ||
|
|
f575e56e46 | ||
|
|
af7974adda | ||
|
|
ef3a7d5c92 | ||
|
|
685811ef63 | ||
|
|
12ae36e99e | ||
|
|
abfe683763 | ||
|
|
a1ab8de593 | ||
|
|
b04c5aec88 | ||
|
|
b862927c8c | ||
|
|
5744e16a07 | ||
|
|
11f0a59031 | ||
|
|
8dfbf342fd | ||
|
|
5f947a86c7 | ||
|
|
0f18e78bb4 | ||
|
|
d0c5d614f7 | ||
|
|
e2e1c610d8 | ||
|
|
1e74aa3087 | ||
|
|
f54a141918 | ||
|
|
b54d8c53a7 | ||
|
|
23d6c362c4 | ||
|
|
41a548d625 | ||
|
|
016cabb7b2 | ||
|
|
9129266f54 | ||
|
|
e8376d5b79 | ||
|
|
cc7b1a5642 | ||
|
|
f11fe14cdd | ||
|
|
219e6b420e | ||
|
|
3a6ef8c34b | ||
|
|
4f318a5981 | ||
|
|
f978a5c754 | ||
|
|
f378e10752 | ||
|
|
30909d13ba | ||
|
|
8cd03c9624 | ||
|
|
8f617d01d4 | ||
|
|
569ac2bc5b | ||
|
|
c1be014499 | ||
|
|
7d1ac0248b | ||
|
|
aa8e504ef7 | ||
|
|
6963141eb8 | ||
|
|
3295b1c8de | ||
|
|
0159d25e48 | ||
|
|
abbfe04642 | ||
|
|
8cf3c7b826 | ||
|
|
0fb927e709 | ||
|
|
c00b248d1a | ||
|
|
d2b4d1e183 | ||
|
|
8fb9140c21 | ||
|
|
cb9d828ba0 | ||
|
|
467c0dfffa | ||
|
|
d887a4aa4a | ||
|
|
34835752f8 | ||
|
|
b9aa78b987 | ||
|
|
d8fa782f13 | ||
|
|
f3d7b249be | ||
|
|
097836d193 | ||
|
|
7552ad5edb | ||
|
|
e9cf0a71d8 | ||
|
|
cf731d7296 | ||
|
|
946e6fd4c2 | ||
|
|
fe9d1a053e | ||
|
|
6b1ac499ba | ||
|
|
0fc0b2a1be | ||
|
|
6887ed4bf7 | ||
|
|
8cb82df055 | ||
|
|
6788214671 | ||
|
|
4c2488ff65 | ||
|
|
05b101b612 | ||
|
|
65ab47dc63 | ||
|
|
23579df8da | ||
|
|
2b91be6237 | ||
|
|
f1fabb07bf | ||
|
|
8aea015452 | ||
|
|
83471228e7 | ||
|
|
e97a647b54 | ||
|
|
f5dceb0b09 | ||
|
|
d4fbdeee94 | ||
|
|
f529cfe8cf | ||
|
|
4d36aaff39 | ||
|
|
f07aec457a | ||
|
|
d898c80e65 | ||
|
|
2ff0abc6e7 | ||
|
|
0276e65f39 | ||
|
|
4cd8e6b444 | ||
|
|
58357a0746 | ||
|
|
d0223e6f48 | ||
|
|
142ea68dce | ||
|
|
654d2ab63d | ||
|
|
a30f281478 | ||
|
|
ae1baf5789 | ||
|
|
3c88bdc60c | ||
|
|
6d698e584b | ||
|
|
193b989342 | ||
|
|
8dc322d7f2 | ||
|
|
eee5d710e7 | ||
|
|
489db37bbd | ||
|
|
10b5d5e56b | ||
|
|
934bcf253e | ||
|
|
0683ba3a54 | ||
|
|
a85f200450 | ||
|
|
98e0a5f101 | ||
|
|
fb9e11b7b5 | ||
|
|
e77ca024d7 | ||
|
|
63f8217cd5 | ||
|
|
9f5cb3a07e | ||
|
|
e09d1b42f2 | ||
|
|
267d9333a1 | ||
|
|
ab39ac29e8 | ||
|
|
6c25feabf2 | ||
|
|
171157c100 | ||
|
|
3137d7cf2c | ||
|
|
6ab528748e | ||
|
|
621dfc136e | ||
|
|
9d07f5dc2e | ||
|
|
48dd86bd9b | ||
|
|
4879582896 | ||
|
|
6584f86bce | ||
|
|
82d517fcbb | ||
|
|
ff371c43e0 | ||
|
|
0bf0e1808c | ||
|
|
6be5947f69 | ||
|
|
b1d7d7304d | ||
|
|
1d0702e143 | ||
|
|
298ce335b9 | ||
|
|
e04f630f41 | ||
|
|
7dfee16e25 | ||
|
|
d6c21e2af6 | ||
|
|
ebae0a7248 | ||
|
|
fe834f00a2 | ||
|
|
3855d44bf5 | ||
|
|
ad8f621287 | ||
|
|
18305a5bf6 | ||
|
|
b0b73bf166 | ||
|
|
7a8971b9b6 | ||
|
|
c082e5f6a6 | ||
|
|
ef0703f209 | ||
|
|
196c122e0a | ||
|
|
57d5a55ca0 | ||
|
|
94e09f9fa0 | ||
|
|
2f4bd6a0c9 | ||
|
|
58d3555102 | ||
|
|
b032c329e3 | ||
|
|
73f00d2bc3 | ||
|
|
cf896bbb52 | ||
|
|
ba162e35c4 | ||
|
|
00e9178d5f | ||
|
|
62b0995f6a | ||
|
|
4107e5cc9a | ||
|
|
c841146968 | ||
|
|
6c9e6cc198 | ||
|
|
980bfddd8a | ||
|
|
06327e8f04 | ||
|
|
2290b44f82 | ||
|
|
c0cec2b9de | ||
|
|
e376889f3d | ||
|
|
8584cacb6e | ||
|
|
3ff19babf5 | ||
|
|
8b5aa08c57 | ||
|
|
cffcb2b985 | ||
|
|
1da8b68906 | ||
|
|
d53f4fb81b | ||
|
|
02fcd3b489 | ||
|
|
7b70a7a68a | ||
|
|
5060725ef5 | ||
|
|
6bf3218665 | ||
|
|
ab42f84daa | ||
|
|
29f86afaf4 | ||
|
|
ac5a3b9217 | ||
|
|
d7d73364e9 | ||
|
|
f83a57ae5c | ||
|
|
56d747818d | ||
|
|
309adb2ffd | ||
|
|
64b50d13fa | ||
|
|
16d2dbc9d7 | ||
|
|
73d53579d9 | ||
|
|
fbd6a58e3d | ||
|
|
4717f716de | ||
|
|
02a089cb64 | ||
|
|
0ada6fbd46 | ||
|
|
2c8840b7e0 | ||
|
|
8f15bce680 | ||
|
|
1510c5517b | ||
|
|
f6e2fcbf15 | ||
|
|
55247b4e12 | ||
|
|
f31b26b1ab | ||
|
|
2b350eb872 | ||
|
|
88d77658f8 | ||
|
|
cbbc386170 | ||
|
|
7f9226861a | ||
|
|
162c79029f | ||
|
|
5f363f5c9d | ||
|
|
bd5877ad49 | ||
|
|
71cf7aedb5 | ||
|
|
fa1e0af19f | ||
|
|
0a51006da2 | ||
|
|
4c365f6afc | ||
|
|
a49b0a922a | ||
|
|
a6199680cd | ||
|
|
9ff4298475 | ||
|
|
5793216d5c | ||
|
|
d1710826e6 | ||
|
|
675b996f57 | ||
|
|
21777a5804 | ||
|
|
b1ca00b037 | ||
|
|
e2a09f272a | ||
|
|
cf9c9fe278 | ||
|
|
0e77c89d79 | ||
|
|
7571ae19a0 | ||
|
|
69c1de7e4a | ||
|
|
09308e568d | ||
|
|
671821aeb3 | ||
|
|
7369331e2d | ||
|
|
e6e193f252 | ||
|
|
2bb111605c | ||
|
|
37aba6f7d5 | ||
|
|
3fc259bb9b | ||
|
|
15c1a8ee0b | ||
|
|
b4b6de4e0d | ||
|
|
5b0be7e1a9 | ||
|
|
92e64927b0 | ||
|
|
58cde3253d | ||
|
|
47262b9350 | ||
|
|
183909f474 | ||
|
|
06bb43b13e | ||
|
|
2ed8e1639f | ||
|
|
e78d5b7787 | ||
|
|
e0c6cc1563 | ||
|
|
472132c236 | ||
|
|
1262aa19ec | ||
|
|
e9e3f7ef16 | ||
|
|
d9d4c478cc | ||
|
|
0c79c32b0d | ||
|
|
db56fc158f | ||
|
|
af8d2490e2 | ||
|
|
fdc77bfd5b | ||
|
|
5572d37c7f | ||
|
|
57f2ab2f67 | ||
|
|
1cab52f555 | ||
|
|
748233ca70 | ||
|
|
f76108c5b5 | ||
|
|
09f94f7b56 | ||
|
|
a85b8d6edc | ||
|
|
52c9761e5b | ||
|
|
c2dbb9cb43 | ||
|
|
59c3743f77 | ||
|
|
98422f8476 | ||
|
|
8c6283a687 | ||
|
|
1fd492d838 | ||
|
|
fc63a713fd | ||
|
|
e97b9820a4 | ||
|
|
52f24af701 | ||
|
|
c3032feaf7 | ||
|
|
b30c1523e3 | ||
|
|
6e1c4c2efd | ||
|
|
3b542ea008 | ||
|
|
5841b56f2d | ||
|
|
85ea29c93c | ||
|
|
f7e979141b | ||
|
|
e0bdc68a9e | ||
|
|
e6cfde211b | ||
|
|
978aaa5c4b | ||
|
|
b67beaa35a | ||
|
|
19f23106e7 | ||
|
|
d8a2c59b04 | ||
|
|
dea785f562 | ||
|
|
ca42f86900 | ||
|
|
de9294d1f4 | ||
|
|
91b83519f5 | ||
|
|
3eb7f296aa | ||
|
|
f3b0e404f0 | ||
|
|
3ba3d7ffcf | ||
|
|
832fa88f08 | ||
|
|
6e9d349ceb | ||
|
|
8bd1524abc | ||
|
|
72f5633061 | ||
|
|
3b25bdc1cb | ||
|
|
3690609519 | ||
|
|
43c9d14ac2 | ||
|
|
83122fa58b | ||
|
|
f23da7ea75 | ||
|
|
7ef93e92e6 | ||
|
|
945f9f8c47 | ||
|
|
29b40d27e7 | ||
|
|
cd83ed699c | ||
|
|
02fcded368 | ||
|
|
18b0dfe28c | ||
|
|
69be62f1e6 | ||
|
|
7136c5b414 | ||
|
|
b637e7dde4 | ||
|
|
f545274a0e | ||
|
|
e8c122d5ed | ||
|
|
9457f63e01 | ||
|
|
df004a2c7a | ||
|
|
a698ee8bc8 | ||
|
|
1228ffe109 | ||
|
|
076a10887b | ||
|
|
fc3db2d29c | ||
|
|
971cdbb918 | ||
|
|
73adbe9e0c | ||
|
|
8363609637 | ||
|
|
705c3a408a | ||
|
|
228fc5ce73 | ||
|
|
09885535ac | ||
|
|
de139af5a5 | ||
|
|
d9c7790e82 | ||
|
|
aa03b7d9a0 | ||
|
|
8f9d0019e6 | ||
|
|
9e3fae1991 | ||
|
|
5dcb239253 | ||
|
|
9fcdea14d7 | ||
|
|
85dbe83154 | ||
|
|
ee48da2a0a | ||
|
|
f477389159 | ||
|
|
3bb7f78255 | ||
|
|
25aecfa9b2 | ||
|
|
f821e504c3 | ||
|
|
d66381863e | ||
|
|
68712c884e | ||
|
|
db9b31cb85 | ||
|
|
7090d4e5ba | ||
|
|
b2423fa390 | ||
|
|
83b87cb812 | ||
|
|
44dcb4cc78 | ||
|
|
64803a735d | ||
|
|
20e77bb5d9 | ||
|
|
f11e5128ad | ||
|
|
bbe13cafcb | ||
|
|
1acca87fbf | ||
|
|
2012bb7c53 | ||
|
|
14d384a30a | ||
|
|
927f5e2c8b | ||
|
|
d59bedf977 | ||
|
|
c61a71a36e | ||
|
|
46f2e693bc | ||
|
|
cbc4bb5420 | ||
|
|
49e85e0680 | ||
|
|
e8d724680a | ||
|
|
6d9ab5e9ff | ||
|
|
a6d513a0e6 | ||
|
|
d565c40f4b | ||
|
|
52b4ae5eae | ||
|
|
0f53dc1b7b | ||
|
|
5c4b9e59d1 | ||
|
|
a02f63dcc3 | ||
|
|
a3a94e6ea4 | ||
|
|
c039a45def | ||
|
|
3276dd6b94 | ||
|
|
de306de78b | ||
|
|
19f96d60e3 | ||
|
|
bfdbf0248c | ||
|
|
660863392b | ||
|
|
8baa0f7310 | ||
|
|
6b18c4f24c | ||
|
|
40f70a1cc0 | ||
|
|
c869dfea3f | ||
|
|
39b4263b8b | ||
|
|
cf7016b36d | ||
|
|
1893ac7ed6 | ||
|
|
a748d105ed | ||
|
|
fc307bcf5b | ||
|
|
03033a0684 | ||
|
|
7ca39a5c38 | ||
|
|
d7555e1f29 | ||
|
|
37726fba58 | ||
|
|
c4cf582c9d | ||
|
|
acc53065e5 | ||
|
|
9360c109a9 | ||
|
|
5d9af5a7da | ||
|
|
88e0fed4c4 | ||
|
|
98dcc08c6d | ||
|
|
702b50e7e9 | ||
|
|
8f946ea1b2 | ||
|
|
4e5ae0af84 | ||
|
|
ca00871362 | ||
|
|
a1d8658297 | ||
|
|
31814e8bf9 | ||
|
|
0028df2564 | ||
|
|
9b3764212f | ||
|
|
8128b85706 | ||
|
|
d7c88a38fc | ||
|
|
0b0b221c02 | ||
|
|
d9b8f46282 | ||
|
|
fbb64db3ae | ||
|
|
33d8e67a87 | ||
|
|
f05f173d23 | ||
|
|
81a622a9fa | ||
|
|
67415dd7e2 | ||
|
|
e8cd6b3be3 | ||
|
|
7e96e7af83 | ||
|
|
119b73ead2 | ||
|
|
365c454da1 | ||
|
|
b6d1f9f754 | ||
|
|
6719d9670d | ||
|
|
62234878a1 | ||
|
|
851a9a7620 | ||
|
|
61d9002cb1 | ||
|
|
84fc5dfcf7 | ||
|
|
e1b3ae208d | ||
|
|
60ec9739c2 | ||
|
|
c9fb3dfb1d | ||
|
|
8230d1b515 | ||
|
|
838b4f4e52 | ||
|
|
eae5b154c9 | ||
|
|
ebc870d2d4 | ||
|
|
986b1aadbf | ||
|
|
9ced73bf19 | ||
|
|
f0428d5c99 | ||
|
|
486a0d2c6e | ||
|
|
13cf6a1007 | ||
|
|
4c59bcc1bb | ||
|
|
057bb31d94 | ||
|
|
6258c0671b | ||
|
|
b3b45458f6 | ||
|
|
54047a98b3 | ||
|
|
6411dcbf72 | ||
|
|
1818215fee | ||
|
|
1ffceef9f0 | ||
|
|
be1426a5f6 | ||
|
|
3ebb819ba3 | ||
|
|
5f16e534ee | ||
|
|
8f8e6f16b4 | ||
|
|
b5592b88fa | ||
|
|
ba06269ed7 | ||
|
|
e450baeac4 | ||
|
|
3a81b6a08f | ||
|
|
b7a2efcd6a | ||
|
|
a605d50d69 | ||
|
|
27d894b8e9 | ||
|
|
14f1ef8e30 | ||
|
|
7b471d59c5 | ||
|
|
5ca102ffee | ||
|
|
0e04f79b6d | ||
|
|
c141b873c3 | ||
|
|
3cc97690a4 | ||
|
|
5b7f08137f | ||
|
|
00318be59f | ||
|
|
37c00d4eeb | ||
|
|
3300d25e57 | ||
|
|
f443b1426f | ||
|
|
96354ee1d8 | ||
|
|
41b725714f | ||
|
|
12560e983c | ||
|
|
44ff6d50ec | ||
|
|
29c1cca990 | ||
|
|
979f7ba78c | ||
|
|
b6dfe01628 | ||
|
|
d4cd5ba231 | ||
|
|
e7cf1e34cf | ||
|
|
c9718de24c | ||
|
|
c58b1f0fd2 | ||
|
|
b720ae5d75 | ||
|
|
3cea1a99b7 | ||
|
|
03eb079a5e | ||
|
|
899db2de78 | ||
|
|
22338d7058 | ||
|
|
db6d7714a4 | ||
|
|
2de4f425ff | ||
|
|
a71ab6e2ae | ||
|
|
0b6bf701ef | ||
|
|
38eb4eed97 | ||
|
|
bdb54f56d9 | ||
|
|
3eb2981fb4 | ||
|
|
835269825d | ||
|
|
12ab1cb2c4 | ||
|
|
07f0e3803a | ||
|
|
3d307fe8ff | ||
|
|
5cb4a65cbd | ||
|
|
84ce065f76 | ||
|
|
6398d7ff23 | ||
|
|
7e3f8ad012 | ||
|
|
8703c87880 | ||
|
|
7e010c88b9 | ||
|
|
dad921bf5b | ||
|
|
e020bafc38 | ||
|
|
ecf5e1ce6b | ||
|
|
31bcee1a13 | ||
|
|
6245127ce1 | ||
|
|
d1a4b9ad85 | ||
|
|
167e615f67 | ||
|
|
9c1b0471ca | ||
|
|
96a8a94309 | ||
|
|
d2960aae3c | ||
|
|
3f1a23615a | ||
|
|
78de0f3167 | ||
|
|
718e900a39 | ||
|
|
eff2a857c0 | ||
|
|
cf2b5cc24d | ||
|
|
7859fadf6b | ||
|
|
34588b7dc0 | ||
|
|
f6999898d5 | ||
|
|
821243ce7c | ||
|
|
44d0abb111 | ||
|
|
10fd2b291e | ||
|
|
5034c7c312 | ||
|
|
ff36ba7742 | ||
|
|
9b2fabfb3e | ||
|
|
4008eb20a3 | ||
|
|
e224ee8277 | ||
|
|
d236f97605 | ||
|
|
0efb966b68 | ||
|
|
63dfa52ea8 | ||
|
|
74507e9981 | ||
|
|
d24bef7883 | ||
|
|
59bf0c080a | ||
|
|
e8553cfac0 | ||
|
|
baadf62fc3 | ||
|
|
cf0f232635 | ||
|
|
e2ee7f7b2f | ||
|
|
76187d31cf | ||
|
|
c3bbedbc56 | ||
|
|
c4312fbb31 | ||
|
|
1bf71b47df | ||
|
|
67f26fa1ac | ||
|
|
dafabd5b99 | ||
|
|
878adfb0c0 | ||
|
|
3da9f6d0e3 | ||
|
|
f5fdd8a6ab | ||
|
|
47e4599fe2 | ||
|
|
81b432dc0e | ||
|
|
87c5668b14 | ||
|
|
84da133e95 | ||
|
|
80e254d46b | ||
|
|
7bce16f811 | ||
|
|
0d430be1fa | ||
|
|
3c76af9dab | ||
|
|
ad12a9eb99 | ||
|
|
12424aef69 | ||
|
|
091fe6be88 | ||
|
|
9432865bcd | ||
|
|
45bf046645 | ||
|
|
a8516ff0f5 | ||
|
|
2ceda2987c | ||
|
|
e99adc339e | ||
|
|
1aa863a92f | ||
|
|
c0754587bf | ||
|
|
a417698fcd | ||
|
|
7ecf1b18c1 | ||
|
|
9b8e485f00 | ||
|
|
e49b5b03db | ||
|
|
b5f503dbbb | ||
|
|
04d3633545 | ||
|
|
4e585c5c34 | ||
|
|
867aae868d | ||
|
|
1f237db2b5 | ||
|
|
04e8c3ceea | ||
|
|
592848ad03 | ||
|
|
22318eb80e | ||
|
|
c03f8afca1 | ||
|
|
88f8e0b8b1 | ||
|
|
8f6b831512 | ||
|
|
85a2c12768 | ||
|
|
1b8fd63853 | ||
|
|
ae325ff124 | ||
|
|
1698d96883 | ||
|
|
e35f5c9fde | ||
|
|
26a59e2cc5 | ||
|
|
56df7ad9fc | ||
|
|
52ae7c3615 | ||
|
|
c9e56ab04b | ||
|
|
cfa527e9af | ||
|
|
6cb17caf91 | ||
|
|
67a0040732 | ||
|
|
3913b450b6 | ||
|
|
13d61e15f4 | ||
|
|
7d46236900 | ||
|
|
a7e54967c3 | ||
|
|
a440e4ef79 | ||
|
|
b5a52129fb | ||
|
|
8e72e0ec07 | ||
|
|
8204ecc131 | ||
|
|
beaf5215b7 | ||
|
|
b3fa997bea | ||
|
|
eab5bfb475 | ||
|
|
9f5d4dd67f | ||
|
|
fc757f6cf7 | ||
|
|
fd619de1d3 | ||
|
|
4c0341b232 | ||
|
|
a3bcc9d91e | ||
|
|
d215e3ca68 | ||
|
|
493fa8541b | ||
|
|
930b5e07f8 | ||
|
|
5174717ca9 | ||
|
|
a7681fc712 | ||
|
|
7d1976ad05 | ||
|
|
d317f33f4e | ||
|
|
9e53b0742c | ||
|
|
4c78b8c6d1 | ||
|
|
b88db55db3 | ||
|
|
b8f8d1d4b1 | ||
|
|
c4cbf6de3b | ||
|
|
e7b0e3293d | ||
|
|
87c8e85068 | ||
|
|
c9ae5e1e9f | ||
|
|
3d9514d266 | ||
|
|
3d9cbf52b9 | ||
|
|
5b4043db85 | ||
|
|
661d36614f | ||
|
|
11cef55c03 | ||
|
|
667d08d003 | ||
|
|
ba780276a2 | ||
|
|
46db0bc08c | ||
|
|
0de3c6945b | ||
|
|
0bf30aaa6b | ||
|
|
faac205464 | ||
|
|
1d5d7048d6 | ||
|
|
033643c4ca | ||
|
|
8b8b5cfac4 | ||
|
|
9ad32fd846 | ||
|
|
d9766bfd7e | ||
|
|
186f2a8392 | ||
|
|
c6a43b0d0c | ||
|
|
a1513b7c7c | ||
|
|
6571ef4e45 | ||
|
|
a3f8a4f45e | ||
|
|
336111fbd4 | ||
|
|
f100ad12e0 | ||
|
|
7adc505a00 | ||
|
|
d781ee0596 | ||
|
|
0ea9240226 | ||
|
|
dbbdb7cd7e | ||
|
|
2f98d2a781 | ||
|
|
d9ea89857c | ||
|
|
a29a697012 | ||
|
|
430706529a | ||
|
|
9b1999bc02 | ||
|
|
196e82d3ab | ||
|
|
1761d0e65c | ||
|
|
9465723026 | ||
|
|
c9246bf946 | ||
|
|
4f0380bb2c | ||
|
|
41a4c7c39f | ||
|
|
e3bdf89cab | ||
|
|
0843f09c86 | ||
|
|
93afe00205 | ||
|
|
0f978bbcc7 | ||
|
|
88c49a9f7c | ||
|
|
83f285c913 | ||
|
|
24499c5ea9 | ||
|
|
d02b1f04e2 | ||
|
|
c818003399 | ||
|
|
306db6d026 | ||
|
|
b75ff4bdf5 | ||
|
|
60439c7d8e | ||
|
|
3518a4167c | ||
|
|
51dd7fa58e | ||
|
|
0a5549ebc9 | ||
|
|
607167ebe7 | ||
|
|
1183517c3a | ||
|
|
6d169784ed | ||
|
|
9b16cc6266 | ||
|
|
d56f46e1b1 | ||
|
|
6a5feacd38 | ||
|
|
0a91189e6a | ||
|
|
e9d9ebf156 | ||
|
|
1a85dc9b99 | ||
|
|
660af7ec70 | ||
|
|
102d44a7b8 | ||
|
|
549b0f8ef4 | ||
|
|
c6fe8ae70c | ||
|
|
9e1af0db63 | ||
|
|
43b6cb9bff | ||
|
|
9b7acf33c6 | ||
|
|
3914abda20 | ||
|
|
e47042d1cb | ||
|
|
a40a2f96b5 | ||
|
|
efc689a937 | ||
|
|
78bf40eaa9 | ||
|
|
578604619a | ||
|
|
6eac798d91 | ||
|
|
121bdbad84 | ||
|
|
aaeaa02406 | ||
|
|
5b2b2d1a5c | ||
|
|
9209d11084 | ||
|
|
60f54f1bc9 | ||
|
|
8b1de5d9b5 | ||
|
|
b2095481b3 | ||
|
|
a8e8517364 | ||
|
|
c9b31c62cd | ||
|
|
c72cf64c8a | ||
|
|
8c2f841972 | ||
|
|
0c1c750005 | ||
|
|
5c9ec37609 | ||
|
|
4dc20effb8 | ||
|
|
084d951ffd | ||
|
|
092fbe25b8 | ||
|
|
7d5d84763f | ||
|
|
33d98dfe8c | ||
|
|
256815e148 | ||
|
|
cdbfbb5504 | ||
|
|
753a88c409 | ||
|
|
eef6966a85 | ||
|
|
d1d6a30884 | ||
|
|
3a190a1c37 | ||
|
|
ae70902921 | ||
|
|
5418237919 | ||
|
|
42fcdb33a1 | ||
|
|
2098e69fb4 | ||
|
|
2415275e90 | ||
|
|
83fcc92f75 | ||
|
|
64a7ab6e2e | ||
|
|
a772e1f9ca | ||
|
|
7bbed1705c | ||
|
|
4cd4660357 | ||
|
|
d503724bda | ||
|
|
2756a1f1a0 | ||
|
|
883122a98b | ||
|
|
bd7f0383d1 | ||
|
|
aa8cefc110 | ||
|
|
48740f5032 | ||
|
|
35b81a2f38 | ||
|
|
4b582b9d7e | ||
|
|
d72f45a94b | ||
|
|
a71ed3ec5a | ||
|
|
95f709ae14 | ||
|
|
43b2ec1e3f | ||
|
|
92b2a6fa24 | ||
|
|
acb3941776 | ||
|
|
f8807cf659 | ||
|
|
ddeb64964d | ||
|
|
b2d6c5b6a7 | ||
|
|
c01996d1d1 | ||
|
|
271375d171 | ||
|
|
5693039f0d | ||
|
|
52304b37a2 | ||
|
|
3d6e186b30 | ||
|
|
fe8eabda37 | ||
|
|
a00032de53 | ||
|
|
b320358dc4 | ||
|
|
f81ab8e4d4 | ||
|
|
9a537248a4 | ||
|
|
eeed65b354 | ||
|
|
3c6711c590 | ||
|
|
90d8dfcf12 | ||
|
|
03b76f3c8a | ||
|
|
b9caed4392 | ||
|
|
6993a650b0 | ||
|
|
4000794af6 | ||
|
|
7c9e6779c6 | ||
|
|
ec6d9ec7de | ||
|
|
58fccadf08 | ||
|
|
34e7362132 | ||
|
|
fca39a7809 | ||
|
|
278404f47c | ||
|
|
64612712a5 | ||
|
|
9ffd0ad982 | ||
|
|
e703fec3af | ||
|
|
78e9eac64a | ||
|
|
2b1fc8725e | ||
|
|
b885c3dda3 | ||
|
|
aa2c1501da | ||
|
|
ed5c929b23 | ||
|
|
672a23dbcd | ||
|
|
24c09d0319 | ||
|
|
092275a981 | ||
|
|
3fe97e1709 | ||
|
|
1ad4f0c9b5 | ||
|
|
27a327402b | ||
|
|
e2adfe9eab | ||
|
|
67690c9e8e | ||
|
|
4c3c2eaa3b | ||
|
|
cf6c41f9db | ||
|
|
2e0a597ee4 | ||
|
|
628983d123 | ||
|
|
8ec5dd6def | ||
|
|
acc40c73f3 | ||
|
|
1d4658e978 | ||
|
|
b8bbf3b69e | ||
|
|
d8e41fa8b1 | ||
|
|
e9a6ba03f9 | ||
|
|
2e69e38adb | ||
|
|
c5ed876c09 | ||
|
|
96f737f13e | ||
|
|
f369151e8e | ||
|
|
d1b9990e4e | ||
|
|
ed7eb01d1b | ||
|
|
6601127693 | ||
|
|
43236c1cc4 | ||
|
|
65bbf7b2a2 | ||
|
|
74b8dca63e | ||
|
|
7db0e3ac3f | ||
|
|
f889c24497 | ||
|
|
852a1900b4 | ||
|
|
30a273c946 | ||
|
|
903614140a | ||
|
|
0fe772efa8 | ||
|
|
e6dedee56f | ||
|
|
66605e91aa | ||
|
|
137db2c86c | ||
|
|
9c28a6ff4a | ||
|
|
48a8d7de1c | ||
|
|
5fa96c944d | ||
|
|
fe270bd9ae | ||
|
|
a0912ad6b4 | ||
|
|
9ba0c54295 | ||
|
|
86721b88ce | ||
|
|
9bdee1b82d | ||
|
|
abe01f8f48 | ||
|
|
c5525d356e | ||
|
|
36ae564d26 | ||
|
|
cba6bd6ef5 | ||
|
|
4d40ffedff | ||
|
|
319e8d746f | ||
|
|
fe7a88362b | ||
|
|
8bf314202f | ||
|
|
ac8bc7dec2 | ||
|
|
0d5919392e | ||
|
|
1473abf19a | ||
|
|
45e75f3d09 | ||
|
|
5358f2fb9e | ||
|
|
c316d27444 | ||
|
|
0c0bb29f83 | ||
|
|
82bc3270e7 | ||
|
|
ec79b0b17b | ||
|
|
0560567058 | ||
|
|
3de740b35f | ||
|
|
b69f598e51 | ||
|
|
1ad177fca7 | ||
|
|
c3ad3ff348 | ||
|
|
ad578bb171 | ||
|
|
9538c49ac8 | ||
|
|
84d43db500 | ||
|
|
584bbd93e0 | ||
|
|
7e2d55743e | ||
|
|
bf2d0468f9 | ||
|
|
d2bc47cfe8 | ||
|
|
a194ef0b78 | ||
|
|
476960b5b7 | ||
|
|
d8c6c766b9 | ||
|
|
98f4bf2f65 | ||
|
|
f9c8b7f4ab | ||
|
|
a92532c0c9 | ||
|
|
bede81632d | ||
|
|
e975062e0e | ||
|
|
0cd051cee2 | ||
|
|
682980be49 | ||
|
|
878043ea3d | ||
|
|
757ae65189 | ||
|
|
cd63abba5b | ||
|
|
a0f00d0c83 | ||
|
|
915591c6d6 | ||
|
|
157cb7d982 | ||
|
|
cdcb21b841 | ||
|
|
2bf79a5298 | ||
|
|
ebefefa0eb | ||
|
|
a740883c8d | ||
|
|
da760075d2 | ||
|
|
b8833772a3 | ||
|
|
131c6e761e | ||
|
|
1fb0f2f048 | ||
|
|
2a25ac9d1f | ||
|
|
773bf765ad | ||
|
|
b0b866eec5 | ||
|
|
8cc928c841 | ||
|
|
4180420765 | ||
|
|
30945dc240 | ||
|
|
4ef87e3419 | ||
|
|
4785194527 | ||
|
|
8a742ce3ec | ||
|
|
27af9455f5 | ||
|
|
98ff572afe | ||
|
|
f77fedbea4 | ||
|
|
39c582dac2 | ||
|
|
8736728478 | ||
|
|
23cf9f47b0 | ||
|
|
b8feefc541 | ||
|
|
e3a6c71087 | ||
|
|
d6cc88fa99 | ||
|
|
428d451e55 | ||
|
|
aa67abad94 | ||
|
|
415b8354f4 | ||
|
|
51c596a21f | ||
|
|
5816a594fd | ||
|
|
f4d76aa360 | ||
|
|
56835f5f09 | ||
|
|
255ad7cac5 | ||
|
|
8c097a81ea | ||
|
|
3dc92b42fe | ||
|
|
1ed5a37280 | ||
|
|
cb36f2844e | ||
|
|
7b93b55b78 | ||
|
|
6837196e44 | ||
|
|
31680f3b59 | ||
|
|
91d9c9b4d5 | ||
|
|
d18d8cf0ea | ||
|
|
123909cdac | ||
|
|
f0eaccc6ac | ||
|
|
1d66ef2f2d | ||
|
|
8aefae3aff | ||
|
|
514558796b | ||
|
|
b00ca54707 | ||
|
|
0dbe507b26 | ||
|
|
4b70bea21f | ||
|
|
096a051b99 | ||
|
|
a3ca1ff1e9 | ||
|
|
28eabfe477 | ||
|
|
0a68b0515c | ||
|
|
566c0c8f72 | ||
|
|
69f0ea5199 | ||
|
|
3fea958faf | ||
|
|
333f2cb472 | ||
|
|
3d1acc65af | ||
|
|
5efc2a09e5 | ||
|
|
9dd887f2ff | ||
|
|
bfaf9e690d | ||
|
|
beebc1743a | ||
|
|
5ba592ff47 | ||
|
|
bb4db022f0 | ||
|
|
5907de90c1 | ||
|
|
25d8a9d1f8 | ||
|
|
b44e8199b5 | ||
|
|
91449d0c8b | ||
|
|
b228f177f3 | ||
|
|
9a40a2d4f2 | ||
|
|
cdc3dabba1 | ||
|
|
40ba2cbe79 | ||
|
|
7ede8af193 | ||
|
|
a835b8cc8f | ||
|
|
e54b47b857 | ||
|
|
c93c25829b | ||
|
|
1cdf8b29a5 | ||
|
|
b6eacf0771 | ||
|
|
4ea23c1bd8 | ||
|
|
70398820c0 | ||
|
|
04abc4d12f | ||
|
|
8491f46045 | ||
|
|
4aa909e587 | ||
|
|
9f5e4b5812 | ||
|
|
06eb5abf11 | ||
|
|
29e6e3b374 | ||
|
|
2fc97f83f4 | ||
|
|
1e761b4c7d | ||
|
|
a2ca136f1f | ||
|
|
94322664f2 | ||
|
|
cbd5c6d3e9 | ||
|
|
0428dc8381 | ||
|
|
01e7b0da46 | ||
|
|
b37dadcc05 | ||
|
|
8e6151fe65 | ||
|
|
9b346c0937 | ||
|
|
b09f80ca30 | ||
|
|
0e0af82290 | ||
|
|
c69b09cbff | ||
|
|
b8ba6cd970 | ||
|
|
004e30d6be | ||
|
|
b084efdd06 | ||
|
|
d377d8462f | ||
|
|
2bbec9f9b1 | ||
|
|
b326908487 | ||
|
|
b21156a886 | ||
|
|
85138b0bc8 | ||
|
|
418356f383 | ||
|
|
c6d7ae9d27 | ||
|
|
0d3ab37eb7 | ||
|
|
e0df0257d1 | ||
|
|
d23c1e8f92 | ||
|
|
670a40e67b | ||
|
|
3bbc6cbab1 | ||
|
|
15de53a22d | ||
|
|
59a44d6973 | ||
|
|
7561692352 | ||
|
|
f50a633f87 | ||
|
|
50f07e7b11 | ||
|
|
660623181a | ||
|
|
03ee3aaf40 | ||
|
|
ad295946c0 | ||
|
|
c28446dad0 | ||
|
|
ff9d1f2728 | ||
|
|
0b7cb2a1a8 | ||
|
|
92af01b0cb | ||
|
|
dc26d0d7ba | ||
|
|
2fe67edab3 | ||
|
|
167e43cbef | ||
|
|
d8cb407c25 | ||
|
|
9452afe3f7 | ||
|
|
8dc6d9ce7d | ||
|
|
bf4b8a318d | ||
|
|
20f6022050 | ||
|
|
65e6c737cd | ||
|
|
6d2572e347 | ||
|
|
52a35197c7 | ||
|
|
2b3a41db3e | ||
|
|
09c1459411 | ||
|
|
98f18b89da | ||
|
|
4249db4330 | ||
|
|
a7f46500ed | ||
|
|
c73fa2b0eb | ||
|
|
db4c4b971a | ||
|
|
e9ccc98ada | ||
|
|
11d6ec33b3 | ||
|
|
c3b6f4ca85 | ||
|
|
d37405a307 | ||
|
|
d7a9841328 | ||
|
|
cf3af42477 | ||
|
|
ad8e6e7d67 | ||
|
|
ae41ab101a | ||
|
|
f4881e7c6f | ||
|
|
94ef4380d4 | ||
|
|
7ebe1b8c14 | ||
|
|
79020bba28 | ||
|
|
95c250ebcc | ||
|
|
bfb14614cc | ||
|
|
12299d4810 | ||
|
|
c67a9d4e84 | ||
|
|
af422c7cd4 | ||
|
|
51bdecea53 | ||
|
|
0f505c6d7b | ||
|
|
ae72f10448 | ||
|
|
9f34153c84 | ||
|
|
c04cf6c5cb | ||
|
|
5112736385 | ||
|
|
11eaa6d77c | ||
|
|
6024903bde | ||
|
|
e96928588e | ||
|
|
94e38d4cdd | ||
|
|
d15921b3f2 | ||
|
|
6b8ca7217b | ||
|
|
2811a470aa | ||
|
|
1fccdd8cda | ||
|
|
33b421014d | ||
|
|
3c6e2b89a4 | ||
|
|
439658fcf1 | ||
|
|
c9acb1466c | ||
|
|
addd27faf8 | ||
|
|
5605bdc7a3 | ||
|
|
f1df7e9bdc | ||
|
|
4765656f87 | ||
|
|
c3a00b93c2 | ||
|
|
e5d2ba7835 | ||
|
|
8c1b119e84 | ||
|
|
593a54e6cb | ||
|
|
95fa7083a9 | ||
|
|
98e08df807 | ||
|
|
01da36f984 | ||
|
|
730bef2920 | ||
|
|
ae155c78c2 | ||
|
|
79ce1ddaef | ||
|
|
714822c93c | ||
|
|
9742216479 | ||
|
|
fb3787173f | ||
|
|
f720183281 | ||
|
|
4bc84acac6 | ||
|
|
14a8086677 | ||
|
|
686b96222e | ||
|
|
0962f37f55 | ||
|
|
2c17551b27 | ||
|
|
3f5a5e35c2 | ||
|
|
07c6d37ff0 | ||
|
|
916ea7acc0 | ||
|
|
eae7e865a5 | ||
|
|
776e5054aa | ||
|
|
bf2b8b280e | ||
|
|
7aa7027a34 | ||
|
|
d4713b2091 | ||
|
|
9b97be4aa4 | ||
|
|
621be11395 | ||
|
|
05af6df536 | ||
|
|
b7bda2355d | ||
|
|
b0976031ae | ||
|
|
d099f30a34 | ||
|
|
699be03bb7 | ||
|
|
ccf93cfdcd | ||
|
|
47358a8229 | ||
|
|
9856c2cfc4 | ||
|
|
df9669ba2c | ||
|
|
f970454cb4 | ||
|
|
69678574d4 | ||
|
|
53cab5074b | ||
|
|
c6c65b1799 | ||
|
|
bb9f64027a | ||
|
|
5f52fc4338 | ||
|
|
82e30c8519 | ||
|
|
6e2aa6b4b8 | ||
|
|
a1681cdd63 | ||
|
|
611a3ce138 | ||
|
|
396d933e34 | ||
|
|
0858e0a21e | ||
|
|
704e32b0dc | ||
|
|
f95cc960e1 | ||
|
|
1b00f512c1 | ||
|
|
d9ec66695c | ||
|
|
1a2578a4b7 | ||
|
|
e9ba0d2ce8 | ||
|
|
f714e306da | ||
|
|
6a4b641250 | ||
|
|
8d96844312 | ||
|
|
b7145debfb | ||
|
|
990dbb6c06 | ||
|
|
c6a66a8fac | ||
|
|
65ba67dedc | ||
|
|
824db78234 | ||
|
|
2fdf108198 | ||
|
|
63092d7d1a | ||
|
|
964d437c7a | ||
|
|
d49c556291 | ||
|
|
d6b2748293 | ||
|
|
e3a5831d64 | ||
|
|
08d5174d02 | ||
|
|
dacb926db5 | ||
|
|
c0e9173c9b | ||
|
|
f46308bbdb | ||
|
|
331db99a4e | ||
|
|
d84f32f27d | ||
|
|
ac28a44b92 | ||
|
|
003a41b920 | ||
|
|
bc4c693525 | ||
|
|
d4ba837641 | ||
|
|
4a1592dd92 | ||
|
|
ac145a0b65 | ||
|
|
50c00dcae6 | ||
|
|
95d964140b | ||
|
|
0a73a7eb52 | ||
|
|
0aecb24930 | ||
|
|
904f5303a6 | ||
|
|
585761e931 | ||
|
|
4d53797cba | ||
|
|
803677e884 | ||
|
|
17617c58d7 | ||
|
|
96d03ec13d | ||
|
|
4726afbebf | ||
|
|
705d1e4cc0 | ||
|
|
5b3f348bbb | ||
|
|
aa81c75bef | ||
|
|
6b889814ad | ||
|
|
1ade11f00b | ||
|
|
97c937e554 | ||
|
|
b25520cf18 | ||
|
|
c6b46d75cb | ||
|
|
a554352ae0 | ||
|
|
a7fd03f1b7 | ||
|
|
ef96116c3f | ||
|
|
01d10aebca | ||
|
|
7edc50865f | ||
|
|
a881d3fd81 | ||
|
|
5e9d2323e3 | ||
|
|
a98b5dd86e | ||
|
|
a250cf7ebe | ||
|
|
1c5ca0f022 | ||
|
|
ca3dee7b37 | ||
|
|
59d47955a0 | ||
|
|
d05ca3db0b | ||
|
|
87678eff98 | ||
|
|
c1f54b14d0 | ||
|
|
4c487d666f | ||
|
|
655a300acb | ||
|
|
8d61d66d79 | ||
|
|
13f391fe4a | ||
|
|
660a5d910a | ||
|
|
a58c5b372c | ||
|
|
ec55fdb8d8 | ||
|
|
19d670826d | ||
|
|
7033bd19fe | ||
|
|
aea75b9e52 | ||
|
|
eaf68fe105 | ||
|
|
a27237286c | ||
|
|
502ca6b612 | ||
|
|
a9451a5413 | ||
|
|
ee54047b94 | ||
|
|
a2e2c0a41a | ||
|
|
8e7bfba0ab | ||
|
|
6d280be081 | ||
|
|
877c6635e4 | ||
|
|
ca0be181bc | ||
|
|
ba2cf8015b | ||
|
|
f1f4ed97ca | ||
|
|
24785d28e6 | ||
|
|
0076205da6 | ||
|
|
6235b50c9d | ||
|
|
5cca19bb83 | ||
|
|
1b7056853b | ||
|
|
d1bc519599 | ||
|
|
bcae1dce7b | ||
|
|
e87927564b | ||
|
|
01b7ad4a3f | ||
|
|
235d38752c | ||
|
|
fd30edf2bb | ||
|
|
0a2be142ff | ||
|
|
33614d8ff0 | ||
|
|
3dce1d32f9 | ||
|
|
4a62199682 | ||
|
|
68be56240d | ||
|
|
19ccb27dbd | ||
|
|
a7e2bf071b | ||
|
|
e05a6e976e | ||
|
|
c7485e3fd4 | ||
|
|
80ad1a68e7 | ||
|
|
f4440d43de | ||
|
|
201a5c06fe | ||
|
|
6bd21b8995 | ||
|
|
ce66fbb595 | ||
|
|
226ebdd935 | ||
|
|
fcc400b20d | ||
|
|
d2c908b1ab | ||
|
|
976f9b2590 | ||
|
|
4d175a466e | ||
|
|
986ff7d1b1 | ||
|
|
bc719feb5d | ||
|
|
fe41612738 | ||
|
|
91f36ae42a | ||
|
|
2750981b64 | ||
|
|
268683f8ea | ||
|
|
5737165f37 | ||
|
|
a70116ed4d | ||
|
|
31d2296777 | ||
|
|
b859d7f3a5 | ||
|
|
75714ae84a | ||
|
|
be221c5a3e | ||
|
|
064ff34866 | ||
|
|
9807d6bb2c | ||
|
|
8321425e62 | ||
|
|
ba3223a9a3 | ||
|
|
a266997b69 | ||
|
|
314983b139 | ||
|
|
8896b0ae7c | ||
|
|
b6aa922c09 | ||
|
|
95732f4170 | ||
|
|
b6702d1d32 | ||
|
|
c3679910a4 | ||
|
|
624dfdf6ac | ||
|
|
83e0cf75c5 | ||
|
|
19a2e06c0b | ||
|
|
7fe23ad8c9 | ||
|
|
fd9ec438dc | ||
|
|
7cab973cbf | ||
|
|
9e3e5038f7 | ||
|
|
7952712c5e | ||
|
|
d754a2e295 | ||
|
|
768b4e5e2b | ||
|
|
b1ae09c003 | ||
|
|
9408e858cd | ||
|
|
0995164110 | ||
|
|
b3a042a63b | ||
|
|
c2ac70ff10 | ||
|
|
e7b57d8dee | ||
|
|
5bc8b02b0f | ||
|
|
d6f96b2c53 | ||
|
|
6c131b5648 | ||
|
|
27a4a502d7 | ||
|
|
f0a25ea485 | ||
|
|
4ca6e61726 | ||
|
|
e26ac6ed00 | ||
|
|
f341edb975 | ||
|
|
fdad24aaac | ||
|
|
3a676f98db | ||
|
|
8498cb17e7 | ||
|
|
36098f6b78 | ||
|
|
34667c69d3 | ||
|
|
756fef53f9 | ||
|
|
2ffe938206 | ||
|
|
d521699305 | ||
|
|
5ad23405b7 | ||
|
|
04cdd807ba | ||
|
|
646ed50f37 | ||
|
|
1b0ba0fa68 | ||
|
|
21c5c919ea | ||
|
|
d9f6f0847d | ||
|
|
59c897b53e | ||
|
|
77b32e94f1 | ||
|
|
331159a3d8 | ||
|
|
23510c80be | ||
|
|
ef497beaea | ||
|
|
6ea450a4e1 | ||
|
|
f64786543d | ||
|
|
c60e00c77f | ||
|
|
7e502beafc | ||
|
|
aa6c30ade6 | ||
|
|
0b8dfa6878 | ||
|
|
d7bee0c9e0 | ||
|
|
350c2241c4 | ||
|
|
cfa591838f | ||
|
|
ac1ac0debe | ||
|
|
54bc60b08f | ||
|
|
f8de46cea9 | ||
|
|
6fc2a604b4 | ||
|
|
1e410feed1 | ||
|
|
948e67a2b7 | ||
|
|
0f820e4498 | ||
|
|
c7bc1b10e2 | ||
|
|
ef04324f9d | ||
|
|
2b86865b9b | ||
|
|
f009625c1a | ||
|
|
a991c76842 | ||
|
|
d02ea3244a | ||
|
|
5a9f87ac63 | ||
|
|
9bfd0cb63c | ||
|
|
3f4c19abbc | ||
|
|
cf26635e3c | ||
|
|
e540862401 | ||
|
|
263be72c11 | ||
|
|
b63c04df4f | ||
|
|
784208dd87 | ||
|
|
5cb6c234c4 | ||
|
|
7972a023ed | ||
|
|
6cf92c2a90 | ||
|
|
50835c878e | ||
|
|
b727e5ca1c | ||
|
|
5773d1fd8d | ||
|
|
530226dbe8 | ||
|
|
4882a18bf9 | ||
|
|
70f3018e67 | ||
|
|
08c10c1f9b | ||
|
|
7945eba386 | ||
|
|
b6f4e124ce | ||
|
|
f01e101447 | ||
|
|
980b81f009 | ||
|
|
10f0522a6b | ||
|
|
2bc9cdafb2 | ||
|
|
e643a2ea32 | ||
|
|
b456afa2ac | ||
|
|
50b55c3f31 | ||
|
|
88b754e38c | ||
|
|
b3868a77f1 | ||
|
|
16d5d7b318 | ||
|
|
dbef33fe00 | ||
|
|
8c11ea69a0 | ||
|
|
fa0ee035e9 | ||
|
|
010dbf82f3 | ||
|
|
9a9d27b862 | ||
|
|
0afd3fc5e1 | ||
|
|
f5ebfcca5a | ||
|
|
6f33115187 | ||
|
|
58c65ab48c | ||
|
|
42294ff695 | ||
|
|
ed59f74cb8 | ||
|
|
d91dee141d | ||
|
|
2b4438720c | ||
|
|
758e532a6a | ||
|
|
d4ca6617de | ||
|
|
67fe7f8d3b | ||
|
|
f6040c5f06 | ||
|
|
324c384fdf | ||
|
|
de70ee117c | ||
|
|
85844c8ed4 | ||
|
|
101dc850a2 | ||
|
|
d88c7c76c6 | ||
|
|
1fea5f53bd | ||
|
|
ca13109a20 | ||
|
|
5650de0627 | ||
|
|
999ee981f7 | ||
|
|
ee6e78927f | ||
|
|
9dd9ae7a2f | ||
|
|
cbd178dab2 | ||
|
|
e34a28ee53 | ||
|
|
ffcc55b42b | ||
|
|
72028a9a2e | ||
|
|
d453aa849a | ||
|
|
9d0cd961b4 | ||
|
|
900922760a | ||
|
|
af462fa086 | ||
|
|
bc728d3a31 | ||
|
|
8085e24dcd | ||
|
|
d351ed0173 | ||
|
|
3ebc5b136c | ||
|
|
a1d02ca689 | ||
|
|
95546e0a7b | ||
|
|
103991746b | ||
|
|
7f0e5dd335 | ||
|
|
fa2fc63b7c | ||
|
|
4ad915761b | ||
|
|
d6a29c1ad5 | ||
|
|
3d439c8c01 | ||
|
|
af00374cb0 | ||
|
|
0bb46aaef4 | ||
|
|
00377e91b4 | ||
|
|
477448114a | ||
|
|
91da1c3f8b | ||
|
|
eddf99ddd0 | ||
|
|
f27580b5ae | ||
|
|
b2d35751b4 | ||
|
|
18df06a7ce | ||
|
|
0bee3c9db0 | ||
|
|
e3ba28d767 | ||
|
|
1f9c2cd181 | ||
|
|
ea2b12a548 | ||
|
|
c9f4db2a4f | ||
|
|
1e5154c901 | ||
|
|
17dc41279c | ||
|
|
cb4747aed2 | ||
|
|
ce8d03ddce | ||
|
|
366c7e2b91 | ||
|
|
6c5fb5e22b | ||
|
|
4854bdd02f | ||
|
|
d7ecdc9b07 | ||
|
|
c8d30ae801 | ||
|
|
9eebe82b34 | ||
|
|
b3915ff8fd | ||
|
|
805c946b33 | ||
|
|
8bc1949466 | ||
|
|
a6689b1035 | ||
|
|
f63910d355 | ||
|
|
98c8521057 | ||
|
|
57139295b5 | ||
|
|
79d4dc1646 | ||
|
|
1760624954 | ||
|
|
ecf9c173c4 | ||
|
|
b0e863dbbb | ||
|
|
8f8859a5f5 | ||
|
|
9429657a2b | ||
|
|
2b0b1e23eb | ||
|
|
dd55baf148 | ||
|
|
4542157192 | ||
|
|
9e47172d69 | ||
|
|
2ad921f99e | ||
|
|
a840969512 | ||
|
|
67fdfdf584 | ||
|
|
abef8e376c | ||
|
|
8a85077e70 | ||
|
|
b3ac296cac | ||
|
|
b2db733c83 | ||
|
|
92dfcf3b6d | ||
|
|
af554fc3f7 | ||
|
|
02621eee74 | ||
|
|
8105f51603 | ||
|
|
c40ac27d71 | ||
|
|
d33c930f26 | ||
|
|
eb0fc0fc80 | ||
|
|
a6563543a3 | ||
|
|
40b20c5595 | ||
|
|
1ebbfffd2a | ||
|
|
8954857481 | ||
|
|
24d3e09618 | ||
|
|
d92ddc4c7a | ||
|
|
c8b7580830 | ||
|
|
a9d0c052bc | ||
|
|
ad0b349a3f | ||
|
|
9da51a8d85 | ||
|
|
814f21a50e | ||
|
|
092669fb9d | ||
|
|
3789e1339b | ||
|
|
a1490d07b4 | ||
|
|
08144382b8 | ||
|
|
cb90e1388f | ||
|
|
5e1038dc67 | ||
|
|
b117f085ce | ||
|
|
c7dc908aa7 | ||
|
|
5e852ebb5d | ||
|
|
097786c62d | ||
|
|
baeced32c3 | ||
|
|
2f4e4343c2 | ||
|
|
9fd6d7318e | ||
|
|
fd2be958ba | ||
|
|
719889b27a | ||
|
|
faaa1050da | ||
|
|
27aed5cd7e | ||
|
|
aa327643f5 | ||
|
|
3a481df45d | ||
|
|
ac1e405c34 | ||
|
|
df7d5d2cb1 | ||
|
|
2d90cf48b3 | ||
|
|
2fd6c962d2 | ||
|
|
1226593f3b | ||
|
|
25569686aa | ||
|
|
61b573bb89 | ||
|
|
4932473b3f | ||
|
|
a368c00302 | ||
|
|
06bbcf4c9f | ||
|
|
edf66deb96 | ||
|
|
075f6b9412 | ||
|
|
05b202caa6 | ||
|
|
aaac080dfb | ||
|
|
14a20c703b | ||
|
|
6cfba2c225 | ||
|
|
29e9dd44e9 | ||
|
|
00729a87ff | ||
|
|
ca47e3489c | ||
|
|
abde1a1c39 | ||
|
|
d42b5b7733 | ||
|
|
4e51140506 | ||
|
|
08ed99d20c | ||
|
|
206baf7d80 | ||
|
|
4ac7a4fdab | ||
|
|
283e8045d8 | ||
|
|
8637f4a70d | ||
|
|
6454a7a453 | ||
|
|
6645fd5d8a | ||
|
|
4a768682ea | ||
|
|
dad4f30597 | ||
|
|
b88b1cbbdb | ||
|
|
818e4d86bf | ||
|
|
1b81de01b4 | ||
|
|
b09f9e8c12 | ||
|
|
4b1177e07e | ||
|
|
bf9aa2c388 | ||
|
|
b2c2fedbc1 | ||
|
|
5eab5b1135 | ||
|
|
a3e6e34bdc | ||
|
|
2642e22824 | ||
|
|
152b2c6a00 | ||
|
|
a964884077 | ||
|
|
97a374909f | ||
|
|
0d7400fff4 | ||
|
|
5093349732 | ||
|
|
b3e3dff560 | ||
|
|
d4db87e017 | ||
|
|
dfe1a42b74 | ||
|
|
a1e73ffe93 | ||
|
|
72f6ee8e8b | ||
|
|
cb1539463e | ||
|
|
8591b9f0c8 | ||
|
|
cc34435b9e | ||
|
|
5c4075228e | ||
|
|
7b459336ab | ||
|
|
54aa05ae23 | ||
|
|
cc8afffaa9 | ||
|
|
1e23f7442c | ||
|
|
38a737c913 | ||
|
|
723d60d24d | ||
|
|
4a57805864 | ||
|
|
ac17bfbf4f | ||
|
|
328cb5e9ca | ||
|
|
2598895d70 | ||
|
|
f0e1ac6e4b | ||
|
|
86b4973866 | ||
|
|
6fc2be25ba | ||
|
|
fdeb9355a5 | ||
|
|
4ee7c3741f | ||
|
|
faf7b830c9 | ||
|
|
0ad8fcf834 | ||
|
|
8cd20f1914 | ||
|
|
a8f707eee2 | ||
|
|
3b05d680c8 | ||
|
|
b5e7c6406a | ||
|
|
00724fdff4 | ||
|
|
9eb5993833 | ||
|
|
f714d1ab28 | ||
|
|
2560090a68 | ||
|
|
f5a92fcfc5 | ||
|
|
5c371133a0 | ||
|
|
aec749fdb6 | ||
|
|
dcc9d20cca | ||
|
|
d590ab003f | ||
|
|
a3c52445ee | ||
|
|
be3fcd90e2 | ||
|
|
26aa336450 | ||
|
|
65972d9c0c | ||
|
|
d13f47ec0b | ||
|
|
1e36bc98b9 | ||
|
|
16dd86e732 | ||
|
|
c52e6d1cc8 | ||
|
|
4cd75c9753 | ||
|
|
5930813df9 | ||
|
|
353dc79aa9 | ||
|
|
e043797a82 | ||
|
|
8922f0cdf3 | ||
|
|
beceacc3c5 | ||
|
|
391e062c3d | ||
|
|
dab1a2889f | ||
|
|
ee29f27ed6 | ||
|
|
ad23ba6a1b | ||
|
|
fc50d374e8 | ||
|
|
28795e0706 | ||
|
|
eba0aaf3c2 | ||
|
|
144ff15795 | ||
|
|
55f63b59d4 | ||
|
|
2cf351aaf3 | ||
|
|
663d9daef5 | ||
|
|
2d3e741f01 | ||
|
|
af5eef3e59 | ||
|
|
b704545abb | ||
|
|
2b082f1808 | ||
|
|
ddab71844e | ||
|
|
2b36a7e318 | ||
|
|
aa8165cfbb | ||
|
|
be894664ef | ||
|
|
5cabd49bec | ||
|
|
103db9a025 | ||
|
|
9736e0d13f | ||
|
|
1c46b287d7 | ||
|
|
5b2b5285ed | ||
|
|
b9c2868dff | ||
|
|
b163f8fcf4 | ||
|
|
ba352522d4 | ||
|
|
b41cdfb683 | ||
|
|
04c9626c8c | ||
|
|
87b78b5ec5 | ||
|
|
8a166b04f9 | ||
|
|
d3ffdbf300 | ||
|
|
79e6034656 | ||
|
|
646ca5e3b3 | ||
|
|
50dcd04816 | ||
|
|
9ebd34daba | ||
|
|
2dfa9ac13c | ||
|
|
c0d729bcd9 | ||
|
|
7eb38f7e5e | ||
|
|
d25c76698c | ||
|
|
9975788f57 | ||
|
|
e5f6ce9724 | ||
|
|
dcedc1c652 | ||
|
|
a7fcd1263b | ||
|
|
9c41ab10ff | ||
|
|
f9af659153 | ||
|
|
2d31314eb4 | ||
|
|
06a0264f2b | ||
|
|
315351b573 | ||
|
|
a605ae20a7 | ||
|
|
5765bb4a4f | ||
|
|
8393205489 | ||
|
|
f1993766ee | ||
|
|
c679a6aab2 | ||
|
|
0e870ab47c | ||
|
|
64d22bbd89 | ||
|
|
e2def42932 | ||
|
|
43ac867747 | ||
|
|
76a34efe36 | ||
|
|
ae92807b5c | ||
|
|
453ea0dbcc | ||
|
|
432f45484e | ||
|
|
caa6fe859c | ||
|
|
b208f978db | ||
|
|
49a60fa67f | ||
|
|
1744205bf1 | ||
|
|
beca37e102 | ||
|
|
28f4e1c068 | ||
|
|
4d2b6d6d6e | ||
|
|
ddb4cb853a | ||
|
|
91fe16344e | ||
|
|
7e52124d8a | ||
|
|
71c29aa367 | ||
|
|
c0b20f88a5 | ||
|
|
94565d0d39 | ||
|
|
004e1101e7 | ||
|
|
62320a361e | ||
|
|
879797e7c5 | ||
|
|
f51b63fc37 | ||
|
|
4d6f399131 | ||
|
|
8f0ac0aaea | ||
|
|
f05c019757 | ||
|
|
befefd449c | ||
|
|
69628736b2 | ||
|
|
483a829d0e | ||
|
|
8c807f00bb | ||
|
|
bc60855b93 | ||
|
|
4d5b330b77 | ||
|
|
296bf9dc1d | ||
|
|
dba7f9968b | ||
|
|
7adc3c2ef5 | ||
|
|
8e2f28955e | ||
|
|
5e88bd231d | ||
|
|
e705471946 | ||
|
|
cdae61e155 | ||
|
|
ffb0cf1a2c | ||
|
|
9f628309e9 | ||
|
|
c296a8cf82 | ||
|
|
c9b3987d33 | ||
|
|
768a51cb9b | ||
|
|
2d8470b254 | ||
|
|
8d00e1d929 | ||
|
|
2e0372d247 | ||
|
|
bafb6507c4 | ||
|
|
b6b589b1f0 | ||
|
|
95097d1f51 | ||
|
|
6b98bfe9b7 | ||
|
|
7a67771e46 | ||
|
|
bfe18573f3 | ||
|
|
f126120421 | ||
|
|
af505b346c | ||
|
|
77b4689ac8 | ||
|
|
f3e2dcd342 | ||
|
|
8b50973411 | ||
|
|
36a44575c7 | ||
|
|
1e287de589 | ||
|
|
4a4e6bc952 | ||
|
|
deeabbca12 | ||
|
|
8296e7010c | ||
|
|
059fb16a35 | ||
|
|
8d9825ac95 | ||
|
|
0eadd51ff3 | ||
|
|
ab0fd461ed | ||
|
|
53043d1978 | ||
|
|
aa86e95650 | ||
|
|
cd8bd9038e | ||
|
|
72c7f118a0 | ||
|
|
3486327e78 | ||
|
|
e5221bded7 | ||
|
|
7c697d4ded | ||
|
|
d1a0f5a4e1 | ||
|
|
6b99033164 | ||
|
|
c891e38f2b | ||
|
|
0e51baeb10 | ||
|
|
371819d26e | ||
|
|
b3bcbfa803 | ||
|
|
57316e1875 | ||
|
|
7ab4eecb18 | ||
|
|
a0a5ccc445 | ||
|
|
8a246b831b | ||
|
|
db8d4dc990 | ||
|
|
05b2d8a2bf | ||
|
|
57118691d8 | ||
|
|
2b456cbdeb | ||
|
|
7b6cd0cb9c | ||
|
|
01506a2ad3 | ||
|
|
04b65eae3c | ||
|
|
d953226459 | ||
|
|
3348283b05 | ||
|
|
b58e412982 | ||
|
|
7209b2e71a | ||
|
|
d8eb6e59fa | ||
|
|
e5a453a1f3 | ||
|
|
44c9358ac1 | ||
|
|
0f1894037d | ||
|
|
dcb442f1df | ||
|
|
027cd44944 | ||
|
|
b18563c3bd | ||
|
|
f294aafbf5 | ||
|
|
5af449fcf9 | ||
|
|
1482a5c78e | ||
|
|
a800152a43 | ||
|
|
0aab0fa40c | ||
|
|
68b62e6d90 | ||
|
|
c4bc5356d1 | ||
|
|
c2275009a8 | ||
|
|
fa8e95819b | ||
|
|
6a580176ea | ||
|
|
26b7733371 | ||
|
|
a55691ea7f | ||
|
|
78d8a5f790 | ||
|
|
3ed9bdf38c | ||
|
|
a26176a9da | ||
|
|
ff78e02933 | ||
|
|
53182a1831 | ||
|
|
33aea106d1 | ||
|
|
5aceea7280 | ||
|
|
7fe7e1da44 | ||
|
|
958abecb23 | ||
|
|
870a3ea5cc | ||
|
|
dd060f1044 | ||
|
|
a882e9e478 | ||
|
|
11798ae018 | ||
|
|
d9b588fe59 | ||
|
|
f20fefffa0 | ||
|
|
60232ca85b | ||
|
|
1c4e809f84 | ||
|
|
1d3ca5743b | ||
|
|
0e0c585aee | ||
|
|
b2bcac8447 | ||
|
|
7de102320c | ||
|
|
81224cbd44 | ||
|
|
5fa24163f5 | ||
|
|
dad2cad525 | ||
|
|
055426c24e | ||
|
|
5effd62599 | ||
|
|
eb8f7666df | ||
|
|
58d6abe15d | ||
|
|
488d149b16 | ||
|
|
286e8849b5 | ||
|
|
7644c097b4 | ||
|
|
323274ecee | ||
|
|
5379400ab3 | ||
|
|
4735835aab | ||
|
|
54df6f5b9c | ||
|
|
390373cb9b | ||
|
|
ecd2118941 | ||
|
|
7aebd407c0 | ||
|
|
9ac7f90cd1 | ||
|
|
6c78932d1d | ||
|
|
ead057d6c0 | ||
|
|
5d13a22499 | ||
|
|
5b7cd49b9c | ||
|
|
bfe8548041 | ||
|
|
e2ee8de739 | ||
|
|
71e1b27d68 | ||
|
|
f3fede99d3 | ||
|
|
6b84a2907f | ||
|
|
b2376c41d1 | ||
|
|
7de5e88dfd | ||
|
|
9f892e2e47 | ||
|
|
56f2a77c72 | ||
|
|
40068dfedb | ||
|
|
0b9e4f68c7 | ||
|
|
605f53a602 | ||
|
|
282198a81c | ||
|
|
b3cc761d8c | ||
|
|
b7f180ab3f | ||
|
|
4f43e59643 | ||
|
|
93ed61a623 | ||
|
|
f117e66f53 | ||
|
|
08a27abbdc | ||
|
|
d23c33a47f | ||
|
|
dd42a79234 | ||
|
|
23256466e7 | ||
|
|
ea58be2705 | ||
|
|
c1e938ccda | ||
|
|
9e9aacc102 | ||
|
|
02c38f7396 | ||
|
|
776a8e43cd | ||
|
|
8ac5fce06b | ||
|
|
226f907726 | ||
|
|
27e80b47ae | ||
|
|
d5bad0ed45 | ||
|
|
ffda564f05 | ||
|
|
2bc5756326 | ||
|
|
094dc18e86 | ||
|
|
2d6408a363 | ||
|
|
b43d578bb0 | ||
|
|
44a37d1120 | ||
|
|
8867f8ddc1 | ||
|
|
d06eb09e6e | ||
|
|
fd9814df3c | ||
|
|
d4dbf672ba | ||
|
|
6f6e2f1541 | ||
|
|
8ef07503e4 | ||
|
|
42c1d9a2ef | ||
|
|
b072a5343b | ||
|
|
a20abfc3c7 | ||
|
|
9804443a82 | ||
|
|
9fa9085b6c | ||
|
|
bcf01bd9a8 | ||
|
|
0b4ce6e16c | ||
|
|
8ed2bbfa2d | ||
|
|
befab6939a | ||
|
|
f65d6f6e75 | ||
|
|
f67a4eb097 | ||
|
|
3fc116144d | ||
|
|
d3baade447 | ||
|
|
35e476c473 | ||
|
|
f4f6dad060 | ||
|
|
d7c0ae2256 | ||
|
|
c1c4a3844e | ||
|
|
a9ebefdc37 | ||
|
|
2223c16d00 | ||
|
|
df47d154f9 | ||
|
|
3979801a86 | ||
|
|
6ec4907271 | ||
|
|
c5b4d6bced | ||
|
|
5a8838aec7 | ||
|
|
1b491e9e15 | ||
|
|
a03528406f | ||
|
|
9d3e435162 | ||
|
|
61971f3949 | ||
|
|
619484a4fd | ||
|
|
e11295a042 | ||
|
|
1775d86af2 | ||
|
|
fec0439479 | ||
|
|
eac7d71199 | ||
|
|
03d2d5dc5d | ||
|
|
dd469944c9 | ||
|
|
156eeb90b9 | ||
|
|
68b8b29089 | ||
|
|
79cfa6d0d8 | ||
|
|
af6e7f5ec6 | ||
|
|
7106ff6923 | ||
|
|
8dc766c0e2 | ||
|
|
1b2cfc9857 | ||
|
|
b8a4752636 | ||
|
|
2ec4449558 | ||
|
|
9e3be765d0 | ||
|
|
12d7fbb379 | ||
|
|
09b1b1ab94 | ||
|
|
90efd04617 | ||
|
|
21710aeca8 | ||
|
|
e5baa554d4 | ||
|
|
6aba413aa2 | ||
|
|
594bb3278a | ||
|
|
1b66ad4603 | ||
|
|
33a4d5596f | ||
|
|
03e7151c37 | ||
|
|
ead1b2c398 | ||
|
|
ac5e687c8f | ||
|
|
0972c213e4 | ||
|
|
d2da23f5d1 | ||
|
|
014898e019 | ||
|
|
afdb1f66b3 | ||
|
|
5c5779a765 | ||
|
|
4a78521d90 | ||
|
|
a5187728e0 | ||
|
|
b3a91e3d4d | ||
|
|
e2e2f0d454 | ||
|
|
d992000343 | ||
|
|
0be9490ee7 | ||
|
|
77038011c1 | ||
|
|
1340412c99 | ||
|
|
db18f8ce64 | ||
|
|
40cea6d28a | ||
|
|
48ae99283c | ||
|
|
0c6d3fd675 | ||
|
|
b56ea4f637 | ||
|
|
f314607bb6 | ||
|
|
29e23dfdb9 | ||
|
|
2cb89996d2 | ||
|
|
3b86e3e66e | ||
|
|
598e461892 | ||
|
|
0d6109211f | ||
|
|
35700d1452 | ||
|
|
36ad3bff62 | ||
|
|
2087974520 | ||
|
|
e3b8e21b76 | ||
|
|
de5a5d0967 | ||
|
|
cef9c45f68 | ||
|
|
2f83ff73e2 | ||
|
|
50e4d273f4 | ||
|
|
6b932133ea | ||
|
|
bd8b8e8b8b | ||
|
|
a5d6417434 | ||
|
|
0eeaee21fb | ||
|
|
84e8a19bd3 | ||
|
|
31219299d2 | ||
|
|
4e319765ed | ||
|
|
6d40246764 | ||
|
|
779905a8f2 | ||
|
|
9da0437e3d | ||
|
|
50bf770351 | ||
|
|
0f9335d242 | ||
|
|
133dc1d343 | ||
|
|
f075d728c5 | ||
|
|
269135c2c9 | ||
|
|
b294318d0f | ||
|
|
7c6a5a34f5 | ||
|
|
a2251d045c | ||
|
|
fbee48a106 | ||
|
|
d79fb8663e | ||
|
|
b516a0827d | ||
|
|
ab4c9ccfbc | ||
|
|
5a08d1acf9 | ||
|
|
7c3e8071af | ||
|
|
d5fdaf26cf | ||
|
|
d4ccc7909d | ||
|
|
0f080a871a | ||
|
|
0993d12955 | ||
|
|
29b4febfe4 | ||
|
|
7824c6c690 | ||
|
|
cd3f083cde | ||
|
|
a42b48ac57 | ||
|
|
64c38bf32c | ||
|
|
3a1712a130 | ||
|
|
3098221718 | ||
|
|
c40834eda5 | ||
|
|
891a29cac8 | ||
|
|
0461afa8e2 | ||
|
|
a0a869e8f4 | ||
|
|
05efe203d8 | ||
|
|
4b59ebd2f5 | ||
|
|
eb7047c68d | ||
|
|
0115a7f296 | ||
|
|
5144925b82 | ||
|
|
a7e9808177 | ||
|
|
a2b746f2a5 | ||
|
|
d97b19db1d | ||
|
|
23b5298f07 | ||
|
|
4cdfd6a028 | ||
|
|
5ea7008b2b | ||
|
|
7f70035c62 | ||
|
|
d5361d84fa | ||
|
|
5f0a27d355 | ||
|
|
8eda43f68d | ||
|
|
a05450c547 | ||
|
|
5d62954602 | ||
|
|
e9fb645b98 | ||
|
|
c324981a17 | ||
|
|
49a6a18881 | ||
|
|
f6649314a8 | ||
|
|
e7559cc62c | ||
|
|
7b6864b991 | ||
|
|
a2d5b4b2fe | ||
|
|
d116952fe0 | ||
|
|
86e50b1764 | ||
|
|
a306f5a245 | ||
|
|
93b64e7db6 | ||
|
|
79ffa66656 | ||
|
|
69faabb3b4 | ||
|
|
6913aed027 | ||
|
|
0e44cd91d8 | ||
|
|
bfb29d3c14 | ||
|
|
5a0e0263d8 | ||
|
|
e6a562f74a | ||
|
|
87eda5fc2a | ||
|
|
122896f9ab | ||
|
|
8b90643f3a | ||
|
|
12852438a5 | ||
|
|
33e61b1308 | ||
|
|
7e736a34dd | ||
|
|
f33c4db572 | ||
|
|
cabd36253e | ||
|
|
212ac2073e | ||
|
|
627154cb66 | ||
|
|
7ec8b28be3 | ||
|
|
765fa06daa | ||
|
|
d5d818be8b | ||
|
|
ed8b9018c5 | ||
|
|
68c36ce07d | ||
|
|
b5239f06ae | ||
|
|
7bc4fdca27 | ||
|
|
93cdf1bb54 | ||
|
|
554d4134ff | ||
|
|
45c17f2448 | ||
|
|
ce33b031f2 | ||
|
|
fc66a12c14 | ||
|
|
85725b5472 | ||
|
|
c482b7e40f | ||
|
|
80c7d4eb5f | ||
|
|
d3962a7c07 | ||
|
|
2ade5191e6 | ||
|
|
d42e012ec3 | ||
|
|
4e75e59476 | ||
|
|
9f2708247a | ||
|
|
f324af938a | ||
|
|
b5dc54072e | ||
|
|
c61d9e0dec | ||
|
|
c0c775114e | ||
|
|
0ec751826b | ||
|
|
137ddb2ec3 | ||
|
|
e31d8313f2 | ||
|
|
e3887a33b9 | ||
|
|
bd9ebe4a72 | ||
|
|
f9ce0bb9ab | ||
|
|
35e2e58a5c | ||
|
|
a835177597 | ||
|
|
8375209a8e | ||
|
|
55bd7db022 | ||
|
|
c18b6cdb74 | ||
|
|
4832c10973 | ||
|
|
e0b4e16d19 | ||
|
|
67a6c11f6d | ||
|
|
55ed505f94 | ||
|
|
f90574abee | ||
|
|
0b620817a2 | ||
|
|
fcaee33706 | ||
|
|
3d6cef3555 | ||
|
|
ec6c54367b | ||
|
|
f223319909 | ||
|
|
e8b4bcc65d | ||
|
|
dadc96306f | ||
|
|
8a00bf3188 | ||
|
|
aef0324aa7 | ||
|
|
f4f8b910fe | ||
|
|
60cfda5d52 | ||
|
|
f9524aebe9 | ||
|
|
eda8a767ca | ||
|
|
18dabd519a | ||
|
|
e2b567165c | ||
|
|
972b932e5d | ||
|
|
2fd5b4a6e1 | ||
|
|
1d12985b70 | ||
|
|
bd494ed67a | ||
|
|
3468edddf6 | ||
|
|
51890f80c4 | ||
|
|
34ccada909 | ||
|
|
e985c1890b | ||
|
|
ad7b78ec93 | ||
|
|
c9b1071baa | ||
|
|
feeccfedaa | ||
|
|
2ff6e96255 | ||
|
|
39bae749b5 | ||
|
|
9c7bc374bc | ||
|
|
055293db7c | ||
|
|
c9d67999ee | ||
|
|
2831318a95 | ||
|
|
42d0f342b2 | ||
|
|
074434e83c | ||
|
|
a02ef7dce1 | ||
|
|
41def8b28b | ||
|
|
5dcf75f648 | ||
|
|
82e8901db4 | ||
|
|
07034ed7a6 | ||
|
|
24707ab7b9 | ||
|
|
4629362a60 | ||
|
|
bf3eeeb0fc | ||
|
|
32f931ca25 | ||
|
|
8dc70d15db | ||
|
|
3da18c3443 | ||
|
|
bad1d83cee | ||
|
|
c12adea655 | ||
|
|
26aabafe04 | ||
|
|
6174a49aa5 | ||
|
|
2a82e00857 | ||
|
|
9c816045f1 | ||
|
|
b9fd8d2ee7 | ||
|
|
e29fcb45ac | ||
|
|
670c5d0067 | ||
|
|
1352240ec7 | ||
|
|
6d261b828e | ||
|
|
d124716196 | ||
|
|
12b5376cb6 | ||
|
|
ccb1588048 | ||
|
|
3bfae7c530 | ||
|
|
8e0d686c95 | ||
|
|
0673f3ec6c | ||
|
|
d0eb55a0be | ||
|
|
1167917cf6 | ||
|
|
8afcaeeed9 | ||
|
|
ab7f8b3a0f | ||
|
|
0460ce45ff | ||
|
|
f99e8f18bc | ||
|
|
839827c0d7 | ||
|
|
d33a14aab1 | ||
|
|
a56faf503b | ||
|
|
6c696e14f0 | ||
|
|
f87cd5daca | ||
|
|
b9035da981 | ||
|
|
ec9d1812c6 | ||
|
|
dd432ffbde | ||
|
|
10cbc76482 | ||
|
|
56b07386ae | ||
|
|
910b3ad536 | ||
|
|
05cf4cab8e | ||
|
|
6752c3e288 | ||
|
|
faeda2a166 | ||
|
|
3d67e0893a | ||
|
|
69d098e265 | ||
|
|
f32154f380 | ||
|
|
28e4711ee9 | ||
|
|
e0f1b1e48e | ||
|
|
34d3389b23 | ||
|
|
843c68b072 | ||
|
|
59dee5f6da | ||
|
|
63ac183e91 | ||
|
|
53702bfdfe | ||
|
|
d226e7054c | ||
|
|
f663b53ac9 | ||
|
|
1d5f2b64a2 | ||
|
|
7e387f96ab | ||
|
|
b5307f8281 | ||
|
|
21bca95b6a | ||
|
|
86fe765180 | ||
|
|
9020c3290c | ||
|
|
88e25df78c | ||
|
|
0f3d538f6c | ||
|
|
bce5dc4a49 | ||
|
|
c12e203054 | ||
|
|
6827e17d17 | ||
|
|
174c830b2a | ||
|
|
1f6046df97 | ||
|
|
6c1d70df89 | ||
|
|
baf2cf6967 | ||
|
|
091d8275f5 | ||
|
|
9c0c578b03 | ||
|
|
2b6a38bff6 | ||
|
|
c66d7bc43b | ||
|
|
36fede76dc | ||
|
|
4b6eab2637 | ||
|
|
8944615c0f | ||
|
|
27e0054603 | ||
|
|
cb00cd71b1 | ||
|
|
1620c1edda | ||
|
|
74f01c4374 | ||
|
|
0649fe3551 | ||
|
|
b8117759d6 | ||
|
|
21eecb2170 | ||
|
|
f3f4a659e8 | ||
|
|
7d9ecb7bea | ||
|
|
cfa8fd825d | ||
|
|
f16d1a707e | ||
|
|
983aefeab5 | ||
|
|
426e7c48e4 | ||
|
|
7db2367de9 | ||
|
|
0b9e7be8f0 | ||
|
|
392d5ae09a | ||
|
|
b9f361b33c | ||
|
|
eb175eeeb7 | ||
|
|
acb34c5821 | ||
|
|
fc343984fc | ||
|
|
b18733831e | ||
|
|
35be790f59 | ||
|
|
322a3a3bbd | ||
|
|
871fa255fc | ||
|
|
0eb16023b1 | ||
|
|
80e9e200e3 | ||
|
|
2de303e2b5 | ||
|
|
45bf3c8d43 | ||
|
|
fca9147433 | ||
|
|
c38c3c7191 | ||
|
|
96efaca830 | ||
|
|
82791bbb0f | ||
|
|
77e0dfd469 | ||
|
|
e3a128f3c6 | ||
|
|
bb6c31c55a | ||
|
|
b6c19252c9 | ||
|
|
1b00f4ad45 | ||
|
|
9aa01c0201 | ||
|
|
e65199d5fc | ||
|
|
d5543302ea | ||
|
|
9792e447e8 | ||
|
|
b67f2ddb4e | ||
|
|
165003e17f | ||
|
|
24735945fd | ||
|
|
0f4bffca9c | ||
|
|
440a843d06 | ||
|
|
6a68ced6ec | ||
|
|
671426540e | ||
|
|
a19dafe8fa | ||
|
|
a0dc21e17c | ||
|
|
099996ced5 | ||
|
|
6da684258e | ||
|
|
4c07d2fb86 | ||
|
|
0a04cacc96 | ||
|
|
25ee332dc8 | ||
|
|
103af46e70 | ||
|
|
51d799828b | ||
|
|
c99184af21 | ||
|
|
ec1b676ab4 | ||
|
|
aa1d54993f | ||
|
|
ff5364ae5b | ||
|
|
90c0b554aa | ||
|
|
f7eb14ae0e | ||
|
|
d004509176 | ||
|
|
cb95298936 | ||
|
|
c491c2a8ee | ||
|
|
731fbe6f1e | ||
|
|
e63da230d8 | ||
|
|
e696c92a0f | ||
|
|
27556f934e | ||
|
|
9a8ae99fc7 | ||
|
|
0a3b27622d | ||
|
|
7c33c82102 | ||
|
|
0796f49761 | ||
|
|
3341964417 | ||
|
|
541b7a2800 | ||
|
|
aeb5e90678 | ||
|
|
f15b931d4a | ||
|
|
cf4f57182c | ||
|
|
a51f7a31dd | ||
|
|
7f584966ae | ||
|
|
ee4ff45c17 | ||
|
|
329039d095 | ||
|
|
82771cf85c | ||
|
|
34b046355a | ||
|
|
4351d93f23 | ||
|
|
bbd68a5d0d | ||
|
|
2d7efca7cd | ||
|
|
df1f07397f | ||
|
|
9c72eedb75 | ||
|
|
9a3955dc06 | ||
|
|
992faad4d5 | ||
|
|
3ca0130a81 | ||
|
|
705ee7d2f4 | ||
|
|
5dd856af6e | ||
|
|
5b13540bc9 | ||
|
|
e84bc14944 | ||
|
|
caf169cabc | ||
|
|
51a4d25ae3 | ||
|
|
52c7105554 | ||
|
|
cc9d4d3f08 | ||
|
|
1255517c5f | ||
|
|
3e89343b43 | ||
|
|
5b988784df | ||
|
|
a11aacc131 | ||
|
|
470a05130b | ||
|
|
43e23d2520 | ||
|
|
1a79dc16f8 | ||
|
|
ef5b71dc12 | ||
|
|
d4e1b22c82 | ||
|
|
693ca56fb2 | ||
|
|
9c70c65e03 | ||
|
|
4a8553beb1 | ||
|
|
0a97d03a76 | ||
|
|
c1eadb17d9 | ||
|
|
7bfb6a0c65 | ||
|
|
d530dd5900 | ||
|
|
79066c3d3c | ||
|
|
d15f17a03f | ||
|
|
6bdf6bed7b | ||
|
|
5b637bc9fc | ||
|
|
3df04008d6 | ||
|
|
b15e47ded4 | ||
|
|
c4a024e627 | ||
|
|
7248f20938 | ||
|
|
3a1bb83f99 | ||
|
|
7296ce72cb | ||
|
|
b68afb4063 | ||
|
|
bff93e31c8 | ||
|
|
64e9784d1f | ||
|
|
d7b88194e0 | ||
|
|
6e7a536c7a | ||
|
|
c610c44a43 | ||
|
|
a7e4a5e2dc | ||
|
|
c85ded14d1 | ||
|
|
71e36be34b | ||
|
|
aab3c07b87 | ||
|
|
50070bc2ca | ||
|
|
e60b997fd0 | ||
|
|
e8714d52cd | ||
|
|
0a4da26f2d | ||
|
|
eaa85e8651 | ||
|
|
0fd2aca47e | ||
|
|
e8c911e7b4 | ||
|
|
d23079f837 | ||
|
|
fc15f98b80 | ||
|
|
4b0383f197 | ||
|
|
a216a08f09 | ||
|
|
7ae69a9cde | ||
|
|
cfcc8f9fde | ||
|
|
849413c5ea | ||
|
|
4ae63d7ecb | ||
|
|
9ec45ce042 | ||
|
|
3d92b40ad3 | ||
|
|
5b264d66e0 | ||
|
|
c40f3d91d4 | ||
|
|
1a0610f3e4 | ||
|
|
14fb29516a | ||
|
|
0647ce59e7 | ||
|
|
2925a2a2fa | ||
|
|
d6e3464973 | ||
|
|
ca8cb73efa | ||
|
|
69eb35deff | ||
|
|
b8f92ecc52 | ||
|
|
118ca784e8 | ||
|
|
634e81c7e0 | ||
|
|
79074ea4b3 | ||
|
|
39ba6fe56b | ||
|
|
72a20e9928 | ||
|
|
b117f1b474 | ||
|
|
e6c1c3d60b | ||
|
|
9c070431e1 | ||
|
|
f61c75ffcc | ||
|
|
3ae5667684 | ||
|
|
c04cce52ea | ||
|
|
aa663b926a | ||
|
|
1f783b2995 | ||
|
|
5487e02ba2 | ||
|
|
8337bf3c47 | ||
|
|
0153fd8d70 | ||
|
|
f6a8e03b59 | ||
|
|
43645729a0 | ||
|
|
6aaf5d6069 | ||
|
|
e405c42097 | ||
|
|
62cec9f043 | ||
|
|
b79aeb0a0d | ||
|
|
2833169955 | ||
|
|
1f0077b1b5 | ||
|
|
060198c04c | ||
|
|
44856eedb2 | ||
|
|
5110c14d35 | ||
|
|
18be79c906 | ||
|
|
1a4eabc0bb | ||
|
|
6243c0e4bb | ||
|
|
bb8ced525a | ||
|
|
8adf776218 | ||
|
|
2c995977e8 | ||
|
|
0c9df2ed61 | ||
|
|
4ef901e5e3 | ||
|
|
d514d3aec1 | ||
|
|
d4890eade2 | ||
|
|
a81a3be8d6 | ||
|
|
9f507e0146 | ||
|
|
a9bd9b506b | ||
|
|
4478f72492 | ||
|
|
1530bb6a40 | ||
|
|
2e1c661449 | ||
|
|
387a36e730 | ||
|
|
4abac1364a | ||
|
|
64a072e207 | ||
|
|
b0074cbf8b | ||
|
|
33af450034 | ||
|
|
bdca2ac96f | ||
|
|
0796bfadd5 | ||
|
|
d96f314f16 | ||
|
|
1bc206ea8e | ||
|
|
070d28b6d8 | ||
|
|
0f4e147035 |
@@ -14,10 +14,11 @@ MANIFEST.in
|
||||
README.md
|
||||
freqtrade.service
|
||||
freqtrade.egg-info
|
||||
.venv/
|
||||
|
||||
config.json*
|
||||
*.sqlite
|
||||
user_data
|
||||
user_data/
|
||||
*.log
|
||||
|
||||
.vscode
|
||||
|
||||
8
.github/ISSUE_TEMPLATE/bug_report.md
vendored
8
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
about: Create a report to help us improve. Do not use this for strategy assistance.
|
||||
title: ''
|
||||
labels: "Triage Needed"
|
||||
assignees: ''
|
||||
@@ -12,7 +12,11 @@ Have you searched for similar issues before posting it?
|
||||
If you have discovered a bug in the bot, please [search the issue tracker](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue).
|
||||
If it hasn't been reported, please create a new issue.
|
||||
|
||||
Please do not use bug reports to request new features.
|
||||
Has your strategy or configuration been generated by an AI model, and is now not working?
|
||||
This is almost certainly NOT a bug in Freqtrade, but a problem with the code your AI model generated.
|
||||
Please consult the documentation. We'll close such issues and point to the documentation.
|
||||
|
||||
Please do not use the bug report template to request new features.
|
||||
-->
|
||||
|
||||
## Describe your environment
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
2
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
about: Suggest a new feature or idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
9
.github/ISSUE_TEMPLATE/question.md
vendored
9
.github/ISSUE_TEMPLATE/question.md
vendored
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: Question
|
||||
about: Ask a question you could not find an answer in the docs
|
||||
about: Ask a question you could not find an answer in the docs. Use this template if you've got problems with your strategy.
|
||||
title: ''
|
||||
labels: "Question"
|
||||
assignees: ''
|
||||
@@ -8,9 +8,12 @@ assignees: ''
|
||||
---
|
||||
<!--
|
||||
Have you searched for similar issues before posting it?
|
||||
Did you have a VERY good look at the [documentation](https://www.freqtrade.io/en/latest/) and are sure that the question is not explained there
|
||||
Did you have a VERY good look at the [documentation](https://www.freqtrade.io/) and are sure that the question is not explained there
|
||||
|
||||
Please do not use the question template to report bugs or to request new features.
|
||||
|
||||
Has your strategy or configuration been generated by an AI model, and is now not working?
|
||||
Please consult the documentation. We'll close such issues and point to the documentation.
|
||||
-->
|
||||
|
||||
## Describe your environment
|
||||
@@ -22,4 +25,4 @@ Please do not use the question template to report bugs or to request new feature
|
||||
|
||||
## Your question
|
||||
|
||||
*Ask the question you have not been able to find an answer in the [Documentation](https://www.freqtrade.io/en/latest/)*
|
||||
*Ask the question you have not been able to find an answer in the [Documentation](https://www.freqtrade.io/)*
|
||||
|
||||
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,5 +1,10 @@
|
||||
<!-- Thank you for sending your pull request. But first, have you included
|
||||
unit tests, and is your code PEP8 conformant? [More details](https://github.com/freqtrade/freqtrade/blob/develop/CONTRIBUTING.md)
|
||||
|
||||
Did you use AI to create your changes?
|
||||
If so, please state it clearly in the PR description (failing to do so may result in your PR being closed).
|
||||
|
||||
Also, please do a self review of the changes made before submitting the PR to make sure only relevant changes are included.
|
||||
-->
|
||||
## Summary
|
||||
|
||||
|
||||
92
.github/actions/docker-tags/action.yml
vendored
Normal file
92
.github/actions/docker-tags/action.yml
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
name: 'docker-tags'
|
||||
description: 'Set Docker default Tag environment variables'
|
||||
# inputs:
|
||||
outputs:
|
||||
BRANCH_NAME:
|
||||
description: 'The branch name'
|
||||
value: ${{ steps.tags.outputs.BRANCH_NAME }}
|
||||
TAG:
|
||||
description: 'The Docker tag'
|
||||
value: ${{ steps.tags.outputs.TAG }}
|
||||
TAG_PLOT:
|
||||
description: 'The Docker tag for the plot'
|
||||
value: ${{ steps.tags.outputs.TAG_PLOT }}
|
||||
TAG_FREQAI:
|
||||
description: 'The Docker tag for the freqai'
|
||||
value: ${{ steps.tags.outputs.TAG_FREQAI }}
|
||||
TAG_FREQAI_RL:
|
||||
description: 'The Docker tag for the freqai_rl'
|
||||
value: ${{ steps.tags.outputs.TAG_FREQAI_RL }}
|
||||
TAG_FREQAI_TORCH:
|
||||
description: 'The Docker tag for the freqai_torch'
|
||||
value: ${{ steps.tags.outputs.TAG_FREQAI_TORCH }}
|
||||
TAG_ARM:
|
||||
description: 'The Docker tag for the arm'
|
||||
value: ${{ steps.tags.outputs.TAG_ARM }}
|
||||
TAG_PLOT_ARM:
|
||||
description: 'The Docker tag for the plot arm'
|
||||
value: ${{ steps.tags.outputs.TAG_PLOT_ARM }}
|
||||
TAG_FREQAI_ARM:
|
||||
description: 'The Docker tag for the freqai arm'
|
||||
value: ${{ steps.tags.outputs.TAG_FREQAI_ARM }}
|
||||
TAG_FREQAI_RL_ARM:
|
||||
description: 'The Docker tag for the freqai_rl arm'
|
||||
value: ${{ steps.tags.outputs.TAG_FREQAI_RL_ARM }}
|
||||
TAG_PI:
|
||||
description: 'The Docker tag for the pi'
|
||||
value: ${{ steps.tags.outputs.TAG_PI }}
|
||||
CACHE_TAG_PI:
|
||||
description: 'The Docker cache tag for the pi'
|
||||
value: ${{ steps.tags.outputs.CACHE_TAG_PI }}
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Extract branch name
|
||||
shell: bash
|
||||
id: tags
|
||||
env:
|
||||
BRANCH_NAME_INPUT: ${{ github.event.inputs.branch_name }}
|
||||
run: |
|
||||
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
||||
BRANCH_NAME="${BRANCH_NAME_INPUT}"
|
||||
else
|
||||
BRANCH_NAME="${GITHUB_REF##*/}"
|
||||
fi
|
||||
|
||||
# Replace / with _ to create a valid tag
|
||||
TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g")
|
||||
TAG_PLOT=${TAG}_plot
|
||||
TAG_FREQAI=${TAG}_freqai
|
||||
TAG_FREQAI_RL=${TAG_FREQAI}rl
|
||||
TAG_FREQAI_TORCH=${TAG_FREQAI}torch
|
||||
|
||||
TAG_ARM=${TAG}_arm
|
||||
TAG_PLOT_ARM=${TAG_PLOT}_arm
|
||||
TAG_FREQAI_ARM=${TAG_FREQAI}_arm
|
||||
TAG_FREQAI_RL_ARM=${TAG_FREQAI_RL}_arm
|
||||
|
||||
TAG_PI="${TAG}_pi"
|
||||
|
||||
CACHE_TAG_PI=${CACHE_IMAGE}:${TAG_PI}_cache
|
||||
|
||||
echo "BRANCH_NAME=${BRANCH_NAME}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG=${TAG}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_PLOT=${TAG_PLOT}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_FREQAI=${TAG_FREQAI}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_FREQAI_RL=${TAG_FREQAI_RL}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_FREQAI_TORCH=${TAG_FREQAI_TORCH}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_ARM=${TAG_ARM}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_PLOT_ARM=${TAG_PLOT_ARM}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_FREQAI_ARM=${TAG_FREQAI_ARM}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_FREQAI_RL_ARM=${TAG_FREQAI_RL_ARM}" >> "$GITHUB_OUTPUT"
|
||||
echo "TAG_PI=${TAG_PI}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
echo "CACHE_TAG_PI=${CACHE_TAG_PI}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
cat "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Save commit SHA to file
|
||||
shell: bash
|
||||
# Add commit to docker container
|
||||
run: |
|
||||
echo "${GITHUB_SHA}" > freqtrade_commit
|
||||
11
.github/dependabot.yml
vendored
11
.github/dependabot.yml
vendored
@@ -1,9 +1,14 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: docker
|
||||
directory: "/"
|
||||
directories:
|
||||
- "/"
|
||||
- "/docker"
|
||||
schedule:
|
||||
interval: daily
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major"]
|
||||
open-pull-requests-limit: 10
|
||||
|
||||
- package-ecosystem: pip
|
||||
@@ -24,6 +29,10 @@ updates:
|
||||
mkdocs:
|
||||
patterns:
|
||||
- "mkdocs*"
|
||||
scipy:
|
||||
patterns:
|
||||
- "scipy"
|
||||
- "scipy-stubs"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
|
||||
11
.github/workflows/binance-lev-tier-update.yml
vendored
11
.github/workflows/binance-lev-tier-update.yml
vendored
@@ -15,9 +15,11 @@ jobs:
|
||||
environment:
|
||||
name: develop
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
@@ -32,7 +34,7 @@ jobs:
|
||||
run: python build_helpers/binance_update_lev_tiers.py
|
||||
|
||||
|
||||
- uses: peter-evans/create-pull-request@v6
|
||||
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||
with:
|
||||
token: ${{ secrets.REPO_SCOPED_TOKEN }}
|
||||
add-paths: freqtrade/exchange/binance_leverage_tiers.json
|
||||
@@ -42,6 +44,7 @@ jobs:
|
||||
branch: update/binance-leverage-tiers
|
||||
title: Update Binance Leverage Tiers
|
||||
commit-message: "chore: update pre-commit hooks"
|
||||
committer: Freqtrade Bot <noreply@github.com>
|
||||
committer: Freqtrade Bot <154552126+freqtrade-bot@users.noreply.github.com>
|
||||
author: Freqtrade Bot <154552126+freqtrade-bot@users.noreply.github.com>
|
||||
body: Update binance leverage tiers.
|
||||
delete-branch: true
|
||||
|
||||
543
.github/workflows/ci.yml
vendored
543
.github/workflows/ci.yml
vendored
@@ -19,68 +19,84 @@ concurrency:
|
||||
permissions:
|
||||
repository-projects: read
|
||||
jobs:
|
||||
build-linux:
|
||||
|
||||
tests:
|
||||
name: "Tests and Linting"
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-20.04, ubuntu-22.04 ]
|
||||
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
||||
os: [ "ubuntu-22.04", "ubuntu-24.04", "macos-14", "macos-15" , "windows-2022", "windows-2025" ]
|
||||
python-version: ["3.11", "3.12", "3.13"]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Cache_dependencies
|
||||
uses: actions/cache@v4
|
||||
id: cache
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6.7.0
|
||||
with:
|
||||
path: ~/dependencies/
|
||||
key: ${{ runner.os }}-dependencies
|
||||
activate-environment: true
|
||||
enable-cache: true
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache-dependency-glob: "requirements**.txt"
|
||||
cache-suffix: "${{ matrix.python-version }}"
|
||||
|
||||
- name: pip cache (linux)
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: test-${{ matrix.os }}-${{ matrix.python-version }}-pip
|
||||
|
||||
- name: TA binary *nix
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
- name: Installation - macOS (Brew)
|
||||
if: ${{ runner.os == 'macOS' }}
|
||||
run: |
|
||||
cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd ..
|
||||
# brew update
|
||||
# TODO: Should be the brew upgrade
|
||||
brew install libomp
|
||||
|
||||
- name: Installation - *nix
|
||||
- name: Installation (python)
|
||||
run: |
|
||||
python -m pip install --upgrade pip wheel
|
||||
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
|
||||
export TA_LIBRARY_PATH=${HOME}/dependencies/lib
|
||||
export TA_INCLUDE_PATH=${HOME}/dependencies/include
|
||||
pip install -r requirements-dev.txt
|
||||
pip install -e ft_client/
|
||||
pip install -e .
|
||||
uv pip install --upgrade wheel
|
||||
uv pip install -r requirements-dev.txt
|
||||
uv pip install -e ft_client/
|
||||
uv pip install -e .
|
||||
|
||||
- name: Check for version alignment
|
||||
run: |
|
||||
python build_helpers/freqtrade_client_version_align.py
|
||||
|
||||
- name: Tests
|
||||
if: (!(runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-24.04'))
|
||||
run: |
|
||||
pytest --random-order --durations 20 -n auto
|
||||
|
||||
- name: Tests with Coveralls
|
||||
if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-24.04')
|
||||
run: |
|
||||
pytest --random-order --cov=freqtrade --cov=freqtrade_client --cov-config=.coveragerc
|
||||
|
||||
- name: Coveralls
|
||||
if: (runner.os == 'Linux' && matrix.python-version == '3.10' && matrix.os == 'ubuntu-22.04')
|
||||
if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-24.04')
|
||||
env:
|
||||
# Coveralls token. Not used as secret due to github not providing secrets to forked repositories
|
||||
COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu
|
||||
run: |
|
||||
# Allow failure for coveralls
|
||||
uv pip install coveralls
|
||||
coveralls || true
|
||||
|
||||
- name: Check for repository changes
|
||||
- name: Run json schema extract
|
||||
# This should be kept before the repository check to ensure that the schema is up-to-date
|
||||
run: |
|
||||
python build_helpers/extract_config_json_schema.py
|
||||
|
||||
- name: Run command docs partials extract
|
||||
# This should be kept before the repository check to ensure that the docs are up-to-date
|
||||
run: |
|
||||
python build_helpers/create_command_partials.py
|
||||
|
||||
- name: Check for repository changes - *nix
|
||||
# TODO: python 3.13 slightly changed the output of argparse.
|
||||
if: ${{ (matrix.python-version != '3.13') && (runner.os != 'Windows') }}
|
||||
run: |
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
echo "Repository is dirty, changes detected:"
|
||||
@@ -91,13 +107,27 @@ jobs:
|
||||
echo "Repository is clean, no changes detected."
|
||||
fi
|
||||
|
||||
- name: Check for repository changes - Windows
|
||||
if: ${{ runner.os == 'Windows' && (matrix.python-version != '3.13') }}
|
||||
run: |
|
||||
if (git status --porcelain) {
|
||||
Write-Host "Repository is dirty, changes detected:"
|
||||
git status
|
||||
git diff
|
||||
exit 1
|
||||
}
|
||||
else {
|
||||
Write-Host "Repository is clean, no changes detected."
|
||||
}
|
||||
|
||||
- name: Backtesting (multi)
|
||||
run: |
|
||||
cp tests/testdata/config.tests.json config.json
|
||||
freqtrade create-userdir --userdir user_data
|
||||
cp tests/testdata/config.tests.json user_data/config.json
|
||||
freqtrade new-strategy -s AwesomeStrategy
|
||||
freqtrade new-strategy -s AwesomeStrategyMin --template minimal
|
||||
freqtrade backtesting --datadir tests/testdata --strategy-list AwesomeStrategy AwesomeStrategyMin -i 5m
|
||||
freqtrade new-strategy -s AwesomeStrategyAdv --template advanced
|
||||
freqtrade backtesting --datadir tests/testdata --strategy-list AwesomeStrategy AwesomeStrategyMin AwesomeStrategyAdv -i 5m
|
||||
|
||||
- name: Hyperopt
|
||||
run: |
|
||||
@@ -118,221 +148,39 @@ jobs:
|
||||
ruff format --check
|
||||
|
||||
- name: Mypy
|
||||
if: ${{ matrix.os == 'ubuntu-24.04' || matrix.os == 'macos-15' }}
|
||||
run: |
|
||||
mypy freqtrade scripts tests
|
||||
|
||||
- name: Run Pester tests (PowerShell)
|
||||
if: ${{ runner.os == 'Windows' }}
|
||||
shell: powershell
|
||||
run: |
|
||||
$PSVersionTable
|
||||
Set-PSRepository psgallery -InstallationPolicy trusted
|
||||
Install-Module -Name Pester -RequiredVersion 5.3.1 -Confirm:$false -Force -SkipPublisherCheck
|
||||
$Error.clear()
|
||||
Invoke-Pester -Path "tests" -CI
|
||||
if ($Error.Length -gt 0) {exit 1}
|
||||
|
||||
- name: Discord notification
|
||||
uses: rjstone/discord-webhook-notify@v1
|
||||
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
|
||||
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
|
||||
if: ${{ failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) }}
|
||||
with:
|
||||
severity: error
|
||||
details: Freqtrade CI failed on ${{ matrix.os }}
|
||||
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
|
||||
build-macos:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ "macos-12", "macos-13", "macos-14" ]
|
||||
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
||||
exclude:
|
||||
- os: "macos-14"
|
||||
python-version: "3.9"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
check-latest: true
|
||||
|
||||
- name: Cache_dependencies
|
||||
uses: actions/cache@v4
|
||||
id: cache
|
||||
with:
|
||||
path: ~/dependencies/
|
||||
key: ${{ matrix.os }}-dependencies
|
||||
|
||||
- name: pip cache (macOS)
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/Library/Caches/pip
|
||||
key: ${{ matrix.os }}-${{ matrix.python-version }}-pip
|
||||
|
||||
- name: TA binary *nix
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd ..
|
||||
|
||||
- name: Installation - macOS (Brew)
|
||||
run: |
|
||||
# brew update
|
||||
# TODO: Should be the brew upgrade
|
||||
# homebrew fails to update python due to unlinking failures
|
||||
# https://github.com/actions/runner-images/issues/6817
|
||||
rm /usr/local/bin/2to3 || true
|
||||
rm /usr/local/bin/2to3-3.11 || true
|
||||
rm /usr/local/bin/2to3-3.12 || true
|
||||
rm /usr/local/bin/idle3 || true
|
||||
rm /usr/local/bin/idle3.11 || true
|
||||
rm /usr/local/bin/idle3.12 || true
|
||||
rm /usr/local/bin/pydoc3 || true
|
||||
rm /usr/local/bin/pydoc3.11 || true
|
||||
rm /usr/local/bin/pydoc3.12 || true
|
||||
rm /usr/local/bin/python3 || true
|
||||
rm /usr/local/bin/python3.11 || true
|
||||
rm /usr/local/bin/python3.12 || true
|
||||
rm /usr/local/bin/python3-config || true
|
||||
rm /usr/local/bin/python3.11-config || true
|
||||
rm /usr/local/bin/python3.12-config || true
|
||||
|
||||
brew install hdf5 c-blosc libomp
|
||||
|
||||
- name: Installation (python)
|
||||
run: |
|
||||
python -m pip install --upgrade pip wheel
|
||||
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
|
||||
export TA_LIBRARY_PATH=${HOME}/dependencies/lib
|
||||
export TA_INCLUDE_PATH=${HOME}/dependencies/include
|
||||
pip install -r requirements-dev.txt
|
||||
pip install -e ft_client/
|
||||
pip install -e .
|
||||
|
||||
- name: Tests
|
||||
run: |
|
||||
pytest --random-order
|
||||
|
||||
- name: Check for repository changes
|
||||
run: |
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
echo "Repository is dirty, changes detected:"
|
||||
git status
|
||||
git diff
|
||||
exit 1
|
||||
else
|
||||
echo "Repository is clean, no changes detected."
|
||||
fi
|
||||
|
||||
- name: Backtesting
|
||||
run: |
|
||||
cp tests/testdata/config.tests.json config.json
|
||||
freqtrade create-userdir --userdir user_data
|
||||
freqtrade new-strategy -s AwesomeStrategyAdv --template advanced
|
||||
freqtrade backtesting --datadir tests/testdata --strategy AwesomeStrategyAdv
|
||||
|
||||
- name: Hyperopt
|
||||
run: |
|
||||
cp tests/testdata/config.tests.json config.json
|
||||
freqtrade create-userdir --userdir user_data
|
||||
freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt-loss SharpeHyperOptLossDaily --print-all
|
||||
|
||||
- name: Sort imports (isort)
|
||||
run: |
|
||||
isort --check .
|
||||
|
||||
- name: Run Ruff
|
||||
run: |
|
||||
ruff check --output-format=github
|
||||
|
||||
- name: Run Ruff format check
|
||||
run: |
|
||||
ruff format --check
|
||||
|
||||
- name: Mypy
|
||||
run: |
|
||||
mypy freqtrade scripts
|
||||
|
||||
- name: Discord notification
|
||||
uses: rjstone/discord-webhook-notify@v1
|
||||
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
|
||||
with:
|
||||
severity: info
|
||||
details: Test Succeeded!
|
||||
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
|
||||
build-windows:
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ windows-latest ]
|
||||
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Pip cache (Windows)
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~\AppData\Local\pip\Cache
|
||||
key: ${{ matrix.os }}-${{ matrix.python-version }}-pip
|
||||
|
||||
- name: Installation
|
||||
run: |
|
||||
./build_helpers/install_windows.ps1
|
||||
|
||||
- name: Tests
|
||||
run: |
|
||||
pytest --random-order
|
||||
|
||||
- name: Check for repository changes
|
||||
run: |
|
||||
if (git status --porcelain) {
|
||||
Write-Host "Repository is dirty, changes detected:"
|
||||
git status
|
||||
git diff
|
||||
exit 1
|
||||
}
|
||||
else {
|
||||
Write-Host "Repository is clean, no changes detected."
|
||||
}
|
||||
|
||||
- name: Backtesting
|
||||
run: |
|
||||
cp tests/testdata/config.tests.json config.json
|
||||
freqtrade create-userdir --userdir user_data
|
||||
freqtrade backtesting --datadir tests/testdata --strategy SampleStrategy
|
||||
|
||||
- name: Hyperopt
|
||||
run: |
|
||||
cp tests/testdata/config.tests.json config.json
|
||||
freqtrade create-userdir --userdir user_data
|
||||
freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt-loss SharpeHyperOptLossDaily --print-all
|
||||
|
||||
- name: Run Ruff
|
||||
run: |
|
||||
ruff check --output-format=github
|
||||
|
||||
- name: Run Ruff format check
|
||||
run: |
|
||||
ruff format --check
|
||||
|
||||
- name: Mypy
|
||||
run: |
|
||||
mypy freqtrade scripts tests
|
||||
|
||||
- name: Discord notification
|
||||
uses: rjstone/discord-webhook-notify@v1
|
||||
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
|
||||
with:
|
||||
severity: error
|
||||
details: Test Failed
|
||||
details: Freqtrade CI failed on ${{ matrix.os }} with Python ${{ matrix.python-version }}!
|
||||
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
|
||||
mypy-version-check:
|
||||
runs-on: ubuntu-22.04
|
||||
name: "Mypy Version Check"
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
@@ -342,37 +190,42 @@ jobs:
|
||||
python build_helpers/pre_commit_update.py
|
||||
|
||||
pre-commit:
|
||||
name: "Pre-commit checks"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
- uses: pre-commit/action@v3.0.1
|
||||
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
|
||||
|
||||
docs-check:
|
||||
name: "Documentation build"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Documentation syntax
|
||||
run: |
|
||||
./tests/test_docs.sh
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
- name: Documentation build
|
||||
run: |
|
||||
pip install -r docs/requirements-docs.txt
|
||||
pip install mkdocs
|
||||
mkdocs build
|
||||
|
||||
- name: Discord notification
|
||||
uses: rjstone/discord-webhook-notify@v1
|
||||
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
|
||||
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
|
||||
with:
|
||||
severity: error
|
||||
@@ -382,42 +235,33 @@ jobs:
|
||||
|
||||
build-linux-online:
|
||||
# Run pytest with "live" checks
|
||||
runs-on: ubuntu-22.04
|
||||
name: "Tests and Linting - Online tests"
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
- name: Cache_dependencies
|
||||
uses: actions/cache@v4
|
||||
id: cache
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6.7.0
|
||||
with:
|
||||
path: ~/dependencies/
|
||||
key: ${{ runner.os }}-dependencies
|
||||
|
||||
- name: pip cache (linux)
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: test-${{ matrix.os }}-${{ matrix.python-version }}-pip
|
||||
|
||||
- name: TA binary *nix
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
cd build_helpers && ./install_ta-lib.sh ${HOME}/dependencies/; cd ..
|
||||
activate-environment: true
|
||||
enable-cache: true
|
||||
python-version: "3.12"
|
||||
cache-dependency-glob: "requirements**.txt"
|
||||
cache-suffix: "3.12"
|
||||
|
||||
- name: Installation - *nix
|
||||
run: |
|
||||
python -m pip install --upgrade pip wheel
|
||||
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
|
||||
export TA_LIBRARY_PATH=${HOME}/dependencies/lib
|
||||
export TA_INCLUDE_PATH=${HOME}/dependencies/include
|
||||
pip install -r requirements-dev.txt
|
||||
pip install -e ft_client/
|
||||
pip install -e .
|
||||
uv pip install --upgrade wheel
|
||||
uv pip install -r requirements-dev.txt
|
||||
uv pip install -e ft_client/
|
||||
uv pip install -e .
|
||||
|
||||
- name: Tests incl. ccxt compatibility tests
|
||||
env:
|
||||
@@ -429,9 +273,7 @@ jobs:
|
||||
# Notify only once - when CI completes (and after deploy) in case it's successful
|
||||
notify-complete:
|
||||
needs: [
|
||||
build-linux,
|
||||
build-macos,
|
||||
build-windows,
|
||||
tests,
|
||||
docs-check,
|
||||
mypy-version-check,
|
||||
pre-commit,
|
||||
@@ -446,15 +288,16 @@ jobs:
|
||||
|
||||
- name: Check user permission
|
||||
id: check
|
||||
uses: scherermichael-oss/action-has-permission@1.0.6
|
||||
continue-on-error: true
|
||||
uses: prince-chrismc/check-actor-permissions-action@d504e74ba31658f4cdf4fcfeb509d4c09736d88e # v3.0.2
|
||||
with:
|
||||
required-permission: write
|
||||
permission: "write"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Discord notification
|
||||
uses: rjstone/discord-webhook-notify@v1
|
||||
if: always() && steps.check.outputs.has-permission && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
|
||||
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
|
||||
if: steps.check.outputs.permitted == 'true' && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
|
||||
with:
|
||||
severity: info
|
||||
details: Test Completed!
|
||||
@@ -462,14 +305,16 @@ jobs:
|
||||
|
||||
build:
|
||||
name: "Build"
|
||||
needs: [ build-linux, build-macos, build-windows, docs-check, mypy-version-check, pre-commit ]
|
||||
needs: [ tests, docs-check, mypy-version-check, pre-commit ]
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
@@ -499,125 +344,87 @@ jobs:
|
||||
ft_client/dist
|
||||
retention-days: 10
|
||||
|
||||
deploy-pypi:
|
||||
name: "Deploy to PyPI"
|
||||
deploy-test-pypi:
|
||||
name: "Publish Python 🐍 distribution 📦 to TestPyPI"
|
||||
needs: [ build ]
|
||||
runs-on: ubuntu-22.04
|
||||
if: (github.event_name == 'release')
|
||||
environment:
|
||||
name: release
|
||||
url: https://pypi.org/p/freqtrade
|
||||
name: testpypi
|
||||
url: https://test.pypi.org/p/freqtrade
|
||||
permissions:
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Download artifact 📦
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
pattern: freqtrade*-build
|
||||
path: dist
|
||||
merge-multiple: true
|
||||
|
||||
|
||||
- name: Publish to PyPI (Test)
|
||||
uses: pypa/gh-action-pypi-publish@v1.8.14
|
||||
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
|
||||
with:
|
||||
repository-url: https://test.pypi.org/legacy/
|
||||
|
||||
- name: Publish to PyPI
|
||||
uses: pypa/gh-action-pypi-publish@v1.8.14
|
||||
|
||||
|
||||
deploy-docker:
|
||||
needs: [ build-linux, build-macos, build-windows, docs-check, mypy-version-check, pre-commit ]
|
||||
deploy-pypi:
|
||||
name: "Publish Python 🐍 distribution 📦 to PyPI"
|
||||
needs: [ build ]
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade'
|
||||
if: (github.event_name == 'release')
|
||||
environment:
|
||||
name: pypi
|
||||
url: https://pypi.org/p/freqtrade
|
||||
permissions:
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
persist-credentials: false
|
||||
|
||||
- name: Extract branch name
|
||||
id: extract-branch
|
||||
run: |
|
||||
echo "GITHUB_REF='${GITHUB_REF}'"
|
||||
echo "branch=${GITHUB_REF##*/}" >> "$GITHUB_OUTPUT"
|
||||
- name: Download artifact 📦
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
pattern: freqtrade*-build
|
||||
path: dist
|
||||
merge-multiple: true
|
||||
|
||||
- name: Dockerhub login
|
||||
env:
|
||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
run: |
|
||||
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
|
||||
- name: Publish to PyPI
|
||||
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
|
||||
|
||||
# We need docker experimental to pull the ARM image.
|
||||
- name: Switch docker to experimental
|
||||
run: |
|
||||
docker version -f '{{.Server.Experimental}}'
|
||||
echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
|
||||
sudo systemctl restart docker
|
||||
docker version -f '{{.Server.Experimental}}'
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Available platforms
|
||||
run: echo ${{ steps.buildx.outputs.platforms }}
|
||||
|
||||
- name: Build and test and push docker images
|
||||
env:
|
||||
BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }}
|
||||
run: |
|
||||
build_helpers/publish_docker_multi.sh
|
||||
|
||||
deploy-arm:
|
||||
name: "Deploy Docker"
|
||||
docker-build:
|
||||
name: "Docker Build and Deploy"
|
||||
needs: [
|
||||
tests,
|
||||
docs-check,
|
||||
mypy-version-check,
|
||||
pre-commit
|
||||
]
|
||||
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade'
|
||||
uses: ./.github/workflows/docker-build.yml
|
||||
permissions:
|
||||
packages: write
|
||||
needs: [ deploy-docker ]
|
||||
# Only run on 64bit machines
|
||||
runs-on: [self-hosted, linux, ARM64]
|
||||
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade'
|
||||
contents: read
|
||||
secrets:
|
||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Extract branch name
|
||||
id: extract-branch
|
||||
run: |
|
||||
echo "GITHUB_REF='${GITHUB_REF}'"
|
||||
echo "branch=${GITHUB_REF##*/}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Dockerhub login
|
||||
env:
|
||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
run: |
|
||||
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
|
||||
|
||||
- name: Build and test and push docker images
|
||||
env:
|
||||
BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }}
|
||||
GHCR_USERNAME: ${{ github.actor }}
|
||||
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
build_helpers/publish_docker_arm64.sh
|
||||
|
||||
- name: Discord notification
|
||||
uses: rjstone/discord-webhook-notify@v1
|
||||
if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) && (github.event_name != 'schedule')
|
||||
with:
|
||||
severity: info
|
||||
details: Deploy Succeeded!
|
||||
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
packages-cleanup:
|
||||
name: "Docker Package Cleanup"
|
||||
uses: ./.github/workflows/packages-cleanup.yml
|
||||
# Only run on push, schedule, or release events
|
||||
if: (github.event_name == 'push' || github.event_name == 'schedule') && github.repository == 'freqtrade/freqtrade'
|
||||
permissions:
|
||||
packages: write
|
||||
with:
|
||||
package_name: 'freqtrade'
|
||||
|
||||
61
.github/workflows/deploy-docs.yml
vendored
Normal file
61
.github/workflows/deploy-docs.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: Build Documentation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
|
||||
# disable permissions for all of the available permissions
|
||||
permissions: {}
|
||||
|
||||
|
||||
jobs:
|
||||
build-docs:
|
||||
permissions:
|
||||
contents: write # for mike to push
|
||||
name: Deploy Docs through mike
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: true
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.12'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r docs/requirements-docs.txt
|
||||
|
||||
- name: Fetch gh-pages branch
|
||||
run: |
|
||||
git fetch origin gh-pages --depth=1
|
||||
|
||||
- name: Configure Git user
|
||||
run: |
|
||||
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||
git config --local user.name "github-actions[bot]"
|
||||
|
||||
- name: Build and push Mike
|
||||
if: ${{ github.event_name == 'push' }}
|
||||
run: |
|
||||
mike deploy ${REF_NAME} latest --push --update-aliases
|
||||
env:
|
||||
REF_NAME: ${{ github.ref_name }}
|
||||
|
||||
- name: Build and push Mike - Release
|
||||
if: ${{ github.event_name == 'release' }}
|
||||
run: |
|
||||
mike deploy ${REF_NAME} stable --push --update-aliases
|
||||
env:
|
||||
REF_NAME: ${{ github.ref_name }}
|
||||
|
||||
- name: Show mike versions
|
||||
run: |
|
||||
mike list
|
||||
39
.github/workflows/devcontainer-build.yml
vendored
39
.github/workflows/devcontainer-build.yml
vendored
@@ -17,29 +17,26 @@ concurrency:
|
||||
group: "${{ github.workflow }}"
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
permissions:
|
||||
packages: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
id: checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
-
|
||||
name: Pre-build dev container image
|
||||
uses: devcontainers/ci@v0.3
|
||||
with:
|
||||
subFolder: .github
|
||||
imageName: ghcr.io/${{ github.repository }}-devcontainer
|
||||
cacheFrom: ghcr.io/${{ github.repository }}-devcontainer
|
||||
push: always
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Pre-build dev container image
|
||||
uses: devcontainers/ci@8bf61b26e9c3a98f69cb6ce2f88d24ff59b785c6 # v0.3.19
|
||||
with:
|
||||
subFolder: .github
|
||||
imageName: ghcr.io/${{ github.repository }}-devcontainer
|
||||
cacheFrom: ghcr.io/${{ github.repository }}-devcontainer
|
||||
push: always
|
||||
|
||||
295
.github/workflows/docker-build.yml
vendored
Normal file
295
.github/workflows/docker-build.yml
vendored
Normal file
@@ -0,0 +1,295 @@
|
||||
name: Docker Build and Deploy
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
secrets:
|
||||
DOCKER_PASSWORD:
|
||||
required: true
|
||||
DOCKER_USERNAME:
|
||||
required: true
|
||||
DISCORD_WEBHOOK:
|
||||
required: false
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
branch_name:
|
||||
description: 'Branch name to build Docker images for'
|
||||
required: false
|
||||
default: 'develop'
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
IMAGE_NAME: "freqtradeorg/freqtrade"
|
||||
CACHE_IMAGE: "freqtradeorg/freqtrade_cache"
|
||||
GHCR_IMAGE_NAME: "ghcr.io/freqtrade/freqtrade"
|
||||
PI_PLATFORM: "linux/arm/v7"
|
||||
|
||||
jobs:
|
||||
deploy-docker:
|
||||
name: "Deploy Docker x64 and armv7l"
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.repository == 'freqtrade/freqtrade'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set docker tag names
|
||||
id: tags
|
||||
uses: ./.github/actions/docker-tags
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
|
||||
with:
|
||||
cache-image: false
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 #v3.11.1
|
||||
|
||||
- name: Available platforms
|
||||
run: echo ${PLATFORMS}
|
||||
env:
|
||||
PLATFORMS: ${{ steps.buildx.outputs.platforms }}
|
||||
|
||||
- name: Build image without cache
|
||||
if: github.event_name == 'schedule'
|
||||
env:
|
||||
TAG: ${{ steps.tags.outputs.TAG }}
|
||||
run: |
|
||||
docker build -t ${CACHE_IMAGE}:${TAG} .
|
||||
|
||||
- name: Build ARMHF image without cache
|
||||
if: github.event_name == 'schedule'
|
||||
env:
|
||||
TAG_PI: ${{ steps.tags.outputs.TAG_PI }}
|
||||
CACHE_TAG_PI: ${{ steps.tags.outputs.CACHE_TAG_PI }}
|
||||
run: |
|
||||
docker buildx build \
|
||||
--cache-to=type=registry,ref=${CACHE_TAG_PI} \
|
||||
-f docker/Dockerfile.armhf \
|
||||
--platform ${PI_PLATFORM} \
|
||||
-t ${IMAGE_NAME}:${TAG_PI} \
|
||||
--push \
|
||||
--provenance=false \
|
||||
.
|
||||
|
||||
- name: Build image with cache
|
||||
if: github.event_name != 'schedule'
|
||||
env:
|
||||
TAG: ${{ steps.tags.outputs.TAG }}
|
||||
run: |
|
||||
docker pull ${IMAGE_NAME}:${TAG} || true
|
||||
docker build --cache-from ${IMAGE_NAME}:${TAG} -t ${CACHE_IMAGE}:${TAG} .
|
||||
|
||||
- name: Build ARMHF image with cache
|
||||
if: github.event_name != 'schedule'
|
||||
# disable provenance due to https://github.com/docker/buildx/issues/1509
|
||||
env:
|
||||
TAG_PI: ${{ steps.tags.outputs.TAG_PI }}
|
||||
CACHE_TAG_PI: ${{ steps.tags.outputs.CACHE_TAG_PI }}
|
||||
run: |
|
||||
docker buildx build \
|
||||
--cache-from=type=registry,ref=${CACHE_TAG_PI} \
|
||||
--cache-to=type=registry,ref=${CACHE_TAG_PI} \
|
||||
-f docker/Dockerfile.armhf \
|
||||
--platform ${PI_PLATFORM} \
|
||||
-t ${IMAGE_NAME}:${TAG_PI} \
|
||||
--push \
|
||||
--provenance=false \
|
||||
.
|
||||
|
||||
- name: Run build for AI images
|
||||
env:
|
||||
TAG: ${{ steps.tags.outputs.TAG }}
|
||||
TAG_PLOT: ${{ steps.tags.outputs.TAG_PLOT }}
|
||||
TAG_FREQAI: ${{ steps.tags.outputs.TAG_FREQAI }}
|
||||
TAG_FREQAI_RL: ${{ steps.tags.outputs.TAG_FREQAI_RL }}
|
||||
run: |
|
||||
docker build --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG} -t ${CACHE_IMAGE}:${TAG_PLOT} -f docker/Dockerfile.plot .
|
||||
docker build --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG} -t ${CACHE_IMAGE}:${TAG_FREQAI} -f docker/Dockerfile.freqai .
|
||||
docker build --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG_FREQAI} -t ${CACHE_IMAGE}:${TAG_FREQAI_RL} -f docker/Dockerfile.freqai_rl .
|
||||
|
||||
|
||||
- name: Run backtest in Docker
|
||||
env:
|
||||
TAG: ${{ steps.tags.outputs.TAG }}
|
||||
run: |
|
||||
docker run --rm -v $(pwd)/tests/testdata/config.tests.json:/freqtrade/config.json:ro -v $(pwd)/tests:/tests ${CACHE_IMAGE}:${TAG} backtesting --datadir /tests/testdata --strategy-path /tests/strategy/strats/ --strategy StrategyTestV3
|
||||
|
||||
- name: Push cache images
|
||||
env:
|
||||
TAG: ${{ steps.tags.outputs.TAG }}
|
||||
TAG_PLOT: ${{ steps.tags.outputs.TAG_PLOT }}
|
||||
TAG_FREQAI: ${{ steps.tags.outputs.TAG_FREQAI }}
|
||||
TAG_FREQAI_RL: ${{ steps.tags.outputs.TAG_FREQAI_RL }}
|
||||
run: |
|
||||
docker push ${CACHE_IMAGE}:$TAG
|
||||
docker push ${CACHE_IMAGE}:$TAG_PLOT
|
||||
docker push ${CACHE_IMAGE}:$TAG_FREQAI
|
||||
docker push ${CACHE_IMAGE}:$TAG_FREQAI_RL
|
||||
|
||||
- name: list Images
|
||||
run: |
|
||||
docker images
|
||||
|
||||
deploy-arm:
|
||||
name: "Deploy Docker ARM64"
|
||||
permissions:
|
||||
packages: write
|
||||
needs: [ deploy-docker ]
|
||||
# Only run on 64bit machines
|
||||
runs-on: [self-hosted, linux, ARM64]
|
||||
if: github.repository == 'freqtrade/freqtrade'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Set docker tag names
|
||||
id: tags
|
||||
uses: ./.github/actions/docker-tags
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Login to github
|
||||
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build image without cache
|
||||
if: github.event_name == 'schedule'
|
||||
env:
|
||||
TAG_ARM: ${{ steps.tags.outputs.TAG_ARM }}
|
||||
run: |
|
||||
docker build -t ${IMAGE_NAME}:${TAG_ARM} .
|
||||
|
||||
- name: Build image with cache
|
||||
if: github.event_name != 'schedule'
|
||||
env:
|
||||
TAG_ARM: ${{ steps.tags.outputs.TAG_ARM }}
|
||||
run: |
|
||||
docker pull ${IMAGE_NAME}:${TAG_ARM} || true
|
||||
docker build --cache-from ${IMAGE_NAME}:${TAG_ARM} -t ${CACHE_IMAGE}:${TAG_ARM} .
|
||||
|
||||
- name: Run build for AI images
|
||||
env:
|
||||
TAG_ARM: ${{ steps.tags.outputs.TAG_ARM }}
|
||||
TAG_PLOT_ARM: ${{ steps.tags.outputs.TAG_PLOT_ARM }}
|
||||
TAG_FREQAI_ARM: ${{ steps.tags.outputs.TAG_FREQAI_ARM }}
|
||||
TAG_FREQAI_RL_ARM: ${{ steps.tags.outputs.TAG_FREQAI_RL_ARM }}
|
||||
run: |
|
||||
docker build --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG_ARM} -t ${CACHE_IMAGE}:${TAG_PLOT_ARM} -f docker/Dockerfile.plot .
|
||||
docker build --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG_ARM} -t ${CACHE_IMAGE}:${TAG_FREQAI_ARM} -f docker/Dockerfile.freqai .
|
||||
docker build --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG_FREQAI_ARM} -t ${CACHE_IMAGE}:${TAG_FREQAI_RL_ARM} -f docker/Dockerfile.freqai_rl .
|
||||
|
||||
|
||||
- name: Run backtest in Docker
|
||||
env:
|
||||
TAG_ARM: ${{ steps.tags.outputs.TAG_ARM }}
|
||||
run: |
|
||||
docker run --rm -v $(pwd)/tests/testdata/config.tests.json:/freqtrade/config.json:ro -v $(pwd)/tests:/tests ${CACHE_IMAGE}:${TAG_ARM} backtesting --datadir /tests/testdata --strategy-path /tests/strategy/strats/ --strategy StrategyTestV3
|
||||
|
||||
- name: Docker images
|
||||
run: |
|
||||
docker images
|
||||
|
||||
- name: Push cache images
|
||||
env:
|
||||
TAG_ARM: ${{ steps.tags.outputs.TAG_ARM }}
|
||||
TAG_PLOT_ARM: ${{ steps.tags.outputs.TAG_PLOT_ARM }}
|
||||
TAG_FREQAI_ARM: ${{ steps.tags.outputs.TAG_FREQAI_ARM }}
|
||||
TAG_FREQAI_RL_ARM: ${{ steps.tags.outputs.TAG_FREQAI_RL_ARM }}
|
||||
run: |
|
||||
docker push ${CACHE_IMAGE}:$TAG_PLOT_ARM
|
||||
docker push ${CACHE_IMAGE}:$TAG_FREQAI_ARM
|
||||
docker push ${CACHE_IMAGE}:$TAG_FREQAI_RL_ARM
|
||||
docker push ${CACHE_IMAGE}:$TAG_ARM
|
||||
|
||||
- name: Create manifests
|
||||
env:
|
||||
TAG_ARM: ${{ steps.tags.outputs.TAG_ARM }}
|
||||
TAG: ${{ steps.tags.outputs.TAG }}
|
||||
TAG_PI: ${{ steps.tags.outputs.TAG_PI }}
|
||||
run: |
|
||||
docker buildx imagetools create \
|
||||
--tag ${IMAGE_NAME}:${TAG} \
|
||||
--tag ${GHCR_IMAGE_NAME}:${TAG} \
|
||||
${CACHE_IMAGE}:${TAG} ${CACHE_IMAGE}:${TAG_ARM} ${IMAGE_NAME}:${TAG_PI}
|
||||
|
||||
- name: Create multiarch image - Plot
|
||||
env:
|
||||
TAG_PLOT: ${{ steps.tags.outputs.TAG_PLOT }}
|
||||
TAG_PLOT_ARM: ${{ steps.tags.outputs.TAG_PLOT_ARM }}
|
||||
run: |
|
||||
docker buildx imagetools create \
|
||||
--tag ${IMAGE_NAME}:${TAG_PLOT} \
|
||||
--tag ${GHCR_IMAGE_NAME}:${TAG_PLOT} \
|
||||
${CACHE_IMAGE}:${TAG_PLOT} ${CACHE_IMAGE}:${TAG_PLOT_ARM}
|
||||
|
||||
- name: Create multiarch image - FreqAI
|
||||
env:
|
||||
TAG_FREQAI: ${{ steps.tags.outputs.TAG_FREQAI }}
|
||||
TAG_FREQAI_ARM: ${{ steps.tags.outputs.TAG_FREQAI_ARM }}
|
||||
run: |
|
||||
docker buildx imagetools create \
|
||||
--tag ${IMAGE_NAME}:${TAG_FREQAI} \
|
||||
--tag ${GHCR_IMAGE_NAME}:${TAG_FREQAI} \
|
||||
${CACHE_IMAGE}:${TAG_FREQAI} ${CACHE_IMAGE}:${TAG_FREQAI_ARM}
|
||||
|
||||
- name: Create multiarch image - FreqAI RL
|
||||
env:
|
||||
TAG_FREQAI_RL: ${{ steps.tags.outputs.TAG_FREQAI_RL }}
|
||||
TAG_FREQAI_RL_ARM: ${{ steps.tags.outputs.TAG_FREQAI_RL_ARM }}
|
||||
TAG_FREQAI_TORCH: ${{ steps.tags.outputs.TAG_FREQAI_TORCH }}
|
||||
run: |
|
||||
# Create special Torch tag - which is identical to the RL tag.
|
||||
docker buildx imagetools create \
|
||||
--tag ${IMAGE_NAME}:${TAG_FREQAI_RL} \
|
||||
--tag ${GHCR_IMAGE_NAME}:${TAG_FREQAI_RL} \
|
||||
--tag ${IMAGE_NAME}:${TAG_FREQAI_TORCH} \
|
||||
--tag ${GHCR_IMAGE_NAME}:${TAG_FREQAI_TORCH} \
|
||||
${CACHE_IMAGE}:${TAG_FREQAI_RL} ${CACHE_IMAGE}:${TAG_FREQAI_RL_ARM}
|
||||
|
||||
- name: Tag latest
|
||||
if: env.TAG == 'develop'
|
||||
env:
|
||||
TAG: ${{ steps.tags.outputs.TAG }}
|
||||
run: |
|
||||
# Tag image as latest
|
||||
docker buildx imagetools create \
|
||||
--tag ${GHCR_IMAGE_NAME}:${TAG} \
|
||||
--tag ${GHCR_IMAGE_NAME}:latest \
|
||||
${IMAGE_NAME}:${TAG}
|
||||
|
||||
- name: Docker images
|
||||
run: |
|
||||
docker images
|
||||
|
||||
- name: Image cleanup
|
||||
run: |
|
||||
docker image prune -a --force --filter "until=24h"
|
||||
|
||||
- name: Discord notification
|
||||
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
|
||||
if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) && (github.event_name != 'schedule')
|
||||
with:
|
||||
severity: info
|
||||
details: Deploy Succeeded!
|
||||
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
9
.github/workflows/docker-update-readme.yml
vendored
9
.github/workflows/docker-update-readme.yml
vendored
@@ -4,14 +4,19 @@ on:
|
||||
branches:
|
||||
- stable
|
||||
|
||||
# disable permissions for all of the available permissions
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
dockerHubDescription:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Docker Hub Description
|
||||
uses: peter-evans/dockerhub-description@v4
|
||||
uses: peter-evans/dockerhub-description@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
46
.github/workflows/packages-cleanup.yml
vendored
Normal file
46
.github/workflows/packages-cleanup.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
name: Cleanup Packages
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
package_name:
|
||||
description: 'Package name to clean up'
|
||||
required: false
|
||||
default: 'freqtrade'
|
||||
type: string
|
||||
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
package_name:
|
||||
description: 'Package name to clean up'
|
||||
required: false
|
||||
default: 'freqtrade'
|
||||
type: choice
|
||||
options:
|
||||
- 'freqtrade'
|
||||
- 'freqtrade-devcontainer'
|
||||
delete-untagged:
|
||||
description: 'Whether to delete only untagged images'
|
||||
required: false
|
||||
default: true
|
||||
type: boolean
|
||||
|
||||
env:
|
||||
PACKAGE_NAME: "freqtrade"
|
||||
|
||||
jobs:
|
||||
deploy-docker:
|
||||
name: "Delete Packages"
|
||||
runs-on: ubuntu-24.04
|
||||
if: github.repository == 'freqtrade/freqtrade'
|
||||
permissions:
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: "Delete untagged Package Versions"
|
||||
uses: actions/delete-package-versions@v5
|
||||
with:
|
||||
package-name: ${{ inputs.package_name || env.PACKAGE_NAME }}
|
||||
package-type: 'container'
|
||||
min-versions-to-keep: 10
|
||||
delete-only-untagged-versions: ${{ inputs.delete-untagged || 'true' }}
|
||||
11
.github/workflows/pre-commit-update.yml
vendored
11
.github/workflows/pre-commit-update.yml
vendored
@@ -13,9 +13,11 @@ jobs:
|
||||
auto-update:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
@@ -26,7 +28,7 @@ jobs:
|
||||
- name: Run auto-update
|
||||
run: pre-commit autoupdate
|
||||
|
||||
- uses: peter-evans/create-pull-request@v6
|
||||
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||
with:
|
||||
token: ${{ secrets.REPO_SCOPED_TOKEN }}
|
||||
add-paths: .pre-commit-config.yaml
|
||||
@@ -36,6 +38,7 @@ jobs:
|
||||
branch: update/pre-commit-hooks
|
||||
title: Update pre-commit hooks
|
||||
commit-message: "chore: update pre-commit hooks"
|
||||
committer: Freqtrade Bot <noreply@github.com>
|
||||
committer: Freqtrade Bot <154552126+freqtrade-bot@users.noreply.github.com>
|
||||
author: Freqtrade Bot <154552126+freqtrade-bot@users.noreply.github.com>
|
||||
body: Update versions of pre-commit hooks to latest version.
|
||||
delete-branch: true
|
||||
|
||||
29
.github/workflows/zizmor.yml
vendored
Normal file
29
.github/workflows/zizmor.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
name: GitHub Actions Security Analysis with zizmor 🌈
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- stable
|
||||
pull_request:
|
||||
branches:
|
||||
- develop
|
||||
- stable
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
zizmor:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
security-events: write
|
||||
# contents: read # only needed for private repos
|
||||
# actions: read # only needed for private repos
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493 # v4.2.2
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run zizmor 🌈
|
||||
uses: zizmorcore/zizmor-action@e673c3917a1aef3c65c972347ed84ccd013ecda4 # v0.2.0
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -114,3 +114,5 @@ target/
|
||||
!config_examples/config_full.example.json
|
||||
!config_examples/config_kraken.example.json
|
||||
!config_examples/config_freqai.example.json
|
||||
|
||||
docker-compose-*.yml
|
||||
|
||||
@@ -1,29 +1,42 @@
|
||||
# See https://pre-commit.com for more information
|
||||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
repos:
|
||||
|
||||
- repo: local
|
||||
# Keep json schema in sync with the config schema
|
||||
# This will write the files - and fail pre-commit if a file has been changed.
|
||||
hooks:
|
||||
- id: Extract config json schema
|
||||
name: extract-config-json-schema
|
||||
entry: "python build_helpers/extract_config_json_schema.py"
|
||||
language: python
|
||||
pass_filenames: false
|
||||
additional_dependencies: ["python-rapidjson", "jsonschema"]
|
||||
|
||||
- repo: https://github.com/pycqa/flake8
|
||||
rev: "7.0.0"
|
||||
rev: "7.3.0"
|
||||
hooks:
|
||||
- id: flake8
|
||||
additional_dependencies: [Flake8-pyproject]
|
||||
# stages: [push]
|
||||
|
||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||
rev: "v1.10.0"
|
||||
rev: "v1.18.2"
|
||||
hooks:
|
||||
- id: mypy
|
||||
exclude: build_helpers
|
||||
additional_dependencies:
|
||||
- types-cachetools==5.3.0.7
|
||||
- types-cachetools==6.2.0.20250827
|
||||
- types-filelock==3.2.7
|
||||
- types-requests==2.32.0.20240523
|
||||
- types-tabulate==0.9.0.20240106
|
||||
- types-python-dateutil==2.9.0.20240316
|
||||
- SQLAlchemy==2.0.30
|
||||
- types-requests==2.32.4.20250913
|
||||
- types-tabulate==0.9.0.20241207
|
||||
- types-python-dateutil==2.9.0.20250822
|
||||
- scipy-stubs==1.16.2.0
|
||||
- SQLAlchemy==2.0.43
|
||||
# stages: [push]
|
||||
|
||||
- repo: https://github.com/pycqa/isort
|
||||
rev: "5.13.2"
|
||||
rev: "6.0.1"
|
||||
hooks:
|
||||
- id: isort
|
||||
name: isort (python)
|
||||
@@ -31,12 +44,13 @@ repos:
|
||||
|
||||
- repo: https://github.com/charliermarsh/ruff-pre-commit
|
||||
# Ruff version.
|
||||
rev: 'v0.4.5'
|
||||
rev: 'v0.13.1'
|
||||
hooks:
|
||||
- id: ruff
|
||||
- id: ruff-format
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.6.0
|
||||
rev: v6.0.0
|
||||
hooks:
|
||||
- id: end-of-file-fixer
|
||||
exclude: |
|
||||
@@ -55,9 +69,20 @@ repos:
|
||||
.*\.md
|
||||
)$
|
||||
|
||||
- repo: https://github.com/stefmolin/exif-stripper
|
||||
rev: 1.1.0
|
||||
hooks:
|
||||
- id: strip-exif
|
||||
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.3.0
|
||||
rev: v2.4.1
|
||||
hooks:
|
||||
- id: codespell
|
||||
additional_dependencies:
|
||||
- tomli
|
||||
|
||||
# Ensure github actions remain safe
|
||||
- repo: https://github.com/woodruffw/zizmor-pre-commit
|
||||
rev: v1.13.0
|
||||
hooks:
|
||||
- id: zizmor
|
||||
|
||||
@@ -9,8 +9,10 @@ Issues labeled [good first issue](https://github.com/freqtrade/freqtrade/labels/
|
||||
Few pointers for contributions:
|
||||
|
||||
- Create your PR against the `develop` branch, not `stable`.
|
||||
- New features need to contain unit tests, must conform to PEP8 (max-line-length = 100) and should be documented with the introduction PR.
|
||||
- PR's can be declared as `[WIP]` - which signify Work in Progress Pull Requests (which are not finished).
|
||||
- Stick to english in both commit messages, PR descriptions and code comments and variable names.
|
||||
- New features need to contain unit tests, must pass CI (run pre-commit and pytest to get an early feedback) and should be documented with the introduction PR.
|
||||
- PR's can be declared as draft - signaling Work in Progress for Pull Requests (which are not finished). We'll still aim to provide feedback on draft PR's in a timely manner.
|
||||
- If you're using AI for your PR, please both mention it in the PR description and do a thorough review of the generated code. The final responsibility for the code with the PR author, not with the AI.
|
||||
|
||||
If you are unsure, discuss the feature on our [discord server](https://discord.gg/p7nuUNVfP7) or in a [issue](https://github.com/freqtrade/freqtrade/issues) before a Pull Request.
|
||||
|
||||
@@ -43,43 +45,43 @@ pytest tests/test_<file_name>.py
|
||||
pytest tests/test_<file_name>.py::test_<method_name>
|
||||
```
|
||||
|
||||
### 2. Test if your code is PEP8 compliant
|
||||
### 2. Test if your code corresponds to our style guide
|
||||
|
||||
#### Run Ruff
|
||||
We receive a lot of code that fails preliminary CI checks.
|
||||
To help with that, we encourage contributors to install the git pre-commit hook that will let you know immediately when you try to commit code that fails these checks.
|
||||
|
||||
You can manually run pre-commit with `pre-commit run -a` - or install the git hook with `pre-commit install` to have it run automatically on each commit.
|
||||
|
||||
Running `pre-commit run -a` will run all checks, including `ruff`, `mypy` and `codespell` (among others).
|
||||
|
||||
#### Additional styles applied
|
||||
|
||||
- Have docstrings on all public methods
|
||||
- Use double-quotes for docstrings
|
||||
- Multiline docstrings should be indented to the level of the first quote
|
||||
- Doc-strings should follow the reST format (`:param xxx: ...`, `:return: ...`, `:raises KeyError: ...`)
|
||||
|
||||
#### Manually run the individual checks
|
||||
|
||||
The following sections describe how to run the individual checks that are running as part of the pre-commit hook.
|
||||
|
||||
##### Run ruff
|
||||
|
||||
Check your code with ruff to ensure that it follows the style guide.
|
||||
|
||||
```bash
|
||||
ruff check .
|
||||
ruff format .
|
||||
```
|
||||
|
||||
We receive a lot of code that fails the `ruff` checks.
|
||||
To help with that, we encourage you to install the git pre-commit
|
||||
hook that will warn you when you try to commit code that fails these checks.
|
||||
##### Run mypy
|
||||
|
||||
you can manually run pre-commit with `pre-commit run -a`.
|
||||
|
||||
##### Additional styles applied
|
||||
|
||||
* Have docstrings on all public methods
|
||||
* Use double-quotes for docstrings
|
||||
* Multiline docstrings should be indented to the level of the first quote
|
||||
* Doc-strings should follow the reST format (`:param xxx: ...`, `:return: ...`, `:raises KeyError: ... `)
|
||||
|
||||
### 3. Test if all type-hints are correct
|
||||
|
||||
#### Run mypy
|
||||
Check your code with mypy to ensure that it follows the type-hinting rules.
|
||||
|
||||
``` bash
|
||||
mypy freqtrade
|
||||
```
|
||||
|
||||
### 4. Ensure formatting is correct
|
||||
|
||||
#### Run ruff
|
||||
|
||||
``` bash
|
||||
ruff format .
|
||||
```
|
||||
|
||||
## (Core)-Committer Guide
|
||||
|
||||
### Process: Pull Requests
|
||||
@@ -118,7 +120,7 @@ Exceptions:
|
||||
- Ensure cross-platform compatibility for every change that's accepted. Windows, Mac & Linux.
|
||||
- Ensure no malicious code is introduced into the core code.
|
||||
- Create issues for any major changes and enhancements that you wish to make. Discuss things transparently and get community feedback.
|
||||
- Keep feature versions as small as possible, preferably one new feature per version.
|
||||
- Keep feature PR's as small as possible, preferably one new feature per PR.
|
||||
- Be welcoming to newcomers and encourage diverse new contributors from all backgrounds. See the Python Community Code of Conduct (https://www.python.org/psf/codeofconduct/).
|
||||
|
||||
### Becoming a Committer
|
||||
@@ -130,6 +132,6 @@ Contributors may be given commit privileges. Preference will be given to those w
|
||||
1. Access to resources for cross-platform development and testing.
|
||||
1. Time to devote to the project regularly.
|
||||
|
||||
Being a Committer does not grant write permission on `develop` or `stable` for security reasons (Users trust Freqtrade with their Exchange API keys).
|
||||
Being a Committer does not automatically grant write permission on `develop` or `stable` for security reasons (Users trust Freqtrade with their Exchange API keys).
|
||||
|
||||
After being Committer for some time, a Committer may be named Core Committer and given full repository access.
|
||||
|
||||
27
Dockerfile
27
Dockerfile
@@ -1,17 +1,17 @@
|
||||
FROM python:3.12.3-slim-bookworm as base
|
||||
FROM python:3.13.7-slim-bookworm AS base
|
||||
|
||||
# Setup env
|
||||
ENV LANG C.UTF-8
|
||||
ENV LC_ALL C.UTF-8
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
ENV PYTHONFAULTHANDLER 1
|
||||
ENV LANG=C.UTF-8
|
||||
ENV LC_ALL=C.UTF-8
|
||||
ENV PYTHONDONTWRITEBYTECODE=1
|
||||
ENV PYTHONFAULTHANDLER=1
|
||||
ENV PATH=/home/ftuser/.local/bin:$PATH
|
||||
ENV FT_APP_ENV="docker"
|
||||
|
||||
# Prepare environment
|
||||
RUN mkdir /freqtrade \
|
||||
&& apt-get update \
|
||||
&& apt-get -y install sudo libatlas3-base curl sqlite3 libhdf5-serial-dev libgomp1 \
|
||||
&& apt-get -y install sudo libatlas3-base curl sqlite3 libgomp1 \
|
||||
&& apt-get clean \
|
||||
&& useradd -u 1000 -G sudo -U -m -s /bin/bash ftuser \
|
||||
&& chown ftuser:ftuser /freqtrade \
|
||||
@@ -21,27 +21,22 @@ RUN mkdir /freqtrade \
|
||||
WORKDIR /freqtrade
|
||||
|
||||
# Install dependencies
|
||||
FROM base as python-deps
|
||||
FROM base AS python-deps
|
||||
RUN apt-get update \
|
||||
&& apt-get -y install build-essential libssl-dev git libffi-dev libgfortran5 pkg-config cmake gcc \
|
||||
&& apt-get clean \
|
||||
&& pip install --upgrade pip wheel
|
||||
|
||||
# Install TA-lib
|
||||
COPY build_helpers/* /tmp/
|
||||
RUN cd /tmp && /tmp/install_ta-lib.sh && rm -r /tmp/*ta-lib*
|
||||
ENV LD_LIBRARY_PATH /usr/local/lib
|
||||
|
||||
# Install dependencies
|
||||
COPY --chown=ftuser:ftuser requirements.txt requirements-hyperopt.txt /freqtrade/
|
||||
USER ftuser
|
||||
RUN pip install --user --no-cache-dir numpy \
|
||||
RUN pip install --user --no-cache-dir "numpy<3.0" \
|
||||
&& pip install --user --no-cache-dir -r requirements-hyperopt.txt
|
||||
|
||||
# Copy dependencies to runtime-image
|
||||
FROM base as runtime-image
|
||||
FROM base AS runtime-image
|
||||
COPY --from=python-deps /usr/local/lib /usr/local/lib
|
||||
ENV LD_LIBRARY_PATH /usr/local/lib
|
||||
ENV LD_LIBRARY_PATH=/usr/local/lib
|
||||
|
||||
COPY --from=python-deps --chown=ftuser:ftuser /home/ftuser/.local /home/ftuser/.local
|
||||
|
||||
@@ -49,7 +44,7 @@ USER ftuser
|
||||
# Install and execute
|
||||
COPY --chown=ftuser:ftuser . /freqtrade/
|
||||
|
||||
RUN pip install -e . --user --no-cache-dir --no-build-isolation \
|
||||
RUN pip install -e . --user --no-cache-dir \
|
||||
&& mkdir /freqtrade/user_data/ \
|
||||
&& freqtrade install-ui
|
||||
|
||||
|
||||
39
README.md
39
README.md
@@ -1,10 +1,9 @@
|
||||
# 
|
||||
|
||||
[](https://github.com/freqtrade/freqtrade/actions/)
|
||||
[](https://github.com/freqtrade/freqtrade/actions/)
|
||||
[](https://doi.org/10.21105/joss.04864)
|
||||
[](https://coveralls.io/github/freqtrade/freqtrade?branch=develop)
|
||||
[](https://www.freqtrade.io)
|
||||
[](https://codeclimate.com/github/freqtrade/freqtrade/maintainability)
|
||||
|
||||
Freqtrade is a free and open source crypto trading bot written in Python. It is designed to support all major exchanges and be controlled via Telegram or webUI. It contains backtesting, plotting and money management tools as well as strategy optimization by machine learning.
|
||||
|
||||
@@ -30,16 +29,20 @@ Please read the [exchange specific notes](docs/exchanges.md) to learn about even
|
||||
- [X] [Binance](https://www.binance.com/)
|
||||
- [X] [Bitmart](https://bitmart.com/)
|
||||
- [X] [BingX](https://bingx.com/invite/0EM9RX)
|
||||
- [X] [Bybit](https://bybit.com/)
|
||||
- [X] [Gate.io](https://www.gate.io/ref/6266643)
|
||||
- [X] [HTX](https://www.htx.com/) (Former Huobi)
|
||||
- [X] [HTX](https://www.htx.com/)
|
||||
- [X] [Hyperliquid](https://hyperliquid.xyz/) (A decentralized exchange, or DEX)
|
||||
- [X] [Kraken](https://kraken.com/)
|
||||
- [X] [OKX](https://okx.com/) (Former OKEX)
|
||||
- [X] [OKX](https://okx.com/)
|
||||
- [X] [MyOKX](https://okx.com/) (OKX EEA)
|
||||
- [ ] [potentially many others](https://github.com/ccxt/ccxt/). _(We cannot guarantee they will work)_
|
||||
|
||||
### Supported Futures Exchanges (experimental)
|
||||
|
||||
- [X] [Binance](https://www.binance.com/)
|
||||
- [X] [Gate.io](https://www.gate.io/ref/6266643)
|
||||
- [X] [Hyperliquid](https://hyperliquid.xyz/) (A decentralized exchange, or DEX)
|
||||
- [X] [OKX](https://okx.com/)
|
||||
- [X] [Bybit](https://bybit.com/)
|
||||
|
||||
@@ -60,13 +63,12 @@ Please find the complete documentation on the [freqtrade website](https://www.fr
|
||||
|
||||
## Features
|
||||
|
||||
- [x] **Based on Python 3.9+**: For botting on any operating system - Windows, macOS and Linux.
|
||||
- [x] **Based on Python 3.11+**: For botting on any operating system - Windows, macOS and Linux.
|
||||
- [x] **Persistence**: Persistence is achieved through sqlite.
|
||||
- [x] **Dry-run**: Run the bot without paying money.
|
||||
- [x] **Backtesting**: Run a simulation of your buy/sell strategy.
|
||||
- [x] **Strategy Optimization by machine learning**: Use machine learning to optimize your buy/sell strategy parameters with real exchange data.
|
||||
- [X] **Adaptive prediction modeling**: Build a smart strategy with FreqAI that self-trains to the market via adaptive machine learning methods. [Learn more](https://www.freqtrade.io/en/stable/freqai/)
|
||||
- [x] **Edge position sizing** Calculate your win rate, risk reward ratio, the best stoploss and adjust your position size before taking a position for each specific market. [Learn more](https://www.freqtrade.io/en/stable/edge/).
|
||||
- [x] **Whitelist crypto-currencies**: Select which crypto-currency you want to trade or use dynamic whitelists.
|
||||
- [x] **Blacklist crypto-currencies**: Select which crypto-currency you want to avoid.
|
||||
- [x] **Builtin WebUI**: Builtin web UI to manage your bot.
|
||||
@@ -86,44 +88,52 @@ For further (native) installation methods, please refer to the [Installation doc
|
||||
|
||||
```
|
||||
usage: freqtrade [-h] [-V]
|
||||
{trade,create-userdir,new-config,new-strategy,download-data,convert-data,convert-trade-data,list-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,install-ui,plot-dataframe,plot-profit,webserver}
|
||||
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
|
||||
...
|
||||
|
||||
Free, open source crypto trading bot
|
||||
|
||||
positional arguments:
|
||||
{trade,create-userdir,new-config,new-strategy,download-data,convert-data,convert-trade-data,list-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,install-ui,plot-dataframe,plot-profit,webserver}
|
||||
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
|
||||
trade Trade module.
|
||||
create-userdir Create user-data directory.
|
||||
new-config Create new config
|
||||
show-config Show resolved config
|
||||
new-strategy Create new strategy
|
||||
download-data Download backtesting data.
|
||||
convert-data Convert candle (OHLCV) data from one format to
|
||||
another.
|
||||
convert-trade-data Convert trade data from one format to another.
|
||||
trades-to-ohlcv Convert trade data to OHLCV data.
|
||||
list-data List downloaded data.
|
||||
backtesting Backtesting module.
|
||||
edge Edge module.
|
||||
backtesting-show Show past Backtest results
|
||||
backtesting-analysis
|
||||
Backtest Analysis module.
|
||||
hyperopt Hyperopt module.
|
||||
hyperopt-list List Hyperopt results
|
||||
hyperopt-show Show details of Hyperopt results
|
||||
list-exchanges Print available exchanges.
|
||||
list-hyperopts Print available hyperopt classes.
|
||||
list-markets Print markets on exchange.
|
||||
list-pairs Print pairs on exchange.
|
||||
list-strategies Print available strategies.
|
||||
list-hyperoptloss Print available hyperopt loss functions.
|
||||
list-freqaimodels Print available freqAI models.
|
||||
list-timeframes Print available timeframes for the exchange.
|
||||
show-trades Show trades.
|
||||
test-pairlist Test your pairlist configuration.
|
||||
convert-db Migrate database to different system
|
||||
install-ui Install FreqUI
|
||||
plot-dataframe Plot candles with indicators.
|
||||
plot-profit Generate plot showing profits.
|
||||
webserver Webserver module.
|
||||
strategy-updater updates outdated strategy files to the current version
|
||||
lookahead-analysis Check for potential look ahead bias.
|
||||
recursive-analysis Check for potential recursive formula issue.
|
||||
|
||||
optional arguments:
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-V, --version show program's version number and exit
|
||||
|
||||
```
|
||||
|
||||
### Telegram RPC commands
|
||||
@@ -135,6 +145,8 @@ Telegram is not mandatory. However, this is a great way to control your bot. Mor
|
||||
- `/stopentry`: Stop entering new trades.
|
||||
- `/status <trade_id>|[table]`: Lists all or specific open trades.
|
||||
- `/profit [<n>]`: Lists cumulative profit from all finished trades, over the last n days.
|
||||
- `/profit_long [<n>]`: Lists cumulative profit from all finished long trades, over the last n days.
|
||||
- `/profit_short [<n>]`: Lists cumulative profit from all finished short trades, over the last n days.
|
||||
- `/forceexit <trade_id>|all`: Instantly exits the given trade (Ignoring `minimum_roi`).
|
||||
- `/fx <trade_id>|all`: Alias to `/forceexit`
|
||||
- `/performance`: Show performance of each finished trade grouped by pair
|
||||
@@ -143,6 +155,7 @@ Telegram is not mandatory. However, this is a great way to control your bot. Mor
|
||||
- `/help`: Show help message.
|
||||
- `/version`: Show version.
|
||||
|
||||
|
||||
## Development branches
|
||||
|
||||
The project is currently setup in two main branches:
|
||||
@@ -208,7 +221,7 @@ To run this bot we recommend you a cloud instance with a minimum of:
|
||||
|
||||
### Software requirements
|
||||
|
||||
- [Python >= 3.9](http://docs.python-guide.org/en/latest/starting/installation/)
|
||||
- [Python >= 3.11](http://docs.python-guide.org/en/latest/starting/installation/)
|
||||
- [pip](https://pip.pypa.io/en/stable/installing/)
|
||||
- [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
|
||||
- [TA-Lib](https://ta-lib.github.io/ta-lib-python/)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -12,7 +12,12 @@ secret = os.environ.get("FREQTRADE__EXCHANGE__SECRET")
|
||||
proxy = os.environ.get("CI_WEB_PROXY")
|
||||
|
||||
exchange = ccxt.binance(
|
||||
{"apiKey": key, "secret": secret, "httpsProxy": proxy, "options": {"defaultType": "swap"}}
|
||||
{
|
||||
"apiKey": key,
|
||||
"secret": secret,
|
||||
"httpsProxy": proxy,
|
||||
"options": {"defaultType": "swap"},
|
||||
}
|
||||
)
|
||||
_ = exchange.load_markets()
|
||||
|
||||
|
||||
53
build_helpers/create_command_partials.py
Normal file
53
build_helpers/create_command_partials.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import subprocess # noqa: S404, RUF100
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
subcommands = [
|
||||
"trade",
|
||||
"create-userdir",
|
||||
"new-config",
|
||||
"show-config",
|
||||
"new-strategy",
|
||||
"download-data",
|
||||
"convert-data",
|
||||
"convert-trade-data",
|
||||
"trades-to-ohlcv",
|
||||
"list-data",
|
||||
"backtesting",
|
||||
"backtesting-show",
|
||||
"backtesting-analysis",
|
||||
"edge",
|
||||
"hyperopt",
|
||||
"hyperopt-list",
|
||||
"hyperopt-show",
|
||||
"list-exchanges",
|
||||
"list-markets",
|
||||
"list-pairs",
|
||||
"list-strategies",
|
||||
"list-hyperoptloss",
|
||||
"list-freqaimodels",
|
||||
"list-timeframes",
|
||||
"show-trades",
|
||||
"test-pairlist",
|
||||
"convert-db",
|
||||
"install-ui",
|
||||
"plot-dataframe",
|
||||
"plot-profit",
|
||||
"webserver",
|
||||
"strategy-updater",
|
||||
"lookahead-analysis",
|
||||
"recursive-analysis",
|
||||
]
|
||||
|
||||
result = subprocess.run(["freqtrade", "--help"], capture_output=True, text=True)
|
||||
|
||||
with Path("docs/commands/main.md").open("w") as f:
|
||||
f.write(f"```\n{result.stdout}\n```\n")
|
||||
|
||||
|
||||
for command in subcommands:
|
||||
print(f"Running for {command}")
|
||||
result = subprocess.run(["freqtrade", command, "--help"], capture_output=True, text=True)
|
||||
|
||||
with Path(f"docs/commands/{command}.md").open("w") as f:
|
||||
f.write(f"```\n{result.stdout}\n```\n")
|
||||
30
build_helpers/extract_config_json_schema.py
Normal file
30
build_helpers/extract_config_json_schema.py
Normal file
@@ -0,0 +1,30 @@
|
||||
"""Script to extract the configuration json schema from config_schema.py file."""
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import rapidjson
|
||||
|
||||
|
||||
def extract_config_json_schema():
|
||||
try:
|
||||
# Try to import from the installed package
|
||||
from freqtrade.config_schema import CONF_SCHEMA
|
||||
except ImportError:
|
||||
# If freqtrade is not installed, add the parent directory to sys.path
|
||||
# to import directly from the source
|
||||
import sys
|
||||
|
||||
script_dir = Path(__file__).parent
|
||||
freqtrade_dir = script_dir.parent
|
||||
sys.path.insert(0, str(freqtrade_dir))
|
||||
|
||||
# Now try to import from the source
|
||||
from freqtrade.config_schema import CONF_SCHEMA
|
||||
|
||||
schema_filename = Path(__file__).parent / "schema.json"
|
||||
with schema_filename.open("w") as f:
|
||||
rapidjson.dump(CONF_SCHEMA, f, indent=2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
extract_config_json_schema()
|
||||
@@ -1,35 +0,0 @@
|
||||
if [ -z "$1" ]; then
|
||||
INSTALL_LOC=/usr/local
|
||||
else
|
||||
INSTALL_LOC=${1}
|
||||
fi
|
||||
echo "Installing to ${INSTALL_LOC}"
|
||||
if [ -n "$2" ] || [ ! -f "${INSTALL_LOC}/lib/libta_lib.a" ]; then
|
||||
tar zxvf ta-lib-0.4.0-src.tar.gz
|
||||
cd ta-lib \
|
||||
&& sed -i.bak "s|0.00000001|0.000000000000000001 |g" src/ta_func/ta_utility.h \
|
||||
&& echo "Downloading gcc config.guess and config.sub" \
|
||||
&& curl -s 'https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.guess' -o config.guess \
|
||||
&& curl -s 'https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.sub' -o config.sub \
|
||||
&& ./configure --prefix=${INSTALL_LOC}/ \
|
||||
&& make
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed building ta-lib."
|
||||
cd .. && rm -rf ./ta-lib/
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "$2" ]; then
|
||||
which sudo && sudo make install || make install
|
||||
if [ -x "$(command -v apt-get)" ]; then
|
||||
echo "Updating library path using ldconfig"
|
||||
sudo ldconfig
|
||||
fi
|
||||
else
|
||||
# Don't install with sudo
|
||||
make install
|
||||
fi
|
||||
|
||||
cd .. && rm -rf ./ta-lib/
|
||||
else
|
||||
echo "TA-lib already installed, skipping installation"
|
||||
fi
|
||||
@@ -1,11 +0,0 @@
|
||||
# vendored Wheels compiled via https://github.com/xmatthias/ta-lib-python/tree/ta_bundled_040
|
||||
|
||||
python -m pip install --upgrade pip wheel
|
||||
|
||||
$pyv = python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')"
|
||||
|
||||
|
||||
pip install --find-links=build_helpers\ --prefer-binary TA-Lib
|
||||
|
||||
pip install -r requirements-dev.txt
|
||||
pip install -e .
|
||||
@@ -16,10 +16,12 @@ with require_dev.open("r") as rfile:
|
||||
with require.open("r") as rfile:
|
||||
requirements.extend(rfile.readlines())
|
||||
|
||||
# Extract types only
|
||||
type_reqs = [
|
||||
r.strip("\n") for r in requirements if r.startswith("types-") or r.startswith("SQLAlchemy")
|
||||
]
|
||||
# Extract relevant types only
|
||||
supported = ("types-", "SQLAlchemy", "scipy-stubs")
|
||||
|
||||
# Find relevant dependencies
|
||||
# Only keep the first part of the line up to the first space
|
||||
type_reqs = [r.strip("\n").split()[0] for r in requirements if r.startswith(supported)]
|
||||
|
||||
with pre_commit_file.open("r") as file:
|
||||
f = yaml.load(file, Loader=yaml.SafeLoader)
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Use BuildKit, otherwise building on ARM fails
|
||||
export DOCKER_BUILDKIT=1
|
||||
|
||||
IMAGE_NAME=freqtradeorg/freqtrade
|
||||
CACHE_IMAGE=freqtradeorg/freqtrade_cache
|
||||
GHCR_IMAGE_NAME=ghcr.io/freqtrade/freqtrade
|
||||
|
||||
# Replace / with _ to create a valid tag
|
||||
TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g")
|
||||
TAG_PLOT=${TAG}_plot
|
||||
TAG_FREQAI=${TAG}_freqai
|
||||
TAG_FREQAI_RL=${TAG_FREQAI}rl
|
||||
TAG_FREQAI_TORCH=${TAG_FREQAI}torch
|
||||
TAG_PI="${TAG}_pi"
|
||||
|
||||
TAG_ARM=${TAG}_arm
|
||||
TAG_PLOT_ARM=${TAG_PLOT}_arm
|
||||
TAG_FREQAI_ARM=${TAG_FREQAI}_arm
|
||||
TAG_FREQAI_RL_ARM=${TAG_FREQAI_RL}_arm
|
||||
|
||||
echo "Running for ${TAG}"
|
||||
|
||||
# Add commit and commit_message to docker container
|
||||
echo "${GITHUB_SHA}" > freqtrade_commit
|
||||
|
||||
if [ "${GITHUB_EVENT_NAME}" = "schedule" ]; then
|
||||
echo "event ${GITHUB_EVENT_NAME}: full rebuild - skipping cache"
|
||||
# Build regular image
|
||||
docker build -t freqtrade:${TAG_ARM} .
|
||||
|
||||
else
|
||||
echo "event ${GITHUB_EVENT_NAME}: building with cache"
|
||||
# Build regular image
|
||||
docker pull ${IMAGE_NAME}:${TAG_ARM}
|
||||
docker build --cache-from ${IMAGE_NAME}:${TAG_ARM} -t freqtrade:${TAG_ARM} .
|
||||
|
||||
fi
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "failed building multiarch images"
|
||||
return 1
|
||||
fi
|
||||
|
||||
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG_ARM} -t freqtrade:${TAG_PLOT_ARM} -f docker/Dockerfile.plot .
|
||||
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG_ARM} -t freqtrade:${TAG_FREQAI_ARM} -f docker/Dockerfile.freqai .
|
||||
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG_FREQAI_ARM} -t freqtrade:${TAG_FREQAI_RL_ARM} -f docker/Dockerfile.freqai_rl .
|
||||
|
||||
# Tag image for upload and next build step
|
||||
docker tag freqtrade:$TAG_ARM ${CACHE_IMAGE}:$TAG_ARM
|
||||
docker tag freqtrade:$TAG_PLOT_ARM ${CACHE_IMAGE}:$TAG_PLOT_ARM
|
||||
docker tag freqtrade:$TAG_FREQAI_ARM ${CACHE_IMAGE}:$TAG_FREQAI_ARM
|
||||
docker tag freqtrade:$TAG_FREQAI_RL_ARM ${CACHE_IMAGE}:$TAG_FREQAI_RL_ARM
|
||||
|
||||
# Run backtest
|
||||
docker run --rm -v $(pwd)/tests/testdata/config.tests.json:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG_ARM} backtesting --datadir /tests/testdata --strategy-path /tests/strategy/strats/ --strategy StrategyTestV3
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "failed running backtest"
|
||||
return 1
|
||||
fi
|
||||
|
||||
docker images
|
||||
|
||||
docker push ${CACHE_IMAGE}:$TAG_PLOT_ARM
|
||||
docker push ${CACHE_IMAGE}:$TAG_FREQAI_ARM
|
||||
docker push ${CACHE_IMAGE}:$TAG_FREQAI_RL_ARM
|
||||
docker push ${CACHE_IMAGE}:$TAG_ARM
|
||||
|
||||
# Create multi-arch image
|
||||
# Make sure that all images contained here are pushed to github first.
|
||||
# Otherwise installation might fail.
|
||||
echo "create manifests"
|
||||
|
||||
docker manifest create ${IMAGE_NAME}:${TAG} ${CACHE_IMAGE}:${TAG} ${CACHE_IMAGE}:${TAG_ARM} ${IMAGE_NAME}:${TAG_PI}
|
||||
docker manifest push -p ${IMAGE_NAME}:${TAG}
|
||||
|
||||
docker manifest create ${IMAGE_NAME}:${TAG_PLOT} ${CACHE_IMAGE}:${TAG_PLOT} ${CACHE_IMAGE}:${TAG_PLOT_ARM}
|
||||
docker manifest push -p ${IMAGE_NAME}:${TAG_PLOT}
|
||||
|
||||
docker manifest create ${IMAGE_NAME}:${TAG_FREQAI} ${CACHE_IMAGE}:${TAG_FREQAI} ${CACHE_IMAGE}:${TAG_FREQAI_ARM}
|
||||
docker manifest push -p ${IMAGE_NAME}:${TAG_FREQAI}
|
||||
|
||||
docker manifest create ${IMAGE_NAME}:${TAG_FREQAI_RL} ${CACHE_IMAGE}:${TAG_FREQAI_RL} ${CACHE_IMAGE}:${TAG_FREQAI_RL_ARM}
|
||||
docker manifest push -p ${IMAGE_NAME}:${TAG_FREQAI_RL}
|
||||
|
||||
# Create special Torch tag - which is identical to the RL tag.
|
||||
docker manifest create ${IMAGE_NAME}:${TAG_FREQAI_TORCH} ${CACHE_IMAGE}:${TAG_FREQAI_RL} ${CACHE_IMAGE}:${TAG_FREQAI_RL_ARM}
|
||||
docker manifest push -p ${IMAGE_NAME}:${TAG_FREQAI_TORCH}
|
||||
|
||||
# copy images to ghcr.io
|
||||
|
||||
alias crane="docker run --rm -i -v $(pwd)/.crane:/home/nonroot/.docker/ gcr.io/go-containerregistry/crane"
|
||||
mkdir .crane
|
||||
chmod a+rwx .crane
|
||||
|
||||
echo "${GHCR_TOKEN}" | crane auth login ghcr.io -u "${GHCR_USERNAME}" --password-stdin
|
||||
|
||||
crane copy ${IMAGE_NAME}:${TAG_FREQAI_RL} ${GHCR_IMAGE_NAME}:${TAG_FREQAI_RL}
|
||||
crane copy ${IMAGE_NAME}:${TAG_FREQAI_RL} ${GHCR_IMAGE_NAME}:${TAG_FREQAI_TORCH}
|
||||
crane copy ${IMAGE_NAME}:${TAG_FREQAI} ${GHCR_IMAGE_NAME}:${TAG_FREQAI}
|
||||
crane copy ${IMAGE_NAME}:${TAG_PLOT} ${GHCR_IMAGE_NAME}:${TAG_PLOT}
|
||||
crane copy ${IMAGE_NAME}:${TAG} ${GHCR_IMAGE_NAME}:${TAG}
|
||||
|
||||
# Tag as latest for develop builds
|
||||
if [ "${TAG}" = "develop" ]; then
|
||||
echo 'Tagging image as latest'
|
||||
docker manifest create ${IMAGE_NAME}:latest ${CACHE_IMAGE}:${TAG_ARM} ${IMAGE_NAME}:${TAG_PI} ${CACHE_IMAGE}:${TAG}
|
||||
docker manifest push -p ${IMAGE_NAME}:latest
|
||||
|
||||
crane copy ${IMAGE_NAME}:latest ${GHCR_IMAGE_NAME}:latest
|
||||
fi
|
||||
|
||||
docker images
|
||||
rm -rf .crane
|
||||
|
||||
# Cleanup old images from arm64 node.
|
||||
docker image prune -a --force --filter "until=24h"
|
||||
@@ -1,89 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# The below assumes a correctly setup docker buildx environment
|
||||
|
||||
IMAGE_NAME=freqtradeorg/freqtrade
|
||||
CACHE_IMAGE=freqtradeorg/freqtrade_cache
|
||||
# Replace / with _ to create a valid tag
|
||||
TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g")
|
||||
TAG_PLOT=${TAG}_plot
|
||||
TAG_FREQAI=${TAG}_freqai
|
||||
TAG_FREQAI_RL=${TAG_FREQAI}rl
|
||||
TAG_PI="${TAG}_pi"
|
||||
|
||||
PI_PLATFORM="linux/arm/v7"
|
||||
echo "Running for ${TAG}"
|
||||
CACHE_TAG=${CACHE_IMAGE}:${TAG_PI}_cache
|
||||
|
||||
# Add commit and commit_message to docker container
|
||||
echo "${GITHUB_SHA}" > freqtrade_commit
|
||||
|
||||
if [ "${GITHUB_EVENT_NAME}" = "schedule" ]; then
|
||||
echo "event ${GITHUB_EVENT_NAME}: full rebuild - skipping cache"
|
||||
# Build regular image
|
||||
docker build -t freqtrade:${TAG} .
|
||||
# Build PI image
|
||||
docker buildx build \
|
||||
--cache-to=type=registry,ref=${CACHE_TAG} \
|
||||
-f docker/Dockerfile.armhf \
|
||||
--platform ${PI_PLATFORM} \
|
||||
-t ${IMAGE_NAME}:${TAG_PI} \
|
||||
--push \
|
||||
--provenance=false \
|
||||
.
|
||||
else
|
||||
echo "event ${GITHUB_EVENT_NAME}: building with cache"
|
||||
# Build regular image
|
||||
docker pull ${IMAGE_NAME}:${TAG}
|
||||
docker build --cache-from ${IMAGE_NAME}:${TAG} -t freqtrade:${TAG} .
|
||||
|
||||
# Pull last build to avoid rebuilding the whole image
|
||||
# docker pull --platform ${PI_PLATFORM} ${IMAGE_NAME}:${TAG}
|
||||
# disable provenance due to https://github.com/docker/buildx/issues/1509
|
||||
docker buildx build \
|
||||
--cache-from=type=registry,ref=${CACHE_TAG} \
|
||||
--cache-to=type=registry,ref=${CACHE_TAG} \
|
||||
-f docker/Dockerfile.armhf \
|
||||
--platform ${PI_PLATFORM} \
|
||||
-t ${IMAGE_NAME}:${TAG_PI} \
|
||||
--push \
|
||||
--provenance=false \
|
||||
.
|
||||
fi
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "failed building multiarch images"
|
||||
return 1
|
||||
fi
|
||||
# Tag image for upload and next build step
|
||||
docker tag freqtrade:$TAG ${CACHE_IMAGE}:$TAG
|
||||
|
||||
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG} -t freqtrade:${TAG_PLOT} -f docker/Dockerfile.plot .
|
||||
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG} -t freqtrade:${TAG_FREQAI} -f docker/Dockerfile.freqai .
|
||||
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG_FREQAI} -t freqtrade:${TAG_FREQAI_RL} -f docker/Dockerfile.freqai_rl .
|
||||
|
||||
docker tag freqtrade:$TAG_PLOT ${CACHE_IMAGE}:$TAG_PLOT
|
||||
docker tag freqtrade:$TAG_FREQAI ${CACHE_IMAGE}:$TAG_FREQAI
|
||||
docker tag freqtrade:$TAG_FREQAI_RL ${CACHE_IMAGE}:$TAG_FREQAI_RL
|
||||
|
||||
# Run backtest
|
||||
docker run --rm -v $(pwd)/tests/testdata/config.tests.json:/freqtrade/config.json:ro -v $(pwd)/tests:/tests freqtrade:${TAG} backtesting --datadir /tests/testdata --strategy-path /tests/strategy/strats/ --strategy StrategyTestV3
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "failed running backtest"
|
||||
return 1
|
||||
fi
|
||||
|
||||
docker images
|
||||
|
||||
docker push ${CACHE_IMAGE}:$TAG
|
||||
docker push ${CACHE_IMAGE}:$TAG_PLOT
|
||||
docker push ${CACHE_IMAGE}:$TAG_FREQAI
|
||||
docker push ${CACHE_IMAGE}:$TAG_FREQAI_RL
|
||||
|
||||
docker images
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "failed building image"
|
||||
return 1
|
||||
fi
|
||||
Binary file not shown.
Binary file not shown.
1657
build_helpers/schema.json
Normal file
1657
build_helpers/schema.json
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
build_helpers/ta_lib-0.6.7-cp311-cp311-manylinux_2_31_armv7l.whl
Normal file
BIN
build_helpers/ta_lib-0.6.7-cp311-cp311-manylinux_2_31_armv7l.whl
Normal file
Binary file not shown.
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"$schema": "https://schema.freqtrade.io/schema.json",
|
||||
"max_open_trades": 3,
|
||||
"stake_currency": "USDT",
|
||||
"stake_amount": 0.05,
|
||||
"stake_amount": 30,
|
||||
"tradable_balance_ratio": 0.99,
|
||||
"fiat_display_currency": "USD",
|
||||
"timeframe": "5m",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"$schema": "https://schema.freqtrade.io/schema.json",
|
||||
"trading_mode": "futures",
|
||||
"margin_mode": "isolated",
|
||||
"max_open_trades": 5,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"$schema": "https://schema.freqtrade.io/schema.json",
|
||||
"max_open_trades": 3,
|
||||
"stake_currency": "BTC",
|
||||
"stake_amount": 0.05,
|
||||
@@ -24,10 +25,10 @@
|
||||
"trading_mode": "spot",
|
||||
"margin_mode": "",
|
||||
"minimal_roi": {
|
||||
"40": 0.0,
|
||||
"30": 0.01,
|
||||
"20": 0.02,
|
||||
"0": 0.04
|
||||
"40": 0.0,
|
||||
"30": 0.01,
|
||||
"20": 0.02,
|
||||
"0": 0.04
|
||||
},
|
||||
"stoploss": -0.10,
|
||||
"unfilledtimeout": {
|
||||
@@ -46,7 +47,7 @@
|
||||
"bids_to_ask_delta": 1
|
||||
}
|
||||
},
|
||||
"exit_pricing":{
|
||||
"exit_pricing": {
|
||||
"price_side": "same",
|
||||
"use_order_book": true,
|
||||
"order_book_top": 1,
|
||||
@@ -69,18 +70,38 @@
|
||||
"exit": "GTC"
|
||||
},
|
||||
"pairlists": [
|
||||
{"method": "StaticPairList"},
|
||||
{"method": "FullTradesFilter"},
|
||||
{
|
||||
"method": "StaticPairList"
|
||||
},
|
||||
{
|
||||
"method": "DelistFilter",
|
||||
"max_days_from_now": 0,
|
||||
},
|
||||
{
|
||||
"method": "FullTradesFilter"
|
||||
},
|
||||
{
|
||||
"method": "VolumePairList",
|
||||
"number_assets": 20,
|
||||
"sort_key": "quoteVolume",
|
||||
"refresh_period": 1800
|
||||
},
|
||||
{"method": "AgeFilter", "min_days_listed": 10},
|
||||
{"method": "PrecisionFilter"},
|
||||
{"method": "PriceFilter", "low_price_ratio": 0.01, "min_price": 0.00000010},
|
||||
{"method": "SpreadFilter", "max_spread_ratio": 0.005},
|
||||
{
|
||||
"method": "AgeFilter",
|
||||
"min_days_listed": 10
|
||||
},
|
||||
{
|
||||
"method": "PrecisionFilter"
|
||||
},
|
||||
{
|
||||
"method": "PriceFilter",
|
||||
"low_price_ratio": 0.01,
|
||||
"min_price": 0.00000010
|
||||
},
|
||||
{
|
||||
"method": "SpreadFilter",
|
||||
"max_spread_ratio": 0.005
|
||||
},
|
||||
{
|
||||
"method": "RangeStabilityFilter",
|
||||
"lookback_days": 10,
|
||||
@@ -120,20 +141,6 @@
|
||||
"outdated_offset": 5,
|
||||
"markets_refresh_interval": 60
|
||||
},
|
||||
"edge": {
|
||||
"enabled": false,
|
||||
"process_throttle_secs": 3600,
|
||||
"calculate_since_number_of_days": 7,
|
||||
"allowed_risk": 0.01,
|
||||
"stoploss_range_min": -0.01,
|
||||
"stoploss_range_max": -0.1,
|
||||
"stoploss_range_step": -0.01,
|
||||
"minimum_winrate": 0.60,
|
||||
"minimum_expectancy": 0.20,
|
||||
"min_trade_number": 10,
|
||||
"max_trade_duration_minute": 1440,
|
||||
"remove_pumps": false
|
||||
},
|
||||
"telegram": {
|
||||
"enabled": false,
|
||||
"token": "your_telegram_token",
|
||||
@@ -179,12 +186,12 @@
|
||||
"external_message_consumer": {
|
||||
"enabled": false,
|
||||
"producers": [
|
||||
{
|
||||
"name": "default",
|
||||
"host": "127.0.0.2",
|
||||
"port": 8080,
|
||||
"ws_token": "secret_ws_t0ken."
|
||||
}
|
||||
{
|
||||
"name": "default",
|
||||
"host": "127.0.0.2",
|
||||
"port": 8080,
|
||||
"ws_token": "secret_ws_t0ken."
|
||||
}
|
||||
],
|
||||
"wait_timeout": 300,
|
||||
"ping_timeout": 10,
|
||||
@@ -208,4 +215,4 @@
|
||||
"reduce_df_footprint": false,
|
||||
"dataformat_ohlcv": "feather",
|
||||
"dataformat_trades": "feather"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"$schema": "https://schema.freqtrade.io/schema.json",
|
||||
"max_open_trades": 5,
|
||||
"stake_currency": "EUR",
|
||||
"stake_amount": 10,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
version: '3'
|
||||
services:
|
||||
freqtrade:
|
||||
image: freqtradeorg/freqtrade:stable
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
FROM python:3.11.8-slim-bookworm as base
|
||||
FROM python:3.11.13-slim-bookworm AS base
|
||||
|
||||
# Setup env
|
||||
ENV LANG C.UTF-8
|
||||
ENV LC_ALL C.UTF-8
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
ENV PYTHONFAULTHANDLER 1
|
||||
ENV LANG=C.UTF-8
|
||||
ENV LC_ALL=C.UTF-8
|
||||
ENV PYTHONDONTWRITEBYTECODE=1
|
||||
ENV PYTHONFAULTHANDLER=1
|
||||
ENV PATH=/home/ftuser/.local/bin:$PATH
|
||||
ENV FT_APP_ENV="docker"
|
||||
|
||||
# Prepare environment
|
||||
RUN mkdir /freqtrade \
|
||||
&& apt-get update \
|
||||
&& apt-get -y install sudo libatlas3-base libopenblas-dev curl sqlite3 libhdf5-dev libutf8proc-dev libsnappy-dev \
|
||||
&& apt-get -y install sudo libatlas3-base libopenblas-dev curl sqlite3 libutf8proc-dev libsnappy-dev \
|
||||
&& apt-get clean \
|
||||
&& useradd -u 1000 -G sudo -U -m ftuser \
|
||||
&& chown ftuser:ftuser /freqtrade \
|
||||
@@ -22,7 +22,7 @@ RUN mkdir /freqtrade \
|
||||
WORKDIR /freqtrade
|
||||
|
||||
# Install dependencies
|
||||
FROM base as python-deps
|
||||
FROM base AS python-deps
|
||||
RUN apt-get update \
|
||||
&& apt-get -y install build-essential libssl-dev libffi-dev libgfortran5 pkg-config cmake gcc \
|
||||
&& apt-get clean \
|
||||
@@ -34,14 +34,13 @@ COPY build_helpers/* /tmp/
|
||||
# Install dependencies
|
||||
COPY --chown=ftuser:ftuser requirements.txt /freqtrade/
|
||||
USER ftuser
|
||||
RUN pip install --user --no-cache-dir numpy \
|
||||
&& pip install --user --no-index --find-links /tmp/ pyarrow TA-Lib \
|
||||
RUN pip install --user --only-binary=:all: --find-links /tmp/ pyarrow TA-Lib \
|
||||
&& pip install --user --no-cache-dir -r requirements.txt
|
||||
|
||||
# Copy dependencies to runtime-image
|
||||
FROM base as runtime-image
|
||||
FROM base AS runtime-image
|
||||
COPY --from=python-deps /usr/local/lib /usr/local/lib
|
||||
ENV LD_LIBRARY_PATH /usr/local/lib
|
||||
ENV LD_LIBRARY_PATH=/usr/local/lib
|
||||
|
||||
COPY --from=python-deps --chown=ftuser:ftuser /home/ftuser/.local /home/ftuser/.local
|
||||
|
||||
@@ -49,7 +48,7 @@ USER ftuser
|
||||
# Install and execute
|
||||
COPY --chown=ftuser:ftuser . /freqtrade/
|
||||
|
||||
RUN pip install -e . --user --no-cache-dir --no-build-isolation\
|
||||
RUN pip install -e . --user --no-cache-dir \
|
||||
&& mkdir /freqtrade/user_data/ \
|
||||
&& freqtrade install-ui
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
FROM freqtradeorg/freqtrade:develop
|
||||
|
||||
# Install dependencies
|
||||
COPY requirements-dev.txt /freqtrade/
|
||||
|
||||
RUN pip install numpy --user --no-cache-dir \
|
||||
&& pip install -r requirements-dev.txt --user --no-cache-dir
|
||||
|
||||
# Empty the ENTRYPOINT to allow all commands
|
||||
ENTRYPOINT []
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
version: '3'
|
||||
services:
|
||||
freqtrade:
|
||||
image: freqtradeorg/freqtrade:stable_freqaitorch
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
version: '3'
|
||||
services:
|
||||
ft_jupyterlab:
|
||||
build:
|
||||
|
||||
@@ -18,15 +18,13 @@ freqtrade backtesting -c <config.json> --timeframe <tf> --strategy <strategy_nam
|
||||
```
|
||||
|
||||
This will tell freqtrade to output a pickled dictionary of strategy, pairs and corresponding
|
||||
DataFrame of the candles that resulted in buy signals. Depending on how many buys your strategy
|
||||
makes, this file may get quite large, so periodically check your `user_data/backtest_results`
|
||||
folder to delete old exports.
|
||||
DataFrame of the candles that resulted in entry and exit signals.
|
||||
Depending on how many entries your strategy makes, this file may get quite large, so periodically check your `user_data/backtest_results` folder to delete old exports.
|
||||
|
||||
Before running your next backtest, make sure you either delete your old backtest results or run
|
||||
backtesting with the `--cache none` option to make sure no cached results are used.
|
||||
|
||||
If all goes well, you should now see a `backtest-result-{timestamp}_signals.pkl` file in the
|
||||
`user_data/backtest_results` folder.
|
||||
If all goes well, you should now see a `backtest-result-{timestamp}_signals.pkl` and `backtest-result-{timestamp}_exited.pkl` files in the `user_data/backtest_results` folder.
|
||||
|
||||
To analyze the entry/exit tags, we now need to use the `freqtrade backtesting-analysis` command
|
||||
with `--analysis-groups` option provided with space-separated arguments:
|
||||
@@ -48,29 +46,32 @@ ranging from the simplest (0) to the most detailed per pair, per buy and per sel
|
||||
|
||||
More options are available by running with the `-h` option.
|
||||
|
||||
### Using export-filename
|
||||
### Using backtest-filename
|
||||
|
||||
Normally, `backtesting-analysis` uses the latest backtest results, but if you wanted to go
|
||||
back to a previous backtest output, you need to supply the `--export-filename` option.
|
||||
You can supply the same parameter to `backtest-analysis` with the name of the final backtest
|
||||
output file. This allows you to keep historical versions of backtest results and re-analyse
|
||||
them at a later date:
|
||||
By default, `backtesting-analysis` processes the most recent backtest results in the `user_data/backtest_results` directory.
|
||||
If you want to analyze results from an earlier backtest, use the `--backtest-filename` option to specify the desired file. This lets you revisit and re-analyze historical backtest outputs at any time by providing the filename of the relevant backtest result:
|
||||
|
||||
``` bash
|
||||
freqtrade backtesting -c <config.json> --timeframe <tf> --strategy <strategy_name> --timerange=<timerange> --export=signals --export-filename=/tmp/mystrat_backtest.json
|
||||
freqtrade backtesting-analysis -c <config.json> --timeframe <tf> --strategy <strategy_name> --timerange <timerange> --export signals --backtest-filename backtest-result-2025-03-05_20-38-34.zip
|
||||
```
|
||||
|
||||
You should see some output similar to below in the logs with the name of the timestamped
|
||||
filename that was exported:
|
||||
|
||||
```
|
||||
2022-06-14 16:28:32,698 - freqtrade.misc - INFO - dumping json to "/tmp/mystrat_backtest-2022-06-14_16-28-32.json"
|
||||
2022-06-14 16:28:32,698 - freqtrade.misc - INFO - dumping json to "mystrat_backtest-2022-06-14_16-28-32.json"
|
||||
```
|
||||
|
||||
You can then use that filename in `backtesting-analysis`:
|
||||
|
||||
```
|
||||
freqtrade backtesting-analysis -c <config.json> --export-filename=/tmp/mystrat_backtest-2022-06-14_16-28-32.json
|
||||
freqtrade backtesting-analysis -c <config.json> --backtest-filename=mystrat_backtest-2022-06-14_16-28-32.json
|
||||
```
|
||||
|
||||
To use a result from a different results directory, you can use `--backtest-directory` to specify the directory
|
||||
|
||||
``` bash
|
||||
freqtrade backtesting-analysis -c <config.json> --backtest-directory custom_results/ --backtest-filename mystrat_backtest-2022-06-14_16-28-32.json
|
||||
```
|
||||
|
||||
### Tuning the buy tags and sell tags to display
|
||||
@@ -103,6 +104,10 @@ The indicators have to be present in your strategy's main DataFrame (either for
|
||||
timeframe or for informative timeframes) otherwise they will simply be ignored in the script
|
||||
output.
|
||||
|
||||
!!! Note "Indicator List"
|
||||
The indicator values will be displayed for both entry and exit points. If `--indicator-list all` is specified,
|
||||
only the indicators at the entry point will be shown to avoid excessively large lists, which could occur depending on the strategy.
|
||||
|
||||
There are a range of candle and trade-related fields that are included in the analysis so are
|
||||
automatically accessible by including them on the indicator-list, and these include:
|
||||
|
||||
@@ -118,6 +123,53 @@ automatically accessible by including them on the indicator-list, and these incl
|
||||
- **profit_ratio :** trade profit ratio
|
||||
- **profit_abs :** absolute profit return of the trade
|
||||
|
||||
#### Sample Output for Indicator Values
|
||||
|
||||
```bash
|
||||
freqtrade backtesting-analysis -c user_data/config.json --analysis-groups 0 --indicator-list chikou_span tenkan_sen
|
||||
```
|
||||
|
||||
In this example,
|
||||
we aim to display the `chikou_span` and `tenkan_sen` indicator values at both the entry and exit points of trades.
|
||||
|
||||
A sample output for indicators might look like this:
|
||||
|
||||
| pair | open_date | enter_reason | exit_reason | chikou_span (entry) | tenkan_sen (entry) | chikou_span (exit) | tenkan_sen (exit) |
|
||||
|-----------|---------------------------|--------------|-------------|---------------------|--------------------|--------------------|-------------------|
|
||||
| DOGE/USDT | 2024-07-06 00:35:00+00:00 | | exit_signal | 0.105 | 0.106 | 0.105 | 0.107 |
|
||||
| BTC/USDT | 2024-08-05 14:20:00+00:00 | | roi | 54643.440 | 51696.400 | 54386.000 | 52072.010 |
|
||||
|
||||
As shown in the table, `chikou_span (entry)` represents the indicator value at the time of trade entry,
|
||||
while `chikou_span (exit)` reflects its value at the time of exit.
|
||||
This detailed view of indicator values enhances the analysis.
|
||||
|
||||
The `(entry)` and `(exit)` suffixes are added to indicators
|
||||
to distinguish the values at the entry and exit points of the trade.
|
||||
|
||||
!!! Note "Trade-wide Indicators"
|
||||
Certain trade-wide indicators do not have the `(entry)` or `(exit)` suffix. These indicators include: `pair`, `stake_amount`,
|
||||
`max_stake_amount`, `amount`, `open_date`, `close_date`, `open_rate`, `close_rate`, `fee_open`, `fee_close`, `trade_duration`,
|
||||
`profit_ratio`, `profit_abs`, `exit_reason`,`initial_stop_loss_abs`, `initial_stop_loss_ratio`, `stop_loss_abs`, `stop_loss_ratio`,
|
||||
`min_rate`, `max_rate`, `is_open`, `enter_tag`, `leverage`, `is_short`, `open_timestamp`, `close_timestamp` and `orders`
|
||||
|
||||
#### Filtering Indicators Based on Entry or Exit Signals
|
||||
|
||||
The `--indicator-list` option, by default, displays indicator values for both entry and exit signals. To filter the indicator values exclusively for entry signals, you can use the `--entry-only` argument. Similarly, to display indicator values only at exit signals, use the `--exit-only` argument.
|
||||
|
||||
Example: Display indicator values at entry signals:
|
||||
|
||||
```bash
|
||||
freqtrade backtesting-analysis -c user_data/config.json --analysis-groups 0 --indicator-list chikou_span tenkan_sen --entry-only
|
||||
```
|
||||
|
||||
Example: Display indicator values at exit signals:
|
||||
|
||||
```bash
|
||||
freqtrade backtesting-analysis -c user_data/config.json --analysis-groups 0 --indicator-list chikou_span tenkan_sen --exit-only
|
||||
```
|
||||
|
||||
!!! note
|
||||
When using these filters, the indicator names will not be suffixed with `(entry)` or `(exit)`.
|
||||
|
||||
### Filtering the trade output by date
|
||||
|
||||
|
||||
@@ -30,11 +30,18 @@ class SuperDuperHyperOptLoss(IHyperOptLoss):
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def hyperopt_loss_function(results: DataFrame, trade_count: int,
|
||||
min_date: datetime, max_date: datetime,
|
||||
config: Config, processed: Dict[str, DataFrame],
|
||||
backtest_stats: Dict[str, Any],
|
||||
*args, **kwargs) -> float:
|
||||
def hyperopt_loss_function(
|
||||
*,
|
||||
results: DataFrame,
|
||||
trade_count: int,
|
||||
min_date: datetime,
|
||||
max_date: datetime,
|
||||
config: Config,
|
||||
processed: dict[str, DataFrame],
|
||||
backtest_stats: dict[str, Any],
|
||||
starting_balance: float,
|
||||
**kwargs,
|
||||
) -> float:
|
||||
"""
|
||||
Objective function, returns smaller number for better results
|
||||
This is the legacy algorithm (used until now in freqtrade).
|
||||
@@ -64,6 +71,7 @@ Currently, the arguments are:
|
||||
* `config`: Config object used (Note: Not all strategy-related parameters will be updated here if they are part of a hyperopt space).
|
||||
* `processed`: Dict of Dataframes with the pair as keys containing the data used for backtesting.
|
||||
* `backtest_stats`: Backtesting statistics using the same format as the backtesting file "strategy" substructure. Available fields can be seen in `generate_strategy_stats()` in `optimize_reports.py`.
|
||||
* `starting_balance`: Starting balance used for backtesting.
|
||||
|
||||
This function needs to return a floating point number (`float`). Smaller numbers will be interpreted as better results. The parameters and balancing for this is up to you.
|
||||
|
||||
@@ -97,7 +105,7 @@ class MyAwesomeStrategy(IStrategy):
|
||||
SKDecimal(0.01, 0.20, decimals=3, name='roi_p3'),
|
||||
]
|
||||
|
||||
def generate_roi_table(params: Dict) -> Dict[int, float]:
|
||||
def generate_roi_table(params: Dict) -> dict[int, float]:
|
||||
|
||||
roi_table = {}
|
||||
roi_table[0] = params['roi_p1'] + params['roi_p2'] + params['roi_p3']
|
||||
@@ -153,56 +161,53 @@ class MyAwesomeStrategy(IStrategy):
|
||||
|
||||
### Overriding Base estimator
|
||||
|
||||
You can define your own estimator for Hyperopt by implementing `generate_estimator()` in the Hyperopt subclass.
|
||||
You can define your own optuna sampler for Hyperopt by implementing `generate_estimator()` in the Hyperopt subclass.
|
||||
|
||||
```python
|
||||
class MyAwesomeStrategy(IStrategy):
|
||||
class HyperOpt:
|
||||
def generate_estimator(dimensions: List['Dimension'], **kwargs):
|
||||
return "RF"
|
||||
return "NSGAIIISampler"
|
||||
|
||||
```
|
||||
|
||||
Possible values are either one of "GP", "RF", "ET", "GBRT" (Details can be found in the [scikit-optimize documentation](https://scikit-optimize.github.io/)), or "an instance of a class that inherits from `RegressorMixin` (from sklearn) and where the `predict` method has an optional `return_std` argument, which returns `std(Y | x)` along with `E[Y | x]`".
|
||||
Possible values are either one of "NSGAIISampler", "TPESampler", "GPSampler", "CmaEsSampler", "NSGAIIISampler", "QMCSampler" (Details can be found in the [optuna-samplers documentation](https://optuna.readthedocs.io/en/stable/reference/samplers/index.html)), or "an instance of a class that inherits from `optuna.samplers.BaseSampler`".
|
||||
|
||||
Some research will be necessary to find additional Regressors.
|
||||
|
||||
Example for `ExtraTreesRegressor` ("ET") with additional parameters:
|
||||
|
||||
```python
|
||||
class MyAwesomeStrategy(IStrategy):
|
||||
class HyperOpt:
|
||||
def generate_estimator(dimensions: List['Dimension'], **kwargs):
|
||||
from skopt.learning import ExtraTreesRegressor
|
||||
# Corresponds to "ET" - but allows additional parameters.
|
||||
return ExtraTreesRegressor(n_estimators=100)
|
||||
|
||||
```
|
||||
|
||||
The `dimensions` parameter is the list of `skopt.space.Dimension` objects corresponding to the parameters to be optimized. It can be used to create isotropic kernels for the `skopt.learning.GaussianProcessRegressor` estimator. Here's an example:
|
||||
|
||||
```python
|
||||
class MyAwesomeStrategy(IStrategy):
|
||||
class HyperOpt:
|
||||
def generate_estimator(dimensions: List['Dimension'], **kwargs):
|
||||
from skopt.utils import cook_estimator
|
||||
from skopt.learning.gaussian_process.kernels import (Matern, ConstantKernel)
|
||||
kernel_bounds = (0.0001, 10000)
|
||||
kernel = (
|
||||
ConstantKernel(1.0, kernel_bounds) *
|
||||
Matern(length_scale=np.ones(len(dimensions)), length_scale_bounds=[kernel_bounds for d in dimensions], nu=2.5)
|
||||
)
|
||||
kernel += (
|
||||
ConstantKernel(1.0, kernel_bounds) *
|
||||
Matern(length_scale=np.ones(len(dimensions)), length_scale_bounds=[kernel_bounds for d in dimensions], nu=1.5)
|
||||
)
|
||||
|
||||
return cook_estimator("GP", space=dimensions, kernel=kernel, n_restarts_optimizer=2)
|
||||
```
|
||||
Some research will be necessary to find additional Samplers (from optunahub) for example.
|
||||
|
||||
!!! Note
|
||||
While custom estimators can be provided, it's up to you as User to do research on possible parameters and analyze / understand which ones should be used.
|
||||
If you're unsure about this, best use one of the Defaults (`"ET"` has proven to be the most versatile) without further parameters.
|
||||
If you're unsure about this, best use one of the Defaults (`"NSGAIIISampler"` has proven to be the most versatile) without further parameters.
|
||||
|
||||
??? Example "Using `AutoSampler` from Optunahub"
|
||||
|
||||
[AutoSampler docs](https://hub.optuna.org/samplers/auto_sampler/)
|
||||
|
||||
Install the necessary dependencies
|
||||
``` bash
|
||||
pip install optunahub cmaes torch scipy
|
||||
```
|
||||
Implement `generate_estimator()` in your strategy
|
||||
|
||||
``` python
|
||||
# ...
|
||||
from freqtrade.strategy.interface import IStrategy
|
||||
from typing import List
|
||||
import optunahub
|
||||
# ...
|
||||
|
||||
class my_strategy(IStrategy):
|
||||
class HyperOpt:
|
||||
def generate_estimator(dimensions: List["Dimension"], **kwargs):
|
||||
if "random_state" in kwargs.keys():
|
||||
return optunahub.load_module("samplers/auto_sampler").AutoSampler(seed=kwargs["random_state"])
|
||||
else:
|
||||
return optunahub.load_module("samplers/auto_sampler").AutoSampler()
|
||||
|
||||
```
|
||||
|
||||
Obviously the same approach will work for all other Samplers optuna supports.
|
||||
|
||||
|
||||
## Space options
|
||||
|
||||
|
||||
153
docs/advanced-orderflow.md
Normal file
153
docs/advanced-orderflow.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# Orderflow data
|
||||
|
||||
This guide walks you through utilizing public trade data for advanced orderflow analysis in Freqtrade.
|
||||
|
||||
!!! Warning "Experimental Feature"
|
||||
The orderflow feature is currently in beta and may be subject to changes in future releases. Please report any issues or feedback on the [Freqtrade GitHub repository](https://github.com/freqtrade/freqtrade/issues).
|
||||
It's also currently not been tested with freqAI - and combining these two features is considered out of scope at this point.
|
||||
|
||||
!!! Warning "Performance"
|
||||
Orderflow requires raw trades data. This data is rather large, and can cause a slow initial startup, when freqtrade needs to download the trades data for the last X candles. Additionally, enabling this feature will cause increased memory usage. Please ensure to have sufficient resources available.
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Enable Public Trades
|
||||
|
||||
In your `config.json` file, set the `use_public_trades` option to true under the `exchange` section.
|
||||
|
||||
```json
|
||||
"exchange": {
|
||||
...
|
||||
"use_public_trades": true,
|
||||
}
|
||||
```
|
||||
|
||||
### Configure Orderflow Processing
|
||||
|
||||
Define your desired settings for orderflow processing within the orderflow section of config.json. Here, you can adjust factors like:
|
||||
|
||||
- `cache_size`: How many previous orderflow candles are saved into cache instead of calculated every new candle
|
||||
- `max_candles`: Filter how many candles would you like to get trades data for.
|
||||
- `scale`: This controls the price bin size for the footprint chart.
|
||||
- `stacked_imbalance_range`: Defines the minimum consecutive imbalanced price levels required for consideration.
|
||||
- `imbalance_volume`: Filters out imbalances with volume below this threshold.
|
||||
- `imbalance_ratio`: Filters out imbalances with a ratio (difference between ask and bid volume) lower than this value.
|
||||
|
||||
```json
|
||||
"orderflow": {
|
||||
"cache_size": 1000,
|
||||
"max_candles": 1500,
|
||||
"scale": 0.5,
|
||||
"stacked_imbalance_range": 3, // needs at least this amount of imbalance next to each other
|
||||
"imbalance_volume": 1, // filters out below
|
||||
"imbalance_ratio": 3 // filters out ratio lower than
|
||||
},
|
||||
```
|
||||
|
||||
## Downloading Trade Data for Backtesting
|
||||
|
||||
To download historical trade data for backtesting, use the --dl-trades flag with the freqtrade download-data command.
|
||||
|
||||
```bash
|
||||
freqtrade download-data -p BTC/USDT:USDT --timerange 20230101- --trading-mode futures --timeframes 5m --dl-trades
|
||||
```
|
||||
|
||||
!!! Warning "Data availability"
|
||||
Not all exchanges provide public trade data. For supported exchanges, freqtrade will warn you if public trade data is not available if you start downloading data with the `--dl-trades` flag.
|
||||
|
||||
## Accessing Orderflow Data
|
||||
|
||||
Once activated, several new columns become available in your dataframe:
|
||||
|
||||
``` python
|
||||
|
||||
dataframe["trades"] # Contains information about each individual trade.
|
||||
dataframe["orderflow"] # Represents a footprint chart dict (see below)
|
||||
dataframe["imbalances"] # Contains information about imbalances in the order flow.
|
||||
dataframe["bid"] # Total bid volume
|
||||
dataframe["ask"] # Total ask volume
|
||||
dataframe["delta"] # Difference between ask and bid volume.
|
||||
dataframe["min_delta"] # Minimum delta within the candle
|
||||
dataframe["max_delta"] # Maximum delta within the candle
|
||||
dataframe["total_trades"] # Total number of trades
|
||||
dataframe["stacked_imbalances_bid"] # List of price levels of stacked bid imbalance range beginnings
|
||||
dataframe["stacked_imbalances_ask"] # List of price levels of stacked ask imbalance range beginnings
|
||||
```
|
||||
|
||||
You can access these columns in your strategy code for further analysis. Here's an example:
|
||||
|
||||
``` python
|
||||
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
|
||||
# Calculating cumulative delta
|
||||
dataframe["cum_delta"] = cumulative_delta(dataframe["delta"])
|
||||
# Accessing total trades
|
||||
total_trades = dataframe["total_trades"]
|
||||
...
|
||||
|
||||
def cumulative_delta(delta: Series):
|
||||
cumdelta = delta.cumsum()
|
||||
return cumdelta
|
||||
|
||||
```
|
||||
|
||||
### Footprint chart (`dataframe["orderflow"]`)
|
||||
|
||||
This column provides a detailed breakdown of buy and sell orders at different price levels, offering valuable insights into order flow dynamics. The `scale` parameter in your configuration determines the price bin size for this representation
|
||||
|
||||
The `orderflow` column contains a dict with the following structure:
|
||||
|
||||
``` output
|
||||
{
|
||||
"price": {
|
||||
"bid_amount": 0.0,
|
||||
"ask_amount": 0.0,
|
||||
"bid": 0,
|
||||
"ask": 0,
|
||||
"delta": 0.0,
|
||||
"total_volume": 0.0,
|
||||
"total_trades": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Orderflow column explanation
|
||||
|
||||
- key: Price bin - binned at `scale` intervals
|
||||
- `bid_amount`: Total volume bought at each price level.
|
||||
- `ask_amount`: Total volume sold at each price level.
|
||||
- `bid`: Number of buy orders at each price level.
|
||||
- `ask`: Number of sell orders at each price level.
|
||||
- `delta`: Difference between ask and bid volume at each price level.
|
||||
- `total_volume`: Total volume (ask amount + bid amount) at each price level.
|
||||
- `total_trades`: Total number of trades (ask + bid) at each price level.
|
||||
|
||||
By leveraging these features, you can gain valuable insights into market sentiment and potential trading opportunities based on order flow analysis.
|
||||
|
||||
### Raw trades data (`dataframe["trades"]`)
|
||||
|
||||
List with the individual trades that occurred during the candle. This data can be used for more granular analysis of order flow dynamics.
|
||||
|
||||
Each individual entry contains a dict with the following keys:
|
||||
|
||||
- `timestamp`: Timestamp of the trade.
|
||||
- `date`: Date of the trade.
|
||||
- `price`: Price of the trade.
|
||||
- `amount`: Volume of the trade.
|
||||
- `side`: Buy or sell.
|
||||
- `id`: Unique identifier for the trade.
|
||||
- `cost`: Total cost of the trade (price * amount).
|
||||
|
||||
### Imbalances (`dataframe["imbalances"]`)
|
||||
|
||||
This column provides a dict with information about imbalances in the order flow. An imbalance occurs when there is a significant difference between the ask and bid volume at a given price level.
|
||||
|
||||
Each row looks as follows - with price as index, and the corresponding bid and ask imbalance values as columns
|
||||
|
||||
``` output
|
||||
{
|
||||
"price": {
|
||||
"bid_imbalance": False,
|
||||
"ask_imbalance": False
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -114,8 +114,46 @@ services:
|
||||
--strategy SampleStrategy
|
||||
|
||||
```
|
||||
|
||||
You can use whatever naming convention you want, freqtrade1 and 2 are arbitrary. Note, that you will need to use different database files, port mappings and telegram configurations for each instance, as mentioned above.
|
||||
|
||||
## Use a different database system
|
||||
|
||||
Freqtrade is using SQLAlchemy, which supports multiple different database systems. As such, a multitude of database systems should be supported.
|
||||
Freqtrade does not depend or install any additional database driver. Please refer to the [SQLAlchemy docs](https://docs.sqlalchemy.org/en/14/core/engines.html#database-urls) on installation instructions for the respective database systems.
|
||||
|
||||
The following systems have been tested and are known to work with freqtrade:
|
||||
|
||||
* sqlite (default)
|
||||
* PostgreSQL
|
||||
* MariaDB
|
||||
|
||||
!!! Warning
|
||||
By using one of the below database systems, you acknowledge that you know how to manage such a system. The freqtrade team will not provide any support with setup or maintenance (or backups) of the below database systems.
|
||||
|
||||
### PostgreSQL
|
||||
|
||||
Installation:
|
||||
`pip install psycopg2-binary`
|
||||
|
||||
Usage:
|
||||
`... --db-url postgresql+psycopg2://<username>:<password>@localhost:5432/<database>`
|
||||
|
||||
Freqtrade will automatically create the tables necessary upon startup.
|
||||
|
||||
If you're running different instances of Freqtrade, you must either setup one database per Instance or use different users / schemas for your connections.
|
||||
|
||||
### MariaDB / MySQL
|
||||
|
||||
Freqtrade supports MariaDB by using SQLAlchemy, which supports multiple different database systems.
|
||||
|
||||
Installation:
|
||||
`pip install pymysql`
|
||||
|
||||
Usage:
|
||||
`... --db-url mysql+pymysql://<username>:<password>@localhost:3306/<database>`
|
||||
|
||||
|
||||
|
||||
## Configure the bot running as a systemd service
|
||||
|
||||
@@ -139,7 +177,7 @@ sudo loginctl enable-linger "$USER"
|
||||
If you run the bot as a service, you can use systemd service manager as a software watchdog monitoring freqtrade bot
|
||||
state and restarting it in the case of failures. If the `internals.sd_notify` parameter is set to true in the
|
||||
configuration or the `--sd-notify` command line option is used, the bot will send keep-alive ping messages to systemd
|
||||
using the sd_notify (systemd notifications) protocol and will also tell systemd its current state (Running or Stopped)
|
||||
using the sd_notify (systemd notifications) protocol and will also tell systemd its current state (Running, Paused or Stopped)
|
||||
when it changes.
|
||||
|
||||
The `freqtrade.service.watchdog` file contains an example of the service unit configuration file which uses systemd
|
||||
@@ -150,30 +188,113 @@ as the watchdog.
|
||||
|
||||
## Advanced Logging
|
||||
|
||||
Freqtrade uses the default logging module provided by python.
|
||||
Python allows for extensive [logging configuration](https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig) in this regard - way more than what can be covered here.
|
||||
|
||||
Default logging format (coloured terminal output) is set up by default if no `log_config` is provided in your freqtrade configuration.
|
||||
Using `--logfile logfile.log` will enable the RotatingFileHandler.
|
||||
|
||||
If you're not content with the log format, or with the default settings provided for the RotatingFileHandler, you can customize logging to your liking by adding the `log_config` configuration to your freqtrade configuration file(s).
|
||||
|
||||
The default configuration looks roughly like the below, with the file handler being provided but not enabled as the `filename` is commented out.
|
||||
Uncomment this line and supply a valid path/filename to enable it.
|
||||
|
||||
``` json hl_lines="5-7 13-16 27"
|
||||
{
|
||||
"log_config": {
|
||||
"version": 1,
|
||||
"formatters": {
|
||||
"basic": {
|
||||
"format": "%(message)s"
|
||||
},
|
||||
"standard": {
|
||||
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
||||
}
|
||||
},
|
||||
"handlers": {
|
||||
"console": {
|
||||
"class": "freqtrade.loggers.ft_rich_handler.FtRichHandler",
|
||||
"formatter": "basic"
|
||||
},
|
||||
"file": {
|
||||
"class": "logging.handlers.RotatingFileHandler",
|
||||
"formatter": "standard",
|
||||
// "filename": "someRandomLogFile.log",
|
||||
"maxBytes": 10485760,
|
||||
"backupCount": 10
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"handlers": [
|
||||
"console",
|
||||
// "file"
|
||||
],
|
||||
"level": "INFO",
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
!!! Note "highlighted lines"
|
||||
Highlighted lines in the above code-block define the Rich handler and belong together.
|
||||
The formatter "standard" and "file" will belong to the FileHandler.
|
||||
|
||||
Each handler must use one of the defined formatters (by name), its class must be available, and must be a valid logging class.
|
||||
To actually use a handler, it must be in the "handlers" section inside the "root" segment.
|
||||
If this section is left out, freqtrade will provide no output (in the non-configured handler, anyway).
|
||||
|
||||
!!! Tip "Explicit log configuration"
|
||||
We recommend to extract the logging configuration from your main freqtrade configuration file, and provide it to your bot via [multiple configuration files](configuration.md#multiple-configuration-files) functionality. This will avoid unnecessary code duplication.
|
||||
|
||||
---
|
||||
|
||||
On many Linux systems the bot can be configured to send its log messages to `syslog` or `journald` system services. Logging to a remote `syslog` server is also available on Windows. The special values for the `--logfile` command line option can be used for this.
|
||||
|
||||
### Logging to syslog
|
||||
|
||||
To send Freqtrade log messages to a local or remote `syslog` service use the `--logfile` command line option with the value in the following format:
|
||||
To send Freqtrade log messages to a local or remote `syslog` service use the `"log_config"` setup option to configure logging.
|
||||
|
||||
* `--logfile syslog:<syslog_address>` -- send log messages to `syslog` service using the `<syslog_address>` as the syslog address.
|
||||
``` json
|
||||
{
|
||||
// ...
|
||||
"log_config": {
|
||||
"version": 1,
|
||||
"formatters": {
|
||||
"syslog_fmt": {
|
||||
"format": "%(name)s - %(levelname)s - %(message)s"
|
||||
}
|
||||
},
|
||||
"handlers": {
|
||||
// Other handlers?
|
||||
"syslog": {
|
||||
"class": "logging.handlers.SysLogHandler",
|
||||
"formatter": "syslog_fmt",
|
||||
// Use one of the other options above as address instead?
|
||||
"address": "/dev/log"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"handlers": [
|
||||
// other handlers
|
||||
"syslog",
|
||||
|
||||
]
|
||||
}
|
||||
|
||||
The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character.
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
So, the following are the examples of possible usages:
|
||||
[Additional log-handlers](#advanced-logging) may need to be configured to for example also have log output in the console.
|
||||
|
||||
* `--logfile syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems.
|
||||
* `--logfile syslog` -- same as above, the shortcut for `/dev/log`.
|
||||
* `--logfile syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS.
|
||||
* `--logfile syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514.
|
||||
* `--logfile syslog:<ip>:514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server.
|
||||
#### Syslog usage
|
||||
|
||||
Log messages are send to `syslog` with the `user` facility. So you can see them with the following commands:
|
||||
|
||||
* `tail -f /var/log/user`, or
|
||||
* `tail -f /var/log/user`, or
|
||||
* install a comprehensive graphical viewer (for instance, 'Log File Viewer' for Ubuntu).
|
||||
|
||||
On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfile syslog` or `--logfile journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better.
|
||||
On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both syslog or journald can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better.
|
||||
|
||||
For `rsyslog` the messages from the bot can be redirected into a separate dedicated log file. To achieve this, add
|
||||
|
||||
@@ -190,13 +311,66 @@ For `syslog` (`rsyslog`), the reduction mode can be switched on. This will reduc
|
||||
$RepeatedMsgReduction on
|
||||
```
|
||||
|
||||
#### Syslog addressing
|
||||
|
||||
The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character.
|
||||
|
||||
So, the following are the examples of possible addresses:
|
||||
|
||||
* `"address": "/dev/log"` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems.
|
||||
* `"address": "/var/run/syslog"` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS.
|
||||
* `"address": "localhost:514"` -- log to local syslog using UDP socket, if it listens on port 514.
|
||||
* `"address": "<ip>:514"` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server.
|
||||
|
||||
??? Info "Deprecated - configure syslog via command line"
|
||||
`--logfile syslog:<syslog_address>` -- send log messages to `syslog` service using the `<syslog_address>` as the syslog address.
|
||||
|
||||
The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character.
|
||||
|
||||
So, the following are the examples of possible usages:
|
||||
|
||||
* `--logfile syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems.
|
||||
* `--logfile syslog` -- same as above, the shortcut for `/dev/log`.
|
||||
* `--logfile syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS.
|
||||
* `--logfile syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514.
|
||||
* `--logfile syslog:<ip>:514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server.
|
||||
|
||||
### Logging to journald
|
||||
|
||||
This needs the `cysystemd` python package installed as dependency (`pip install cysystemd`), which is not available on Windows. Hence, the whole journald logging functionality is not available for a bot running on Windows.
|
||||
|
||||
To send Freqtrade log messages to `journald` system service use the `--logfile` command line option with the value in the following format:
|
||||
To send Freqtrade log messages to `journald` system service, add the following configuration snippet to your configuration.
|
||||
|
||||
* `--logfile journald` -- send log messages to `journald`.
|
||||
``` json
|
||||
{
|
||||
// ...
|
||||
"log_config": {
|
||||
"version": 1,
|
||||
"formatters": {
|
||||
"journald_fmt": {
|
||||
"format": "%(name)s - %(levelname)s - %(message)s"
|
||||
}
|
||||
},
|
||||
"handlers": {
|
||||
// Other handlers?
|
||||
"journald": {
|
||||
"class": "cysystemd.journal.JournaldLogHandler",
|
||||
"formatter": "journald_fmt",
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"handlers": [
|
||||
// ..
|
||||
"journald",
|
||||
|
||||
]
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[Additional log-handlers](#advanced-logging) may need to be configured to for example also have log output in the console.
|
||||
|
||||
Log messages are send to `journald` with the `user` facility. So you can see them with the following commands:
|
||||
|
||||
@@ -206,3 +380,51 @@ Log messages are send to `journald` with the `user` facility. So you can see the
|
||||
There are many other options in the `journalctl` utility to filter the messages, see manual pages for this utility.
|
||||
|
||||
On many systems `syslog` (`rsyslog`) fetches data from `journald` (and vice versa), so both `--logfile syslog` or `--logfile journald` can be used and the messages be viewed with both `journalctl` and a syslog viewer utility. You can combine this in any way which suites you better.
|
||||
|
||||
??? Info "Deprecated - configure journald via command line"
|
||||
To send Freqtrade log messages to `journald` system service use the `--logfile` command line option with the value in the following format:
|
||||
|
||||
`--logfile journald` -- send log messages to `journald`.
|
||||
|
||||
### Log format as JSON
|
||||
|
||||
You can also configure the default output stream to use JSON format instead.
|
||||
The "fmt_dict" attribute defines the keys for the json output - as well as the [python logging LogRecord attributes](https://docs.python.org/3/library/logging.html#logrecord-attributes).
|
||||
|
||||
The below configuration will change the default output to JSON. The same formatter could however also be used in combination with the `RotatingFileHandler`.
|
||||
We recommend to keep one format in human readable form.
|
||||
|
||||
``` json
|
||||
{
|
||||
// ...
|
||||
"log_config": {
|
||||
"version": 1,
|
||||
"formatters": {
|
||||
"json": {
|
||||
"()": "freqtrade.loggers.json_formatter.JsonFormatter",
|
||||
"fmt_dict": {
|
||||
"timestamp": "asctime",
|
||||
"level": "levelname",
|
||||
"logger": "name",
|
||||
"message": "message"
|
||||
}
|
||||
}
|
||||
},
|
||||
"handlers": {
|
||||
// Other handlers?
|
||||
"jsonStream": {
|
||||
"class": "logging.StreamHandler",
|
||||
"formatter": "json"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"handlers": [
|
||||
// ..
|
||||
"jsonStream",
|
||||
|
||||
]
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
BIN
docs/assets/freqUI-chart-annotations-dark.png
Normal file
BIN
docs/assets/freqUI-chart-annotations-dark.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 111 KiB |
BIN
docs/assets/freqUI-chart-annotations-light.png
Normal file
BIN
docs/assets/freqUI-chart-annotations-light.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 109 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 51 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 12 KiB |
@@ -5,105 +5,11 @@ This page explains how to validate your strategy performance by using Backtestin
|
||||
Backtesting requires historic data to be available.
|
||||
To learn how to get data for the pairs and exchange you're interested in, head over to the [Data Downloading](data-download.md) section of the documentation.
|
||||
|
||||
Backtesting is also available in [webserver mode](freq-ui.md#backtesting), which allows you to run backtests via the web interface.
|
||||
|
||||
## Backtesting command reference
|
||||
|
||||
```
|
||||
usage: freqtrade backtesting [-h] [-v] [--logfile FILE] [-V] [-c PATH]
|
||||
[-d PATH] [--userdir PATH] [-s NAME]
|
||||
[--strategy-path PATH] [-i TIMEFRAME]
|
||||
[--timerange TIMERANGE]
|
||||
[--data-format-ohlcv {json,jsongz,hdf5}]
|
||||
[--max-open-trades INT]
|
||||
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
|
||||
[-p PAIRS [PAIRS ...]] [--eps] [--dmmp]
|
||||
[--enable-protections]
|
||||
[--dry-run-wallet DRY_RUN_WALLET]
|
||||
[--timeframe-detail TIMEFRAME_DETAIL]
|
||||
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
|
||||
[--export {none,trades,signals}]
|
||||
[--export-filename PATH]
|
||||
[--breakdown {day,week,month} [{day,week,month} ...]]
|
||||
[--cache {none,day,week,month}]
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--max-open-trades INT
|
||||
Override the value of the `max_open_trades`
|
||||
configuration setting.
|
||||
--stake-amount STAKE_AMOUNT
|
||||
Override the value of the `stake_amount` configuration
|
||||
setting.
|
||||
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
|
||||
entry and exit).
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--eps, --enable-position-stacking
|
||||
Allow buying the same pair multiple times (position
|
||||
stacking).
|
||||
--dmmp, --disable-max-market-positions
|
||||
Disable applying `max_open_trades` during backtest
|
||||
(same as setting `max_open_trades` to a very high
|
||||
number).
|
||||
--enable-protections, --enableprotections
|
||||
Enable protections for backtesting.Will slow
|
||||
backtesting down by a considerable amount, but will
|
||||
include configured protections
|
||||
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
|
||||
Starting balance, used for backtesting / hyperopt and
|
||||
dry-runs.
|
||||
--timeframe-detail TIMEFRAME_DETAIL
|
||||
Specify detail timeframe for backtesting (`1m`, `5m`,
|
||||
`30m`, `1h`, `1d`).
|
||||
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
|
||||
Provide a space-separated list of strategies to
|
||||
backtest. Please note that timeframe needs to be set
|
||||
either in config or via command line. When using this
|
||||
together with `--export trades`, the strategy-name is
|
||||
injected into the filename (so `backtest-data.json`
|
||||
becomes `backtest-data-SampleStrategy.json`
|
||||
--export {none,trades,signals}
|
||||
Export backtest results (default: trades).
|
||||
--export-filename PATH, --backtest-filename PATH
|
||||
Use this filename for backtest results.Requires
|
||||
`--export` to be set as well. Example: `--export-filen
|
||||
ame=user_data/backtest_results/backtest_today.json`
|
||||
--breakdown {day,week,month} [{day,week,month} ...]
|
||||
Show backtesting breakdown per [day, week, month].
|
||||
--cache {none,day,week,month}
|
||||
Load a cached backtest result no older than specified
|
||||
age (default: day).
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--logfile FILE Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH
|
||||
Path to directory with historical backtesting data.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
|
||||
```
|
||||
--8<-- "commands/backtesting.md"
|
||||
|
||||
## Test your strategy with Backtesting
|
||||
|
||||
@@ -199,12 +105,14 @@ Only use this if you're sure you'll not want to plot or analyze your results fur
|
||||
|
||||
---
|
||||
|
||||
Exporting trades to file specifying a custom filename
|
||||
Exporting trades to file specifying a custom directory
|
||||
|
||||
```bash
|
||||
freqtrade backtesting --strategy backtesting --export trades --export-filename=backtest_samplestrategy.json
|
||||
freqtrade backtesting --strategy backtesting --export trades --backtest-directory=user_data/custom-backtest-results
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Please also read about the [strategy startup period](strategy-customization.md#strategy-startup-period).
|
||||
|
||||
---
|
||||
@@ -252,115 +160,136 @@ The most important in the backtesting is to understand the result.
|
||||
A backtesting result will look like that:
|
||||
|
||||
```
|
||||
================================================ BACKTESTING REPORT =================================================
|
||||
| Pair | Entries | Avg Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins Draws Loss Win% |
|
||||
|:---------|--------:|---------------:|-----------------:|---------------:|:-------------|-------------------------:|
|
||||
| ADA/BTC | 35 | -0.11 | -0.00019428 | -1.94 | 4:35:00 | 14 0 21 40.0 |
|
||||
| ARK/BTC | 11 | -0.41 | -0.00022647 | -2.26 | 2:03:00 | 3 0 8 27.3 |
|
||||
| BTS/BTC | 32 | 0.31 | 0.00048938 | 4.89 | 5:05:00 | 18 0 14 56.2 |
|
||||
| DASH/BTC | 13 | -0.08 | -0.00005343 | -0.53 | 4:39:00 | 6 0 7 46.2 |
|
||||
| ENG/BTC | 18 | 1.36 | 0.00122807 | 12.27 | 2:50:00 | 8 0 10 44.4 |
|
||||
| EOS/BTC | 36 | 0.08 | 0.00015304 | 1.53 | 3:34:00 | 16 0 20 44.4 |
|
||||
| ETC/BTC | 26 | 0.37 | 0.00047576 | 4.75 | 6:14:00 | 11 0 15 42.3 |
|
||||
| ETH/BTC | 33 | 0.30 | 0.00049856 | 4.98 | 7:31:00 | 16 0 17 48.5 |
|
||||
| IOTA/BTC | 32 | 0.03 | 0.00005444 | 0.54 | 3:12:00 | 14 0 18 43.8 |
|
||||
| LSK/BTC | 15 | 1.75 | 0.00131413 | 13.13 | 2:58:00 | 6 0 9 40.0 |
|
||||
| LTC/BTC | 32 | -0.04 | -0.00006886 | -0.69 | 4:49:00 | 11 0 21 34.4 |
|
||||
| NANO/BTC | 17 | 1.26 | 0.00107058 | 10.70 | 1:55:00 | 10 0 7 58.5 |
|
||||
| NEO/BTC | 23 | 0.82 | 0.00094936 | 9.48 | 2:59:00 | 10 0 13 43.5 |
|
||||
| REQ/BTC | 9 | 1.17 | 0.00052734 | 5.27 | 3:47:00 | 4 0 5 44.4 |
|
||||
| XLM/BTC | 16 | 1.22 | 0.00097800 | 9.77 | 3:15:00 | 7 0 9 43.8 |
|
||||
| XMR/BTC | 23 | -0.18 | -0.00020696 | -2.07 | 5:30:00 | 12 0 11 52.2 |
|
||||
| XRP/BTC | 35 | 0.66 | 0.00114897 | 11.48 | 3:49:00 | 12 0 23 34.3 |
|
||||
| ZEC/BTC | 22 | -0.46 | -0.00050971 | -5.09 | 2:22:00 | 7 0 15 31.8 |
|
||||
| TOTAL | 429 | 0.36 | 0.00762792 | 76.20 | 4:12:00 | 186 0 243 43.4 |
|
||||
============================================= LEFT OPEN TRADES REPORT =============================================
|
||||
| Pair | Entries | Avg Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Win Draw Loss Win% |
|
||||
|:---------|---------:|---------------:|-----------------:|---------------:|:---------------|--------------------:|
|
||||
| ADA/BTC | 1 | 0.89 | 0.00004434 | 0.44 | 6:00:00 | 1 0 0 100 |
|
||||
| LTC/BTC | 1 | 0.68 | 0.00003421 | 0.34 | 2:00:00 | 1 0 0 100 |
|
||||
| TOTAL | 2 | 0.78 | 0.00007855 | 0.78 | 4:00:00 | 2 0 0 100 |
|
||||
==================== EXIT REASON STATS ====================
|
||||
| Exit Reason | Exits | Wins | Draws | Losses |
|
||||
|:-------------------|--------:|------:|-------:|--------:|
|
||||
| trailing_stop_loss | 205 | 150 | 0 | 55 |
|
||||
| stop_loss | 166 | 0 | 0 | 166 |
|
||||
| exit_signal | 56 | 36 | 0 | 20 |
|
||||
| force_exit | 2 | 0 | 0 | 2 |
|
||||
BACKTESTING REPORT
|
||||
┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ LTC/USDT:USDT │ 16 │ 1.0 │ 56.176 │ 5.62 │ 16:16:00 │ 16 0 0 100 │
|
||||
│ ETC/USDT:USDT │ 12 │ 0.72 │ 30.936 │ 3.09 │ 9:55:00 │ 11 0 1 91.7 │
|
||||
│ ETH/USDT:USDT │ 8 │ 0.66 │ 17.864 │ 1.79 │ 1 day, 13:55:00 │ 7 0 1 87.5 │
|
||||
│ XLM/USDT:USDT │ 10 │ 0.31 │ 11.054 │ 1.11 │ 12:08:00 │ 9 0 1 90.0 │
|
||||
│ BTC/USDT:USDT │ 8 │ 0.21 │ 7.289 │ 0.73 │ 3 days, 1:24:00 │ 6 0 2 75.0 │
|
||||
│ XRP/USDT:USDT │ 9 │ -0.14 │ -7.261 │ -0.73 │ 21:18:00 │ 8 0 1 88.9 │
|
||||
│ DOT/USDT:USDT │ 6 │ -0.4 │ -9.187 │ -0.92 │ 5:35:00 │ 4 0 2 66.7 │
|
||||
│ ADA/USDT:USDT │ 8 │ -1.76 │ -52.098 │ -5.21 │ 11:38:00 │ 6 0 2 75.0 │
|
||||
│ TOTAL │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||||
└───────────────┴────────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┘
|
||||
LEFT OPEN TRADES REPORT
|
||||
┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ BTC/USDT:USDT │ 1 │ -4.14 │ -9.930 │ -0.99 │ 17 days, 8:00:00 │ 0 0 1 0 │
|
||||
│ ETC/USDT:USDT │ 1 │ -4.24 │ -15.365 │ -1.54 │ 10:40:00 │ 0 0 1 0 │
|
||||
│ DOT/USDT:USDT │ 1 │ -5.29 │ -19.125 │ -1.91 │ 11:30:00 │ 0 0 1 0 │
|
||||
│ TOTAL │ 3 │ -4.56 │ -44.420 │ -4.44 │ 6 days, 2:03:00 │ 0 0 3 0 │
|
||||
└───────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────────┴────────────────────────┘
|
||||
ENTER TAG STATS
|
||||
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ OTHER │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||||
│ TOTAL │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||||
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
|
||||
EXIT REASON STATS
|
||||
┏━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ roi │ 67 │ 1.05 │ 242.179 │ 24.22 │ 15:49:00 │ 67 0 0 100 │
|
||||
│ exit_signal │ 4 │ -2.23 │ -31.217 │ -3.12 │ 1 day, 8:38:00 │ 0 0 4 0 │
|
||||
│ force_exit │ 3 │ -4.56 │ -44.420 │ -4.44 │ 6 days, 2:03:00 │ 0 0 3 0 │
|
||||
│ stop_loss │ 3 │ -10.14 │ -111.768 │ -11.18 │ 1 day, 3:05:00 │ 0 0 3 0 │
|
||||
│ TOTAL │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||||
└─────────────┴───────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┘
|
||||
MIXED TAG STATS
|
||||
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ │ roi │ 67 │ 1.05 │ 242.179 │ 24.22 │ 15:49:00 │ 67 0 0 100 │
|
||||
│ │ exit_signal │ 4 │ -2.23 │ -31.217 │ -3.12 │ 1 day, 8:38:00 │ 0 0 4 0 │
|
||||
│ │ force_exit │ 3 │ -4.56 │ -44.420 │ -4.44 │ 6 days, 2:03:00 │ 0 0 3 0 │
|
||||
│ │ stop_loss │ 3 │ -10.14 │ -111.768 │ -11.18 │ 1 day, 3:05:00 │ 0 0 3 0 │
|
||||
│ TOTAL │ │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||||
└───────────┴─────────────┴────────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┘
|
||||
SUMMARY METRICS
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Metric ┃ Value ┃
|
||||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ Backtesting from │ 2025-07-01 00:00:00 │
|
||||
│ Backtesting to │ 2025-08-01 00:00:00 │
|
||||
│ Trading Mode │ Isolated Futures │
|
||||
│ Max open trades │ 3 │
|
||||
│ │ │
|
||||
│ Total/Daily Avg Trades │ 77 / 2.48 │
|
||||
│ Starting balance │ 1000 USDT │
|
||||
│ Final balance │ 1054.774 USDT │
|
||||
│ Absolute profit │ 54.774 USDT │
|
||||
│ Total profit % │ 5.48% │
|
||||
│ CAGR % │ 87.36% │
|
||||
│ Sortino │ 2.48 │
|
||||
│ Sharpe │ 3.75 │
|
||||
│ Calmar │ 40.99 │
|
||||
│ SQN │ 0.69 │
|
||||
│ Profit factor │ 1.29 │
|
||||
│ Expectancy (Ratio) │ 0.71 (0.04) │
|
||||
│ Avg. daily profit │ 1.767 USDT │
|
||||
│ Avg. stake amount │ 345.016 USDT │
|
||||
│ Total trade volume │ 53316.954 USDT │
|
||||
│ │ │
|
||||
│ Long / Short trades │ 67 / 10 │
|
||||
│ Long / Short profit % │ 8.94% / -3.47% │
|
||||
│ Long / Short profit USDT │ 89.425 / -34.651 │
|
||||
│ │ │
|
||||
│ Best Pair │ LTC/USDT:USDT 5.62% │
|
||||
│ Worst Pair │ ADA/USDT:USDT -5.21% │
|
||||
│ Best trade │ ETC/USDT:USDT 2.00% │
|
||||
│ Worst trade │ ADA/USDT:USDT -10.17% │
|
||||
│ Best day │ 26.91 USDT │
|
||||
│ Worst day │ -47.741 USDT │
|
||||
│ Days win/draw/lose │ 20 / 6 / 5 │
|
||||
│ Min/Max/Avg. Duration Winners │ 0d 00:35 / 5d 18:15 / 0d 15:49 │
|
||||
│ Min/Max/Avg. Duration Losers │ 0d 10:40 / 17d 08:00 / 2d 17:00 │
|
||||
│ Max Consecutive Wins / Loss │ 36 / 3 │
|
||||
│ Rejected Entry signals │ 258 │
|
||||
│ Entry/Exit Timeouts │ 0 / 0 │
|
||||
│ │ │
|
||||
│ Min balance │ 1003.168 USDT │
|
||||
│ Max balance │ 1149.421 USDT │
|
||||
│ Max % of account underwater │ 8.23% │
|
||||
│ Absolute drawdown │ 94.647 USDT (8.23%) │
|
||||
│ Drawdown duration │ 9 days 08:50:00 │
|
||||
│ Profit at drawdown start │ 149.421 USDT │
|
||||
│ Profit at drawdown end │ 54.774 USDT │
|
||||
│ Drawdown start │ 2025-07-22 15:10:00 │
|
||||
│ Drawdown end │ 2025-08-01 00:00:00 │
|
||||
│ Market change │ 30.51% │
|
||||
└───────────────────────────────┴─────────────────────────────────┘
|
||||
|
||||
================== SUMMARY METRICS ==================
|
||||
| Metric | Value |
|
||||
|-----------------------------+---------------------|
|
||||
| Backtesting from | 2019-01-01 00:00:00 |
|
||||
| Backtesting to | 2019-05-01 00:00:00 |
|
||||
| Max open trades | 3 |
|
||||
| | |
|
||||
| Total/Daily Avg Trades | 429 / 3.575 |
|
||||
| Starting balance | 0.01000000 BTC |
|
||||
| Final balance | 0.01762792 BTC |
|
||||
| Absolute profit | 0.00762792 BTC |
|
||||
| Total profit % | 76.2% |
|
||||
| CAGR % | 460.87% |
|
||||
| Sortino | 1.88 |
|
||||
| Sharpe | 2.97 |
|
||||
| Calmar | 6.29 |
|
||||
| Profit factor | 1.11 |
|
||||
| Expectancy (Ratio) | -0.15 (-0.05) |
|
||||
| Avg. stake amount | 0.001 BTC |
|
||||
| Total trade volume | 0.429 BTC |
|
||||
| | |
|
||||
| Long / Short | 352 / 77 |
|
||||
| Total profit Long % | 1250.58% |
|
||||
| Total profit Short % | -15.02% |
|
||||
| Absolute profit Long | 0.00838792 BTC |
|
||||
| Absolute profit Short | -0.00076 BTC |
|
||||
| | |
|
||||
| Best Pair | LSK/BTC 26.26% |
|
||||
| Worst Pair | ZEC/BTC -10.18% |
|
||||
| Best Trade | LSK/BTC 4.25% |
|
||||
| Worst Trade | ZEC/BTC -10.25% |
|
||||
| Best day | 0.00076 BTC |
|
||||
| Worst day | -0.00036 BTC |
|
||||
| Days win/draw/lose | 12 / 82 / 25 |
|
||||
| Avg. Duration Winners | 4:23:00 |
|
||||
| Avg. Duration Loser | 6:55:00 |
|
||||
| Max Consecutive Wins / Loss | 3 / 4 |
|
||||
| Rejected Entry signals | 3089 |
|
||||
| Entry/Exit Timeouts | 0 / 0 |
|
||||
| Canceled Trade Entries | 34 |
|
||||
| Canceled Entry Orders | 123 |
|
||||
| Replaced Entry Orders | 89 |
|
||||
| | |
|
||||
| Min balance | 0.00945123 BTC |
|
||||
| Max balance | 0.01846651 BTC |
|
||||
| Max % of account underwater | 25.19% |
|
||||
| Absolute Drawdown (Account) | 13.33% |
|
||||
| Drawdown | 0.0015 BTC |
|
||||
| Drawdown high | 0.0013 BTC |
|
||||
| Drawdown low | -0.0002 BTC |
|
||||
| Drawdown Start | 2019-02-15 14:10:00 |
|
||||
| Drawdown End | 2019-04-11 18:15:00 |
|
||||
| Market change | -5.88% |
|
||||
=====================================================
|
||||
Backtested 2025-07-01 00:00:00 -> 2025-08-01 00:00:00 | Max open trades : 3
|
||||
STRATEGY SUMMARY
|
||||
┏━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
|
||||
┡━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ SampleStrategy │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │ 94.647 USDT 8.23% │
|
||||
└────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴────────────────────┘
|
||||
```
|
||||
|
||||
### Backtesting report table
|
||||
|
||||
The 1st table contains all trades the bot made, including "left open trades".
|
||||
The first table contains all trades the bot made, including "left open trades".
|
||||
|
||||
The last line will give you the overall performance of your strategy,
|
||||
here:
|
||||
|
||||
```
|
||||
| TOTAL | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 0 243 43.4 |
|
||||
│ TOTAL │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||||
```
|
||||
|
||||
The bot has made `429` trades for an average duration of `4:12:00`, with a performance of `76.20%` (profit), that means it has
|
||||
earned a total of `0.00762792 BTC` starting with a capital of 0.01 BTC.
|
||||
The bot has made `77` trades for an average duration of `22:12:00`, with a performance of `5.48%` (profit), that means it has earned a total of `54.774 USDT` starting with a capital of 1000 USDT.
|
||||
|
||||
The column `Avg Profit %` shows the average profit for all trades made.
|
||||
The column `Tot Profit %` shows instead the total profit % in relation to the starting balance.
|
||||
In the above results, we have a starting balance of 0.01 BTC and an absolute profit of 0.00762792 BTC - so the `Tot Profit %` will be `(0.00762792 / 0.01) * 100 ~= 76.2%`.
|
||||
|
||||
In the above results, we have a starting balance of 1000 USDT and an absolute profit of 54.774 USDT - so the `Tot Profit %` will be `(54.774 / 1000) * 100 ~= 5.48%`.
|
||||
|
||||
Your strategy performance is influenced by your entry strategy, your exit strategy, and also by the `minimal_roi` and `stop_loss` you have set.
|
||||
|
||||
@@ -376,81 +305,82 @@ On the other hand, if you set a too high `minimal_roi` like `"0": 0.55`
|
||||
(55%), there is almost no chance that the bot will ever reach this profit.
|
||||
Hence, keep in mind that your performance is an integral mix of all different elements of the strategy, your configuration, and the crypto-currency pairs you have set up.
|
||||
|
||||
### Exit reasons table
|
||||
|
||||
The 2nd table contains a recap of exit reasons.
|
||||
This table can tell you which area needs some additional work (e.g. all or many of the `exit_signal` trades are losses, so you should work on improving the exit signal, or consider disabling it).
|
||||
|
||||
### Left open trades table
|
||||
|
||||
The 3rd table contains all trades the bot had to `force_exit` at the end of the backtesting period to present you the full picture.
|
||||
The second table contains all trades the bot had to `force_exit` at the end of the backtesting period to present you the full picture.
|
||||
This is necessary to simulate realistic behavior, since the backtest period has to end at some point, while realistically, you could leave the bot running forever.
|
||||
These trades are also included in the first table, but are also shown separately in this table for clarity.
|
||||
|
||||
### Enter tag stats table
|
||||
|
||||
The third table provides a breakdown of trades by their entry tags (e.g., `enter_long`, `enter_short`), showing the number of entries, average profit percentage, total profit in the stake currency, total profit percentage, average duration, and the number of wins, draws, and losses for each tag.
|
||||
|
||||
### Exit reason stats table
|
||||
|
||||
The fourth table contains a recap of exit reasons (e.g., `exit_signal`, `roi`, `stop_loss`, `force_exit`). This table can tell you which area needs additional work (e.g., if many `exit_signal` trades are losses, you should work on improving the exit signal or consider disabling it).
|
||||
|
||||
### Mixed tag stats table
|
||||
|
||||
The fifth table combines entry tags and exit reasons, providing a detailed view of how different entry tags performed with specific exit reasons. This can help identify which combinations of entry and exit strategies are most effective.
|
||||
|
||||
### Summary metrics
|
||||
|
||||
The last element of the backtest report is the summary metrics table.
|
||||
It contains some useful key metrics about performance of your strategy on backtesting data.
|
||||
It contains key metrics about the performance of your strategy on backtesting data.
|
||||
|
||||
```
|
||||
================== SUMMARY METRICS ==================
|
||||
| Metric | Value |
|
||||
|-----------------------------+---------------------|
|
||||
| Backtesting from | 2019-01-01 00:00:00 |
|
||||
| Backtesting to | 2019-05-01 00:00:00 |
|
||||
| Max open trades | 3 |
|
||||
| | |
|
||||
| Total/Daily Avg Trades | 429 / 3.575 |
|
||||
| Starting balance | 0.01000000 BTC |
|
||||
| Final balance | 0.01762792 BTC |
|
||||
| Absolute profit | 0.00762792 BTC |
|
||||
| Total profit % | 76.2% |
|
||||
| CAGR % | 460.87% |
|
||||
| Sortino | 1.88 |
|
||||
| Sharpe | 2.97 |
|
||||
| Calmar | 6.29 |
|
||||
| Profit factor | 1.11 |
|
||||
| Expectancy (Ratio) | -0.15 (-0.05) |
|
||||
| Avg. stake amount | 0.001 BTC |
|
||||
| Total trade volume | 0.429 BTC |
|
||||
| | |
|
||||
| Long / Short | 352 / 77 |
|
||||
| Total profit Long % | 1250.58% |
|
||||
| Total profit Short % | -15.02% |
|
||||
| Absolute profit Long | 0.00838792 BTC |
|
||||
| Absolute profit Short | -0.00076 BTC |
|
||||
| | |
|
||||
| Best Pair | LSK/BTC 26.26% |
|
||||
| Worst Pair | ZEC/BTC -10.18% |
|
||||
| Best Trade | LSK/BTC 4.25% |
|
||||
| Worst Trade | ZEC/BTC -10.25% |
|
||||
| Best day | 0.00076 BTC |
|
||||
| Worst day | -0.00036 BTC |
|
||||
| Days win/draw/lose | 12 / 82 / 25 |
|
||||
| Avg. Duration Winners | 4:23:00 |
|
||||
| Avg. Duration Loser | 6:55:00 |
|
||||
| Max Consecutive Wins / Loss | 3 / 4 |
|
||||
| Rejected Entry signals | 3089 |
|
||||
| Entry/Exit Timeouts | 0 / 0 |
|
||||
| Canceled Trade Entries | 34 |
|
||||
| Canceled Entry Orders | 123 |
|
||||
| Replaced Entry Orders | 89 |
|
||||
| | |
|
||||
| Min balance | 0.00945123 BTC |
|
||||
| Max balance | 0.01846651 BTC |
|
||||
| Max % of account underwater | 25.19% |
|
||||
| Absolute Drawdown (Account) | 13.33% |
|
||||
| Drawdown | 0.0015 BTC |
|
||||
| Drawdown high | 0.0013 BTC |
|
||||
| Drawdown low | -0.0002 BTC |
|
||||
| Drawdown Start | 2019-02-15 14:10:00 |
|
||||
| Drawdown End | 2019-04-11 18:15:00 |
|
||||
| Market change | -5.88% |
|
||||
=====================================================
|
||||
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Metric ┃ Value ┃
|
||||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ Backtesting from │ 2025-07-01 00:00:00 │
|
||||
│ Backtesting to │ 2025-08-01 00:00:00 │
|
||||
│ Trading Mode │ Isolated Futures │
|
||||
│ Max open trades │ 3 │
|
||||
│ │ │
|
||||
│ Total/Daily Avg Trades │ 72 / 2.32 │
|
||||
│ Starting balance │ 1000 USDT │
|
||||
│ Final balance │ 1106.734 USDT │
|
||||
│ Absolute profit │ 106.734 USDT │
|
||||
│ Total profit % │ 10.67% │
|
||||
│ CAGR % │ 230.04% │
|
||||
│ Sortino │ 4.99 │
|
||||
│ Sharpe │ 8.00 │
|
||||
│ Calmar │ 77.76 │
|
||||
│ SQN │ 1.52 │
|
||||
│ Profit factor │ 1.79 │
|
||||
│ Expectancy (Ratio) │ 1.48 (0.07) │
|
||||
│ Avg. daily profit │ 3.443 USDT │
|
||||
│ Avg. stake amount │ 363.133 USDT │
|
||||
│ Total trade volume │ 52466.174 USDT │
|
||||
│ │ │
|
||||
│ Best Pair │ LTC/USDT:USDT 4.48% │
|
||||
│ Worst Pair │ ADA/USDT:USDT -1.78% │
|
||||
│ Best trade │ ETC/USDT:USDT 2.00% │
|
||||
│ Worst trade │ ADA/USDT:USDT -10.17% │
|
||||
│ Best day │ 23.535 USDT │
|
||||
│ Worst day │ -49.813 USDT │
|
||||
│ Days win/draw/lose │ 21 / 6 / 4 │
|
||||
│ Min/Max/Avg. Duration Winners │ 0d 00:35 / 5d 18:15 / 0d 15:30 │
|
||||
│ Min/Max/Avg. Duration Losers │ 0d 12:00 / 17d 08:00 / 3d 23:28 │
|
||||
│ Max Consecutive Wins / Loss │ 58 / 4 │
|
||||
│ Rejected Entry signals │ 254 │
|
||||
│ Entry/Exit Timeouts │ 0 / 0 │
|
||||
│ │ │
|
||||
│ Min balance │ 1003.168 USDT │
|
||||
│ Max balance │ 1209 USDT │
|
||||
│ Max % of account underwater │ 8.46% │
|
||||
│ Absolute drawdown │ 102.266 USDT (8.46%) │
|
||||
│ Drawdown duration │ 9 days 08:50:00 │
|
||||
│ Profit at drawdown start │ 209 USDT │
|
||||
│ Profit at drawdown end │ 106.734 USDT │
|
||||
│ Drawdown start │ 2025-07-22 15:10:00 │
|
||||
│ Drawdown end │ 2025-08-01 00:00:00 │
|
||||
│ Market change │ 30.51% │
|
||||
└───────────────────────────────┴─────────────────────────────────┘
|
||||
```
|
||||
|
||||
- `Backtesting from` / `Backtesting to`: Backtesting range (usually defined with the `--timerange` option).
|
||||
- `Trading Mode`: Spot or Futures trading.
|
||||
- `Max open trades`: Setting of `max_open_trades` (or `--max-open-trades`) - or number of pairs in the pairlist (whatever is lower).
|
||||
- `Total/Daily Avg Trades`: Identical to the total trades of the backtest output table / Total trades divided by the backtesting duration in days (this will give you information about how many trades to expect from the strategy).
|
||||
- `Starting balance`: Start balance - as given by dry-run-wallet (config or command line).
|
||||
@@ -461,56 +391,72 @@ It contains some useful key metrics about performance of your strategy on backte
|
||||
- `Sortino`: Annualized Sortino ratio.
|
||||
- `Sharpe`: Annualized Sharpe ratio.
|
||||
- `Calmar`: Annualized Calmar ratio.
|
||||
- `Profit factor`: profit / loss.
|
||||
- `SQN`: System Quality Number (SQN) - by Van Tharp.
|
||||
- `Profit factor`: Sum of the profits of all winning trades divided by the sum of the losses of all losing trades.
|
||||
- `Expectancy (Ratio)`: Expectancy ratio, which is the average profit or loss per trade. A negative expectancy ratio means that your strategy is not profitable.
|
||||
- `Avg. daily profit`: Average profit per day, calculated as `(Total Profit / Backtest Days)`.
|
||||
- `Avg. stake amount`: Average stake amount, either `stake_amount` or the average when using dynamic stake amount.
|
||||
- `Total trade volume`: Volume generated on the exchange to reach the above profit.
|
||||
- `Best Pair` / `Worst Pair`: Best and worst performing pair, and it's corresponding `Tot Profit %`.
|
||||
- `Best Trade` / `Worst Trade`: Biggest single winning trade and biggest single losing trade.
|
||||
- `Long / Short trades`: Split long/short trade counts (only shown when short trades were made).
|
||||
- `Long / Short profit %`: Profit percentage for long and short trades (only shown when short trades were made).
|
||||
- `Long / Short profit USDT`: Profit in stake currency for long and short trades (only shown when short trades were made).
|
||||
- `Best Pair` / `Worst Pair`: Best and worst performing pair (based on total profit percentage), and its corresponding `Tot Profit %`.
|
||||
- `Best trade` / `Worst trade`: Biggest single winning trade and biggest single losing trade.
|
||||
- `Best day` / `Worst day`: Best and worst day based on daily profit.
|
||||
- `Days win/draw/lose`: Winning / Losing days (draws are usually days without closed trade).
|
||||
- `Avg. Duration Winners` / `Avg. Duration Loser`: Average durations for winning and losing trades.
|
||||
- `Days win/draw/lose`: Winning / Losing days (draws are usually days without closed trades).
|
||||
- `Min/Max/Avg. Duration Winners`: Minimum, maximum, and average durations for winning trades.
|
||||
- `Min/Max/Avg. Duration Losers`: Minimum, maximum, and average durations for losing trades.
|
||||
- `Max Consecutive Wins / Loss`: Maximum consecutive wins/losses in a row.
|
||||
- `Rejected Entry signals`: Trade entry signals that could not be acted upon due to `max_open_trades` being reached.
|
||||
- `Entry/Exit Timeouts`: Entry/exit orders which did not fill (only applicable if custom pricing is used).
|
||||
- `Canceled Trade Entries`: Number of trades that have been canceled by user request via `adjust_entry_price`.
|
||||
- `Canceled Entry Orders`: Number of entry orders that have been canceled by user request via `adjust_entry_price`.
|
||||
- `Replaced Entry Orders`: Number of entry orders that have been replaced by user request via `adjust_entry_price`.
|
||||
- `Min balance` / `Max balance`: Lowest and Highest Wallet balance during the backtest period.
|
||||
- `Max % of account underwater`: Maximum percentage your account has decreased from the top since the simulation started.
|
||||
Calculated as the maximum of `(Max Balance - Current Balance) / (Max Balance)`.
|
||||
- `Absolute Drawdown (Account)`: Maximum Account Drawdown experienced. Calculated as `(Absolute Drawdown) / (DrawdownHigh + startingBalance)`.
|
||||
- `Drawdown`: Maximum, absolute drawdown experienced. Difference between Drawdown High and Subsequent Low point.
|
||||
- `Drawdown high` / `Drawdown low`: Profit at the beginning and end of the largest drawdown period. A negative low value means initial capital lost.
|
||||
- `Drawdown Start` / `Drawdown End`: Start and end datetime for this largest drawdown (can also be visualized via the `plot-dataframe` sub-command).
|
||||
- `Market change`: Change of the market during the backtest period. Calculated as average of all pairs changes from the first to the last candle using the "close" column.
|
||||
- `Long / Short`: Split long/short values (Only shown when short trades were made).
|
||||
- `Total profit Long %` / `Absolute profit Long`: Profit long trades only (Only shown when short trades were made).
|
||||
- `Total profit Short %` / `Absolute profit Short`: Profit short trades only (Only shown when short trades were made).
|
||||
- `Max % of account underwater`: Maximum percentage your account has decreased from the top since the simulation started. Calculated as the maximum of `(Max Balance - Current Balance) / (Max Balance)`.
|
||||
- `Absolute drawdown`: Maximum absolute drawdown experienced, including percentage relative to the account calculated as `(Absolute Drawdown) / (DrawdownHigh + startingBalance)`..
|
||||
- `Drawdown duration`: Duration of the largest drawdown period.
|
||||
- `Profit at drawdown start` / `Profit at drawdown end`: Profit at the beginning and end of the largest drawdown period.
|
||||
- `Drawdown start` / `Drawdown end`: Start and end datetime for the largest drawdown (can also be visualized via the `plot-dataframe` sub-command).
|
||||
- `Market change`: Change of the market during the backtest period. Calculated as the average of all pairs' changes from the first to the last candle using the "close" column.
|
||||
|
||||
### Daily / Weekly / Monthly breakdown
|
||||
### Daily / Weekly / Monthly / Yearly breakdown
|
||||
|
||||
You can get an overview over daily / weekly or monthly results by using the `--breakdown <>` switch.
|
||||
You can get an overview over daily, weekly, monthly, or yearly results by using the `--breakdown <>` switch.
|
||||
|
||||
To visualize daily and weekly breakdowns, you can use the following:
|
||||
To visualize monthly and yearly breakdowns, you can use the following:
|
||||
|
||||
``` bash
|
||||
freqtrade backtesting --strategy MyAwesomeStrategy --breakdown day week
|
||||
freqtrade backtesting --strategy MyAwesomeStrategy --breakdown month year
|
||||
```
|
||||
|
||||
``` output
|
||||
======================== DAY BREAKDOWN =========================
|
||||
| Day | Tot Profit USDT | Wins | Draws | Losses |
|
||||
|------------+-------------------+--------+---------+----------|
|
||||
| 03/07/2021 | 200.0 | 2 | 0 | 0 |
|
||||
| 04/07/2021 | -50.31 | 0 | 0 | 2 |
|
||||
| 05/07/2021 | 220.611 | 3 | 2 | 0 |
|
||||
| 06/07/2021 | 150.974 | 3 | 0 | 2 |
|
||||
| 07/07/2021 | -70.193 | 1 | 0 | 2 |
|
||||
| 08/07/2021 | 212.413 | 2 | 0 | 3 |
|
||||
|
||||
MONTH BREAKDOWN
|
||||
┏━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Month ┃ Trades ┃ Tot Profit USDT ┃ Profit Factor ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ 31/01/2020 │ 12 │ 44.451 │ 7.28 │ 10 0 2 83.3 │
|
||||
│ 29/02/2020 │ 30 │ 45.41 │ 2.36 │ 17 0 13 56.7 │
|
||||
│ 31/03/2020 │ 35 │ 142.024 │ 2.42 │ 14 0 21 40.0 │
|
||||
│ 30/04/2020 │ 67 │ -23.692 │ 0.81 │ 24 0 43 35.8 │
|
||||
...
|
||||
...
|
||||
│ 30/04/2025 │ 203 │ -63.43 │ 0.81 │ 73 0 130 36.0 │
|
||||
│ 31/05/2025 │ 142 │ 104.675 │ 1.28 │ 59 0 83 41.5 │
|
||||
│ 30/06/2025 │ 177 │ -1.014 │ 1.0 │ 85 0 92 48.0 │
|
||||
│ 31/07/2025 │ 155 │ 232.762 │ 1.6 │ 63 0 92 40.6 │
|
||||
└────────────┴────────┴─────────────────┴───────────────┴────────────────────────┘
|
||||
YEAR BREAKDOWN
|
||||
┏━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Year ┃ Trades ┃ Tot Profit USDT ┃ Profit Factor ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ 31/12/2020 │ 896 │ 868.889 │ 1.46 │ 351 0 545 39.2 │
|
||||
│ 31/12/2021 │ 1778 │ 4487.163 │ 1.93 │ 745 0 1033 41.9 │
|
||||
│ 31/12/2022 │ 1736 │ 938.27 │ 1.27 │ 698 0 1038 40.2 │
|
||||
│ 31/12/2023 │ 1712 │ 1677.126 │ 1.68 │ 670 0 1042 39.1 │
|
||||
│ 31/12/2024 │ 1609 │ 3198.424 │ 2.22 │ 773 0 836 48.0 │
|
||||
│ 31/12/2025 │ 1042 │ 716.174 │ 1.33 │ 420 0 622 40.3 │
|
||||
└────────────┴────────┴─────────────────┴───────────────┴────────────────────────┘
|
||||
```
|
||||
|
||||
The output will show a table containing the realized absolute Profit (in stake currency) for the given timeperiod, as well as wins, draws and losses that materialized (closed) on this day. Below that there will be a second table for the summarized values of weeks indicated by the date of the closing Sunday. The same would apply to a monthly breakdown indicated by the last day of the month.
|
||||
The output will display tables containing the realized absolute profit (in stake currency) for the selected period, along with additional statistics such as number of trades, profit factor, and distribution of wins, draws, and losses that materialized (closed) on this period.
|
||||
|
||||
### Backtest result caching
|
||||
|
||||
@@ -525,19 +471,37 @@ To save time, by default backtest will reuse a cached result from within the las
|
||||
To further analyze your backtest results, freqtrade will export the trades to file by default.
|
||||
You can then load the trades to perform further analysis as shown in the [data analysis](strategy_analysis_example.md#load-backtest-results-to-pandas-dataframe) backtesting section.
|
||||
|
||||
Also, you can use freqtrade in [webserver mode](freq-ui.md#backtesting) to visualize the backtest results in a web interface.
|
||||
This mode also allows you to load existing backtest results, so you can analyze them without running the backtest again.
|
||||
For this mode - `--notes "<notes>"` can be used to add notes to the backtest results, which will be shown in the web interface.
|
||||
|
||||
### Backtest output file
|
||||
|
||||
The output file freqtrade produces is a zip file containing the following files:
|
||||
|
||||
- The backtest report in json format
|
||||
- The market change data in feather format
|
||||
- A copy of the strategy file
|
||||
- A copy of the strategy parameters (if a parameter file was used)
|
||||
- A sanitized copy of the config file
|
||||
|
||||
This will ensure results are reproducible - under the assumption that the same data is available.
|
||||
|
||||
Only the strategy file and the config file are included in the zip file, eventual dependencies are not included.
|
||||
|
||||
## Assumptions made by backtesting
|
||||
|
||||
Since backtesting lacks some detailed information about what happens within a candle, it needs to take a few assumptions:
|
||||
|
||||
- Exchange [trading limits](#trading-limits-in-backtesting) are respected
|
||||
- Entries happen at open-price
|
||||
- Entries happen at open-price unless a custom price logic has been specified
|
||||
- All orders are filled at the requested price (no slippage) as long as the price is within the candle's high/low range
|
||||
- Exit-signal exits happen at open-price of the consecutive candle
|
||||
- Exits don't free their trade slot for a new trade until the next candle
|
||||
- Exits free their trade slot for a new trade with a different pair
|
||||
- Exit-signal is favored over Stoploss, because exit-signals are assumed to trigger on candle's open
|
||||
- ROI
|
||||
- Exits are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the exit will be at 2%)
|
||||
- Exits are never "below the candle", so a ROI of 2% may result in a exit at 2.4% if low was at 2.4% profit
|
||||
- Exits are never "below the candle", so a ROI of 2% may result in an exit at 2.4% if low was at 2.4% profit
|
||||
- ROI entries which came into effect on the triggering candle (e.g. `120: 0.02` for 1h candles, from `60: 0.05`) will use the candle's open as exit rate
|
||||
- Force-exits caused by `<N>=-1` ROI entries use low as exit value, unless N falls on the candle open (e.g. `120: -1` for 1h candles)
|
||||
- Stoploss exits happen exactly at stoploss price, even if low was lower, but the loss will be `2 * fees` higher than the stoploss price
|
||||
@@ -555,6 +519,7 @@ Since backtesting lacks some detailed information about what happens within a ca
|
||||
- Stoploss
|
||||
- ROI
|
||||
- Trailing stoploss
|
||||
- Position reversals (futures only) happen if an entry signal in the other direction than the closing trade triggers at the candle the existing trade closes.
|
||||
|
||||
Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode.
|
||||
Also, keep in mind that past results don't guarantee future success.
|
||||
@@ -569,7 +534,7 @@ These limits are usually listed in the exchange documentation as "trading rules"
|
||||
Backtesting (as well as live and dry-run) does honor these limits, and will ensure that a stoploss can be placed below this value - so the value will be slightly higher than what the exchange specifies.
|
||||
Freqtrade has however no information about historic limits.
|
||||
|
||||
This can lead to situations where trading-limits are inflated by using a historic price, resulting in minimum amounts > 50$.
|
||||
This can lead to situations where trading-limits are inflated by using a historic price, resulting in minimum amounts > 50\$.
|
||||
|
||||
For example:
|
||||
|
||||
@@ -600,7 +565,12 @@ To utilize this, you can append `--timeframe-detail 5m` to your regular backtest
|
||||
freqtrade backtesting --strategy AwesomeStrategy --timeframe 1h --timeframe-detail 5m
|
||||
```
|
||||
|
||||
This will load 1h data as well as 5m data for the timeframe. The strategy will be analyzed with the 1h timeframe, and Entry orders will only be placed at the main timeframe, however Order fills and exit signals will be evaluated at the 5m candle, simulating intra-candle movements.
|
||||
This will load 1h data (the main timeframe) as well as 5m data (detail timeframe) for the selected timerange.
|
||||
The strategy will be analyzed with the 1h timeframe.
|
||||
Candles where activity may take place (there's an active signal, the pair is in a trade) are evaluated at the 5m timeframe.
|
||||
This will allow for a more accurate simulation of intra-candle movements - and can lead to different results, especially on higher timeframes.
|
||||
|
||||
Entries will generally still happen at the main candle's open, however freed trade slots may be freed earlier (if the exit signal is triggered on the 5m candle), which can then be used for a new trade of a different pair.
|
||||
|
||||
All callback functions (`custom_exit()`, `custom_stoploss()`, ... ) will be running for each 5m candle once the trade is opened (so 12 times in the above example of 1h timeframe, and 5m detailed timeframe).
|
||||
|
||||
@@ -612,6 +582,27 @@ Also, data must be available / downloaded already.
|
||||
!!! Tip
|
||||
You can use this function as the last part of strategy development, to ensure your strategy is not exploiting one of the [backtesting assumptions](#assumptions-made-by-backtesting). Strategies that perform similarly well with this mode have a good chance to perform well in dry/live modes too (although only forward-testing (dry-mode) can really confirm a strategy).
|
||||
|
||||
??? Sample "Extreme Difference Example"
|
||||
Using `--timeframe-detail` on an extreme example (all below pairs have the 10:00 candle with an entry signal) may lead to the following backtesting Trade sequence with 1 max_open_trades:
|
||||
|
||||
| Pair | Entry Time | Exit Time | Duration |
|
||||
|------|------------|-----------| -------- |
|
||||
| BTC/USDT | 2024-01-01 10:00:00 | 2021-01-01 10:05:00 | 5m |
|
||||
| ETH/USDT | 2024-01-01 10:05:00 | 2021-01-01 10:15:00 | 10m |
|
||||
| XRP/USDT | 2024-01-01 10:15:00 | 2021-01-01 10:30:00 | 15m |
|
||||
| SOL/USDT | 2024-01-01 10:15:00 | 2021-01-01 11:05:00 | 50m |
|
||||
| BTC/USDT | 2024-01-01 11:05:00 | 2021-01-01 12:00:00 | 55m |
|
||||
|
||||
Without timeframe-detail, this would look like:
|
||||
|
||||
| Pair | Entry Time | Exit Time | Duration |
|
||||
|------|------------|-----------| -------- |
|
||||
| BTC/USDT | 2024-01-01 10:00:00 | 2021-01-01 11:00:00 | 1h |
|
||||
| BTC/USDT | 2024-01-01 11:00:00 | 2021-01-01 12:00:00 | 1h |
|
||||
|
||||
The difference is significant, as without detail data, only the first `max_open_trades` signals per candle are evaluated, and the trade slots are only freed at the end of the candle, allowing for a new trade to be opened at the next candle.
|
||||
|
||||
|
||||
## Backtesting multiple strategies
|
||||
|
||||
To compare multiple strategies, a list of Strategies can be provided to backtesting.
|
||||
@@ -631,13 +622,13 @@ Detailed output for all strategies one after the other will be available, so mak
|
||||
|
||||
```
|
||||
================================================== STRATEGY SUMMARY ===================================================================
|
||||
| Strategy | Entries | Avg Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses | Drawdown % |
|
||||
|:------------|---------:|---------------:|-----------------:|---------------:|:---------------|------:|-------:|-------:|-----------:|
|
||||
| Strategy1 | 429 | 0.36 | 0.00762792 | 76.20 | 4:12:00 | 186 | 0 | 243 | 45.2 |
|
||||
| Strategy2 | 1487 | -0.13 | -0.00988917 | -98.79 | 4:43:00 | 662 | 0 | 825 | 241.68 |
|
||||
| Strategy | Trades | Avg Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses | Drawdown % |
|
||||
|-------------+---------+----------------+------------------+----------------+----------------+-------+--------+--------+------------|
|
||||
| Strategy1 | 429 | 0.36 | 0.00762792 | 76.20 | 4:12:00 | 186 | 0 | 243 | 45.2 |
|
||||
| Strategy2 | 1487 | -0.13 | -0.00988917 | -98.79 | 4:43:00 | 662 | 0 | 825 | 241.68 |
|
||||
```
|
||||
|
||||
## Next step
|
||||
|
||||
Great, your strategy is profitable. What if the bot can give your the optimal parameters to use for your strategy?
|
||||
Great, your strategy is profitable. What if the bot can give you the optimal parameters to use for your strategy?
|
||||
Your next step is to learn [how to find optimal parameters with Hyperopt](hyperopt.md)
|
||||
|
||||
@@ -54,11 +54,13 @@ By default, the bot loop runs every few seconds (`internals.process_throttle_sec
|
||||
* Check timeouts for open orders.
|
||||
* Calls `check_entry_timeout()` strategy callback for open entry orders.
|
||||
* Calls `check_exit_timeout()` strategy callback for open exit orders.
|
||||
* Calls `adjust_entry_price()` strategy callback for open entry orders.
|
||||
* Calls `adjust_order_price()` strategy callback for open orders.
|
||||
* Calls `adjust_entry_price()` strategy callback for open entry orders. *only called when `adjust_order_price()` is not implemented*
|
||||
* Calls `adjust_exit_price()` strategy callback for open exit orders. *only called when `adjust_order_price()` is not implemented*
|
||||
* Verifies existing positions and eventually places exit orders.
|
||||
* Considers stoploss, ROI and exit-signal, `custom_exit()` and `custom_stoploss()`.
|
||||
* Determine exit-price based on `exit_pricing` configuration setting or by using the `custom_exit_price()` callback.
|
||||
* Before a exit order is placed, `confirm_trade_exit()` strategy callback is called.
|
||||
* Before an exit order is placed, `confirm_trade_exit()` strategy callback is called.
|
||||
* Check position adjustments for open trades if enabled by calling `adjust_trade_position()` and place additional order if required.
|
||||
* Check if trade-slots are still available (if `max_open_trades` is reached).
|
||||
* Verifies entry signal trying to enter new positions.
|
||||
@@ -80,7 +82,9 @@ This loop will be repeated again and again until the bot is stopped.
|
||||
* Loops per candle simulating entry and exit points.
|
||||
* Calls `bot_loop_start()` strategy callback.
|
||||
* Check for Order timeouts, either via the `unfilledtimeout` configuration, or via `check_entry_timeout()` / `check_exit_timeout()` strategy callbacks.
|
||||
* Calls `adjust_entry_price()` strategy callback for open entry orders.
|
||||
* Calls `adjust_order_price()` strategy callback for open orders.
|
||||
* Calls `adjust_entry_price()` strategy callback for open entry orders. *only called when `adjust_order_price()` is not implemented!*
|
||||
* Calls `adjust_exit_price()` strategy callback for open exit orders. *only called when `adjust_order_price()` is not implemented!*
|
||||
* Check for trade entry signals (`enter_long` / `enter_short` columns).
|
||||
* Confirm trade entry / exits (calls `confirm_trade_entry()` and `confirm_trade_exit()` if implemented in the strategy).
|
||||
* Call `custom_entry_price()` (if implemented in the strategy) to determine entry price (Prices are moved to be within the opening candle).
|
||||
|
||||
@@ -10,92 +10,11 @@ This page explains the different parameters of the bot and how to run it.
|
||||
|
||||
## Bot commands
|
||||
|
||||
```
|
||||
usage: freqtrade [-h] [-V]
|
||||
{trade,create-userdir,new-config,new-strategy,download-data,convert-data,convert-trade-data,list-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,install-ui,plot-dataframe,plot-profit,webserver}
|
||||
...
|
||||
|
||||
Free, open source crypto trading bot
|
||||
|
||||
positional arguments:
|
||||
{trade,create-userdir,new-config,new-strategy,download-data,convert-data,convert-trade-data,list-data,backtesting,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-hyperopts,list-markets,list-pairs,list-strategies,list-timeframes,show-trades,test-pairlist,install-ui,plot-dataframe,plot-profit,webserver}
|
||||
trade Trade module.
|
||||
create-userdir Create user-data directory.
|
||||
new-config Create new config
|
||||
new-strategy Create new strategy
|
||||
download-data Download backtesting data.
|
||||
convert-data Convert candle (OHLCV) data from one format to
|
||||
another.
|
||||
convert-trade-data Convert trade data from one format to another.
|
||||
list-data List downloaded data.
|
||||
backtesting Backtesting module.
|
||||
edge Edge module.
|
||||
hyperopt Hyperopt module.
|
||||
hyperopt-list List Hyperopt results
|
||||
hyperopt-show Show details of Hyperopt results
|
||||
list-exchanges Print available exchanges.
|
||||
list-hyperopts Print available hyperopt classes.
|
||||
list-markets Print markets on exchange.
|
||||
list-pairs Print pairs on exchange.
|
||||
list-strategies Print available strategies.
|
||||
list-timeframes Print available timeframes for the exchange.
|
||||
show-trades Show trades.
|
||||
test-pairlist Test your pairlist configuration.
|
||||
install-ui Install FreqUI
|
||||
plot-dataframe Plot candles with indicators.
|
||||
plot-profit Generate plot showing profits.
|
||||
webserver Webserver module.
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
-V, --version show program's version number and exit
|
||||
|
||||
```
|
||||
--8<-- "commands/main.md"
|
||||
|
||||
### Bot trading commands
|
||||
|
||||
```
|
||||
usage: freqtrade trade [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
|
||||
[--userdir PATH] [-s NAME] [--strategy-path PATH]
|
||||
[--db-url PATH] [--sd-notify] [--dry-run]
|
||||
[--dry-run-wallet DRY_RUN_WALLET]
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--db-url PATH Override trades database URL, this is useful in custom
|
||||
deployments (default: `sqlite:///tradesv3.sqlite` for
|
||||
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
|
||||
Dry Run).
|
||||
--sd-notify Notify systemd service manager.
|
||||
--dry-run Enforce dry-run for trading (removes Exchange secrets
|
||||
and simulates trades).
|
||||
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
|
||||
Starting balance, used for backtesting / hyperopt and
|
||||
dry-runs.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--logfile FILE Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH
|
||||
Path to directory with historical backtesting data.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
|
||||
```
|
||||
--8<-- "commands/trade.md"
|
||||
|
||||
### How to specify which configuration file be used?
|
||||
|
||||
|
||||
74
docs/commands/backtesting-analysis.md
Normal file
74
docs/commands/backtesting-analysis.md
Normal file
@@ -0,0 +1,74 @@
|
||||
```
|
||||
usage: freqtrade backtesting-analysis [-h] [-v] [--no-color] [--logfile FILE]
|
||||
[-V] [-c PATH] [-d PATH]
|
||||
[--userdir PATH]
|
||||
[--backtest-filename PATH]
|
||||
[--backtest-directory PATH]
|
||||
[--analysis-groups {0,1,2,3,4,5} [{0,1,2,3,4,5} ...]]
|
||||
[--enter-reason-list ENTER_REASON_LIST [ENTER_REASON_LIST ...]]
|
||||
[--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]]
|
||||
[--indicator-list INDICATOR_LIST [INDICATOR_LIST ...]]
|
||||
[--entry-only] [--exit-only]
|
||||
[--timerange TIMERANGE]
|
||||
[--rejected-signals] [--analysis-to-csv]
|
||||
[--analysis-csv-path ANALYSIS_CSV_PATH]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--backtest-filename PATH, --export-filename PATH
|
||||
Use this filename for backtest results.Example:
|
||||
`--backtest-
|
||||
filename=backtest_results_2020-09-27_16-20-48.json`.
|
||||
Assumes either `user_data/backtest_results/` or
|
||||
`--export-directory` as base directory.
|
||||
--backtest-directory PATH, --export-directory PATH
|
||||
Directory to use for backtest results. Example:
|
||||
`--export-directory=user_data/backtest_results/`.
|
||||
--analysis-groups {0,1,2,3,4,5} [{0,1,2,3,4,5} ...]
|
||||
grouping output - 0: simple wins/losses by enter tag,
|
||||
1: by enter_tag, 2: by enter_tag and exit_tag, 3: by
|
||||
pair and enter_tag, 4: by pair, enter_ and exit_tag
|
||||
(this can get quite large), 5: by exit_tag
|
||||
--enter-reason-list ENTER_REASON_LIST [ENTER_REASON_LIST ...]
|
||||
Space separated list of entry signals to analyse.
|
||||
Default: all. e.g. 'entry_tag_a entry_tag_b'
|
||||
--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]
|
||||
Space separated list of exit signals to analyse.
|
||||
Default: all. e.g. 'exit_tag_a roi stop_loss
|
||||
trailing_stop_loss'
|
||||
--indicator-list INDICATOR_LIST [INDICATOR_LIST ...]
|
||||
Space separated list of indicators to analyse. e.g.
|
||||
'close rsi bb_lowerband profit_abs'
|
||||
--entry-only Only analyze entry signals.
|
||||
--exit-only Only analyze exit signals.
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--rejected-signals Analyse rejected signals
|
||||
--analysis-to-csv Save selected analysis tables to individual CSVs
|
||||
--analysis-csv-path ANALYSIS_CSV_PATH
|
||||
Specify a path to save the analysis CSVs if
|
||||
--analysis-to-csv is enabled. Default:
|
||||
user_data/basktesting_results/
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
46
docs/commands/backtesting-show.md
Normal file
46
docs/commands/backtesting-show.md
Normal file
@@ -0,0 +1,46 @@
|
||||
```
|
||||
usage: freqtrade backtesting-show [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--backtest-filename PATH]
|
||||
[--backtest-directory PATH]
|
||||
[--show-pair-list]
|
||||
[--breakdown {day,week,month,year} [{day,week,month,year} ...]]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--backtest-filename PATH, --export-filename PATH
|
||||
Use this filename for backtest results.Example:
|
||||
`--backtest-
|
||||
filename=backtest_results_2020-09-27_16-20-48.json`.
|
||||
Assumes either `user_data/backtest_results/` or
|
||||
`--export-directory` as base directory.
|
||||
--backtest-directory PATH, --export-directory PATH
|
||||
Directory to use for backtest results. Example:
|
||||
`--export-directory=user_data/backtest_results/`.
|
||||
--show-pair-list Show backtesting pairlist sorted by profit.
|
||||
--breakdown {day,week,month,year} [{day,week,month,year} ...]
|
||||
Show backtesting breakdown per [day, week, month,
|
||||
year].
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
123
docs/commands/backtesting.md
Normal file
123
docs/commands/backtesting.md
Normal file
@@ -0,0 +1,123 @@
|
||||
```
|
||||
usage: freqtrade backtesting [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
|
||||
[--strategy-path PATH]
|
||||
[--recursive-strategy-search]
|
||||
[--freqaimodel NAME] [--freqaimodel-path PATH]
|
||||
[-i TIMEFRAME] [--timerange TIMERANGE]
|
||||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||||
[--max-open-trades INT]
|
||||
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
|
||||
[-p PAIRS [PAIRS ...]] [--eps]
|
||||
[--enable-protections]
|
||||
[--enable-dynamic-pairlist]
|
||||
[--dry-run-wallet DRY_RUN_WALLET]
|
||||
[--timeframe-detail TIMEFRAME_DETAIL]
|
||||
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
|
||||
[--export {none,trades,signals}]
|
||||
[--backtest-filename PATH]
|
||||
[--backtest-directory PATH]
|
||||
[--breakdown {day,week,month,year} [{day,week,month,year} ...]]
|
||||
[--cache {none,day,week,month}]
|
||||
[--freqai-backtest-live-models] [--notes TEXT]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--max-open-trades INT
|
||||
Override the value of the `max_open_trades`
|
||||
configuration setting.
|
||||
--stake-amount STAKE_AMOUNT
|
||||
Override the value of the `stake_amount` configuration
|
||||
setting.
|
||||
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
|
||||
entry and exit).
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--eps, --enable-position-stacking
|
||||
Allow buying the same pair multiple times (position
|
||||
stacking).
|
||||
--enable-protections, --enableprotections
|
||||
Enable protections for backtesting. Will slow
|
||||
backtesting down by a considerable amount, but will
|
||||
include configured protections
|
||||
--enable-dynamic-pairlist
|
||||
Enables dynamic pairlist refreshes in backtesting. The
|
||||
pairlist will be generated for each new candle if
|
||||
you're using a pairlist handler that supports this
|
||||
feature, for example, ShuffleFilter.
|
||||
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
|
||||
Starting balance, used for backtesting / hyperopt and
|
||||
dry-runs.
|
||||
--timeframe-detail TIMEFRAME_DETAIL
|
||||
Specify detail timeframe for backtesting (`1m`, `5m`,
|
||||
`30m`, `1h`, `1d`).
|
||||
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
|
||||
Provide a space-separated list of strategies to
|
||||
backtest. Please note that timeframe needs to be set
|
||||
either in config or via command line. When using this
|
||||
together with `--export trades`, the strategy-name is
|
||||
injected into the filename (so `backtest-data.json`
|
||||
becomes `backtest-data-SampleStrategy.json`
|
||||
--export {none,trades,signals}
|
||||
Export backtest results (default: trades).
|
||||
--backtest-filename PATH, --export-filename PATH
|
||||
Use this filename for backtest results.Example:
|
||||
`--backtest-
|
||||
filename=backtest_results_2020-09-27_16-20-48.json`.
|
||||
Assumes either `user_data/backtest_results/` or
|
||||
`--export-directory` as base directory.
|
||||
--backtest-directory PATH, --export-directory PATH
|
||||
Directory to use for backtest results. Example:
|
||||
`--export-directory=user_data/backtest_results/`.
|
||||
--breakdown {day,week,month,year} [{day,week,month,year} ...]
|
||||
Show backtesting breakdown per [day, week, month,
|
||||
year].
|
||||
--cache {none,day,week,month}
|
||||
Load a cached backtest result no older than specified
|
||||
age (default: day).
|
||||
--freqai-backtest-live-models
|
||||
Run backtest with ready models.
|
||||
--notes TEXT Add notes to the backtest results.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
--freqaimodel NAME Specify a custom freqaimodels.
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
|
||||
```
|
||||
54
docs/commands/convert-data.md
Normal file
54
docs/commands/convert-data.md
Normal file
@@ -0,0 +1,54 @@
|
||||
```
|
||||
usage: freqtrade convert-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[-p PAIRS [PAIRS ...]] --format-from
|
||||
{json,jsongz,feather,parquet} --format-to
|
||||
{json,jsongz,feather,parquet} [--erase]
|
||||
[--exchange EXCHANGE]
|
||||
[-t TIMEFRAMES [TIMEFRAMES ...]]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
[--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--format-from {json,jsongz,feather,parquet}
|
||||
Source format for data conversion.
|
||||
--format-to {json,jsongz,feather,parquet}
|
||||
Destination format for data conversion.
|
||||
--erase Clean all existing data for the selected
|
||||
exchange/pairs/timeframes.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
|
||||
Specify which tickers to download. Space-separated
|
||||
list. Default: `1m 5m`.
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]
|
||||
Select candle type to convert. Defaults to all
|
||||
available types.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
12
docs/commands/convert-db.md
Normal file
12
docs/commands/convert-db.md
Normal file
@@ -0,0 +1,12 @@
|
||||
```
|
||||
usage: freqtrade convert-db [-h] [--db-url PATH] [--db-url-from PATH]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--db-url PATH Override trades database URL, this is useful in custom
|
||||
deployments (default: `sqlite:///tradesv3.sqlite` for
|
||||
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
|
||||
Dry Run).
|
||||
--db-url-from PATH Source db url to use when migrating a database.
|
||||
|
||||
```
|
||||
43
docs/commands/convert-trade-data.md
Normal file
43
docs/commands/convert-trade-data.md
Normal file
@@ -0,0 +1,43 @@
|
||||
```
|
||||
usage: freqtrade convert-trade-data [-h] [-v] [--no-color] [--logfile FILE]
|
||||
[-V] [-c PATH] [-d PATH] [--userdir PATH]
|
||||
[-p PAIRS [PAIRS ...]] --format-from
|
||||
{json,jsongz,feather,parquet,kraken_csv}
|
||||
--format-to {json,jsongz,feather,parquet}
|
||||
[--erase] [--exchange EXCHANGE]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--format-from {json,jsongz,feather,parquet,kraken_csv}
|
||||
Source format for data conversion.
|
||||
--format-to {json,jsongz,feather,parquet}
|
||||
Destination format for data conversion.
|
||||
--erase Clean all existing data for the selected
|
||||
exchange/pairs/timeframes.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
10
docs/commands/create-userdir.md
Normal file
10
docs/commands/create-userdir.md
Normal file
@@ -0,0 +1,10 @@
|
||||
```
|
||||
usage: freqtrade create-userdir [-h] [--userdir PATH] [--reset]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
--reset Reset sample files to their original state.
|
||||
|
||||
```
|
||||
76
docs/commands/download-data.md
Normal file
76
docs/commands/download-data.md
Normal file
@@ -0,0 +1,76 @@
|
||||
```
|
||||
usage: freqtrade download-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[-p PAIRS [PAIRS ...]] [--pairs-file FILE]
|
||||
[--days INT] [--new-pairs-days INT]
|
||||
[--include-inactive-pairs]
|
||||
[--no-parallel-download]
|
||||
[--timerange TIMERANGE] [--dl-trades]
|
||||
[--convert] [--exchange EXCHANGE]
|
||||
[-t TIMEFRAMES [TIMEFRAMES ...]] [--erase]
|
||||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||||
[--data-format-trades {json,jsongz,feather,parquet}]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
[--prepend]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--pairs-file FILE File containing a list of pairs. Takes precedence over
|
||||
--pairs or pairs configured in the configuration.
|
||||
--days INT Download data for given number of days.
|
||||
--new-pairs-days INT Download data of new pairs for given number of days.
|
||||
Default: `None`.
|
||||
--include-inactive-pairs
|
||||
Also download data from inactive pairs.
|
||||
--no-parallel-download
|
||||
Disable parallel startup download. Only use this if
|
||||
you experience issues.
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--dl-trades Download trades instead of OHLCV data.
|
||||
--convert Convert downloaded trades to OHLCV data. Only
|
||||
applicable in combination with `--dl-trades`. Will be
|
||||
automatic for exchanges which don't have historic
|
||||
OHLCV (e.g. Kraken). If not provided, use `trades-to-
|
||||
ohlcv` to convert trades data to OHLCV data.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
|
||||
Specify which tickers to download. Space-separated
|
||||
list. Default: `1m 5m`.
|
||||
--erase Clean all existing data for the selected
|
||||
exchange/pairs/timeframes.
|
||||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--data-format-trades {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded trades data. (default:
|
||||
`feather`).
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
--prepend Allow data prepending. (Data-appending is disabled)
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
65
docs/commands/edge.md
Normal file
65
docs/commands/edge.md
Normal file
@@ -0,0 +1,65 @@
|
||||
```
|
||||
usage: freqtrade edge [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH]
|
||||
[-d PATH] [--userdir PATH] [-s NAME]
|
||||
[--strategy-path PATH] [--recursive-strategy-search]
|
||||
[--freqaimodel NAME] [--freqaimodel-path PATH]
|
||||
[-i TIMEFRAME] [--timerange TIMERANGE]
|
||||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||||
[--max-open-trades INT] [--stake-amount STAKE_AMOUNT]
|
||||
[--fee FLOAT] [-p PAIRS [PAIRS ...]]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--max-open-trades INT
|
||||
Override the value of the `max_open_trades`
|
||||
configuration setting.
|
||||
--stake-amount STAKE_AMOUNT
|
||||
Override the value of the `stake_amount` configuration
|
||||
setting.
|
||||
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
|
||||
entry and exit).
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
--freqaimodel NAME Specify a custom freqaimodels.
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
|
||||
```
|
||||
64
docs/commands/hyperopt-list.md
Normal file
64
docs/commands/hyperopt-list.md
Normal file
@@ -0,0 +1,64 @@
|
||||
```
|
||||
usage: freqtrade hyperopt-list [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH] [--best]
|
||||
[--profitable] [--min-trades INT]
|
||||
[--max-trades INT] [--min-avg-time FLOAT]
|
||||
[--max-avg-time FLOAT] [--min-avg-profit FLOAT]
|
||||
[--max-avg-profit FLOAT]
|
||||
[--min-total-profit FLOAT]
|
||||
[--max-total-profit FLOAT]
|
||||
[--min-objective FLOAT] [--max-objective FLOAT]
|
||||
[--print-json] [--no-details]
|
||||
[--hyperopt-filename FILENAME]
|
||||
[--export-csv FILE]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--best Select only best epochs.
|
||||
--profitable Select only profitable epochs.
|
||||
--min-trades INT Select epochs with more than INT trades.
|
||||
--max-trades INT Select epochs with less than INT trades.
|
||||
--min-avg-time FLOAT Select epochs above average time.
|
||||
--max-avg-time FLOAT Select epochs below average time.
|
||||
--min-avg-profit FLOAT
|
||||
Select epochs above average profit.
|
||||
--max-avg-profit FLOAT
|
||||
Select epochs below average profit.
|
||||
--min-total-profit FLOAT
|
||||
Select epochs above total profit.
|
||||
--max-total-profit FLOAT
|
||||
Select epochs below total profit.
|
||||
--min-objective FLOAT
|
||||
Select epochs above objective.
|
||||
--max-objective FLOAT
|
||||
Select epochs below objective.
|
||||
--print-json Print output in JSON format.
|
||||
--no-details Do not print best epoch details.
|
||||
--hyperopt-filename FILENAME
|
||||
Hyperopt result filename.Example: `--hyperopt-
|
||||
filename=hyperopt_results_2020-09-27_16-20-48.pickle`
|
||||
--export-csv FILE Export to CSV-File. This will disable table print.
|
||||
Example: --export-csv hyperopt.csv
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
46
docs/commands/hyperopt-show.md
Normal file
46
docs/commands/hyperopt-show.md
Normal file
@@ -0,0 +1,46 @@
|
||||
```
|
||||
usage: freqtrade hyperopt-show [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH] [--best]
|
||||
[--profitable] [-n INT] [--print-json]
|
||||
[--hyperopt-filename FILENAME] [--no-header]
|
||||
[--disable-param-export]
|
||||
[--breakdown {day,week,month,year} [{day,week,month,year} ...]]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--best Select only best epochs.
|
||||
--profitable Select only profitable epochs.
|
||||
-n INT, --index INT Specify the index of the epoch to print details for.
|
||||
--print-json Print output in JSON format.
|
||||
--hyperopt-filename FILENAME
|
||||
Hyperopt result filename.Example: `--hyperopt-
|
||||
filename=hyperopt_results_2020-09-27_16-20-48.pickle`
|
||||
--no-header Do not print epoch details header.
|
||||
--disable-param-export
|
||||
Disable automatic hyperopt parameter export.
|
||||
--breakdown {day,week,month,year} [{day,week,month,year} ...]
|
||||
Show backtesting breakdown per [day, week, month,
|
||||
year].
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
127
docs/commands/hyperopt.md
Normal file
127
docs/commands/hyperopt.md
Normal file
@@ -0,0 +1,127 @@
|
||||
```
|
||||
usage: freqtrade hyperopt [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
|
||||
[--strategy-path PATH] [--recursive-strategy-search]
|
||||
[--freqaimodel NAME] [--freqaimodel-path PATH]
|
||||
[-i TIMEFRAME] [--timerange TIMERANGE]
|
||||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||||
[--max-open-trades INT]
|
||||
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
|
||||
[-p PAIRS [PAIRS ...]] [--hyperopt-path PATH]
|
||||
[--eps] [--enable-protections]
|
||||
[--dry-run-wallet DRY_RUN_WALLET]
|
||||
[--timeframe-detail TIMEFRAME_DETAIL] [-e INT]
|
||||
[--spaces {all,buy,sell,roi,stoploss,trailing,protection,trades,default} [{all,buy,sell,roi,stoploss,trailing,protection,trades,default} ...]]
|
||||
[--print-all] [--print-json] [-j JOBS]
|
||||
[--random-state INT] [--min-trades INT]
|
||||
[--hyperopt-loss NAME] [--disable-param-export]
|
||||
[--ignore-missing-spaces] [--analyze-per-epoch]
|
||||
[--early-stop INT]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--max-open-trades INT
|
||||
Override the value of the `max_open_trades`
|
||||
configuration setting.
|
||||
--stake-amount STAKE_AMOUNT
|
||||
Override the value of the `stake_amount` configuration
|
||||
setting.
|
||||
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
|
||||
entry and exit).
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--hyperopt-path PATH Specify additional lookup path for Hyperopt Loss
|
||||
functions.
|
||||
--eps, --enable-position-stacking
|
||||
Allow buying the same pair multiple times (position
|
||||
stacking).
|
||||
--enable-protections, --enableprotections
|
||||
Enable protections for backtesting. Will slow
|
||||
backtesting down by a considerable amount, but will
|
||||
include configured protections
|
||||
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
|
||||
Starting balance, used for backtesting / hyperopt and
|
||||
dry-runs.
|
||||
--timeframe-detail TIMEFRAME_DETAIL
|
||||
Specify detail timeframe for backtesting (`1m`, `5m`,
|
||||
`30m`, `1h`, `1d`).
|
||||
-e INT, --epochs INT Specify number of epochs (default: 100).
|
||||
--spaces {all,buy,sell,roi,stoploss,trailing,protection,trades,default} [{all,buy,sell,roi,stoploss,trailing,protection,trades,default} ...]
|
||||
Specify which parameters to hyperopt. Space-separated
|
||||
list.
|
||||
--print-all Print all results, not only the best ones.
|
||||
--print-json Print output in JSON format.
|
||||
-j JOBS, --job-workers JOBS
|
||||
The number of concurrently running jobs for
|
||||
hyperoptimization (hyperopt worker processes). If -1
|
||||
(default), all CPUs are used, for -2, all CPUs but one
|
||||
are used, etc. If 1 is given, no parallel computing
|
||||
code is used at all.
|
||||
--random-state INT Set random state to some positive integer for
|
||||
reproducible hyperopt results.
|
||||
--min-trades INT Set minimal desired number of trades for evaluations
|
||||
in the hyperopt optimization path (default: 1).
|
||||
--hyperopt-loss NAME, --hyperoptloss NAME
|
||||
Specify the class name of the hyperopt loss function
|
||||
class (IHyperOptLoss). Different functions can
|
||||
generate completely different results, since the
|
||||
target for optimization is different. Built-in
|
||||
Hyperopt-loss-functions are:
|
||||
ShortTradeDurHyperOptLoss, OnlyProfitHyperOptLoss,
|
||||
SharpeHyperOptLoss, SharpeHyperOptLossDaily,
|
||||
SortinoHyperOptLoss, SortinoHyperOptLossDaily,
|
||||
CalmarHyperOptLoss, MaxDrawDownHyperOptLoss,
|
||||
MaxDrawDownRelativeHyperOptLoss,
|
||||
MaxDrawDownPerPairHyperOptLoss,
|
||||
ProfitDrawDownHyperOptLoss, MultiMetricHyperOptLoss
|
||||
--disable-param-export
|
||||
Disable automatic hyperopt parameter export.
|
||||
--ignore-missing-spaces, --ignore-unparameterized-spaces
|
||||
Suppress errors for any requested Hyperopt spaces that
|
||||
do not contain any parameters.
|
||||
--analyze-per-epoch Run populate_indicators once per epoch.
|
||||
--early-stop INT Early stop hyperopt if no improvement after (default:
|
||||
0) epochs.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
--freqaimodel NAME Specify a custom freqaimodels.
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
|
||||
```
|
||||
14
docs/commands/install-ui.md
Normal file
14
docs/commands/install-ui.md
Normal file
@@ -0,0 +1,14 @@
|
||||
```
|
||||
usage: freqtrade install-ui [-h] [--erase] [--prerelease]
|
||||
[--ui-version UI_VERSION]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--erase Clean UI folder, don't download new version.
|
||||
--prerelease Install the latest pre-release version of FreqUI. This
|
||||
is not recommended for production use.
|
||||
--ui-version UI_VERSION
|
||||
Specify a specific version of FreqUI to install. Not
|
||||
specifying this installs the latest version.
|
||||
|
||||
```
|
||||
50
docs/commands/list-data.md
Normal file
50
docs/commands/list-data.md
Normal file
@@ -0,0 +1,50 @@
|
||||
```
|
||||
usage: freqtrade list-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--exchange EXCHANGE]
|
||||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||||
[--data-format-trades {json,jsongz,feather,parquet}]
|
||||
[--trades] [-p PAIRS [PAIRS ...]]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
[--show-timerange]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--data-format-trades {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded trades data. (default:
|
||||
`feather`).
|
||||
--trades Work on trades data instead of OHLCV data.
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
--show-timerange Show timerange available for available data. (May take
|
||||
a while to calculate).
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
36
docs/commands/list-exchanges.md
Normal file
36
docs/commands/list-exchanges.md
Normal file
@@ -0,0 +1,36 @@
|
||||
```
|
||||
usage: freqtrade list-exchanges [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH] [-1] [-a]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
[--dex-exchanges]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-1, --one-column Print output in one column.
|
||||
-a, --all Print all exchanges known to the ccxt library.
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
--dex-exchanges Print only DEX exchanges.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
33
docs/commands/list-freqaimodels.md
Normal file
33
docs/commands/list-freqaimodels.md
Normal file
@@ -0,0 +1,33 @@
|
||||
```
|
||||
usage: freqtrade list-freqaimodels [-h] [-v] [--no-color] [--logfile FILE]
|
||||
[-V] [-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--freqaimodel-path PATH] [-1]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
-1, --one-column Print output in one column.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
33
docs/commands/list-hyperoptloss.md
Normal file
33
docs/commands/list-hyperoptloss.md
Normal file
@@ -0,0 +1,33 @@
|
||||
```
|
||||
usage: freqtrade list-hyperoptloss [-h] [-v] [--no-color] [--logfile FILE]
|
||||
[-V] [-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--hyperopt-path PATH] [-1]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--hyperopt-path PATH Specify additional lookup path for Hyperopt Loss
|
||||
functions.
|
||||
-1, --one-column Print output in one column.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
48
docs/commands/list-markets.md
Normal file
48
docs/commands/list-markets.md
Normal file
@@ -0,0 +1,48 @@
|
||||
```
|
||||
usage: freqtrade list-markets [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--exchange EXCHANGE] [--print-list]
|
||||
[--print-json] [-1] [--print-csv]
|
||||
[--base BASE_CURRENCY [BASE_CURRENCY ...]]
|
||||
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]]
|
||||
[-a] [--trading-mode {spot,margin,futures}]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
--print-list Print list of pairs or market symbols. By default data
|
||||
is printed in the tabular format.
|
||||
--print-json Print list of pairs or market symbols in JSON format.
|
||||
-1, --one-column Print output in one column.
|
||||
--print-csv Print exchange pair or market data in the csv format.
|
||||
--base BASE_CURRENCY [BASE_CURRENCY ...]
|
||||
Specify base currency(-ies). Space-separated list.
|
||||
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
|
||||
Specify quote currency(-ies). Space-separated list.
|
||||
-a, --all Print all pairs or market symbols. By default only
|
||||
active ones are shown.
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
48
docs/commands/list-pairs.md
Normal file
48
docs/commands/list-pairs.md
Normal file
@@ -0,0 +1,48 @@
|
||||
```
|
||||
usage: freqtrade list-pairs [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--exchange EXCHANGE] [--print-list]
|
||||
[--print-json] [-1] [--print-csv]
|
||||
[--base BASE_CURRENCY [BASE_CURRENCY ...]]
|
||||
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
--print-list Print list of pairs or market symbols. By default data
|
||||
is printed in the tabular format.
|
||||
--print-json Print list of pairs or market symbols in JSON format.
|
||||
-1, --one-column Print output in one column.
|
||||
--print-csv Print exchange pair or market data in the csv format.
|
||||
--base BASE_CURRENCY [BASE_CURRENCY ...]
|
||||
Specify base currency(-ies). Space-separated list.
|
||||
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
|
||||
Specify quote currency(-ies). Space-separated list.
|
||||
-a, --all Print all pairs or market symbols. By default only
|
||||
active ones are shown.
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
36
docs/commands/list-strategies.md
Normal file
36
docs/commands/list-strategies.md
Normal file
@@ -0,0 +1,36 @@
|
||||
```
|
||||
usage: freqtrade list-strategies [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--strategy-path PATH] [-1]
|
||||
[--recursive-strategy-search]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
-1, --one-column Print output in one column.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
32
docs/commands/list-timeframes.md
Normal file
32
docs/commands/list-timeframes.md
Normal file
@@ -0,0 +1,32 @@
|
||||
```
|
||||
usage: freqtrade list-timeframes [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--exchange EXCHANGE] [-1]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
-1, --one-column Print output in one column.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
125
docs/commands/lookahead-analysis.md
Normal file
125
docs/commands/lookahead-analysis.md
Normal file
@@ -0,0 +1,125 @@
|
||||
```
|
||||
usage: freqtrade lookahead-analysis [-h] [-v] [--no-color] [--logfile FILE]
|
||||
[-V] [-c PATH] [-d PATH] [--userdir PATH]
|
||||
[-s NAME] [--strategy-path PATH]
|
||||
[--recursive-strategy-search]
|
||||
[--freqaimodel NAME]
|
||||
[--freqaimodel-path PATH] [-i TIMEFRAME]
|
||||
[--timerange TIMERANGE]
|
||||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||||
[--max-open-trades INT]
|
||||
[--stake-amount STAKE_AMOUNT]
|
||||
[--fee FLOAT] [-p PAIRS [PAIRS ...]]
|
||||
[--enable-protections]
|
||||
[--enable-dynamic-pairlist]
|
||||
[--dry-run-wallet DRY_RUN_WALLET]
|
||||
[--timeframe-detail TIMEFRAME_DETAIL]
|
||||
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
|
||||
[--export {none,trades,signals}]
|
||||
[--backtest-filename PATH]
|
||||
[--backtest-directory PATH]
|
||||
[--freqai-backtest-live-models]
|
||||
[--minimum-trade-amount INT]
|
||||
[--targeted-trade-amount INT]
|
||||
[--lookahead-analysis-exportfilename LOOKAHEAD_ANALYSIS_EXPORTFILENAME]
|
||||
[--allow-limit-orders]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--max-open-trades INT
|
||||
Override the value of the `max_open_trades`
|
||||
configuration setting.
|
||||
--stake-amount STAKE_AMOUNT
|
||||
Override the value of the `stake_amount` configuration
|
||||
setting.
|
||||
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
|
||||
entry and exit).
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--enable-protections, --enableprotections
|
||||
Enable protections for backtesting. Will slow
|
||||
backtesting down by a considerable amount, but will
|
||||
include configured protections
|
||||
--enable-dynamic-pairlist
|
||||
Enables dynamic pairlist refreshes in backtesting. The
|
||||
pairlist will be generated for each new candle if
|
||||
you're using a pairlist handler that supports this
|
||||
feature, for example, ShuffleFilter.
|
||||
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
|
||||
Starting balance, used for backtesting / hyperopt and
|
||||
dry-runs.
|
||||
--timeframe-detail TIMEFRAME_DETAIL
|
||||
Specify detail timeframe for backtesting (`1m`, `5m`,
|
||||
`30m`, `1h`, `1d`).
|
||||
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
|
||||
Provide a space-separated list of strategies to
|
||||
backtest. Please note that timeframe needs to be set
|
||||
either in config or via command line. When using this
|
||||
together with `--export trades`, the strategy-name is
|
||||
injected into the filename (so `backtest-data.json`
|
||||
becomes `backtest-data-SampleStrategy.json`
|
||||
--export {none,trades,signals}
|
||||
Export backtest results (default: trades).
|
||||
--backtest-filename PATH, --export-filename PATH
|
||||
Use this filename for backtest results.Example:
|
||||
`--backtest-
|
||||
filename=backtest_results_2020-09-27_16-20-48.json`.
|
||||
Assumes either `user_data/backtest_results/` or
|
||||
`--export-directory` as base directory.
|
||||
--backtest-directory PATH, --export-directory PATH
|
||||
Directory to use for backtest results. Example:
|
||||
`--export-directory=user_data/backtest_results/`.
|
||||
--freqai-backtest-live-models
|
||||
Run backtest with ready models.
|
||||
--minimum-trade-amount INT
|
||||
Minimum trade amount for lookahead-analysis
|
||||
--targeted-trade-amount INT
|
||||
Targeted trade amount for lookahead analysis
|
||||
--lookahead-analysis-exportfilename LOOKAHEAD_ANALYSIS_EXPORTFILENAME
|
||||
Use this csv-filename to store lookahead-analysis-
|
||||
results
|
||||
--allow-limit-orders Allow limit orders in lookahead analysis (could cause
|
||||
false positives in lookahead analysis results).
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
--freqaimodel NAME Specify a custom freqaimodels.
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
|
||||
```
|
||||
51
docs/commands/main.md
Normal file
51
docs/commands/main.md
Normal file
@@ -0,0 +1,51 @@
|
||||
```
|
||||
usage: freqtrade [-h] [-V]
|
||||
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
|
||||
...
|
||||
|
||||
Free, open source crypto trading bot
|
||||
|
||||
positional arguments:
|
||||
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
|
||||
trade Trade module.
|
||||
create-userdir Create user-data directory.
|
||||
new-config Create new config
|
||||
show-config Show resolved config
|
||||
new-strategy Create new strategy
|
||||
download-data Download backtesting data.
|
||||
convert-data Convert candle (OHLCV) data from one format to
|
||||
another.
|
||||
convert-trade-data Convert trade data from one format to another.
|
||||
trades-to-ohlcv Convert trade data to OHLCV data.
|
||||
list-data List downloaded data.
|
||||
backtesting Backtesting module.
|
||||
backtesting-show Show past Backtest results
|
||||
backtesting-analysis
|
||||
Backtest Analysis module.
|
||||
edge Edge module. No longer part of Freqtrade
|
||||
hyperopt Hyperopt module.
|
||||
hyperopt-list List Hyperopt results
|
||||
hyperopt-show Show details of Hyperopt results
|
||||
list-exchanges Print available exchanges.
|
||||
list-markets Print markets on exchange.
|
||||
list-pairs Print pairs on exchange.
|
||||
list-strategies Print available strategies.
|
||||
list-hyperoptloss Print available hyperopt loss functions.
|
||||
list-freqaimodels Print available freqAI models.
|
||||
list-timeframes Print available timeframes for the exchange.
|
||||
show-trades Show trades.
|
||||
test-pairlist Test your pairlist configuration.
|
||||
convert-db Migrate database to different system
|
||||
install-ui Install FreqUI
|
||||
plot-dataframe Plot candles with indicators.
|
||||
plot-profit Generate plot showing profits.
|
||||
webserver Webserver module.
|
||||
strategy-updater updates outdated strategy files to the current version
|
||||
lookahead-analysis Check for potential look ahead bias.
|
||||
recursive-analysis Check for potential recursive formula issue.
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-V, --version show program's version number and exit
|
||||
|
||||
```
|
||||
12
docs/commands/new-config.md
Normal file
12
docs/commands/new-config.md
Normal file
@@ -0,0 +1,12 @@
|
||||
```
|
||||
usage: freqtrade new-config [-h] [-c PATH]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
|
||||
```
|
||||
19
docs/commands/new-strategy.md
Normal file
19
docs/commands/new-strategy.md
Normal file
@@ -0,0 +1,19 @@
|
||||
```
|
||||
usage: freqtrade new-strategy [-h] [--userdir PATH] [-s NAME]
|
||||
[--strategy-path PATH]
|
||||
[--template {full,minimal,advanced}]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--template {full,minimal,advanced}
|
||||
Use a template which is either `minimal`, `full`
|
||||
(containing multiple sample indicators) or `advanced`.
|
||||
Default: `full`.
|
||||
|
||||
```
|
||||
86
docs/commands/plot-dataframe.md
Normal file
86
docs/commands/plot-dataframe.md
Normal file
@@ -0,0 +1,86 @@
|
||||
```
|
||||
usage: freqtrade plot-dataframe [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
|
||||
[--strategy-path PATH]
|
||||
[--recursive-strategy-search]
|
||||
[--freqaimodel NAME] [--freqaimodel-path PATH]
|
||||
[-p PAIRS [PAIRS ...]]
|
||||
[--indicators1 INDICATORS1 [INDICATORS1 ...]]
|
||||
[--indicators2 INDICATORS2 [INDICATORS2 ...]]
|
||||
[--plot-limit INT] [--db-url PATH]
|
||||
[--trade-source {DB,file}]
|
||||
[--export {none,trades,signals}]
|
||||
[--backtest-filename PATH]
|
||||
[--timerange TIMERANGE] [-i TIMEFRAME]
|
||||
[--no-trades]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--indicators1 INDICATORS1 [INDICATORS1 ...]
|
||||
Set indicators from your strategy you want in the
|
||||
first row of the graph. Space-separated list. Example:
|
||||
`ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`.
|
||||
--indicators2 INDICATORS2 [INDICATORS2 ...]
|
||||
Set indicators from your strategy you want in the
|
||||
third row of the graph. Space-separated list. Example:
|
||||
`fastd fastk`. Default: `['macd', 'macdsignal']`.
|
||||
--plot-limit INT Specify tick limit for plotting. Notice: too high
|
||||
values cause huge files. Default: 750.
|
||||
--db-url PATH Override trades database URL, this is useful in custom
|
||||
deployments (default: `sqlite:///tradesv3.sqlite` for
|
||||
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
|
||||
Dry Run).
|
||||
--trade-source {DB,file}
|
||||
Specify the source for trades (Can be DB or file
|
||||
(backtest file)) Default: file
|
||||
--export {none,trades,signals}
|
||||
Export backtest results (default: trades).
|
||||
--backtest-filename PATH, --export-filename PATH
|
||||
Use this filename for backtest results.Example:
|
||||
`--backtest-
|
||||
filename=backtest_results_2020-09-27_16-20-48.json`.
|
||||
Assumes either `user_data/backtest_results/` or
|
||||
`--export-directory` as base directory.
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--no-trades Skip using trades from backtesting file and DB.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
--freqaimodel NAME Specify a custom freqaimodels.
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
|
||||
```
|
||||
72
docs/commands/plot-profit.md
Normal file
72
docs/commands/plot-profit.md
Normal file
@@ -0,0 +1,72 @@
|
||||
```
|
||||
usage: freqtrade plot-profit [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
|
||||
[--strategy-path PATH]
|
||||
[--recursive-strategy-search]
|
||||
[--freqaimodel NAME] [--freqaimodel-path PATH]
|
||||
[-p PAIRS [PAIRS ...]] [--timerange TIMERANGE]
|
||||
[--export {none,trades,signals}]
|
||||
[--backtest-filename PATH] [--db-url PATH]
|
||||
[--trade-source {DB,file}] [-i TIMEFRAME]
|
||||
[--auto-open]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--export {none,trades,signals}
|
||||
Export backtest results (default: trades).
|
||||
--backtest-filename PATH, --export-filename PATH
|
||||
Use this filename for backtest results.Example:
|
||||
`--backtest-
|
||||
filename=backtest_results_2020-09-27_16-20-48.json`.
|
||||
Assumes either `user_data/backtest_results/` or
|
||||
`--export-directory` as base directory.
|
||||
--db-url PATH Override trades database URL, this is useful in custom
|
||||
deployments (default: `sqlite:///tradesv3.sqlite` for
|
||||
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
|
||||
Dry Run).
|
||||
--trade-source {DB,file}
|
||||
Specify the source for trades (Can be DB or file
|
||||
(backtest file)) Default: file
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--auto-open Automatically open generated plot.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
--freqaimodel NAME Specify a custom freqaimodels.
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
|
||||
```
|
||||
62
docs/commands/recursive-analysis.md
Normal file
62
docs/commands/recursive-analysis.md
Normal file
@@ -0,0 +1,62 @@
|
||||
```
|
||||
usage: freqtrade recursive-analysis [-h] [-v] [--no-color] [--logfile FILE]
|
||||
[-V] [-c PATH] [-d PATH] [--userdir PATH]
|
||||
[-s NAME] [--strategy-path PATH]
|
||||
[--recursive-strategy-search]
|
||||
[--freqaimodel NAME]
|
||||
[--freqaimodel-path PATH] [-i TIMEFRAME]
|
||||
[--timerange TIMERANGE]
|
||||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||||
[-p PAIRS [PAIRS ...]]
|
||||
[--startup-candle STARTUP_CANDLE [STARTUP_CANDLE ...]]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--startup-candle STARTUP_CANDLE [STARTUP_CANDLE ...]
|
||||
Specify startup candles to be checked (`199`, `499`,
|
||||
`999`, `1999`).
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
--freqaimodel NAME Specify a custom freqaimodels.
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
|
||||
```
|
||||
16
docs/commands/show-config.md
Normal file
16
docs/commands/show-config.md
Normal file
@@ -0,0 +1,16 @@
|
||||
```
|
||||
usage: freqtrade show-config [-h] [--userdir PATH] [-c PATH]
|
||||
[--show-sensitive]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
--show-sensitive Show secrets in the output.
|
||||
|
||||
```
|
||||
39
docs/commands/show-trades.md
Normal file
39
docs/commands/show-trades.md
Normal file
@@ -0,0 +1,39 @@
|
||||
```
|
||||
usage: freqtrade show-trades [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--db-url PATH]
|
||||
[--trade-ids TRADE_IDS [TRADE_IDS ...]]
|
||||
[--print-json]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--db-url PATH Override trades database URL, this is useful in custom
|
||||
deployments (default: `sqlite:///tradesv3.sqlite` for
|
||||
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
|
||||
Dry Run).
|
||||
--trade-ids TRADE_IDS [TRADE_IDS ...]
|
||||
Specify the list of trade ids.
|
||||
--print-json Print output in JSON format.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
43
docs/commands/strategy-updater.md
Normal file
43
docs/commands/strategy-updater.md
Normal file
@@ -0,0 +1,43 @@
|
||||
```
|
||||
usage: freqtrade strategy-updater [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
|
||||
[--strategy-path PATH]
|
||||
[--recursive-strategy-search]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
|
||||
Provide a space-separated list of strategies to
|
||||
backtest. Please note that timeframe needs to be set
|
||||
either in config or via command line. When using this
|
||||
together with `--export trades`, the strategy-name is
|
||||
injected into the filename (so `backtest-data.json`
|
||||
becomes `backtest-data-SampleStrategy.json`
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
22
docs/commands/test-pairlist.md
Normal file
22
docs/commands/test-pairlist.md
Normal file
@@ -0,0 +1,22 @@
|
||||
```
|
||||
usage: freqtrade test-pairlist [-h] [--userdir PATH] [-v] [-c PATH]
|
||||
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]]
|
||||
[-1] [--print-json] [--exchange EXCHANGE]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
|
||||
Specify quote currency(-ies). Space-separated list.
|
||||
-1, --one-column Print output in one column.
|
||||
--print-json Print list of pairs or market symbols in JSON format.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
|
||||
```
|
||||
57
docs/commands/trade.md
Normal file
57
docs/commands/trade.md
Normal file
@@ -0,0 +1,57 @@
|
||||
```
|
||||
usage: freqtrade trade [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH]
|
||||
[-d PATH] [--userdir PATH] [-s NAME]
|
||||
[--strategy-path PATH] [--recursive-strategy-search]
|
||||
[--freqaimodel NAME] [--freqaimodel-path PATH]
|
||||
[--db-url PATH] [--sd-notify] [--dry-run]
|
||||
[--dry-run-wallet DRY_RUN_WALLET] [--fee FLOAT]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--db-url PATH Override trades database URL, this is useful in custom
|
||||
deployments (default: `sqlite:///tradesv3.sqlite` for
|
||||
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
|
||||
Dry Run).
|
||||
--sd-notify Notify systemd service manager.
|
||||
--dry-run Enforce dry-run for trading (removes Exchange secrets
|
||||
and simulates trades).
|
||||
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
|
||||
Starting balance, used for backtesting / hyperopt and
|
||||
dry-runs.
|
||||
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
|
||||
entry and exit).
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
--recursive-strategy-search
|
||||
Recursively search for a strategy in the strategies
|
||||
folder.
|
||||
--freqaimodel NAME Specify a custom freqaimodels.
|
||||
--freqaimodel-path PATH
|
||||
Specify additional lookup path for freqaimodels.
|
||||
|
||||
```
|
||||
50
docs/commands/trades-to-ohlcv.md
Normal file
50
docs/commands/trades-to-ohlcv.md
Normal file
@@ -0,0 +1,50 @@
|
||||
```
|
||||
usage: freqtrade trades-to-ohlcv [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
[-p PAIRS [PAIRS ...]]
|
||||
[-t TIMEFRAMES [TIMEFRAMES ...]]
|
||||
[--exchange EXCHANGE]
|
||||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||||
[--data-format-trades {json,jsongz,feather,parquet}]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
|
||||
Specify which tickers to download. Space-separated
|
||||
list. Default: `1m 5m`.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--data-format-trades {json,jsongz,feather,parquet}
|
||||
Storage format for downloaded trades data. (default:
|
||||
`feather`).
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
29
docs/commands/webserver.md
Normal file
29
docs/commands/webserver.md
Normal file
@@ -0,0 +1,29 @@
|
||||
```
|
||||
usage: freqtrade webserver [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||||
[-c PATH] [-d PATH] [--userdir PATH]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--no-color Disable colorization of hyperopt results. May be
|
||||
useful if you are redirecting output to a file.
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to the base directory of the exchange with
|
||||
historical backtesting data. To see futures data, use
|
||||
trading-mode additionally.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
@@ -39,13 +39,19 @@ Please note that Environment variables will overwrite corresponding settings in
|
||||
|
||||
Common example:
|
||||
|
||||
```
|
||||
``` bash
|
||||
FREQTRADE__TELEGRAM__CHAT_ID=<telegramchatid>
|
||||
FREQTRADE__TELEGRAM__TOKEN=<telegramToken>
|
||||
FREQTRADE__EXCHANGE__KEY=<yourExchangeKey>
|
||||
FREQTRADE__EXCHANGE__SECRET=<yourExchangeSecret>
|
||||
```
|
||||
|
||||
Json lists are parsed as json - so you can use the following to set a list of pairs:
|
||||
|
||||
``` bash
|
||||
export FREQTRADE__EXCHANGE__PAIR_WHITELIST='["BTC/USDT", "ETH/USDT"]'
|
||||
```
|
||||
|
||||
!!! Note
|
||||
Environment variables detected are logged at startup - so if you can't find why a value is not what you think it should be based on the configuration, make sure it's not loaded from an environment variable.
|
||||
|
||||
@@ -54,7 +60,7 @@ FREQTRADE__EXCHANGE__SECRET=<yourExchangeSecret>
|
||||
|
||||
??? Warning "Loading sequence"
|
||||
Environment variables are loaded after the initial configuration. As such, you cannot provide the path to the configuration through environment variables. Please use `--config path/to/config.json` for that.
|
||||
This also applies to user_dir to some degree. while the user directory can be set through environment variables - the configuration will **not** be loaded from that location.
|
||||
This also applies to `user_dir` to some degree. while the user directory can be set through environment variables - the configuration will **not** be loaded from that location.
|
||||
|
||||
### Multiple configuration files
|
||||
|
||||
@@ -123,6 +129,19 @@ This is similar to using multiple `--config` parameters, but simpler in usage as
|
||||
|
||||
If multiple files are in the `add_config_files` section, then they will be assumed to be at identical levels, having the last occurrence override the earlier config (unless a parent already defined such a key).
|
||||
|
||||
## Editor autocomplete and validation
|
||||
|
||||
If you are using an editor that supports JSON schema, you can use the schema provided by Freqtrade to get autocompletion and validation of your configuration file by adding the following line to the top of your configuration file:
|
||||
|
||||
``` json
|
||||
{
|
||||
"$schema": "https://schema.freqtrade.io/schema.json",
|
||||
}
|
||||
```
|
||||
|
||||
??? Note "Develop version"
|
||||
The develop schema is available as `https://schema.freqtrade.io/schema_dev.json` - though we recommend to stick to the stable version for the best experience.
|
||||
|
||||
## Configuration parameters
|
||||
|
||||
The table below will list all configuration parameters available.
|
||||
@@ -133,10 +152,10 @@ Freqtrade can also load many options via command line (CLI) arguments (check out
|
||||
|
||||
The prevalence for all Options is as follows:
|
||||
|
||||
- CLI arguments override any other option
|
||||
- [Environment Variables](#environment-variables)
|
||||
- Configuration files are used in sequence (the last file wins) and override Strategy configurations.
|
||||
- Strategy configurations are only used if they are not set via configuration or command-line arguments. These options are marked with [Strategy Override](#parameters-in-the-strategy) in the below table.
|
||||
* CLI arguments override any other option
|
||||
* [Environment Variables](#environment-variables)
|
||||
* Configuration files are used in sequence (the last file wins) and override Strategy configurations.
|
||||
* Strategy configurations are only used if they are not set via configuration or command-line arguments. These options are marked with [Strategy Override](#parameters-in-the-strategy) in the below table.
|
||||
|
||||
### Parameters table
|
||||
|
||||
@@ -155,13 +174,13 @@ Mandatory parameters are marked as **Required**, which means that they are requi
|
||||
| `timeframe` | The timeframe to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). Usually missing in configuration, and specified in the strategy. [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** String
|
||||
| `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency). <br> **Datatype:** String
|
||||
| `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode. <br>*Defaults to `true`.* <br> **Datatype:** Boolean
|
||||
| `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in Dry Run mode.<br>*Defaults to `1000`.* <br> **Datatype:** Float
|
||||
| `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in Dry Run mode. [More information below](#dry-run-wallet)<br>*Defaults to `1000`.* <br> **Datatype:** Float or Dict
|
||||
| `cancel_open_orders_on_exit` | Cancel open orders when the `/stop` RPC command is issued, `Ctrl+C` is pressed or the bot dies unexpectedly. When set to `true`, this allows you to use `/stop` to cancel unfilled and partially filled orders in the event of a market crash. It does not impact open positions. <br>*Defaults to `false`.* <br> **Datatype:** Boolean
|
||||
| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `true`.* <br> **Datatype:** Boolean
|
||||
| `minimal_roi` | **Required.** Set the threshold as ratio the bot will use to exit a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Dict
|
||||
| `stoploss` | **Required.** Value as ratio of the stoploss used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Float (as ratio)
|
||||
| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md#trailing-stop-loss). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Boolean
|
||||
| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-custom-positive-loss). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Float
|
||||
| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-different-positive-loss). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Float
|
||||
| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `0.0` (no offset).* <br> **Datatype:** Float
|
||||
| `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
|
||||
| `fee` | Fee used during backtesting / dry-runs. Should normally not be configured, which has freqtrade fall back to the exchange default fee. Set as ratio (e.g. 0.001 = 0.1%). Fee is applied twice for each trade, once when buying, once when selling. <br> **Datatype:** Float (as ratio)
|
||||
@@ -170,7 +189,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
|
||||
| `margin_mode` | When trading with leverage, this determines if the collateral owned by the trader will be shared or isolated to each trading pair [leverage documentation](leverage.md). <br> **Datatype:** String
|
||||
| `liquidation_buffer` | A ratio specifying how large of a safety net to place between the liquidation price and the stoploss to prevent a position from reaching the liquidation price [leverage documentation](leverage.md). <br>*Defaults to `0.05`.* <br> **Datatype:** Float
|
||||
| | **Unfilled timeout**
|
||||
| `unfilledtimeout.entry` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled entry order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
|
||||
| `unfilledtimeout.entry` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled entry order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
|
||||
| `unfilledtimeout.exit` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled exit order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
|
||||
| `unfilledtimeout.unit` | Unit to use in unfilledtimeout setting. Note: If you set unfilledtimeout.unit to "seconds", "internals.process_throttle_secs" must be inferior or equal to timeout [Strategy Override](#parameters-in-the-strategy). <br> *Defaults to `"minutes"`.* <br> **Datatype:** String
|
||||
| `unfilledtimeout.exit_timeout_count` | How many times can exit orders time out. Once this number of timeouts is reached, an emergency exit is triggered. 0 to disable and allow unlimited order cancels. [Strategy Override](#parameters-in-the-strategy).<br>*Defaults to `0`.* <br> **Datatype:** Integer
|
||||
@@ -186,7 +205,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
|
||||
| `exit_pricing.use_order_book` | Enable exiting of open trades using [Order Book Exit](#exit-price-with-orderbook-enabled). <br> *Defaults to `true`.*<br> **Datatype:** Boolean
|
||||
| `exit_pricing.order_book_top` | Bot will use the top N rate in Order Book "price_side" to exit. I.e. a value of 2 will allow the bot to pick the 2nd ask rate in [Order Book Exit](#exit-price-with-orderbook-enabled)<br>*Defaults to `1`.* <br> **Datatype:** Positive Integer
|
||||
| `custom_price_max_distance_ratio` | Configure maximum distance ratio between current and custom entry or exit price. <br>*Defaults to `0.02` 2%).*<br> **Datatype:** Positive float
|
||||
| | **TODO**
|
||||
| | **Order/Signal handling**
|
||||
| `use_exit_signal` | Use exit signals produced by the strategy in addition to the `minimal_roi`. <br>Setting this to false disables the usage of `"exit_long"` and `"exit_short"` columns. Has no influence on other exit methods (Stoploss, ROI, callbacks). [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `true`.* <br> **Datatype:** Boolean
|
||||
| `exit_profit_only` | Wait until the bot reaches `exit_profit_offset` before taking an exit decision. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
|
||||
| `exit_profit_offset` | Exit-signal is only active above this value. Only active in combination with `exit_profit_only=True`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `0.0`.* <br> **Datatype:** Float (as ratio)
|
||||
@@ -204,19 +223,18 @@ Mandatory parameters are marked as **Required**, which means that they are requi
|
||||
| `exchange.uid` | API uid to use for the exchange. Only required when you are in production mode and for exchanges that use uid for API requests.<br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
|
||||
| `exchange.pair_whitelist` | List of pairs to use by the bot for trading and to check for potential trades during backtesting. Supports regex pairs as `.*/BTC`. Not used by VolumePairList. [More information](plugins.md#pairlists-and-pairlist-handlers). <br> **Datatype:** List
|
||||
| `exchange.pair_blacklist` | List of pairs the bot must absolutely avoid for trading and backtesting. [More information](plugins.md#pairlists-and-pairlist-handlers). <br> **Datatype:** List
|
||||
| `exchange.ccxt_config` | Additional CCXT parameters passed to both ccxt instances (sync and async). This is usually the correct place for additional ccxt configurations. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation). Please avoid adding exchange secrets here (use the dedicated fields instead), as they may be contained in logs. <br> **Datatype:** Dict
|
||||
| `exchange.ccxt_sync_config` | Additional CCXT parameters passed to the regular (sync) ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) <br> **Datatype:** Dict
|
||||
| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) <br> **Datatype:** Dict
|
||||
| `exchange.ccxt_config` | Additional CCXT parameters passed to both ccxt instances (sync and async). This is usually the correct place for additional ccxt configurations. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://docs.ccxt.com/#/README?id=overriding-exchange-properties-upon-instantiation). Please avoid adding exchange secrets here (use the dedicated fields instead), as they may be contained in logs. <br> **Datatype:** Dict
|
||||
| `exchange.ccxt_sync_config` | Additional CCXT parameters passed to the regular (sync) ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://docs.ccxt.com/#/README?id=overriding-exchange-properties-upon-instantiation) <br> **Datatype:** Dict
|
||||
| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://docs.ccxt.com/#/README?id=overriding-exchange-properties-upon-instantiation) <br> **Datatype:** Dict
|
||||
| `exchange.enable_ws` | Enable the usage of Websockets for the exchange. <br>[More information](#consuming-exchange-websockets).<br>*Defaults to `true`.* <br> **Datatype:** Boolean
|
||||
| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded. <br>*Defaults to `60` minutes.* <br> **Datatype:** Positive Integer
|
||||
| `exchange.skip_pair_validation` | Skip pairlist validation on startup.<br>*Defaults to `false`*<br> **Datatype:** Boolean
|
||||
| `exchange.skip_open_order_update` | Skips open order updates on startup should the exchange cause problems. Only relevant in live conditions.<br>*Defaults to `false`*<br> **Datatype:** Boolean
|
||||
| `exchange.unknown_fee_rate` | Fallback value to use when calculating trading fees. This can be useful for exchanges which have fees in non-tradable currencies. The value provided here will be multiplied with the "fee cost".<br>*Defaults to `None`<br> **Datatype:** float
|
||||
| `exchange.log_responses` | Log relevant exchange responses. For debug mode only - use with care.<br>*Defaults to `false`*<br> **Datatype:** Boolean
|
||||
| `exchange.only_from_ccxt` | Prevent data-download from data.binance.vision. Leaving this as false can greatly speed up downloads, but may be problematic if the site is not available.<br>*Defaults to `false`*<br> **Datatype:** Boolean
|
||||
| `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now. <br>*Defaults to `true`.* <br> **Datatype:** Boolean
|
||||
| | **Plugins**
|
||||
| `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation of all possible configuration options.
|
||||
| `pairlists` | Define one or more pairlists to be used. [More information](plugins.md#pairlists-and-pairlist-handlers). <br>*Defaults to `StaticPairList`.* <br> **Datatype:** List of Dicts
|
||||
| `protections` | Define one or more protections to be used. [More information](plugins.md#protections). <br> **Datatype:** List of Dicts
|
||||
| | **Telegram**
|
||||
| `telegram.enabled` | Enable the usage of Telegram. <br> **Datatype:** Boolean
|
||||
| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. <br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
|
||||
@@ -247,7 +265,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
|
||||
| `bot_name` | Name of the bot. Passed via API to a client - can be shown to distinguish / name bots.<br> *Defaults to `freqtrade`*<br> **Datatype:** String
|
||||
| `external_message_consumer` | Enable [Producer/Consumer mode](producer-consumer.md) for more details. <br> **Datatype:** Dict
|
||||
| | **Other**
|
||||
| `initial_state` | Defines the initial application state. If set to stopped, then the bot has to be explicitly started via `/start` RPC command. <br>*Defaults to `stopped`.* <br> **Datatype:** Enum, either `stopped` or `running`
|
||||
| `initial_state` | Defines the initial application state. If set to stopped, then the bot has to be explicitly started via `/start` RPC command. <br>*Defaults to `stopped`.* <br> **Datatype:** Enum, either `running`, `paused` or `stopped`
|
||||
| `force_entry_enable` | Enables the RPC Commands to force a Trade entry. More information below. <br> **Datatype:** Boolean
|
||||
| `disable_dataframe_checks` | Disable checking the OHLCV dataframe returned from the strategy methods for correctness. Only use when intentionally changing the dataframe and understand what you are doing. [Strategy Override](#parameters-in-the-strategy).<br> *Defaults to `False`*. <br> **Datatype:** Boolean
|
||||
| `internals.process_throttle_secs` | Set the process throttle, or minimum loop duration for one bot iteration loop. Value in second. <br>*Defaults to `5` seconds.* <br> **Datatype:** Positive Integer
|
||||
@@ -262,7 +280,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi
|
||||
| `add_config_files` | Additional config files. These files will be loaded and merged with the current config file. The files are resolved relative to the initial file.<br> *Defaults to `[]`*. <br> **Datatype:** List of strings
|
||||
| `dataformat_ohlcv` | Data format to use to store historical candle (OHLCV) data. <br> *Defaults to `feather`*. <br> **Datatype:** String
|
||||
| `dataformat_trades` | Data format to use to store historical trades data. <br> *Defaults to `feather`*. <br> **Datatype:** String
|
||||
| `reduce_df_footprint` | Recast all numeric columns to float32/int32, with the objective of reducing ram/disk usage (and decreasing train/inference timing in FreqAI). (Currently only affects FreqAI use-cases) <br> **Datatype:** Boolean. <br> Default: `False`.
|
||||
| `reduce_df_footprint` | Recast all numeric columns to float32/int32, with the objective of reducing ram/disk usage (and decreasing train/inference timing backtesting/hyperopt and in FreqAI). <br> **Datatype:** Boolean. <br> Default: `False`.
|
||||
| `log_config` | Dictionary containing the log config for python logging. [more info](advanced-setup.md#advanced-logging) <br> **Datatype:** dict. <br> Default: `FtRichHandler`
|
||||
|
||||
### Parameters in the strategy
|
||||
|
||||
@@ -283,10 +302,10 @@ Values set in the configuration file always overwrite values set in the strategy
|
||||
* `order_time_in_force`
|
||||
* `unfilledtimeout`
|
||||
* `disable_dataframe_checks`
|
||||
- `use_exit_signal`
|
||||
* `use_exit_signal`
|
||||
* `exit_profit_only`
|
||||
- `exit_profit_offset`
|
||||
- `ignore_roi_if_entry_signal`
|
||||
* `exit_profit_offset`
|
||||
* `ignore_roi_if_entry_signal`
|
||||
* `ignore_buying_expired_candle_after`
|
||||
* `position_adjustment_enable`
|
||||
* `max_entry_position_adjustment`
|
||||
@@ -299,18 +318,37 @@ There are several methods to configure how much of the stake currency the bot wi
|
||||
|
||||
The minimum stake amount will depend on exchange and pair and is usually listed in the exchange support pages.
|
||||
|
||||
Assuming the minimum tradable amount for XRP/USD is 20 XRP (given by the exchange), and the price is 0.6$, the minimum stake amount to buy this pair is `20 * 0.6 ~= 12`.
|
||||
This exchange has also a limit on USD - where all orders must be > 10$ - which however does not apply in this case.
|
||||
Assuming the minimum tradable amount for XRP/USD is 20 XRP (given by the exchange), and the price is 0.6\$, the minimum stake amount to buy this pair is `20 * 0.6 ~= 12`.
|
||||
This exchange has also a limit on USD - where all orders must be > 10\$ - which however does not apply in this case.
|
||||
|
||||
To guarantee safe execution, freqtrade will not allow buying with a stake-amount of 10.1$, instead, it'll make sure that there's enough space to place a stoploss below the pair (+ an offset, defined by `amount_reserve_percent`, which defaults to 5%).
|
||||
To guarantee safe execution, freqtrade will not allow buying with a stake-amount of 10.1\$, instead, it'll make sure that there's enough space to place a stoploss below the pair (+ an offset, defined by `amount_reserve_percent`, which defaults to 5%).
|
||||
|
||||
With a reserve of 5%, the minimum stake amount would be ~12.6$ (`12 * (1 + 0.05)`). If we take into account a stoploss of 10% on top of that - we'd end up with a value of ~14$ (`12.6 / (1 - 0.1)`).
|
||||
With a reserve of 5%, the minimum stake amount would be ~12.6\$ (`12 * (1 + 0.05)`). If we take into account a stoploss of 10% on top of that - we'd end up with a value of ~14\$ (`12.6 / (1 - 0.1)`).
|
||||
|
||||
To limit this calculation in case of large stoploss values, the calculated minimum stake-limit will never be more than 50% above the real limit.
|
||||
|
||||
!!! Warning
|
||||
Since the limits on exchanges are usually stable and are not updated often, some pairs can show pretty high minimum limits, simply because the price increased a lot since the last limit adjustment by the exchange. Freqtrade adjusts the stake-amount to this value, unless it's > 30% more than the calculated/desired stake-amount - in which case the trade is rejected.
|
||||
|
||||
#### Dry-run wallet
|
||||
|
||||
When running in dry-run mode, the bot will use a simulated wallet to execute trades. The starting balance of this wallet is defined by `dry_run_wallet` (defaults to 1000).
|
||||
For more complex scenarios, you can also assign a dictionary to `dry_run_wallet` to define the starting balance for each currency.
|
||||
|
||||
```json
|
||||
"dry_run_wallet": {
|
||||
"BTC": 0.01,
|
||||
"ETH": 2,
|
||||
"USDT": 1000
|
||||
}
|
||||
```
|
||||
|
||||
Command line options (`--dry-run-wallet`) can be used to override the configuration value, but only for the float value, not for the dictionary. If you'd like to use the dictionary, please adjust the configuration file.
|
||||
|
||||
!!! Note
|
||||
Balances not in stake-currency will not be used for trading, but are shown as part of the wallet balance.
|
||||
On Cross-margin exchanges, the wallet balance may be used to calculate the available collateral for trading.
|
||||
|
||||
#### Tradable balance
|
||||
|
||||
By default, the bot assumes that the `complete amount - 1%` is at it's disposal, and when using [dynamic stake amount](#dynamic-stake-amount), it will split the complete balance into `max_open_trades` buckets per trade.
|
||||
@@ -350,9 +388,9 @@ To overcome this, the option `amend_last_stake_amount` can be set to `True`, whi
|
||||
|
||||
In the example above this would mean:
|
||||
|
||||
- Trade1: 400 USDT
|
||||
- Trade2: 400 USDT
|
||||
- Trade3: 200 USDT
|
||||
* Trade1: 400 USDT
|
||||
* Trade2: 400 USDT
|
||||
* Trade3: 200 USDT
|
||||
|
||||
!!! Note
|
||||
This option only applies with [Static stake amount](#static-stake-amount) - since [Dynamic stake amount](#dynamic-stake-amount) divides the balances evenly.
|
||||
@@ -409,6 +447,8 @@ Or another example if your position adjustment assumes it can do 1 additional bu
|
||||
|
||||
--8<-- "includes/pricing.md"
|
||||
|
||||
## Further Configuration details
|
||||
|
||||
### Understand minimal_roi
|
||||
|
||||
The `minimal_roi` configuration parameter is a JSON object where the key is a duration
|
||||
@@ -526,8 +566,8 @@ Configuration:
|
||||
|
||||
### Understand order_time_in_force
|
||||
|
||||
The `order_time_in_force` configuration parameter defines the policy by which the order
|
||||
is executed on the exchange. Three commonly used time in force are:
|
||||
The `order_time_in_force` configuration parameter defines the policy by which the order is executed on the exchange.
|
||||
Commonly used time in force are:
|
||||
|
||||
**GTC (Good Till Canceled):**
|
||||
|
||||
@@ -549,11 +589,13 @@ is automatically cancelled by the exchange.
|
||||
Post only order. The order is either placed as a maker order, or it is canceled.
|
||||
This means the order must be placed on orderbook for at least time in an unfilled state.
|
||||
|
||||
Please check the [Exchange documentation](exchanges.md) for supported time in force values for your exchange.
|
||||
|
||||
#### time_in_force config
|
||||
|
||||
The `order_time_in_force` parameter contains a dict with entry and exit time in force policy values.
|
||||
This can be set in the configuration file or in the strategy.
|
||||
Values set in the configuration file overwrites values set in the strategy.
|
||||
Values set in the configuration file overwrite values from in the strategy, following the regular [precedence rules](#configuration-option-prevalence).
|
||||
|
||||
The possible values are: `GTC` (default), `FOK` or `IOC`.
|
||||
|
||||
@@ -565,9 +607,9 @@ The possible values are: `GTC` (default), `FOK` or `IOC`.
|
||||
```
|
||||
|
||||
!!! Warning
|
||||
This is ongoing work. For now, it is supported only for binance, gate and kucoin.
|
||||
Please don't change the default value unless you know what you are doing and have researched the impact of using different values for your particular exchange.
|
||||
|
||||
|
||||
### Fiat conversion
|
||||
|
||||
Freqtrade uses the Coingecko API to convert the coin value to it's corresponding fiat value for the Telegram reports.
|
||||
@@ -614,6 +656,30 @@ Freqtrade supports both Demo and Pro coingecko API keys.
|
||||
The Coingecko API key is NOT required for the bot to function correctly.
|
||||
It is only used for the conversion of coin to fiat in the Telegram reports, which usually also work without API key.
|
||||
|
||||
## Consuming exchange Websockets
|
||||
|
||||
Freqtrade can consume websockets through ccxt.pro.
|
||||
|
||||
Freqtrade aims ensure data is available at all times.
|
||||
Should the websocket connection fail (or be disabled), the bot will fall back to REST API calls.
|
||||
|
||||
Should you experience problems you suspect are caused by websockets, you can disable these via the setting `exchange.enable_ws`, which defaults to true.
|
||||
|
||||
```jsonc
|
||||
"exchange": {
|
||||
// ...
|
||||
"enable_ws": false,
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
Should you be required to use a proxy, please refer to the [proxy section](#using-a-proxy-with-freqtrade) for more information.
|
||||
|
||||
!!! Info "Rollout"
|
||||
We're implementing this out slowly, ensuring stability of your bots.
|
||||
Currently, usage is limited to ohlcv data streams.
|
||||
It's also limited to a few exchanges, with new exchanges being added on an ongoing basis.
|
||||
|
||||
## Using Dry-run mode
|
||||
|
||||
We recommend starting the bot in the Dry-run mode to see how your bot will
|
||||
@@ -650,9 +716,9 @@ Once you will be happy with your bot performance running in the Dry-run mode, yo
|
||||
* API-keys may or may not be provided. Only Read-Only operations (i.e. operations that do not alter account state) on the exchange are performed in dry-run mode.
|
||||
* Wallets (`/balance`) are simulated based on `dry_run_wallet`.
|
||||
* Orders are simulated, and will not be posted to the exchange.
|
||||
* Market orders fill based on orderbook volume the moment the order is placed.
|
||||
* Market orders fill based on orderbook volume the moment the order is placed, with a maximum slippage of 5%.
|
||||
* Limit orders fill once the price reaches the defined level - or time out based on `unfilledtimeout` settings.
|
||||
* Limit orders will be converted to market orders if they cross the price by more than 1%.
|
||||
* Limit orders will be converted to market orders if they cross the price by more than 1%, and will be filled immediately based regular market order rules (see point about Market orders above).
|
||||
* In combination with `stoploss_on_exchange`, the stop_loss price is assumed to be filled.
|
||||
* Open orders (not trades, which are stored in the database) are kept open after bot restarts, with the assumption that they were not filled while being offline.
|
||||
|
||||
@@ -702,7 +768,7 @@ You should also make sure to read the [Exchanges](exchanges.md) section of the d
|
||||
|
||||
**NEVER** share your private configuration file or your exchange keys with anyone!
|
||||
|
||||
### Using proxy with Freqtrade
|
||||
## Using a proxy with Freqtrade
|
||||
|
||||
To use a proxy with freqtrade, export your proxy settings using the variables `"HTTP_PROXY"` and `"HTTPS_PROXY"` set to the appropriate values.
|
||||
This will have the proxy settings applied to everything (telegram, coingecko, ...) **except** for exchange requests.
|
||||
@@ -713,7 +779,7 @@ export HTTPS_PROXY="http://addr:port"
|
||||
freqtrade
|
||||
```
|
||||
|
||||
#### Proxy exchange requests
|
||||
### Proxy exchange requests
|
||||
|
||||
To use a proxy for exchange connections - you will have to define the proxies as part of the ccxt configuration.
|
||||
|
||||
@@ -722,6 +788,7 @@ To use a proxy for exchange connections - you will have to define the proxies as
|
||||
"exchange": {
|
||||
"ccxt_config": {
|
||||
"httpsProxy": "http://addr:port",
|
||||
"wsProxy": "http://addr:port",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,86 +11,16 @@ Without provided configuration, `--exchange` becomes mandatory.
|
||||
You can use a relative timerange (`--days 20`) or an absolute starting point (`--timerange 20200101-`). For incremental downloads, the relative approach should be used.
|
||||
|
||||
!!! Tip "Tip: Updating existing data"
|
||||
If you already have backtesting data available in your data-directory and would like to refresh this data up to today, freqtrade will automatically calculate the data missing for the existing pairs and the download will occur from the latest available point until "now", neither --days or --timerange parameters are required. Freqtrade will keep the available data and only download the missing data.
|
||||
If you are updating existing data after inserting new pairs that you have no data for, use `--new-pairs-days xx` parameter. Specified number of days will be downloaded for new pairs while old pairs will be updated with missing data only.
|
||||
If you use `--days xx` parameter alone - data for specified number of days will be downloaded for _all_ pairs. Be careful, if specified number of days is smaller than gap between now and last downloaded candle - freqtrade will delete all existing data to avoid gaps in candle data.
|
||||
If you already have backtesting data available in your data-directory and would like to refresh this data up to today, freqtrade will automatically calculate the missing timerange for the existing pairs and the download will occur from the latest available point until "now", neither `--days` or `--timerange` parameters are required. Freqtrade will keep the available data and only download the missing data.
|
||||
If you are updating existing data after inserting new pairs that you have no data for, use the `--new-pairs-days xx` parameter. Specified number of days will be downloaded for new pairs while old pairs will be updated with missing data only.
|
||||
|
||||
### Usage
|
||||
|
||||
```
|
||||
usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
|
||||
[-d PATH] [--userdir PATH]
|
||||
[-p PAIRS [PAIRS ...]] [--pairs-file FILE]
|
||||
[--days INT] [--new-pairs-days INT]
|
||||
[--include-inactive-pairs]
|
||||
[--timerange TIMERANGE] [--dl-trades]
|
||||
[--convert] [--exchange EXCHANGE]
|
||||
[-t TIMEFRAMES [TIMEFRAMES ...]] [--erase]
|
||||
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
|
||||
[--data-format-trades {json,jsongz,hdf5,feather,parquet}]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
[--prepend]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--pairs-file FILE File containing a list of pairs. Takes precedence over
|
||||
--pairs or pairs configured in the configuration.
|
||||
--days INT Download data for given number of days.
|
||||
--new-pairs-days INT Download data of new pairs for given number of days.
|
||||
Default: `None`.
|
||||
--include-inactive-pairs
|
||||
Also download data from inactive pairs.
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--dl-trades Download trades instead of OHLCV data. The bot will
|
||||
resample trades to the desired timeframe as specified
|
||||
as --timeframes/-t.
|
||||
--convert Convert downloaded trades to OHLCV data. Only
|
||||
applicable in combination with `--dl-trades`. Will be
|
||||
automatic for exchanges which don't have historic
|
||||
OHLCV (e.g. Kraken). If not provided, use `trades-to-
|
||||
ohlcv` to convert trades data to OHLCV data.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
|
||||
Specify which tickers to download. Space-separated
|
||||
list. Default: `1m 5m`.
|
||||
--erase Clean all existing data for the selected
|
||||
exchange/pairs/timeframes.
|
||||
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--data-format-trades {json,jsongz,hdf5,feather,parquet}
|
||||
Storage format for downloaded trades data. (default:
|
||||
`feather`).
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
--prepend Allow data prepending. (Data-appending is disabled)
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to directory with historical backtesting data.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
--8<-- "commands/download-data.md"
|
||||
|
||||
!!! Tip "Downloading all data for one quote currency"
|
||||
Often, you'll want to download data for all pairs of a specific quote-currency. In such cases, you can use the following shorthand:
|
||||
`freqtrade download-data --exchange binance --pairs .*/USDT <...>`. The provided "pairs" string will be expanded to contain all active pairs on the exchange.
|
||||
`freqtrade download-data --exchange binance --pairs ".*/USDT" <...>`. The provided "pairs" string will be expanded to contain all active pairs on the exchange.
|
||||
To also download data for inactive (delisted) pairs, add `--include-inactive-pairs` to the command.
|
||||
|
||||
!!! Note "Startup period"
|
||||
@@ -117,16 +47,17 @@ freqtrade download-data --exchange binance --pairs ETH/USDT XRP/USDT BTC/USDT
|
||||
or as regex (in this case, to download all active USDT pairs)
|
||||
|
||||
```bash
|
||||
freqtrade download-data --exchange binance --pairs .*/USDT
|
||||
freqtrade download-data --exchange binance --pairs ".*/USDT"
|
||||
```
|
||||
|
||||
### Other Notes
|
||||
|
||||
* To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`.
|
||||
* To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust rate limits etc.)
|
||||
* To change the exchange used to download the historical data from, either use `--exchange <exchange>` - or specify a different configuration file.
|
||||
* To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`.
|
||||
* To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days).
|
||||
* To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020.
|
||||
* Given starting points are ignored if data is already available, downloading only missing data up to today.
|
||||
* Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data.
|
||||
* To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
|
||||
|
||||
@@ -162,7 +93,6 @@ Freqtrade currently supports the following data-formats:
|
||||
* `feather` - a dataformat based on Apache Arrow
|
||||
* `json` - plain "text" json files
|
||||
* `jsongz` - a gzip-zipped version of json files
|
||||
* `hdf5` - a high performance datastore
|
||||
* `parquet` - columnar datastore (OHLCV only)
|
||||
|
||||
By default, both OHLCV data and trades data are stored in the `feather` format.
|
||||
@@ -172,8 +102,8 @@ To persist this change, you should also add the following snippet to your config
|
||||
|
||||
``` jsonc
|
||||
// ...
|
||||
"dataformat_ohlcv": "hdf5",
|
||||
"dataformat_trades": "hdf5",
|
||||
"dataformat_ohlcv": "feather",
|
||||
"dataformat_trades": "feather",
|
||||
// ...
|
||||
```
|
||||
|
||||
@@ -211,7 +141,6 @@ time freqtrade list-data --show-timerange --data-format-ohlcv <dataformat>
|
||||
| `feather` | 72Mb | 3.5s |
|
||||
| `json` | 149Mb | 25.6s |
|
||||
| `jsongz` | 39Mb | 27s |
|
||||
| `hdf5` | 145Mb | 3.9s |
|
||||
| `parquet` | 83Mb | 3.8s |
|
||||
|
||||
Size has been taken from the BTC/USDT 1m spot combination for the timerange specified above.
|
||||
@@ -249,55 +178,7 @@ Mixing different stake-currencies is allowed for this file, since it's only used
|
||||
|
||||
## Sub-command convert data
|
||||
|
||||
```
|
||||
usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
|
||||
[-d PATH] [--userdir PATH]
|
||||
[-p PAIRS [PAIRS ...]] --format-from
|
||||
{json,jsongz,hdf5,feather,parquet} --format-to
|
||||
{json,jsongz,hdf5,feather,parquet} [--erase]
|
||||
[--exchange EXCHANGE]
|
||||
[-t TIMEFRAMES [TIMEFRAMES ...]]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
[--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--format-from {json,jsongz,hdf5,feather,parquet}
|
||||
Source format for data conversion.
|
||||
--format-to {json,jsongz,hdf5,feather,parquet}
|
||||
Destination format for data conversion.
|
||||
--erase Clean all existing data for the selected
|
||||
exchange/pairs/timeframes.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
|
||||
Specify which tickers to download. Space-separated
|
||||
list. Default: `1m 5m`.
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]
|
||||
Select candle type to convert. Defaults to all
|
||||
available types.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to directory with historical backtesting data.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
```
|
||||
--8<-- "commands/convert-data.md"
|
||||
|
||||
### Example converting data
|
||||
|
||||
@@ -310,46 +191,7 @@ freqtrade convert-data --format-from json --format-to jsongz --datadir ~/.freqtr
|
||||
|
||||
## Sub-command convert trade data
|
||||
|
||||
```
|
||||
usage: freqtrade convert-trade-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
|
||||
[-d PATH] [--userdir PATH]
|
||||
[-p PAIRS [PAIRS ...]] --format-from
|
||||
{json,jsongz,hdf5,feather,parquet}
|
||||
--format-to
|
||||
{json,jsongz,hdf5,feather,parquet}
|
||||
[--erase] [--exchange EXCHANGE]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--format-from {json,jsongz,hdf5,feather,parquet}
|
||||
Source format for data conversion.
|
||||
--format-to {json,jsongz,hdf5,feather,parquet}
|
||||
Destination format for data conversion.
|
||||
--erase Clean all existing data for the selected
|
||||
exchange/pairs/timeframes.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to directory with historical backtesting data.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
--8<-- "commands/convert-trade-data.md"
|
||||
|
||||
### Example converting trades
|
||||
|
||||
@@ -365,49 +207,7 @@ freqtrade convert-trade-data --format-from jsongz --format-to json --datadir ~/.
|
||||
When you need to use `--dl-trades` (kraken only) to download data, conversion of trades data to ohlcv data is the last step.
|
||||
This command will allow you to repeat this last step for additional timeframes without re-downloading the data.
|
||||
|
||||
```
|
||||
usage: freqtrade trades-to-ohlcv [-h] [-v] [--logfile FILE] [-V] [-c PATH]
|
||||
[-d PATH] [--userdir PATH]
|
||||
[-p PAIRS [PAIRS ...]]
|
||||
[-t TIMEFRAMES [TIMEFRAMES ...]]
|
||||
[--exchange EXCHANGE]
|
||||
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
|
||||
[--data-format-trades {json,jsongz,hdf5,feather}]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
|
||||
Specify which tickers to download. Space-separated
|
||||
list. Default: `1m 5m`.
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
--data-format-trades {json,jsongz,hdf5,feather}
|
||||
Storage format for downloaded trades data. (default:
|
||||
`feather`).
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to directory with historical backtesting data.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
--8<-- "commands/trades-to-ohlcv.md"
|
||||
|
||||
### Example trade-to-ohlcv conversion
|
||||
|
||||
@@ -419,59 +219,36 @@ freqtrade trades-to-ohlcv --exchange kraken -t 5m 1h 1d --pairs BTC/EUR ETH/EUR
|
||||
|
||||
You can get a list of downloaded data using the `list-data` sub-command.
|
||||
|
||||
```
|
||||
usage: freqtrade list-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
|
||||
[--userdir PATH] [--exchange EXCHANGE]
|
||||
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
|
||||
[-p PAIRS [PAIRS ...]]
|
||||
[--trading-mode {spot,margin,futures}]
|
||||
[--show-timerange]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
|
||||
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `feather`).
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
|
||||
Select Trading mode
|
||||
--show-timerange Show timerange available for available data. (May take
|
||||
a while to calculate).
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--logfile FILE, --log-file FILE
|
||||
Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH, --data-dir PATH
|
||||
Path to directory with historical backtesting data.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
```
|
||||
--8<-- "commands/list-data.md"
|
||||
|
||||
### Example list-data
|
||||
|
||||
```bash
|
||||
> freqtrade list-data --userdir ~/.freqtrade/user_data/
|
||||
|
||||
Found 33 pair / timeframe combinations.
|
||||
pairs timeframe
|
||||
---------- -----------------------------------------
|
||||
ADA/BTC 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
|
||||
ADA/ETH 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
|
||||
ETH/BTC 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
|
||||
ETH/USDT 5m, 15m, 30m, 1h, 2h, 4h
|
||||
Found 33 pair / timeframe combinations.
|
||||
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┓
|
||||
┃ Pair ┃ Timeframe ┃ Type ┃
|
||||
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━┩
|
||||
│ ADA/BTC │ 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d │ spot │
|
||||
│ ADA/ETH │ 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d │ spot │
|
||||
│ ETH/BTC │ 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d │ spot │
|
||||
│ ETH/USDT │ 5m, 15m, 30m, 1h, 2h, 4h │ spot │
|
||||
└───────────────┴───────────────────────────────────────────┴──────┘
|
||||
|
||||
```
|
||||
|
||||
Show all trades data including from/to timerange
|
||||
|
||||
``` bash
|
||||
> freqtrade list-data --show --trades
|
||||
Found trades data for 1 pair.
|
||||
┏━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
|
||||
┃ Pair ┃ Type ┃ From ┃ To ┃ Trades ┃
|
||||
┡━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
|
||||
│ XRP/ETH │ spot │ 2019-10-11 00:00:11 │ 2019-10-13 11:19:28 │ 12477 │
|
||||
└─────────┴──────┴─────────────────────┴─────────────────────┴────────┘
|
||||
|
||||
```
|
||||
|
||||
## Trades (tick) data
|
||||
|
||||
@@ -75,7 +75,26 @@ Webhook terminology changed from "sell" to "exit", and from "buy" to "entry", re
|
||||
* `webhooksellfill`, `webhookexitfill` -> `exit_fill`
|
||||
* `webhooksellcancel`, `webhookexitcancel` -> `exit_cancel`
|
||||
|
||||
|
||||
## Removal of `populate_any_indicators`
|
||||
|
||||
version 2023.3 saw the removal of `populate_any_indicators` in favor of split methods for feature engineering and targets. Please read the [migration document](strategy_migration.md#freqai-strategy) for full details.
|
||||
|
||||
## Removal of `protections` from configuration
|
||||
|
||||
Setting protections from the configuration via `"protections": [],` has been removed in 2024.10, after having raised deprecation warnings for over 3 years.
|
||||
|
||||
## hdf5 data storage
|
||||
|
||||
Using hdf5 as data storage has been deprecated in 2024.12 and was removed in 2025.1. We recommend switching to the feather data format.
|
||||
|
||||
Please use the [`convert-data` subcommand](data-download.md#sub-command-convert-data) to convert your existing data to one of the supported formats before updating.
|
||||
|
||||
## Configuring advanced logging via config
|
||||
|
||||
Configuring syslog and journald via `--logfile systemd` and `--logfile journald` respectively has been deprecated in 2025.3.
|
||||
Please use configuration based [log setup](advanced-setup.md#advanced-logging) instead.
|
||||
|
||||
## Removal of the edge module
|
||||
|
||||
The edge module has been deprecated in 2023.9 and removed in 2025.6.
|
||||
All functionalities of edge have been removed, and having edge configured will result in an error.
|
||||
|
||||
@@ -22,7 +22,7 @@ This will spin up a local server (usually on port 8000) so you can see if everyt
|
||||
## Developer setup
|
||||
|
||||
To configure a development environment, you can either use the provided [DevContainer](#devcontainer-setup), or use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ".
|
||||
Alternatively (e.g. if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -e .[all]`.
|
||||
Alternatively (e.g. if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -r requirements-dev.txt` - followed by `pip3 install -e .[all]`.
|
||||
|
||||
This will install all required tools for development, including `pytest`, `ruff`, `mypy`, and `coveralls`.
|
||||
|
||||
@@ -116,7 +116,7 @@ A similar setup can also be taken for Pycharm - using `freqtrade` as module name
|
||||

|
||||
|
||||
!!! Note "Startup directory"
|
||||
This assumes that you have the repository checked out, and the editor is started at the repository root level (so setup.py is at the top level of your repository).
|
||||
This assumes that you have the repository checked out, and the editor is started at the repository root level (so pyproject.toml is at the top level of your repository).
|
||||
|
||||
## ErrorHandling
|
||||
|
||||
@@ -162,7 +162,7 @@ Hopefully you also want to contribute this back upstream.
|
||||
|
||||
Whatever your motivations are - This should get you off the ground in trying to develop a new Pairlist Handler.
|
||||
|
||||
First of all, have a look at the [VolumePairList](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/pairlist/VolumePairList.py) Handler, and best copy this file with a name of your new Pairlist Handler.
|
||||
First of all, have a look at the [VolumePairList](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/plugins/pairlist/VolumePairList.py) Handler, and best copy this file with a name of your new Pairlist Handler.
|
||||
|
||||
This is a simple Handler, which however serves as a good example on how to start developing.
|
||||
|
||||
@@ -205,7 +205,7 @@ This is called with each iteration of the bot (only if the Pairlist Handler is a
|
||||
|
||||
It must return the resulting pairlist (which may then be passed into the chain of Pairlist Handlers).
|
||||
|
||||
Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filtering. Use this if you limit your result to a certain number of pairs - so the end-result is not shorter than expected.
|
||||
Validations are optional, the parent class exposes a `verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filtering. Use this if you limit your result to a certain number of pairs - so the end-result is not shorter than expected.
|
||||
|
||||
#### filter_pairlist
|
||||
|
||||
@@ -219,14 +219,14 @@ The default implementation in the base class simply calls the `_validate_pair()`
|
||||
|
||||
If overridden, it must return the resulting pairlist (which may then be passed into the next Pairlist Handler in the chain).
|
||||
|
||||
Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the end result is not shorter than expected.
|
||||
Validations are optional, the parent class exposes a `verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the end result is not shorter than expected.
|
||||
|
||||
In `VolumePairList`, this implements different methods of sorting, does early validation so only the expected number of pairs is returned.
|
||||
|
||||
##### sample
|
||||
|
||||
``` python
|
||||
def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]:
|
||||
def filter_pairlist(self, pairlist: list[str], tickers: dict) -> List[str]:
|
||||
# Generate dynamic whitelist
|
||||
pairs = self._calculate_pairlist(pairlist, tickers)
|
||||
return pairs
|
||||
@@ -241,7 +241,6 @@ No protection should use datetime directly, but use the provided `date_now` vari
|
||||
|
||||
!!! Tip "Writing a new Protection"
|
||||
Best copy one of the existing Protections to have a good example.
|
||||
Don't forget to register your protection in `constants.py` under the variable `AVAILABLE_PROTECTIONS` - otherwise it will not be selectable.
|
||||
|
||||
#### Implementation of a new protection
|
||||
|
||||
@@ -305,6 +304,13 @@ The `IProtection` parent class provides a helper method for this in `calculate_l
|
||||
|
||||
Most exchanges supported by CCXT should work out of the box.
|
||||
|
||||
If you need to implement a specific exchange class, these are found in the `freqtrade/exchange` source folder. You'll also need to add the import to `freqtrade/exchange/__init__.py` to make the loading logic aware of the new exchange.
|
||||
We recommend looking at existing exchange implementations to get an idea of what might be required.
|
||||
|
||||
!!! Warning
|
||||
Implementing and testing an exchange can be a lot of trial and error, so please bear this in mind.
|
||||
You should also have some development experience, as this is not a beginner task.
|
||||
|
||||
To quickly test the public endpoints of an exchange, add a configuration for your exchange to `tests/exchange_online/conftest.py` and run these tests with `pytest --longrun tests/exchange_online/test_ccxt_compat.py`.
|
||||
Completing these tests successfully a good basis point (it's a requirement, actually), however these won't guarantee correct exchange functioning, as this only tests public endpoints, but no private endpoint (like generate order or similar).
|
||||
|
||||
@@ -402,6 +408,22 @@ jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace freqtrade/tem
|
||||
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to markdown freqtrade/templates/strategy_analysis_example.ipynb --stdout > docs/strategy_analysis_example.md
|
||||
```
|
||||
|
||||
## Backtest documentation results
|
||||
|
||||
To generate backtest outputs, please use the following commands:
|
||||
|
||||
``` bash
|
||||
# Assume a dedicated user directory for this output
|
||||
freqtrade create-userdir --userdir user_data_bttest/
|
||||
# set can_short = True
|
||||
sed -i "s/can_short: bool = False/can_short: bool = True/" user_data_bttest/strategies/sample_strategy.py
|
||||
|
||||
freqtrade download-data --timerange 20250625-20250801 --config tests/testdata/config.tests.usdt.json --userdir user_data_bttest/ -t 5m
|
||||
|
||||
freqtrade backtesting --config tests/testdata/config.tests.usdt.json -s SampleStrategy --userdir user_data_bttest/ --cache none --timerange 20250701-20250801
|
||||
```
|
||||
|
||||
|
||||
## Continuous integration
|
||||
|
||||
This documents some decisions taken for the CI Pipeline.
|
||||
@@ -412,7 +434,6 @@ This documents some decisions taken for the CI Pipeline.
|
||||
* Docker images contain a file, `/freqtrade/freqtrade_commit` containing the commit this image is based of.
|
||||
* Full docker image rebuilds are run once a week via schedule.
|
||||
* Deployments run on ubuntu.
|
||||
* ta-lib binaries are contained in the build_helpers directory to avoid fails related to external unavailability.
|
||||
* All tests must pass for a PR to be merged to `stable` or `develop`.
|
||||
|
||||
## Creating a release
|
||||
@@ -481,21 +502,24 @@ Once the PR against stable is merged (best right after merging):
|
||||
|
||||
### pypi
|
||||
|
||||
!!! Note
|
||||
This process is now automated as part of Github Actions.
|
||||
!!! Warning "Manual Releases"
|
||||
This process is automated as part of Github Actions.
|
||||
Manual pypi pushes should not be necessary.
|
||||
|
||||
To create a pypi release, please run the following commands:
|
||||
??? example "Manual release"
|
||||
To manually create a pypi release, please run the following commands:
|
||||
|
||||
Additional requirement: `wheel`, `twine` (for uploading), account on pypi with proper permissions.
|
||||
Additional requirement: `wheel`, `twine` (for uploading), account on pypi with proper permissions.
|
||||
|
||||
``` bash
|
||||
python setup.py sdist bdist_wheel
|
||||
``` bash
|
||||
pip install -U build
|
||||
python -m build --sdist --wheel
|
||||
|
||||
# For pypi test (to check if some change to the installation did work)
|
||||
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
|
||||
# For pypi test (to check if some change to the installation did work)
|
||||
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
|
||||
|
||||
# For production:
|
||||
twine upload dist/*
|
||||
```
|
||||
# For production:
|
||||
twine upload dist/*
|
||||
```
|
||||
|
||||
Please don't push non-releases to the productive / real pypi instance.
|
||||
Please don't push non-releases to the productive / real pypi instance.
|
||||
|
||||
357
docs/edge.md
357
docs/edge.md
@@ -1,357 +0,0 @@
|
||||
# Edge positioning
|
||||
|
||||
The `Edge Positioning` module uses probability to calculate your win rate and risk reward ratio. It will use these statistics to control your strategy trade entry points, position size and, stoploss.
|
||||
|
||||
!!! Danger "Deprecated functionality"
|
||||
`Edge positioning` (or short Edge) is currently in maintenance mode only (we keep existing functionality alive) and should be considered as deprecated.
|
||||
It will currently not receive new features until either someone stepped forward to take up ownership of that module - or we'll decide to remove edge from freqtrade.
|
||||
|
||||
!!! Warning
|
||||
When using `Edge positioning` with a dynamic whitelist (VolumePairList), make sure to also use `AgeFilter` and set it to at least `calculate_since_number_of_days` to avoid problems with missing data.
|
||||
|
||||
!!! Note
|
||||
`Edge Positioning` only considers *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file.
|
||||
`Edge Positioning` improves the performance of some trading strategies and *decreases* the performance of others.
|
||||
|
||||
|
||||
## Introduction
|
||||
|
||||
Trading strategies are not perfect. They are frameworks that are susceptible to the market and its indicators. Because the market is not at all predictable, sometimes a strategy will win and sometimes the same strategy will lose.
|
||||
|
||||
To obtain an edge in the market, a strategy has to make more money than it loses. Making money in trading is not only about *how often* the strategy makes or loses money.
|
||||
|
||||
!!! tip "It doesn't matter how often, but how much!"
|
||||
A bad strategy might make 1 penny in *ten* transactions but lose 1 dollar in *one* transaction. If one only checks the number of winning trades, it would be misleading to think that the strategy is actually making a profit.
|
||||
|
||||
The Edge Positioning module seeks to improve a strategy's winning probability and the money that the strategy will make *on the long run*.
|
||||
|
||||
We raise the following question[^1]:
|
||||
|
||||
!!! Question "Which trade is a better option?"
|
||||
a) A trade with 80% of chance of losing 100\$ and 20% chance of winning 200\$<br/>
|
||||
b) A trade with 100% of chance of losing 30\$
|
||||
|
||||
???+ Info "Answer"
|
||||
The expected value of *a)* is smaller than the expected value of *b)*.<br/>
|
||||
Hence, *b*) represents a smaller loss in the long run.<br/>
|
||||
However, the answer is: *it depends*
|
||||
|
||||
Another way to look at it is to ask a similar question:
|
||||
|
||||
!!! Question "Which trade is a better option?"
|
||||
a) A trade with 80% of chance of winning 100\$ and 20% chance of losing 200\$<br/>
|
||||
b) A trade with 100% of chance of winning 30\$
|
||||
|
||||
Edge positioning tries to answer the hard questions about risk/reward and position size automatically, seeking to minimizes the chances of losing of a given strategy.
|
||||
|
||||
### Trading, winning and losing
|
||||
|
||||
Let's call $o$ the return of a single transaction $o$ where $o \in \mathbb{R}$. The collection $O = \{o_1, o_2, ..., o_N\}$ is the set of all returns of transactions made during a trading session. We say that $N$ is the cardinality of $O$, or, in lay terms, it is the number of transactions made in a trading session.
|
||||
|
||||
!!! Example
|
||||
In a session where a strategy made three transactions we can say that $O = \{3.5, -1, 15\}$. That means that $N = 3$ and $o_1 = 3.5$, $o_2 = -1$, $o_3 = 15$.
|
||||
|
||||
A winning trade is a trade where a strategy *made* money. Making money means that the strategy closed the position in a value that returned a profit, after all deducted fees. Formally, a winning trade will have a return $o_i > 0$. Similarly, a losing trade will have a return $o_j \leq 0$. With that, we can discover the set of all winning trades, $T_{win}$, as follows:
|
||||
|
||||
$$ T_{win} = \{ o \in O | o > 0 \} $$
|
||||
|
||||
Similarly, we can discover the set of losing trades $T_{lose}$ as follows:
|
||||
|
||||
$$ T_{lose} = \{o \in O | o \leq 0\} $$
|
||||
|
||||
!!! Example
|
||||
In a section where a strategy made four transactions $O = \{3.5, -1, 15, 0\}$:<br>
|
||||
$T_{win} = \{3.5, 15\}$<br>
|
||||
$T_{lose} = \{-1, 0\}$<br>
|
||||
|
||||
### Win Rate and Lose Rate
|
||||
|
||||
The win rate $W$ is the proportion of winning trades with respect to all the trades made by a strategy. We use the following function to compute the win rate:
|
||||
|
||||
$$W = \frac{|T_{win}|}{N}$$
|
||||
|
||||
Where $W$ is the win rate, $N$ is the number of trades and, $T_{win}$ is the set of all trades where the strategy made money.
|
||||
|
||||
Similarly, we can compute the rate of losing trades:
|
||||
|
||||
$$
|
||||
L = \frac{|T_{lose}|}{N}
|
||||
$$
|
||||
|
||||
Where $L$ is the lose rate, $N$ is the amount of trades made and, $T_{lose}$ is the set of all trades where the strategy lost money. Note that the above formula is the same as calculating $L = 1 – W$ or $W = 1 – L$
|
||||
|
||||
### Risk Reward Ratio
|
||||
|
||||
Risk Reward Ratio ($R$) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose. Formally:
|
||||
|
||||
$$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$
|
||||
|
||||
???+ Example "Worked example of $R$ calculation"
|
||||
Let's say that you think that the price of *stonecoin* today is 10.0\$. You believe that, because they will start mining stonecoin, it will go up to 15.0\$ tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to 0\$ tomorrow. You are planning to invest 100\$, which will give you 10 shares (100 / 10).
|
||||
|
||||
Your potential profit is calculated as:
|
||||
|
||||
$\begin{aligned}
|
||||
\text{potential_profit} &= (\text{potential_price} - \text{entry_price}) * \frac{\text{investment}}{\text{entry_price}} \\
|
||||
&= (15 - 10) * (100 / 10) \\
|
||||
&= 50
|
||||
\end{aligned}$
|
||||
|
||||
Since the price might go to 0\$, the 100\$ dollars invested could turn into 0.
|
||||
|
||||
We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5$\).
|
||||
|
||||
$\begin{aligned}
|
||||
\text{potential_loss} &= (\text{entry_price} - \text{stoploss}) * \frac{\text{investment}}{\text{entry_price}} \\
|
||||
&= (10 - 8.5) * (100 / 10)\\
|
||||
&= 15
|
||||
\end{aligned}$
|
||||
|
||||
We can compute the Risk Reward Ratio as follows:
|
||||
|
||||
$\begin{aligned}
|
||||
R &= \frac{\text{potential_profit}}{\text{potential_loss}}\\
|
||||
&= \frac{50}{15}\\
|
||||
&= 3.33
|
||||
\end{aligned}$<br>
|
||||
What it effectively means is that the strategy have the potential to make 3.33\$ for each 1\$ invested.
|
||||
|
||||
On a long horizon, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows:
|
||||
|
||||
$$ \text{average_profit} = \mu_{win} = \frac{\text{sum_of_profits}}{\text{count_winning_trades}} = \frac{\sum^{o \in T_{win}} o}{|T_{win}|} $$
|
||||
|
||||
Similarly, we can calculate the average loss, $\mu_{lose}$, as follows:
|
||||
|
||||
$$ \text{average_loss} = \mu_{lose} = \frac{\text{sum_of_losses}}{\text{count_losing_trades}} = \frac{\sum^{o \in T_{lose}} o}{|T_{lose}|} $$
|
||||
|
||||
Finally, we can calculate the Risk Reward ratio, $R$, as follows:
|
||||
|
||||
$$ R = \frac{\text{average_profit}}{\text{average_loss}} = \frac{\mu_{win}}{\mu_{lose}}\\ $$
|
||||
|
||||
|
||||
???+ Example "Worked example of $R$ calculation using mean profit/loss"
|
||||
Let's say the strategy that we are using makes an average win $\mu_{win} = 2.06$ and an average loss $\mu_{loss} = 4.11$.<br>
|
||||
We calculate the risk reward ratio as follows:<br>
|
||||
$R = \frac{\mu_{win}}{\mu_{loss}} = \frac{2.06}{4.11} = 0.5012...$
|
||||
|
||||
|
||||
### Expectancy
|
||||
|
||||
By combining the Win Rate $W$ and the Risk Reward ratio $R$ to create an expectancy ratio $E$. A expectance ratio is the expected return of the investment made in a trade. We can compute the value of $E$ as follows:
|
||||
|
||||
$$E = R * W - L$$
|
||||
|
||||
!!! Example "Calculating $E$"
|
||||
Let's say that a strategy has a win rate $W = 0.28$ and a risk reward ratio $R = 5$. What this means is that the strategy is expected to make 5 times the investment around on 28% of the trades it makes. Working out the example:<br>
|
||||
$E = R * W - L = 5 * 0.28 - 0.72 = 0.68$
|
||||
<br>
|
||||
|
||||
The expectancy worked out in the example above means that, on average, this strategy' trades will return 1.68 times the size of its losses. Said another way, the strategy makes 1.68\$ for every 1\$ it loses, on average.
|
||||
|
||||
This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ.
|
||||
|
||||
It is important to remember that any system with an expectancy greater than 0 is profitable using past data. The key is finding one that will be profitable in the future.
|
||||
|
||||
You can also use this value to evaluate the effectiveness of modifications to this system.
|
||||
|
||||
!!! Note
|
||||
It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades.
|
||||
|
||||
## How does it work?
|
||||
|
||||
Edge combines dynamic stoploss, dynamic positions, and whitelist generation into one isolated module which is then applied to the trading strategy. If enabled in config, Edge will go through historical data with a range of stoplosses in order to find buy and sell/stoploss signals. It then calculates win rate and expectancy over *N* trades for each stoploss. Here is an example:
|
||||
|
||||
| Pair | Stoploss | Win Rate | Risk Reward Ratio | Expectancy |
|
||||
|----------|:-------------:|-------------:|------------------:|-----------:|
|
||||
| XZC/ETH | -0.01 | 0.50 |1.176384 | 0.088 |
|
||||
| XZC/ETH | -0.02 | 0.51 |1.115941 | 0.079 |
|
||||
| XZC/ETH | -0.03 | 0.52 |1.359670 | 0.228 |
|
||||
| XZC/ETH | -0.04 | 0.51 |1.234539 | 0.117 |
|
||||
|
||||
The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at $3%$ leads to the maximum expectancy according to historical data.
|
||||
|
||||
Edge module then forces stoploss value it evaluated to your strategy dynamically.
|
||||
|
||||
### Position size
|
||||
|
||||
Edge dictates the amount at stake for each trade to the bot according to the following factors:
|
||||
|
||||
- Allowed capital at risk
|
||||
- Stoploss
|
||||
|
||||
Allowed capital at risk is calculated as follows:
|
||||
|
||||
```
|
||||
Allowed capital at risk = (Capital available_percentage) X (Allowed risk per trade)
|
||||
```
|
||||
|
||||
Stoploss is calculated as described above with respect to historical data.
|
||||
|
||||
The position size is calculated as follows:
|
||||
|
||||
```
|
||||
Position size = (Allowed capital at risk) / Stoploss
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
Let's say the stake currency is **ETH** and there is $10$ **ETH** on the wallet. The capital available percentage is $50%$ and the allowed risk per trade is $1\%$. Thus, the available capital for trading is $10 * 0.5 = 5$ **ETH** and the allowed capital at risk would be $5 * 0.01 = 0.05$ **ETH**.
|
||||
|
||||
- **Trade 1:** The strategy detects a new buy signal in the **XLM/ETH** market. `Edge Positioning` calculates a stoploss of $2\%$ and a position of $0.05 / 0.02 = 2.5$ **ETH**. The bot takes a position of $2.5$ **ETH** in the **XLM/ETH** market.
|
||||
|
||||
- **Trade 2:** The strategy detects a buy signal on the **BTC/ETH** market while **Trade 1** is still open. `Edge Positioning` calculates the stoploss of $4\%$ on this market. Thus, **Trade 2** position size is $0.05 / 0.04 = 1.25$ **ETH**.
|
||||
|
||||
!!! Tip "Available Capital $\neq$ Available in wallet"
|
||||
The available capital for trading didn't change in **Trade 2** even with **Trade 1** still open. The available capital **is not** the free amount in the wallet.
|
||||
|
||||
- **Trade 3:** The strategy detects a buy signal in the **ADA/ETH** market. `Edge Positioning` calculates a stoploss of $1\%$ and a position of $0.05 / 0.01 = 5$ **ETH**. Since **Trade 1** has $2.5$ **ETH** blocked and **Trade 2** has $1.25$ **ETH** blocked, there is only $5 - 1.25 - 2.5 = 1.25$ **ETH** available. Hence, the position size of **Trade 3** is $1.25$ **ETH**.
|
||||
|
||||
!!! Tip "Available Capital Updates"
|
||||
The available capital does not change before a position is sold. After a trade is closed the Available Capital goes up if the trade was profitable or goes down if the trade was a loss.
|
||||
|
||||
- The strategy detects a sell signal in the **XLM/ETH** market. The bot exits **Trade 1** for a profit of $1$ **ETH**. The total capital in the wallet becomes $11$ **ETH** and the available capital for trading becomes $5.5$ **ETH**.
|
||||
|
||||
- **Trade 4** The strategy detects a new buy signal int the **XLM/ETH** market. `Edge Positioning` calculates the stoploss of $2\%$, and the position size of $0.055 / 0.02 = 2.75$ **ETH**.
|
||||
|
||||
## Edge command reference
|
||||
|
||||
```
|
||||
usage: freqtrade edge [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
|
||||
[--userdir PATH] [-s NAME] [--strategy-path PATH]
|
||||
[-i TIMEFRAME] [--timerange TIMERANGE]
|
||||
[--data-format-ohlcv {json,jsongz,hdf5}]
|
||||
[--max-open-trades INT] [--stake-amount STAKE_AMOUNT]
|
||||
[--fee FLOAT] [-p PAIRS [PAIRS ...]]
|
||||
[--stoplosses STOPLOSS_RANGE]
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||||
--timerange TIMERANGE
|
||||
Specify what timerange of data to use.
|
||||
--data-format-ohlcv {json,jsongz,hdf5}
|
||||
Storage format for downloaded candle (OHLCV) data.
|
||||
(default: `None`).
|
||||
--max-open-trades INT
|
||||
Override the value of the `max_open_trades`
|
||||
configuration setting.
|
||||
--stake-amount STAKE_AMOUNT
|
||||
Override the value of the `stake_amount` configuration
|
||||
setting.
|
||||
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
|
||||
entry and exit).
|
||||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||||
Limit command to these pairs. Pairs are space-
|
||||
separated.
|
||||
--stoplosses STOPLOSS_RANGE
|
||||
Defines a range of stoploss values against which edge
|
||||
will assess the strategy. The format is "min,max,step"
|
||||
(without any space). Example:
|
||||
`--stoplosses=-0.01,-0.1,-0.001`
|
||||
|
||||
Common arguments:
|
||||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||||
--logfile FILE Log to the file specified. Special values are:
|
||||
'syslog', 'journald'. See the documentation for more
|
||||
details.
|
||||
-V, --version show program's version number and exit
|
||||
-c PATH, --config PATH
|
||||
Specify configuration file (default:
|
||||
`userdir/config.json` or `config.json` whichever
|
||||
exists). Multiple --config options may be used. Can be
|
||||
set to `-` to read config from stdin.
|
||||
-d PATH, --datadir PATH
|
||||
Path to directory with historical backtesting data.
|
||||
--userdir PATH, --user-data-dir PATH
|
||||
Path to userdata directory.
|
||||
|
||||
Strategy arguments:
|
||||
-s NAME, --strategy NAME
|
||||
Specify strategy class name which will be used by the
|
||||
bot.
|
||||
--strategy-path PATH Specify additional strategy lookup path.
|
||||
|
||||
```
|
||||
|
||||
## Configurations
|
||||
|
||||
Edge module has following configuration options:
|
||||
|
||||
| Parameter | Description |
|
||||
|------------|-------------|
|
||||
| `enabled` | If true, then Edge will run periodically. <br>*Defaults to `false`.* <br> **Datatype:** Boolean
|
||||
| `process_throttle_secs` | How often should Edge run in seconds. <br>*Defaults to `3600` (once per hour).* <br> **Datatype:** Integer
|
||||
| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy. <br> **Note** that it downloads historical data so increasing this number would lead to slowing down the bot. <br>*Defaults to `7`.* <br> **Datatype:** Integer
|
||||
| `allowed_risk` | Ratio of allowed risk per trade. <br>*Defaults to `0.01` (1%)).* <br> **Datatype:** Float
|
||||
| `stoploss_range_min` | Minimum stoploss. <br>*Defaults to `-0.01`.* <br> **Datatype:** Float
|
||||
| `stoploss_range_max` | Maximum stoploss. <br>*Defaults to `-0.10`.* <br> **Datatype:** Float
|
||||
| `stoploss_range_step` | As an example if this is set to -0.01 then Edge will test the strategy for `[-0.01, -0,02, -0,03 ..., -0.09, -0.10]` ranges. <br> **Note** than having a smaller step means having a bigger range which could lead to slow calculation. <br> If you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10. <br>*Defaults to `-0.001`.* <br> **Datatype:** Float
|
||||
| `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate. <br>This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio. <br>*Defaults to `0.60`.* <br> **Datatype:** Float
|
||||
| `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number. <br>Having an expectancy of 0.20 means if you put 10\$ on a trade you expect a 12\$ return. <br>*Defaults to `0.20`.* <br> **Datatype:** Float
|
||||
| `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable. <br>Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something. <br>*Defaults to `10` (it is highly recommended not to decrease this number).* <br> **Datatype:** Integer
|
||||
| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.<br>**NOTICE:** While configuring this value, you should take into consideration your timeframe. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).<br>*Defaults to `1440` (one day).* <br> **Datatype:** Integer
|
||||
| `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.<br>*Defaults to `false`.* <br> **Datatype:** Boolean
|
||||
|
||||
## Running Edge independently
|
||||
|
||||
You can run Edge independently in order to see in details the result. Here is an example:
|
||||
|
||||
``` bash
|
||||
freqtrade edge
|
||||
```
|
||||
|
||||
An example of its output:
|
||||
|
||||
| **pair** | **stoploss** | **win rate** | **risk reward ratio** | **required risk reward** | **expectancy** | **total number of trades** | **average duration (min)** |
|
||||
|:----------|-----------:|-----------:|--------------------:|-----------------------:|-------------:|-----------------:|---------------:|
|
||||
| **AGI/BTC** | -0.02 | 0.64 | 5.86 | 0.56 | 3.41 | 14 | 54 |
|
||||
| **NXS/BTC** | -0.03 | 0.64 | 2.99 | 0.57 | 1.54 | 11 | 26 |
|
||||
| **LEND/BTC** | -0.02 | 0.82 | 2.05 | 0.22 | 1.50 | 11 | 36 |
|
||||
| **VIA/BTC** | -0.01 | 0.55 | 3.01 | 0.83 | 1.19 | 11 | 48 |
|
||||
| **MTH/BTC** | -0.09 | 0.56 | 2.82 | 0.80 | 1.12 | 18 | 52 |
|
||||
| **ARDR/BTC** | -0.04 | 0.42 | 3.14 | 1.40 | 0.73 | 12 | 42 |
|
||||
| **BCPT/BTC** | -0.01 | 0.71 | 1.34 | 0.40 | 0.67 | 14 | 30 |
|
||||
| **WINGS/BTC** | -0.02 | 0.56 | 1.97 | 0.80 | 0.65 | 27 | 42 |
|
||||
| **VIBE/BTC** | -0.02 | 0.83 | 0.91 | 0.20 | 0.59 | 12 | 35 |
|
||||
| **MCO/BTC** | -0.02 | 0.79 | 0.97 | 0.27 | 0.55 | 14 | 31 |
|
||||
| **GNT/BTC** | -0.02 | 0.50 | 2.06 | 1.00 | 0.53 | 18 | 24 |
|
||||
| **HOT/BTC** | -0.01 | 0.17 | 7.72 | 4.81 | 0.50 | 209 | 7 |
|
||||
| **SNM/BTC** | -0.03 | 0.71 | 1.06 | 0.42 | 0.45 | 17 | 38 |
|
||||
| **APPC/BTC** | -0.02 | 0.44 | 2.28 | 1.27 | 0.44 | 25 | 43 |
|
||||
| **NEBL/BTC** | -0.03 | 0.63 | 1.29 | 0.58 | 0.44 | 19 | 59 |
|
||||
|
||||
Edge produced the above table by comparing `calculate_since_number_of_days` to `minimum_expectancy` to find `min_trade_number` historical information based on the config file. The timerange Edge uses for its comparisons can be further limited by using the `--timerange` switch.
|
||||
|
||||
In live and dry-run modes, after the `process_throttle_secs` has passed, Edge will again process `calculate_since_number_of_days` against `minimum_expectancy` to find `min_trade_number`. If no `min_trade_number` is found, the bot will return "whitelist empty". Depending on the trade strategy being deployed, "whitelist empty" may be return much of the time - or *all* of the time. The use of Edge may also cause trading to occur in bursts, though this is rare.
|
||||
|
||||
If you encounter "whitelist empty" a lot, condsider tuning `calculate_since_number_of_days`, `minimum_expectancy` and `min_trade_number` to align to the trading frequency of your strategy.
|
||||
|
||||
### Update cached pairs with the latest data
|
||||
|
||||
Edge requires historic data the same way as backtesting does.
|
||||
Please refer to the [Data Downloading](data-download.md) section of the documentation for details.
|
||||
|
||||
### Precising stoploss range
|
||||
|
||||
```bash
|
||||
freqtrade edge --stoplosses=-0.01,-0.1,-0.001 #min,max,step
|
||||
```
|
||||
|
||||
### Advanced use of timerange
|
||||
|
||||
```bash
|
||||
freqtrade edge --timerange=20181110-20181113
|
||||
```
|
||||
|
||||
Doing `--timerange=-20190901` will get all available data until September 1st (excluding September 1st 2019).
|
||||
|
||||
The full timerange specification:
|
||||
|
||||
* Use tickframes till 2018/01/31: `--timerange=-20180131`
|
||||
* Use tickframes since 2018/01/31: `--timerange=20180131-`
|
||||
* Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301`
|
||||
* Use tickframes between POSIX timestamps 1527595200 1527618600: `--timerange=1527595200-1527618600`
|
||||
|
||||
|
||||
[^1]: Question extracted from MIT Opencourseware S096 - Mathematics with applications in Finance: https://ocw.mit.edu/courses/mathematics/18-s096-topics-in-mathematics-with-applications-in-finance-fall-2013/
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user