Python Forum
error on stock indicator code on balance volume
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
error on stock indicator code on balance volume
#15
import pandas as pd
import numpy as np
import statsmodels.tsa.stattools as ts
import matplotlib.pyplot as plt
from scipy import optimize
data = pd.read_csv('aapl.csv')

data1 = data[['Date']]
    def backtest( init_capital, max_capital_deploy, buy_margin, sell_margin):
    
    # TODO :
    # daily MTM , exit on Stop loss and target, MDD, etc
    
    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 = ratio.rolling(window = shortwindow, center=False).mean()
    long_moving_avg = ratio.rolling(window = longwindow, center=False).mean()
    
    capital = init_capital
    qty1 = 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)
                
           
               
                    
            trade_pnl = np.append(trade_pnl, pnl)
                    
                    
            margin_blocked = 0
            qty1 = 0
                    
            pos = 0
        else:
            
           
            
            if moving_window_z_score[i] > -exitlimit:
               
                
                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)
                
                
                 trade_pnl = np.append(trade_pnl, pnl)
                    
                  
                 margin_blocked = 0
                    qty1 = 0
                  
                    pos = 0
                
            
       
    
    return capital, trade_pnl, mtm_pl
Error:
File "<ipython-input-101-0541da3091dd>", line 116 else: ^ SyntaxError: invalid syntax
I m new to python I want to fix this else issue also how I can call or print trade pnl and mtm pnl
Reply


Messages In This Thread
RE: error on stock indicator code on balance volume - by yatish - Sep-06-2018, 05:19 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  How to accumulate volume of time series amdi40 3 2,360 Feb-15-2022, 02:23 PM
Last Post: amdi40
  Integrating for the volume of a torus in SciPy Nitram 2 3,732 Jan-08-2020, 04:45 PM
Last Post: Nitram

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020