0

我正在尝试建立一个涉及多个外汇对和自定义指数的交易策略。他们都有 OHLC 数据,我需要将特定指标应用于某些而不是其他。

每个指数和对包含以下列:

date, open, high, low, close

我希望将所有这些外汇对和指数都放在一个数据框中。我首先尝试使用以下方法:

index_list = ['index_1', 'index_2', ...]
pair_list = ['pair_1', 'pair_2', ...]

df = pd.read_csv('index_1.csv')
df['type'] = 'index'
df['name'] = index_list[0]

for index in index_list[1:]:
    df1 = pd.read_csv(f'{index}.csv')
    df1['type'] = 'index'
    df1['name'] = index
    df.append(df1)

for pair in pair_list:
    df1 = pd.read_csv(f'{pair}.csv')
    df1['type'] = 'pair'
    df1['name'] = pair
    df.append(df1)

df = df.set_index(['date', 'type', 'name']).sort_index()

这按预期工作并返回以下数据框:

date                type        name    open    high    low     close           
2020-01-01 00:00:00 index       index_1 0.60866 0.60906 0.60834 0.60900
                                index_2 0.69038 0.69040 0.69011 0.69030
                    pair        pair_1  0.73149 0.73151 0.73131 0.73140
                                pair_2  1.03914 1.03945 1.03900 1.03924
... ... ... ... ... ... ...

当我想将一些特定指标应用于“货币”而不是“配对”(“类型”列的值)时,问题就开始了。

我使用 pandas-ta 来实现指标。例如,我使用 RSI 尝试了以下操作:

df.loc[(df.index.get_level_values('type') == 'currency')].ta.rsi(close=df.loc[(df.index.get_level_values('type') == 'currency')].close, length=14, append=True)

但后来我有以下错误:

/home/user/.local/lib/python3.8/site-packages/pandas/core/frame.py:4300: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  return super().rename(
/home/user/miniconda3/lib/python3.8/site-packages/pandas_ta/core.py:387: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df[ind_name] = result

尽管“append = True”,但 RSI 列并未出现在数据框中。有人可以告诉我我的方法有什么问题吗?

更一般地说,是否有更好/更智能的方式来处理使用 pandas 的单一交易策略的多个 OHLC 数据?我应该使用几个熊猫数据框,还是尝试将它们全部放在一个中是一种有效的方法?如果是后者,你有什么建议?

4

0 回答 0