def backtest(parameters, price1,init_capital, max_capital_deploy, buy_margin, sell_margin): longwindow = int(parameters[0]) shortwindow = int(parameters[1]) if (longwindow < shortwindow) or (shortwindow < 1) or (init_capital <= 0) or (max_capital_deploy <=0) or (buy_margin < 0) or (sell_margin < 0) : return 0 short_moving_avg = data.ewm(span=5).mean() long_moving_avg = data.ewm(span=60).mean() #simulate the trading capital=init_capital qty1 = 0 p1 = 0 pos = 0 margin_blocked = 0 trade_pnl = [] mtm_pl = [] for i in range(len(data)): if capital <= 0: break if pos == 0: if short_moving_avg [i] > long_moving_avg[i]: pos=-1 p1 = price1[i] margin_blocked = capital * max_capital_deploy qty1 = -(margin_blocked / 2) // (p1 * sell_margin) if -qty1 < 1: break elif short_moving_avg [i] < long_moving_avg[i]: pos = 1 p1 = price1[i] margin_blocked = capital * max_capital_deploy qty1 = (margin_blocked / 2) // (p1 * buy_margin) if qty1 < 1: break elif pos < 0: if short_moving_avg [i] > long_moving_avg[i]: pnl = qty1 * (price1[i] - p1) if not fixedcapital: capital += pnl trade_pnl = np.append(trade_pnl, pnl) margin_blocked = 0 qty1 = 0 pos = 0 else: pnl = qty1 * (price1[i] - p1) mtm_pl = np.append(mtm_pl, pnl) elif pos > 0: if short_moving_avg [i] < long_moving_avg[i]: pnl = qty1 * (price1[i] - p1) trade_pnl = np.append(trade_pnl, pnl) margin_blocked = 0 qty1 = 0 pos = 0 else: pnl = qty1 * (price1[i] - p1) mtm_pl = np.append(mtm_pl, pnl) else: if short_moving_avg [i] > long_moving_avg[i]: pnl = qty1 * (price1[i] - p1) trade_pnl = np.append(trade_pnl, pnl) margin_blocked = 0 qty1 = 0 pos = 0 return capital, trade_pnl, mtm_plI m getting error in indentation but I am not sure this is indentation error or code error can you please help to correct the error and get the trade pnl mtm pnl capital...I want to pass it to the backtest function
python indentation errror and output error
python indentation errror and output error
|
Sep-05-2018, 06:16 AM
Please, always post the full traceback you get in error tags.
There is inconsistent indentation - e.g. lines 46-47, 57-58. Also there are huge problems with your nested if/elif/else blocks
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link Create MCV example Debug small programs import pandas as pd import numpy as np import matplotlib.pyplot as plt data = pd.read_csv('aapl.csv') data1 = data[['Date']] data1 = data1.set_index('Date') data = data[["Adj Close"]] data.head() data.columns = ["price"] data.head() x = [i for i in range(len(data))] n = len(data) short_period = 5 long_period = 10 for i in range(n): short_moving_avg = data.ewm(span=5).mean() long_moving_avg = data.ewm(span=60).mean()initial part of code is this how can I add whole trace book can you sugest
pos=[] for i in range(len(data)): if pos == 0: if data[:"short_moving_avg"] > data["long_moving_avg"]: pos=-1 elif data["short_moving_avg"] < data["long_moving_avg"]: pos = 1 elif pos < 0: if data["short_moving_avg"] < data["long_moving_avg"]: pos = 0 elif pos > 0: if data["short_moving_avg"] > data["long_moving_avg"]: pos = 0 I don't no what does this error mean..how I solve this error
Sep-19-2018, 09:35 AM
def backtest(inCapital): ohp = 0 ocp = 0 hp = 0 cp = 0 capital = 1000 rCapital = 0 pnl = 0 pa = 0 columns = ['hp','cp', 'adj.close','pnl','capital'] df = pd.DataFrame(index= data.set_index(pd.to_datetime(data['Date']), inplace=True), columns=columns) for i in range(len(data)): if data['short_moving_emavg'][i] > data['long_moving_emavg'][i]: if hp==0: hp=1 cp=1 pa = data['Adj Close'][i] rcapital=cap+pnl pnl=0 pdb_set_trace() if (hp==1): hp=-1 cp=-1 pa = data['Adj Close'][i] pnl = (data['Adj Close'][i] - pa) elif data['short_moving_emavg'][i] < data['long_moving_emavg'][i]: if (hp==0): hp=-1 cp=-1 pa = data['Adj Close'][i] rcapital=cap+pnl pnl=0 if (hp==-1): hp=1 cp=-1 pa = data['Adj Close'][i] rcapital=cap+pnl pnl=0 [/error]
|
|
Possibly Related Threads… | |||||
Thread | Author | Replies | Views | Last Post | |
nanmean - np - np.mean - errror | venkim_python | 4 | 6,093 |
Nov-30-2016, 01:39 PM Last Post: sparkz_alot |
Users browsing this thread: 3 Guest(s)