MCPcopy Index your code
hub / github.com/QuantFans/quantdigger / deal_tradeinfo

Function deal_tradeinfo

quantdigger/kernel/datasource/data.py:182–280  ·  view source on GitHub ↗

根据交易信号和数据文件,处理数据. return data['high_profits', 'low_profit', 'exit_profit', 'period', 'return', 'entry_nbar_bests', 'entry_nbar_worsts', 'exit_nbar_bests', 'exit_nbar_worsts', 'islong', 'entry_n', 'exit_n' ]

(tradeinfo, pricefname, n=10, intraday=False)

Source from the content-addressed store, hash-verified

180
181
182def deal_tradeinfo(tradeinfo, pricefname, n=10, intraday=False):
183 """ 根据交易信号和数据文件,处理数据.
184 return data['high_profits', 'low_profit', 'exit_profit', 'period', 'return',
185 'entry_nbar_bests', 'entry_nbar_worsts', 'exit_nbar_bests',
186 'exit_nbar_worsts', 'islong', 'entry_n', 'exit_n'
187 ]
188 """
189 PRICE = 'close'
190 data = pd.DataFrame(tradeinfo.ix[:,0:2])
191 price_data = csv2frame(pricefname)
192 high_profits = []
193 low_profits = []
194 exit_profits = []
195
196 periods = []
197 entry_nbar_bests = []
198 entry_nbar_worsts = []
199 exit_nbar_bests = []
200 exit_nbar_worsts = []
201 islongs = []
202 returns = []
203 entry_Nlist = []
204 exit_Nlist = []
205 for i in range(len(data)):
206 startt = tradeinfo.index[i]
207 startpos = price_data.index.searchsorted(startt)
208 endt = tradeinfo.ix[i, ['exit_datetime']][0]
209 endpos = price_data.index.searchsorted(endt)
210 tradingdf = price_data.truncate(before=tradeinfo.index[i], after = endt)
211
212 onetrade = tradeinfo.ix[i, :]
213 # high/low
214 if len(tradingdf) > 1:
215 hp = tradingdf.ix[:-1, :][PRICE].max()
216 lp = tradingdf.ix[:-1, :][PRICE].min()
217 t = tradingdf.ix[:-1, :][PRICE].tolist()
218 t.append(float(onetrade['exit_price']))
219 returns.append(max_return(t, onetrade['islong']))
220 else:
221 hp = tradingdf.ix[:, :][PRICE].max()
222 lp = tradingdf.ix[:, :][PRICE].min()
223 if onetrade['islong']:
224 returns.append(max(onetrade['entry_price']-onetrade['exit_price'], 0))
225 else:
226 returns.append(max(onetrade['exit_price']-onetrade['entry_price'], 0))
227 hp = onetrade['exit_price'] if onetrade['exit_price'] > hp else hp
228 hp = onetrade['entry_price'] if onetrade['entry_price'] > hp else hp
229 lp = onetrade['exit_price'] if onetrade['exit_price'] < lp else lp
230 lp = onetrade['entry_price'] if onetrade['entry_price'] < lp else lp
231 hp = hp - onetrade['entry_price']
232 lp = lp - onetrade['entry_price']
233 high_profits.append(hp if onetrade['islong'] else 0-hp)
234 low_profits.append(lp if onetrade['islong'] else 0-lp)
235 # exit
236 ep = onetrade['exit_price'] - onetrade['entry_price']
237 exit_profits.append(ep if onetrade['islong'] else 0-ep)
238 # period
239 periods.append(endpos - startpos + 1)

Callers 1

load_datasFunction · 0.85

Calls 2

max_returnFunction · 0.85
csv2frameFunction · 0.70

Tested by

no test coverage detected