From 68a09711f8ea9cdec7c404d885b9db24ca36e0dc Mon Sep 17 00:00:00 2001 From: Qcoudeyr Date: Tue, 21 Nov 2023 14:39:38 +0100 Subject: [PATCH] First push of Octobot --- apps/octobot/config.json | 18 ++++ apps/octobot/docker-compose.yml | 44 ++++++++++ apps/octobot/metadata/description.md | 124 +++++++++++++++++++++++++++ apps/octobot/metadata/logo.jpg | Bin 0 -> 54773 bytes 4 files changed, 186 insertions(+) create mode 100644 apps/octobot/config.json create mode 100644 apps/octobot/docker-compose.yml create mode 100644 apps/octobot/metadata/description.md create mode 100644 apps/octobot/metadata/logo.jpg diff --git a/apps/octobot/config.json b/apps/octobot/config.json new file mode 100644 index 00000000..eabcdfab --- /dev/null +++ b/apps/octobot/config.json @@ -0,0 +1,18 @@ +{ + "name": "octobot", + "port": 8825, + "available": true, + "exposable": true, + "id": "octobot", + "tipi_version": 1, + "version": "1.0.3", + "categories": [ + "automation", + "finance" + ], + "description": "OctoBot is a highly customizable trading bot using its configuration and tentacles system. You can build your own bot using the infinite configuration possibilities such as technical analysis, social media processing or even external statistics management like google trends.", + "short_desc": "Octobot is a powerful open-source cryptocurrency trading robot.", + "author": "https://github.com/Drakkar-Software/", + "source": "https://github.com/Drakkar-Software/OctoBot", + "form_fields": [] +} diff --git a/apps/octobot/docker-compose.yml b/apps/octobot/docker-compose.yml new file mode 100644 index 00000000..cb612ea1 --- /dev/null +++ b/apps/octobot/docker-compose.yml @@ -0,0 +1,44 @@ +version: "3.9" +services: + octobot: + container_name: octobot + image: drakkarsoftware/octobot:stable + environment: + - TZ=${TZ} + volumes: + - ${APP_DATA_DIR}/octobot/user:/octobot/user + - ${APP_DATA_DIR}/octobot/tentacles:/octobot/tentacles + - ${APP_DATA_DIR}/octobot/logs:/octobot/logs + ports: + - ${APP_PORT}:5001 + restart: unless-stopped + networks: + - tipi_main_network + dns: + - ${DNS_IP} + labels: + # Main + traefik.enable: true + traefik.http.middlewares.octobot-web-redirect.redirectscheme.scheme: https + traefik.http.services.octobot.loadbalancer.server.port: 5001 + # Web + traefik.http.routers.octobot-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.octobot-insecure.entrypoints: web + traefik.http.routers.octobot-insecure.service: octobot + traefik.http.routers.octobot-insecure.middlewares: octobot-web-redirect + # Websecure + traefik.http.routers.octobot.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.octobot.entrypoints: websecure + traefik.http.routers.octobot.service: octobot + traefik.http.routers.octobot.tls.certresolver: myresolver + # Local domain + traefik.http.routers.octobot-local-insecure.rule: Host(`octobot.${LOCAL_DOMAIN}`) + traefik.http.routers.octobot-local-insecure.entrypoints: web + traefik.http.routers.octobot-local-insecure.service: octobot + traefik.http.routers.octobot-local-insecure.middlewares: octobot-web-redirect + # Local domain secure + traefik.http.routers.octobot-local.rule: Host(`octobot.${LOCAL_DOMAIN}`) + traefik.http.routers.octobot-local.entrypoints: websecure + traefik.http.routers.octobot-local.service: octobot + traefik.http.routers.octobot-local.tls: true + diff --git a/apps/octobot/metadata/description.md b/apps/octobot/metadata/description.md new file mode 100644 index 00000000..17000252 --- /dev/null +++ b/apps/octobot/metadata/description.md @@ -0,0 +1,124 @@ +# OctoBot [1.0.3](https://octobot.click/gh-changelog) + +#### Octobot Community +[![Active OctoBot](https://img.shields.io/badge/dynamic/json.svg?&url=https://metrics.octobot.online/metrics/community/count/0/-1/0&query=$.total&color=green&label=OctoBots%20this%20month)][![Telegram Chat](https://img.shields.io/badge/telegram-chat-green.svg?logo=telegram&label=Telegram)](https://octobot.click/gh-telegram)[![Discord](https://img.shields.io/discord/530629985661222912.svg?logo=discord&label=Discord)](https://octobot.click/gh-discord)[![Telegram News](https://img.shields.io/badge/telegram-news-blue.svg?logo=telegram&label=Telegram)](https://t.me/OctoBot_Project)[![Twitter](https://img.shields.io/twitter/follow/DrakkarsOctobot.svg?label=twitter&style=social)](https://octobot.click/gh-twitter)[![YouTube](https://img.shields.io/youtube/channel/views/UC2YAaBeWY8y_Olqs79b_X8A?label=youtube&style=social)](https://octobot.click/gh-youtube) + +

+ Octobot automating trades of its user while the user is relaxing on his couch +

+ +

+ Introduction to OctoBot: choose a strategy, test it, use it and follow your gains +

+ +## Launch of the new OctoBot cloud +The OctoBot team is proud to announce the launch of the [new octobot.cloud](https://octobot.cloud/?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=launch_of_octobot_cloud) +where 90% of trading strategies can be automated **in a very easy way** and **for free**. + +[![try octobot cloud now](https://img.shields.io/static/v1?label=Try%20the%20new%20OctoBot%20cloud&message=now&color=007bff&style=for-the-badge)](https://octobot.cloud/?utm_source=github&utm_medium=dk&utm_campaign=production_annoucements&utm_content=readme_button) + +We are looking forward to receiving your feedback on our new OctoBot based system. + +## What is Octobot ? +

+ + Follow your profits using OctoBot directly from its web interface + +      + + Follow each trade and profits of your OctoBot and send it commands from telegram + +

+ + +[Octobot](https://www.octobot.cloud/?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=readme_what_is_octobot) is a powerful open-source cryptocurrency trading robot. + +OctoBot is highly customizable using its configuration and tentacles system. +You can build your own bot using the infinite [configuration](https://www.octobot.cloud/guides/octobot-configuration/profile-configuration?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=configuration) possibilities such as **technical analysis**, **social media processing** or even **external statistics management** like google trends. + +OctoBot is **AI ready**: Python being the main language for OctoBot, it's easy to integrate machine-learning libraries such as [Tensorflow](https://github.com/tensorflow/tensorflow) or any other libraries and take advantage of all the available data and create a very powerful trading strategy. + +Octobot's main feature is **evolution**, you can : +- Share your configurations with other octobot users. +- [Install](https://www.octobot.cloud/guides/octobot-advanced-usage/tentacle-manager?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=install_tentacles), [modify](https://www.octobot.cloud/guides/octobot-tentacles-development/create-a-tentacle?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=modify_tentacles) and even [create](https://www.octobot.cloud/guides/octobot-tentacles-development/create-a-tentacle?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=create_tentacles) new tentacles to build your ideal cryptocurrency trading robot. +- [Contribute](https://www.octobot.cloud/guides/octobot-developers-environment/setup-your-environment?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=contribute) to improve OctoBot core repositories and tentacles. + +Looking for more info ? Check out our Octobot guides at [octobot.cloud/guides](https://www.octobot.cloud/guides/?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=checkout_guides) + +## Exchanges + +Octobot supports many [exchanges](https://www.octobot.cloud/guides/exchanges?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=exchanges) thanks to the [ccxt library](https://github.com/ccxt/ccxt). +To activate trading on an exchange, just configure OctoBot with your API keys as described [on the exchange setup guides](https://www.octobot.cloud/guides/octobot-configuration/exchanges?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=exchanges_setup_guides). + +## Certified Cryptocurrency Exchanges + + +| logo | id | name | ver | certified | pro | discount | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|---------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------:|-----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| [![binance](https://user-images.githubusercontent.com/1294454/29604020-d5483cdc-87ee-11e7-94c7-d1a8d9169293.jpg)](https://accounts.binance.com/en/register?ref=D7YA7CLY) | binance | [Binance](https://accounts.binance.com/en/register?ref=D7YA7CLY) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://binance-docs.github.io/apidocs/spot/en) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Binance using CCXT's referral link for a 10% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d10%25&color=orange)](https://accounts.binance.com/en/register?ref=D7YA7CLY) | +| [![binancecoinm](https://user-images.githubusercontent.com/1294454/117738721-668c8d80-b205-11eb-8c49-3fad84c4a07f.jpg)](https://accounts.binance.com/en/register?ref=D7YA7CLY) | binancecoinm | [Binance COIN-M](https://accounts.binance.com/en/register?ref=D7YA7CLY) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://binance-docs.github.io/apidocs/delivery/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Binance COIN-M using CCXT's referral link for a 10% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d10%25&color=orange)](https://accounts.binance.com/en/register?ref=D7YA7CLY) | +| [![binanceusdm](https://user-images.githubusercontent.com/1294454/117738721-668c8d80-b205-11eb-8c49-3fad84c4a07f.jpg)](https://accounts.binance.com/en/register?ref=D7YA7CLY) | binanceusdm | [Binance USDⓈ-M](https://accounts.binance.com/en/register?ref=D7YA7CLY) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://binance-docs.github.io/apidocs/futures/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Binance USDⓈ-M using CCXT's referral link for a 10% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d10%25&color=orange)](https://accounts.binance.com/en/register?ref=D7YA7CLY) | +| [![bingx](https://github-production-user-asset-6210df.s3.amazonaws.com/1294454/253675376-6983b72e-4999-4549-b177-33b374c195e3.jpg)](https://bingx.com/invite/OHETOM) | bingx | [BingX](https://bingx.com/invite/OHETOM) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://bingx-api.github.io/docs/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![bitget](https://user-images.githubusercontent.com/1294454/195989417-4253ddb0-afbe-4a1c-9dea-9dbcd121fa5d.jpg)](https://www.bitget.com/expressly?languageType=0&channelCode=ccxt&vipCode=tg9j) | bitget | [Bitget](https://www.bitget.com/expressly?languageType=0&channelCode=ccxt&vipCode=tg9j) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://bitgetlimited.github.io/apidoc/en/mix) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![bitmart](https://user-images.githubusercontent.com/1294454/129991357-8f47464b-d0f4-41d6-8a82-34122f0d1398.jpg)](http://www.bitmart.com/?r=rQCFLh) | bitmart | [BitMart](http://www.bitmart.com/?r=rQCFLh) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://developer-pro.bitmart.com/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with BitMart using CCXT's referral link for a 30% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d30%25&color=orange)](http://www.bitmart.com/?r=rQCFLh) | +| [![bitmex](https://user-images.githubusercontent.com/1294454/27766319-f653c6e6-5ed4-11e7-933d-f0bc3699ae8f.jpg)](https://www.bitmex.com/register/upZpOX) | bitmex | [BitMEX](https://www.bitmex.com/register/upZpOX) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://www.bitmex.com/app/apiOverview) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![bitvavo](https://user-images.githubusercontent.com/1294454/169202626-bd130fc5-fcf9-41bb-8d97-6093225c73cd.jpg)](https://bitvavo.com/?a=24F34952F7) | bitvavo | [Bitvavo](https://bitvavo.com/?a=24F34952F7) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://docs.bitvavo.com/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![bybit](https://user-images.githubusercontent.com/51840849/76547799-daff5b80-649e-11ea-87fb-3be9bac08954.jpg)](https://www.bybit.com/register?affiliate_id=35953) | bybit | [Bybit](https://www.bybit.com/register?affiliate_id=35953) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://bybit-exchange.github.io/docs/inverse/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![cryptocom](https://user-images.githubusercontent.com/1294454/147792121-38ed5e36-c229-48d6-b49a-48d05fc19ed4.jpeg)](https://crypto.com/exch/5835vstech) | cryptocom | [Crypto.com](https://crypto.com/exch/5835vstech) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![gate](https://user-images.githubusercontent.com/1294454/31784029-0313c702-b509-11e7-9ccc-bc0da6a0e435.jpg)](https://www.gate.io/signup/2436035) | gate | [Gate.io](https://www.gate.io/signup/2436035) | [![API Version 4](https://img.shields.io/badge/4-lightgray)](https://www.gate.io/docs/developers/apiv4/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Gate.io using CCXT's referral link for a 20% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d20%25&color=orange)](https://www.gate.io/signup/2436035) | +| [![huobi](https://user-images.githubusercontent.com/1294454/76137448-22748a80-604e-11ea-8069-6e389271911d.jpg)](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | huobi | [Huobi](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://huobiapi.github.io/docs/spot/v1/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with Huobi using CCXT's referral link for a 15% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d15%25&color=orange)](https://www.huobi.com/en-us/v/register/double-invite/?inviter_id=11343840&invite_code=6rmm2223) | +| [![kucoin](https://user-images.githubusercontent.com/51840849/87295558-132aaf80-c50e-11ea-9801-a2fb0c57c799.jpg)](https://www.kucoin.com/ucenter/signup?rcode=E5wkqe) | kucoin | [KuCoin](https://www.kucoin.com/ucenter/signup?rcode=E5wkqe) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://docs.kucoin.com) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![kucoinfutures](https://user-images.githubusercontent.com/1294454/147508995-9e35030a-d046-43a1-a006-6fabd981b554.jpg)](https://futures.kucoin.com/?rcode=E5wkqe) | kucoinfutures | [KuCoin Futures](https://futures.kucoin.com/?rcode=E5wkqe) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.kucoin.com/futures) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![mexc](https://user-images.githubusercontent.com/1294454/137283979-8b2a818d-8633-461b-bfca-de89e8c446b2.jpg)](https://m.mexc.com/auth/signup?inviteCode=1FQ1G) | mexc | [MEXC Global](https://m.mexc.com/auth/signup?inviteCode=1FQ1G) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://mxcdevelop.github.io/apidocs/spot_v3_en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | | +| [![okx](https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg)](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023) | okx | [OKX](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okx.com/docs-v5/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with OKX using CCXT's referral link for a 20% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d20%25&color=orange)](https://www.okx.com/activities/ccxt-trade-and-earn?channelid=CCXT2023) | +| [![wavesexchange](https://user-images.githubusercontent.com/1294454/84547058-5fb27d80-ad0b-11ea-8711-78ac8b3c7f31.jpg)](https://wx.network) | wavesexchange | [Waves.Exchange](https://wx.network) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://docs.wx.network) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | | | +| [![woo](https://user-images.githubusercontent.com/1294454/150730761-1a00e5e0-d28c-480f-9e65-089ce3e6ef3b.jpg)](https://x.woo.org/register?ref=YWOWC96B) | woo | [WOO X](https://x.woo.org/register?ref=YWOWC96B) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.woo.org/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with WOO X using CCXT's referral link for a 35% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d35%25&color=orange)](https://x.woo.org/register?ref=YWOWC96B) | + +### Paper trading +To trade on any exchange, just enable the exchange in your OctoBot. This you to trade with simulated money on this exchange. + +No exchange credential is required. + +### Real trading +To use your real exchange account with OctoBot, enter your exchange API keys as described [on the exchange guides](https://www.octobot.cloud/guides/exchanges?utm_source=github&utm_medium=dk&utm_campaign=regular_open_source_content&utm_content=exchanges_guides). + +## Testing trading strategies + +OctoBot comes with its builtin backtesting engine which enables you to trade with simulated money using historical exchange data. + +[![Backtesting report using grid trading on eth btc with 8 percent profit](https://raw.githubusercontent.com/Drakkar-Software/OctoBot/assets/backtesting_report.jpg)](https://github.com/Drakkar-Software/OctoBot/blob/assets/backtesting_report.jpg) + +Backtesting will give you accurate insights on the past performance and behavior of strategies using OctoBot. + +## Contribute from a browser IDE +Make changes and contribute to OctoBot in a single click with an **already setup and ready to code developer environment** using Gitpod ! + +[![Contribute from Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Drakkar-Software/OctoBot) + +## Hardware requirements +- CPU : 1 Core / 1GHz +- RAM : 250 MB +- Disk : 1 GB + +## Disclaimer +Do not risk money which you are afraid to lose. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS +AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS. + +Always start by running a trading bot in simulation mode and do not engage money +before you understand how it works and what profit/loss you should expect. + +Please feel free to read the source code and understand the mechanism of this bot. + +## License +GNU General Public License v3.0 or later. + +See [GPL-3.0 LICENSE](https://octobot.click/gh-license) to see the full text. + + +## Folder Info + +| Root Folder | Container Folder | +|---------------------------------------------|--------------------| +| /runtipi/media/data/octobot/user | /octobot/user | +| /runtipi/media/data/octobot/logs/ | /octobot/logs | +| /runtipi/media/data/octobot/tentacles | /octobot/tentacles | diff --git a/apps/octobot/metadata/logo.jpg b/apps/octobot/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a3f01a6383d0efff74e28d5c76de603b2128202 GIT binary patch literal 54773 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