Update btanalysis.py
This commit is contained in:
parent
95e6f574f3
commit
48d36cd98f
@ -412,30 +412,36 @@ def calculate_mdd(data: dict, trades: pd.DataFrame, *, date_col: str = 'close_da
|
||||
|
||||
for pair, df in data.items():
|
||||
# Init colonne boolean à 0
|
||||
df_bis = df.copy()
|
||||
df_bis["is_into_trade"] = np.zeros(len(df_bis), dtype=bool)
|
||||
# df_bis = df.copy()
|
||||
# df_bis["is_into_trade"] = np.zeros(len(df_bis), dtype=bool)
|
||||
|
||||
# Récupération des index
|
||||
open_close_date = trades.loc[trades['pair']==pair][["open_date","close_date"]]
|
||||
mdd_df = df[df["date"].isin([open_close_date["open_date"],open_close_date["close_date"]])]
|
||||
l_open=df[df["date"].isin(open_close_date["open_date"])].index.values.tolist()
|
||||
l_close=df[df["date"].isin(open_close_date["close_date"])].index.values.tolist()
|
||||
# open_close_date = trades.loc[trades['pair']==pair][["open_date","close_date"]]
|
||||
# mdd_df = df[df["date"].isin([open_close_date["open_date"],open_close_date["close_date"]])]
|
||||
# l_open=df[df["date"].isin(open_close_date["open_date"])].index.values.tolist()
|
||||
# l_close=df[df["date"].isin(open_close_date["close_date"])].index.values.tolist()
|
||||
|
||||
# Set 1 aux bornes open et close dans le df
|
||||
df_bis["is_into_trade"].iloc[l_open] = 1
|
||||
df_bis["is_into_trade"].iloc[l_close] = 1
|
||||
# df_bis["is_into_trade"].iloc[l_open] = 1
|
||||
# df_bis["is_into_trade"].iloc[l_close] = 1
|
||||
|
||||
# cumulative sum modulo 2
|
||||
df_bis["is_into_trade"] = df_bis["is_into_trade"].cumsum()&1
|
||||
# df_bis["is_into_trade"] = df_bis["is_into_trade"].cumsum()&1
|
||||
|
||||
# close boundaries set to 1 (again)
|
||||
df_bis["is_into_trade"].iloc[l_close] = 1
|
||||
# df_bis["is_into_trade"].iloc[l_close] = 1
|
||||
|
||||
# trades_pair = trades.loc[trades['pair']==pair][["open_date","close_date"]]
|
||||
# trades_pair = trades_pair['is_in_trade'] = np.ones(len(trades_pair))
|
||||
# trades_list = pd.concat([trades_pair.rename(columns={'open_date':'date'})[['date','is_in_trade']],trades_pair.rename(columns={'close_date':'date'})[['date','is_in_trade']]]).sort_values(by='date')
|
||||
# trades_join = df.set_index('date').join(trades_list.set_index('date'))
|
||||
# trades_join = trades_join.fillna(0)
|
||||
trades_aux = trades.loc[trades['pair']==pair][["open_date","close_date"]]
|
||||
trades_aux['open_close_mark'] = np.ones(len(trades_aux))
|
||||
trades_aux = pd.concat([trades_aux.rename(columns={'open_date':'date'})[['date','open_close_mark']],trades_aux.rename(columns={'close_date':'date'})[['date','open_close_mark']]]).sort_values(by='date')
|
||||
data_join = df.set_index('date').join(trades_aux.set_index('date'))
|
||||
data_join = data_join.fillna(0)
|
||||
data_join['is_in_trade'] = data_join.open_close_mark.cumsum()%2
|
||||
data_join['is_in_trade'].loc[data_join['open_close_mark'] == 1] = 1
|
||||
data_join['close_cummax'] = 0
|
||||
|
||||
data_join['close_cummax'] = data_join.groupby(data_join.open_close_mark.cumsum()).close.cummax()
|
||||
data_join['close_cummax'].loc[data_join['is_in_trade'] == 0] = 0
|
||||
|
||||
# print(mdd_df)
|
||||
return mdd_df
|
||||
|
Loading…
Reference in New Issue
Block a user