CSVDataFeed for Histdata.com¶
Raw histdata.com data¶
2024.12.23,00:00,2625.465000,2625.525000,2625.065000,2625.075000,0
2024.12.23,00:01,2625.005000,2625.345000,2625.005000,2625.215000,0
2024.12.23,00:02,2625.225000,2625.288000,2624.925000,2625.115000,0
2024.12.23,00:03,2625.115000,2625.125000,2624.798000,2625.115000,0
2024.12.23,00:04,2625.115000,2625.515000,2625.115000,2625.415000,0
Method 1: Load CSV¶
csv
parameters is reflect of pandas.read_csv()
parameters
In [9]:
Copied!
from lettrade.exchange.backtest import CSVBackTestDataFeed
import warnings
warnings.simplefilter(action="ignore", category=FutureWarning)
df = CSVBackTestDataFeed(
"example/data/data/DAT_MT_XAUUSD_M1_202412.csv",
csv=dict(
# skiprows=[0],
names=["date", "time", "open", "high", "low", "close", "volumn"],
header=None,
delimiter=",",
parse_dates={"datetime": [0, 1]},
date_format="%Y%m%d %H%M%S",
),
name="AUDUSD",
timeframe="1m",
)
# df = df[df.high != df.low]
df
from lettrade.exchange.backtest import CSVBackTestDataFeed
import warnings
warnings.simplefilter(action="ignore", category=FutureWarning)
df = CSVBackTestDataFeed(
"example/data/data/DAT_MT_XAUUSD_M1_202412.csv",
csv=dict(
# skiprows=[0],
names=["date", "time", "open", "high", "low", "close", "volumn"],
header=None,
delimiter=",",
parse_dates={"datetime": [0, 1]},
date_format="%Y%m%d %H%M%S",
),
name="AUDUSD",
timeframe="1m",
)
# df = df[df.high != df.low]
df
Out[9]:
open | high | low | close | volumn | |
---|---|---|---|---|---|
datetime | |||||
2024-12-23 00:00:00+00:00 | 2625.465 | 2625.525 | 2625.065 | 2625.075 | 0 |
2024-12-23 00:01:00+00:00 | 2625.005 | 2625.345 | 2625.005 | 2625.215 | 0 |
2024-12-23 00:02:00+00:00 | 2625.225 | 2625.288 | 2624.925 | 2625.115 | 0 |
2024-12-23 00:03:00+00:00 | 2625.115 | 2625.125 | 2624.798 | 2625.115 | 0 |
2024-12-23 00:04:00+00:00 | 2625.115 | 2625.515 | 2625.115 | 2625.415 | 0 |
... | ... | ... | ... | ... | ... |
2024-12-12 23:54:00+00:00 | 2687.195 | 2687.445 | 2687.155 | 2687.365 | 0 |
2024-12-12 23:55:00+00:00 | 2687.365 | 2687.425 | 2686.985 | 2687.035 | 0 |
2024-12-12 23:56:00+00:00 | 2687.035 | 2687.105 | 2686.895 | 2686.985 | 0 |
2024-12-12 23:57:00+00:00 | 2686.985 | 2686.985 | 2686.605 | 2686.825 | 0 |
2024-12-12 23:58:00+00:00 | 2686.915 | 2687.335 | 2686.825 | 2687.085 | 0 |
28763 rows × 5 columns
Method 2: load from pandas data¶
In [10]:
Copied!
import pandas as pd
from lettrade.exchange.backtest import BackTestDataFeed
# Load the CSV file into a DataFrame
df = pd.read_csv(
"example/data/data/DAT_MT_XAUUSD_M1_202412.csv",
names=["date", "time", "open", "high", "low", "close", "volumn"],
header=None,
delimiter=",",
)
df.index = pd.to_datetime(df.date + " " + df.time)
df.drop(["date", "time"], axis=1, inplace=True)
df.sort_index(inplace=True)
# Create a DataFeed
data = BackTestDataFeed(
df,
name="XAUUSD",
timeframe="1m",
)
data
import pandas as pd
from lettrade.exchange.backtest import BackTestDataFeed
# Load the CSV file into a DataFrame
df = pd.read_csv(
"example/data/data/DAT_MT_XAUUSD_M1_202412.csv",
names=["date", "time", "open", "high", "low", "close", "volumn"],
header=None,
delimiter=",",
)
df.index = pd.to_datetime(df.date + " " + df.time)
df.drop(["date", "time"], axis=1, inplace=True)
df.sort_index(inplace=True)
# Create a DataFeed
data = BackTestDataFeed(
df,
name="XAUUSD",
timeframe="1m",
)
data
Out[10]:
open | high | low | close | volumn | |
---|---|---|---|---|---|
datetime | |||||
2024-12-01 18:00:00 | 2653.075 | 2653.115 | 2648.748 | 2650.295 | 0 |
2024-12-01 18:01:00 | 2650.248 | 2650.855 | 2648.598 | 2649.888 | 0 |
2024-12-01 18:02:00 | 2650.035 | 2650.235 | 2648.345 | 2649.938 | 0 |
2024-12-01 18:03:00 | 2649.538 | 2649.768 | 2648.124 | 2649.538 | 0 |
2024-12-01 18:04:00 | 2649.338 | 2649.338 | 2648.268 | 2648.658 | 0 |
... | ... | ... | ... | ... | ... |
2024-12-31 16:54:00 | 2624.365 | 2624.385 | 2624.355 | 2624.355 | 0 |
2024-12-31 16:55:00 | 2624.385 | 2624.385 | 2624.105 | 2624.245 | 0 |
2024-12-31 16:56:00 | 2624.225 | 2624.265 | 2624.205 | 2624.265 | 0 |
2024-12-31 16:57:00 | 2624.305 | 2624.365 | 2623.908 | 2624.155 | 0 |
2024-12-31 16:58:00 | 2624.005 | 2624.255 | 2623.998 | 2624.255 | 0 |
28763 rows × 5 columns
In [11]:
Copied!
import plotly.io as pio
pio.renderers.default = "notebook"
pio.templates.default = "plotly_dark"
import plotly.io as pio
pio.renderers.default = "notebook"
pio.templates.default = "plotly_dark"
Show¶
In [12]:
Copied!
import plotly.graph_objects as go
fig = go.Figure(
data=[
go.Candlestick(
x=df.index,
open=df.open,
high=df.high,
low=df.low,
close=df.close,
)
]
)
fig.show()
import plotly.graph_objects as go
fig = go.Figure(
data=[
go.Candlestick(
x=df.index,
open=df.open,
high=df.high,
low=df.low,
close=df.close,
)
]
)
fig.show()