我有以下数据框: 比特币销售和购买价格,日期是OLE格式。
Date Sell Buy
43031.57567 5720.65 5770.65
43031.57564 5720.65 5770.65
43031.57561 5720.65 5770.65
43031.57558 5720.65 5770.65
43031.57555 5720.65 5770.65
43031.57552 5720.65 5770.65
43031.57549 5720.65 5770.65
43031.57546 5720.65 5770.65
43031.57544 5720.65 5770.65
43031.57541 5720.65 5770.65
43031.57537 5718 5768
43031.57534 5718 5768
43031.57531 5718 5768
43031.57528 5718 5768
43031.57524 5718 5768
43031.57522 5718 5768
43031.57519 5718.45 5768.45
43031.57516 5718.45 5768.45
43031.57512 5718.45 5768.45
43031.57509 5717.55 5767.55
43031.57506 5717.55 5767.55
43031.57504 5716.65 5766.65
4.3031.57501 5716.65 5766.65
我想分析一下平均花费时间来克服"特定点差(例如买入卖出或卖出买入),例如,差价= 20。 我使用以下代码:
import pandas as pd
import csv
import datetime as dt
OLE_TIME_ZERO = dt.datetime(1899, 12, 30, 0, 0, 0)
def ole(oledt):
return OLE_TIME_ZERO + dt.timedelta(days=float(oledt))
spread = 20
counter = 0
time = 0
df = pd.read_csv("C:/P/testing33.csv")
for index, row in df.iterrows():
a = index + 1
df_slice = df[a::]
for index1, row1 in df_slice.iterrows():
if row["Buy"] - row1["Sell"] > spread:
time = time + ole(row["Date"]) - ole(row1["Date"])
counter += 1
break
for index2, row2 in df_slice.iterrows():
if row["Sell"] - row2["Buy"] > spread:
time = time + ole(row["Date"]) - ole(row2["Date"])
counter += 1
break
avg_time = time/counter
它背后的逻辑是停止" for"第一次循环,卖出和买入之间的差异大于20。 我收到以下错误:
time = time + ole(row["Date"])- ole(row1["Date"])
TypeError: unsupported operand type(s) for +: 'int' and 'datetime.datetime'
你能帮助理解我做错了吗?