Skip to content

README: Added Quick Start Examples with and without docker #8617

README: Added Quick Start Examples with and without docker

README: Added Quick Start Examples with and without docker #8617

Workflow file for this run

name: CI
on: [push, pull_request]
jobs:
Pre-Commit:
runs-on: ubuntu-latest
steps:
- name: Fetch Source Code
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install black
run: |
pip install black==23.7.0
- id: changed-files
name: Get Changed Files
uses: dorny/paths-filter@v2
with:
token: ${{ github.token }}
list-files: shell
filters: |
repo:
- added|modified:
- '**'
- name: Set Cache Key
run: echo "PY=$(python --version --version | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
- uses: actions/cache@v3
with:
path: ~/.cache/pre-commit
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
- name: Check ALL Files On Branch
uses: pre-commit/[email protected]
if: github.event_name != 'pull_request'
- name: Check Changed Files On PR
uses: pre-commit/[email protected]
if: github.event_name == 'pull_request'
with:
extra_args: --files ${{ steps.changed-files.outputs.repo_files }}
Binance-Backtests:
runs-on: ubuntu-latest
needs:
- Pre-Commit
strategy:
fail-fast: false
matrix:
timerange:
- 20210101-20210201
- 20210201-20210301
- 20210301-20210401
- 20210401-20210501
- 20210501-20210601
- 20210601-20210701
- 20210701-20210801
- 20210801-20210901
- 20210901-20211001
- 20211001-20211101
- 20211101-20211201
- 20211201-20220101
- 20220101-20220201
- 20220201-20220301
- 20220301-20220401
- 20220401-20220501
- 20220501-20220601
- 20220601-20220701
- 20220701-20220801
- 20220801-20220901
- 20220901-20221001
- 20221001-20221101
- 20221101-20221201
- 20221201-20230101
- 20230101-20230201
- 20230201-20230301
- 20230301-20230401
- 20230401-20230501
- 20230501-20230601
- 20230601-20230701
- 20230701-20230801
- 20230801-20230901
- 20230901-20231001
- 20231001-20231101
- 20231101-20231201
- 20231201-20240101
- 20240101-20240201
- 20240201-20240301
- 20240301-20240401
- 20240401-20240501
- 20240501-20240601
- 20240601-20240701
- 20240701-20240801
- 20240801-20240901
# - 20240901-20241001
steps:
- name: Fetch Source Code
uses: actions/checkout@v4
- name: "Create env file"
run: |
echo FREQTRADE__EXCHANGE__CCXT_CONFIG__AIOHTTP_PROXY=${{ secrets.FREQTRADE_PROXY }} >> .github/workflows/scripts/ci-proxy.env
echo FREQTRADE__EXCHANGE__CCXT_CONFIG__PROXIES__HTTP=${{ secrets.FREQTRADE_PROXY }} >> .github/workflows/scripts/ci-proxy.env
echo FREQTRADE__EXCHANGE__CCXT_CONFIG__PROXIES__HTTPS=${{ secrets.FREQTRADE_PROXY }} >> .github/workflows/scripts/ci-proxy.env
echo FREQTRADE__EXCHANGE__CCXT_CONFIG__RATELIMIT=4000 >> .github/workflows/scripts/ci-proxy.env
- name: Fetch data for backtests from https://github.com/DigiTuccar/HistoricalDataForTradeBacktest
env:
EXCHANGE: binance
TRADING_MODE: spot
TIMEFRAME: 5m
HELPER_TIME_FRAMES: 1m 15m 1h 4h 1d
run: |
.github/workflows/scripts/download-necessary-exchange-market-data-for-backtests.sh
cat user_data/data/.git/info/sparse-checkout
du -sh user_data/data
tree
- name: Run Tests
run: |
mkdir artifacts
chmod 777 artifacts
chmod 777 ./user_data/backtest_results
chmod 777 ./user_data/logs
export COLUMNS=240
docker build -f docker/Dockerfile.custom --no-cache -t ci-strategy-backtesting .
docker run -v ".:/testing" -v "./user_data/data:/testing/user_data/data" \
-v "./user_data/logs:/testing/user_data/logs" -e "COLUMNS=240" \
-v "./user_data/backtest_results:/testing/user_data/backtest_results" --rm \
-w /testing --entrypoint "" --env-file .github/workflows/scripts/ci-proxy.env \
ci-strategy-backtesting \
python -m pytest -ra -vv -s --log-cli-level=info --artifacts-path=artifacts/ \
-p no:cacheprovider tests/backtests -k 'binance and spot and ${{ matrix.timerange }}'
- name: List Artifacts
run: |
ls -lah artifacts/
- name: Show Backest Output
run: |
cat artifacts/backtest-output-binance-spot-${{ matrix.timerange }}.txt
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: binance-testrun-artifacts
path: artifacts/
Kucoin-Backtests:
runs-on: ubuntu-latest
needs:
- Pre-Commit
strategy:
fail-fast: false
matrix:
timerange:
- 20210101-20210201
- 20210201-20210301
- 20210301-20210401
- 20210401-20210501
- 20210501-20210601
- 20210601-20210701
- 20210701-20210801
- 20210801-20210901
- 20210901-20211001
- 20211001-20211101
- 20211101-20211201
- 20211201-20220101
- 20220101-20220201
- 20220201-20220301
- 20220301-20220401
- 20220401-20220501
- 20220501-20220601
- 20220601-20220701
- 20220701-20220801
- 20220801-20220901
- 20220901-20221001
- 20221001-20221101
- 20221101-20221201
- 20221201-20230101
- 20230101-20230201
- 20230201-20230301
- 20230301-20230401
- 20230401-20230501
- 20230501-20230601
- 20230601-20230701
- 20230701-20230801
- 20230801-20230901
- 20230901-20231001
- 20231001-20231101
- 20231101-20231201
- 20231201-20240101
- 20240101-20240201
- 20240201-20240301
- 20240301-20240401
- 20240401-20240501
- 20240501-20240601
- 20240601-20240701
- 20240701-20240801
- 20240801-20240901
# - 20240901-20241001
steps:
- name: Fetch Source Code
uses: actions/checkout@v4
- name: Fetch data for backtests from https://github.com/DigiTuccar/HistoricalDataForTradeBacktest
env:
EXCHANGE: kucoin
TRADING_MODE: spot
TIMEFRAME: 5m
HELPER_TIME_FRAMES: 1m 15m 1h 4h 1d
run: |
.github/workflows/scripts/download-necessary-exchange-market-data-for-backtests.sh
cat user_data/data/.git/info/sparse-checkout
du -sh user_data/data
tree
- name: Run Tests
run: |
mkdir artifacts
chmod 777 artifacts
chmod 777 ./user_data/backtest_results
chmod 777 ./user_data/logs
export COLUMNS=240
docker build -f docker/Dockerfile.custom --no-cache -t ci-strategy-backtesting .
docker run -v ".:/testing" -v "./user_data/data:/testing/user_data/data" --rm \
-w /testing --entrypoint "" -e "COLUMNS=240" --env-file .github/workflows/scripts/ci-proxy.env \
ci-strategy-backtesting \
python -m pytest -ra -vv -s --log-cli-level=info --artifacts-path=artifacts/ \
-p no:cacheprovider tests/backtests -k 'kucoin and spot and ${{ matrix.timerange }}'
- name: List Artifacts
run: |
ls -lah artifacts/
- name: Show Backest Output
run: |
cat artifacts/backtest-output-kucoin-spot-${{ matrix.timerange }}.txt
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: kucoin-testrun-artifacts
path: artifacts/
# OKX-Backtests:
# runs-on: ubuntu-latest
# needs:
# - Pre-Commit
# strategy:
# fail-fast: false
# matrix:
# timerange:
# - 20210101-20210201
# - 20210201-20210301
# - 20210301-20210401
# - 20210401-20210501
# - 20210501-20210601
# - 20210601-20210701
# - 20210701-20210801
# - 20210801-20210901
# - 20210901-20211001
# - 20211001-20211101
# - 20211101-20211201
# - 20211201-20220101
# - 20220101-20220201
# - 20220201-20220301
# - 20220301-20220401
# - 20220401-20220501
# - 20220501-20220601
# - 20220601-20220701
# - 20220701-20220801
# - 20220801-20220901
# - 20220901-20221001
# - 20221001-20221101
# - 20221101-20221201
# - 20221201-20230101
# - 20230101-20230201
# - 20230201-20230301
# - 20230301-20230401
# - 20230401-20230501
# - 20230501-20230601
# - 20230601-20230701
# - 20230701-20230801
# steps:
# - name: Fetch Source Code
# uses: actions/checkout@v4
# - name: Fetch data for backtests from https://github.com/DigiTuccar/HistoricalDataForTradeBacktest
# env:
# EXCHANGE: okx
# TRADING_MODE: spot
# TIMEFRAME: 5m
# HELPER_TIME_FRAMES: 1m 15m 1h 4h 1d
# run: |
# .github/workflows/scripts/download-necessary-exchange-market-data-for-backtests.sh
# cat user_data/data/.git/info/sparse-checkout
# du -sh user_data/data
# tree
# - name: Run Tests
# run: |
# mkdir artifacts
# chmod 777 artifacts
# docker build -f docker/Dockerfile.custom --no-cache -t ci-strategy-backtesting .
# docker run -v ".:/testing" -v "./user_data/data:/testing/user_data/data" --rm \
# -w /testing --entrypoint "" --env-file .github/workflows/scripts/ci-proxy.env \
# ci-strategy-backtesting \
# python -m pytest -ra -vv -s --log-cli-level=info --artifacts-path=artifacts/ \
# -p no:cacheprovider tests/backtests -k 'okx and spot and ${{ matrix.timerange }}'
# - name: List Artifacts
# run: |
# ls -lah artifacts/
# - name: Show Backest Output
# run: |
# cat artifacts/backtest-output-okx-spot-${{ matrix.timerange }}.txt
# - name: Upload Artifacts
# uses: actions/upload-artifact@v3
# with:
# name: okx-testrun-artifacts
# path: artifacts/
Backest-CI-Stats:
runs-on: ubuntu-latest
needs:
- Kucoin-Backtests
- Binance-Backtests
# - OKX-Backtests
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Dependencies
run: |
python -m pip install -r tests/ci-requirements.txt
- name: Download Previous Binance CI Artifacts
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python .github/workflows/scripts/download-previous-artifacts.py \
--repo=${{ github.event.repository.full_name }} \
--branch=main \
--workflow=tests.yml \
--exchange=binance \
--name=binance-testrun-artifacts downloaded-results
- name: Download Previous Kucoin CI Artifacts
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python .github/workflows/scripts/download-previous-artifacts.py \
--repo=${{ github.event.repository.full_name }} \
--branch=main \
--workflow=tests.yml \
--exchange=kucoin \
--name=kucoin-testrun-artifacts downloaded-results
# - name: Download Previous OKX CI Artifacts
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# python .github/workflows/scripts/download-previous-artifacts.py \
# --repo=${{ github.event.repository.full_name }} \
# --branch=main \
# --workflow=tests.yml \
# --exchange=okx \
# --name=okx-testrun-artifacts downloaded-results
- name: Download Current Binance CI Artifacts
uses: actions/download-artifact@v3
with:
name: binance-testrun-artifacts
path: downloaded-results/current
- name: Download Current Kucoin CI Artifacts
uses: actions/download-artifact@v3
with:
name: kucoin-testrun-artifacts
path: downloaded-results/current
# - name: Download Current OKX CI Artifacts
# uses: actions/download-artifact@v3
# with:
# name: okx-testrun-artifacts
# path: downloaded-results/current
- name: Pre Format Backtest Results
run: |
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/└.*┘//g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/┏.*┓//g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/┡/|/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/┃/|/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/╇/:|/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/━/-/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/│/|/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/┩/:|/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/BACKTESTING REPORT/\n## BACKTESTING REPORT\n/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/LEFT OPEN TRADES REPORT/\n## LEFT OPEN TRADES REPORT\n/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/ENTER TAG STATS/\n## ENTER TAG STATS\n/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/EXIT REASON STATS/\n## EXIT REASON STATS\n/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/MIXED TAG STATS/\n## MIXED TAG STATS\n/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/DAY BREAKDOWN/\n## DAY BREAKDOWN\n/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/SUMMARY METRICS/\n## SUMMARY METRICS\n/g' {} +
find downloaded-results/ -type f -iname *.txt -exec sed -i 's/STRATEGY SUMMARY/\n## STRATEGY SUMMARY\n/g' {} +
- name: Show Environ
run: |
env
- name: Show Downloaded Artifacts
run: |
tree downloaded-results
- name: Comment CI Results
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python .github/workflows/scripts/comment-ci-results.py \
--repo=${{ github.event.repository.full_name }} downloaded-results