mirror of
https://github.com/aljazceru/hummingbot-dashboard.git
synced 2026-02-15 01:56:04 +01:00
(feat) add backtesting components
This commit is contained in:
@@ -3,13 +3,15 @@ from datetime import datetime, timedelta
|
||||
|
||||
|
||||
def backtesting_section(inputs, backend_api_client):
|
||||
st.write("### Backtesting")
|
||||
c1, c2, c3, c4, c5 = st.columns(5)
|
||||
default_end_time = datetime.now().date()
|
||||
default_end_time = datetime.now().date() - timedelta(days=1)
|
||||
default_start_time = default_end_time - timedelta(days=2)
|
||||
with c1:
|
||||
start_date = st.date_input("Start Date", default_start_time)
|
||||
with c2:
|
||||
end_date = st.date_input("End Date", default_end_time)
|
||||
end_date = st.date_input("End Date", default_end_time,
|
||||
help="End date is inclusive, make sure that you are not including the current date.")
|
||||
with c3:
|
||||
backtesting_resolution = st.selectbox("Backtesting Resolution", options=["1m", "3m", "5m", "15m", "30m", "1h", "1s"], index=0)
|
||||
with c4:
|
||||
|
||||
@@ -35,7 +35,7 @@ def distribution_inputs(column, dist_type_name, levels=3):
|
||||
scaling_factor = column.number_input(f"{dist_type_name} Scaling Factor", value=2.0,
|
||||
key=f"{column}_{dist_type_name.lower()}_scaling")
|
||||
elif dist_type == "Arithmetic":
|
||||
step = column.number_input(f"{dist_type_name} Step", value=0.1,
|
||||
step = column.number_input(f"{dist_type_name} Step", value=0.3,
|
||||
key=f"{column}_{dist_type_name.lower()}_step")
|
||||
elif dist_type == "Geometric":
|
||||
ratio = column.number_input(f"{dist_type_name} Ratio", value=2.0,
|
||||
@@ -56,17 +56,19 @@ def distribution_inputs(column, dist_type_name, levels=3):
|
||||
|
||||
def get_distribution(dist_type, n_levels, start, base=None, scaling_factor=None, step=None, ratio=None,
|
||||
manual_values=None):
|
||||
distribution = []
|
||||
if dist_type == "Manual":
|
||||
return manual_values
|
||||
distribution = manual_values
|
||||
elif dist_type == "Linear":
|
||||
return Distributions.linear(n_levels, start, step)
|
||||
distribution = Distributions.linear(n_levels, start, step)
|
||||
elif dist_type == "Fibonacci":
|
||||
return Distributions.fibonacci(n_levels, start)
|
||||
distribution = Distributions.fibonacci(n_levels, start)
|
||||
elif dist_type == "Logarithmic":
|
||||
return Distributions.logarithmic(n_levels, base, scaling_factor, start)
|
||||
distribution = Distributions.logarithmic(n_levels, base, scaling_factor, start)
|
||||
elif dist_type == "Arithmetic":
|
||||
return Distributions.arithmetic(n_levels, start, step)
|
||||
distribution = Distributions.arithmetic(n_levels, start, step)
|
||||
elif dist_type == "Geometric":
|
||||
return Distributions.geometric(n_levels, start, ratio)
|
||||
distribution = Distributions.geometric(n_levels, start, ratio)
|
||||
elif dist_type == "GeoCustom":
|
||||
return [Decimal("0")] + Distributions.geometric(n_levels - 1, start, ratio)
|
||||
distribution = [Decimal("0")] + Distributions.geometric(n_levels - 1, start, ratio)
|
||||
return [float(val) for val in distribution]
|
||||
|
||||
Reference in New Issue
Block a user