我有以下数据帧: 比特币买卖价格,日期为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
其背后的逻辑是,当卖出和买入的差值大于20时,就停止“for”循环。 我收到以下错误:
time = time + ole(row["Date"])- ole(row1["Date"])
TypeError: unsupported operand type(s) for +: 'int' and 'datetime.datetime'
你能帮我理解我做错了什么吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐