Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def pnl_classic(model_infos):
- BUY_COL = 4
- SELL_COL = 5
- filename = model_infos[0]
- period = model_infos[1]
- ohlcbs = model_infos[2]
- signals = model_infos[3]
- calc_dd = model_infos[4]
- #print(len(ohlcbs),len(signals))
- #exit()
- #print(ohlcbs)
- trades = 0
- pnl = 0
- max_dd_percent = 0
- dt_pnl = []
- for r in range(1,len(ohlcbs),1): # signal on line N has to be traded on line N+1, thus no PnL on line 0
- signal = signals[r-1] # TODO: Are the signals themselves rigth? Check it out at some point!
- dpips = 0 # It's really importtant to get this one nulled for rows that have 0 signal
- if ( signal != 0): # it was a valid signal and we execute it
- trades += 1
- if (signal>0):
- dpips = ohlcbs[r][BUY_COL]
- else:
- dpips = ohlcbs[r][SELL_COL]
- pnl += dpips # dpips was nulled, so it's OK to add it
- # DEBUG - TEST THIS NEXT TODO!
- #if (filename=="54_16055-19155_3000_0.9_USDCAD_240 1075_export1.csv" and period ==8):
- # # maybe add DATE/time for the signals and prices columns to make sure we can see precisely the right rows
- # print("DEBUG:", ohlcbs[r][0],ohlcbs[r][1],ohlcbs[r][2],ohlcbs[r][3], ohlcbs[r][4], ohlcbs[r][5], signals[r], dpips, pnl )
- dt_pnl.append(pnl)
- if (calc_dd == True):
- max_dd_percent = drawdowns(np.array(dt_pnl))
- else:
- max_dd_percent = 0 # initially we don't use that fot the sake of CPU resources
- if pnl > 0:
- #print(filename, period, trades, pnl, max_dd_percent)
- return [ filename, period, trades, pnl, max_dd_percent ]
- else:
- return None
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement