Backtesting framework of the OctoBot Ecosystem
Project description
OctoBot-Script 0.0.21
OctoBot-Script Community
OctoBot Script is the Quant framework by OctoBot
OctoBot Script is in alpha version
Documentation available at octobot.cloud/en/guides/octobot-script
Install OctoBot Script from pip
OctoBot Script requires Python 3.10
python3 -m pip install OctoBot wheel appdirs==1.4.4
python3 -m pip install octobot-script
Example of a backtesting script
Script
import asyncio
import tulipy # Can be any TA library.
import octobot_script as obs
async def rsi_test():
async def strategy(ctx):
# Will be called at each candle.
if run_data["entries"] is None:
# Compute entries only once per backtest.
closes = await obs.Close(ctx, max_history=True)
times = await obs.Time(ctx, max_history=True, use_close_time=True)
rsi_v = tulipy.rsi(closes, period=ctx.tentacle.trading_config["period"])
delta = len(closes) - len(rsi_v)
# Populate entries with timestamps of candles where RSI is
# bellow the "rsi_value_buy_threshold" configuration.
run_data["entries"] = {
times[index + delta]
for index, rsi_val in enumerate(rsi_v)
if rsi_val < ctx.tentacle.trading_config["rsi_value_buy_threshold"]
}
await obs.plot_indicator(ctx, "RSI", times[delta:], rsi_v, run_data["entries"])
if obs.current_live_time(ctx) in run_data["entries"]:
# Uses pre-computed entries times to enter positions when relevant.
# Also, instantly set take profits and stop losses.
# Position exists could also be set separately.
await obs.market(ctx, "buy", amount="10%", stop_loss_offset="-15%", take_profit_offset="25%")
# Configuration that will be passed to each run.
# It will be accessible under "ctx.tentacle.trading_config".
config = {
"period": 10,
"rsi_value_buy_threshold": 28,
}
# Read and cache candle data to make subsequent backtesting runs faster.
data = await obs.get_data("BTC/USDT", "1d", start_timestamp=1505606400)
run_data = {
"entries": None,
}
# Run a backtest using the above data, strategy and configuration.
res = await obs.run(data, strategy, config)
print(res.describe())
# Generate and open report including indicators plots
await res.plot(show=True)
# Stop data to release local databases.
await data.stop()
# Call the execution of the script inside "asyncio.run" as
# OctoBot-Script runs using the python asyncio framework.
asyncio.run(rsi_test())
Generated report
Join the community
We recently created a telegram channel dedicated to OctoBot Script.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
OctoBot-Script-0.0.21.tar.gz
(36.4 kB
view details)
File details
Details for the file OctoBot-Script-0.0.21.tar.gz
.
File metadata
- Download URL: OctoBot-Script-0.0.21.tar.gz
- Upload date:
- Size: 36.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d68b8b855f9b53e9fe7572224aa1c7fb9ed38955017785bad0401347a2fbbb6 |
|
MD5 | 66c3cc98b4b06d476fc6f5f5dd5b803d |
|
BLAKE2b-256 | edfb0afc6ce7417a305c4d9d7cb4d67c48dd93711fceb2b4fc950db8b18d2883 |