@Tradehull_Imran
please help, i seen algo trading series and first py coding as per my understand but some error(see image ), any missing or more require code ?
that is code for live trading or not please sagest
i try to coding when ST Green buy a stock and ST res then sell stock
import pdb
from Dhan_Tradehull import Tradehull
import pandas as pd
import talib
import numpy as np
import requests
from datetime import datetime
from dhanhq import dhanhq
client_id=
access_token=
dhan = dhanhq(client_id, access_token)
tsl = Tradehull(client_id, access_token)
traded_wathclist = []
available_balance = tsl.get_balance()
leveraged_margin = available_balance*1
#max_trades = 10
#per_trade_margin = (leveraged_margin/max_trades)
#print(available_balance)
watchlist = ['AARTIIND', 'ABB', 'ABBOTINDIA', 'ABCAPITAL', 'ABFRL', 'ACC', 'ADANIENSOL', 'ADANIENT', 'ADANIGREEN', 'ADANIPORTS', 'ADANIPOWER', 'ALKEM', 'AMBUJACEM', 'APLAPOLLO', 'APOLLOHOSP', 'APOLLOTYRE', 'ASHOKLEY', 'ASIANPAINT', 'ASTRAL', 'ATGL', 'ATUL', 'AUBANK', 'AUROPHARMA', 'AXISBANK', 'BAJAJ-AUTO', 'BAJAJFINSV', 'BAJAJHFL', 'BAJAJHLDNG', 'BAJFINANCE', 'BALKRISIND', 'BALRAMCHIN', 'BANDHANBNK', 'BANKBARODA', 'BANKINDIA', 'BATAINDIA', 'BDL', 'BEL', 'BERGEPAINT', 'BHARATFORG', 'BHARTIARTL', 'BHARTIHEXA', 'BHEL', 'BIOCON', 'BOSCHLTD', 'BPCL', 'BRITANNIA', 'BSE', 'BSOFT', 'CANBK', 'CANFINHOME', 'CGPOWER', 'CHAMBLFERT', 'CHOLAFIN', 'CIPLA', 'COALINDIA', 'COCHINSHIP', 'COFORGE', 'COLPAL', 'CONCOR', 'COROMANDEL', 'CROMPTON', 'CUB', 'CUMMINSIND', 'DABUR', 'DALBHARAT', 'DEEPAKNTR', 'DIVISLAB', 'DIXON', 'DLF', 'DMART', 'DRREDDY', 'EICHERMOT', 'ESCORTS', 'ETERNAL', 'EXIDEIND', 'FEDERALBNK', 'GAIL', 'GLENMARK', 'GMRAIRPORT', 'GMRINFRA', 'GNFC', 'GODREJCP', 'GODREJPROP', 'GRANULES', 'GRASIM', 'GUJGASLTD', 'HAL', 'HAVELLS', 'HCLTECH', 'HDFCAMC', 'HDFCBANK', 'HDFCLIFE', 'HEROMOTOCO', 'HINDALCO', 'HINDCOPPER', 'HINDPETRO', 'HINDUNILVR', 'HINDZINC', 'HUDCO', 'HYUNDAI', 'ICICIBANK', 'ICICIGI', 'ICICIPRULI', 'IDEA', 'IDFC', 'IDFCFIRSTB', 'IEX', 'IGL', 'INDHOTEL', 'INDIACEM', 'INDIAMART', 'INDIANB', 'INDIGO', 'INDUSINDBK', 'INDUSTOWER', 'INFY', 'IOC', 'IPCALAB', 'IRB', 'IRCTC', 'IREDA', 'IRFC', 'ITC', 'JINDALSTEL', 'JIOFIN', 'JKCEMENT', 'JSWENERGY', 'JSWSTEEL', 'JUBLFOOD', 'KALYANKJIL', 'KOTAKBANK', 'KPITTECH', 'LALPATHLAB', 'LAURUSLABS', 'LICHSGFIN', 'LICI', 'LODHA', 'LT', 'LTF', 'LTIM', 'LTTS', 'LUPIN', 'M&M', 'M&MFIN', 'MAHABANK', 'MANAPPURAM', 'MANKIND', 'MARICO', 'MARUTI', 'MAXHEALTH', 'MAZDOCK', 'MCX', 'METROPOLIS', 'MFSL', 'MGL', 'MOTHERSON', 'MOTILALOFS', 'MPHASIS', 'MRF', 'MUTHOOTFIN', 'NATIONALUM', 'NAUKRI', 'NAVINFLUOR', 'NESTLEIND', 'NHPC', 'NMDC', 'NTPC', 'NTPCGREEN', 'NYKAA', 'OBEROIRLTY', 'OFSS', 'OIL', 'OLAELEC', 'ONGC', 'PAGEIND', 'PATANJALI', 'PAYTM', 'PEL', 'PERSISTENT', 'PETRONET', 'PFC', 'PHOENIXLTD', 'PIDILITIND', 'PIIND', 'PNB', 'POLICYBZR', 'POLYCAB', 'POWERGRID', 'PREMIERENE', 'PRESTIGE', 'PVRINOX', 'RAMCOCEM', 'RBLBANK', 'RECLTD', 'RELIANCE', 'RVNL', 'SAIL', 'SBICARD', 'SBILIFE', 'SBIN', 'SHREECEM', 'SHRIRAMFIN', 'SIEMENS', 'SJVN', 'SOLARINDS', 'SONACOMS', 'SRF', 'SUNPHARMA', 'SUNTV', 'SUPREMEIND', 'SUZLON', 'SWIGGY', 'SYNGENE', 'TATACHEM', 'TATACOMM', 'TATACONSUM', 'TATAELXSI', 'TATAMOTORS', 'TATAPOWER', 'TATASTEEL', 'TATATECH', 'TCS', 'TECHM', 'TIINDIA', 'TITAN', 'TORNTPHARM', 'TORNTPOWER', 'TRENT', 'TVSMOTOR', 'UBL', 'ULTRACEMCO', 'UNIONBANK', 'UNITDSPR', 'UPL', 'VBL', 'VEDL', 'VMM', 'VOLTAS', 'WAAREEENER', 'WIPRO', 'YESBANK', 'ZYDUSLIFE']
ltp_data = tsl.get_ltp (name = watchlist )
def get_holdings(dhan):
data_holdings = dhan.get_holdings()
holdings = pd.DataFrame (data_holdings['data'])
#holdings.to_csv('holdings.csv')
#print(data_holdings)
return holdings
def get_position(dhan):
data_position = dhan.get_position()
position = pd.DataFrame (data_position['data'])
#holdings.to_csv('holdings.csv')
#print(data_position)
return position
#Place an order for Equity Cash
def get_exchange (dhan, exchange):
if exchange == "NSE":
return dhan.NSE
elif exchange == 'BSE':
return dhan.BSE
def get_side (dhan, side):
if side == "BUY":
return dhan.BUY
elif side == 'SELL':
return dhan.SELL
def get_order_type(dhan, order_type):
if order_type == "MARKET" :
return dhan.MARKET
elif order_type == 'LIMIT':
return dhan.LIMIT
def place_order(dhan, symbol, exchange, side, quantity, order_type, price):
exchange_segment = get_exchange(dhan, exchange)
side_enum = get_side(dhan, side)
quantity = int(available_balance/ ltp_price)
order_type = get_order_type(dhan, order_type)
price = 0
return place_order
def get_orders(dhan):
data = dhan.get_order_list()
positions = pd.DataFrame(data['data'])
return positions
def get_intrument_token():
df = pd.read_csv('api-scrip-master.csv')
data_dict={}
for index, row in df.iterrows():
trading_symbol = row['SEM_TRADING_SYMBOL']
exm_exch_id = row['SEM_EXM_EXCH_ID']
if trading_symbol not in data_dict :
data_dict [trading_symbol] = {}
data_dict [trading_symbol] [exm_exch_id] = row.to_dict()
return data_dict
def get_nse_200():
# Replace this with static NSE200 list or dynamic scraper/API
return ['AARTIIND', 'ABB', 'ABBOTINDIA', 'ABCAPITAL', 'ABFRL', 'ACC', 'ADANIENSOL', 'ADANIENT', 'ADANIGREEN', 'ADANIPORTS', 'ADANIPOWER', 'ALKEM', 'AMBUJACEM', 'APLAPOLLO', 'APOLLOHOSP', 'APOLLOTYRE', 'ASHOKLEY', 'ASIANPAINT', 'ASTRAL', 'ATGL', 'ATUL', 'AUBANK', 'AUROPHARMA', 'AXISBANK', 'BAJAJ-AUTO', 'BAJAJFINSV', 'BAJAJHFL', 'BAJAJHLDNG', 'BAJFINANCE', 'BALKRISIND', 'BALRAMCHIN', 'BANDHANBNK', 'BANKBARODA', 'BANKINDIA', 'BATAINDIA', 'BDL', 'BEL', 'BERGEPAINT', 'BHARATFORG', 'BHARTIARTL', 'BHARTIHEXA', 'BHEL', 'BIOCON', 'BOSCHLTD', 'BPCL', 'BRITANNIA', 'BSE', 'BSOFT', 'CANBK', 'CANFINHOME', 'CGPOWER', 'CHAMBLFERT', 'CHOLAFIN', 'CIPLA', 'COALINDIA', 'COCHINSHIP', 'COFORGE', 'COLPAL', 'CONCOR', 'COROMANDEL', 'CROMPTON', 'CUB', 'CUMMINSIND', 'DABUR', 'DALBHARAT', 'DEEPAKNTR', 'DIVISLAB', 'DIXON', 'DLF', 'DMART', 'DRREDDY', 'EICHERMOT', 'ESCORTS', 'ETERNAL', 'EXIDEIND', 'FEDERALBNK', 'GAIL', 'GLENMARK', 'GMRAIRPORT', 'GMRINFRA', 'GNFC', 'GODREJCP', 'GODREJPROP', 'GRANULES', 'GRASIM', 'GUJGASLTD', 'HAL', 'HAVELLS', 'HCLTECH', 'HDFCAMC', 'HDFCBANK', 'HDFCLIFE', 'HEROMOTOCO', 'HINDALCO', 'HINDCOPPER', 'HINDPETRO', 'HINDUNILVR', 'HINDZINC', 'HUDCO', 'HYUNDAI', 'ICICIBANK', 'ICICIGI', 'ICICIPRULI', 'IDEA', 'IDFC', 'IDFCFIRSTB', 'IEX', 'IGL', 'INDHOTEL', 'INDIACEM', 'INDIAMART', 'INDIANB', 'INDIGO', 'INDUSINDBK', 'INDUSTOWER', 'INFY', 'IOC', 'IPCALAB', 'IRB', 'IRCTC', 'IREDA', 'IRFC', 'ITC', 'JINDALSTEL', 'JIOFIN', 'JKCEMENT', 'JSWENERGY', 'JSWSTEEL', 'JUBLFOOD', 'KALYANKJIL', 'KOTAKBANK', 'KPITTECH', 'LALPATHLAB', 'LAURUSLABS', 'LICHSGFIN', 'LICI', 'LODHA', 'LT', 'LTF', 'LTIM', 'LTTS', 'LUPIN', 'M&M', 'M&MFIN', 'MAHABANK', 'MANAPPURAM', 'MANKIND', 'MARICO', 'MARUTI', 'MAXHEALTH', 'MAZDOCK', 'MCX', 'METROPOLIS', 'MFSL', 'MGL', 'MOTHERSON', 'MOTILALOFS', 'MPHASIS', 'MRF', 'MUTHOOTFIN', 'NATIONALUM', 'NAUKRI', 'NAVINFLUOR', 'NESTLEIND', 'NHPC', 'NMDC', 'NTPC', 'NTPCGREEN', 'NYKAA', 'OBEROIRLTY', 'OFSS', 'OIL', 'OLAELEC', 'ONGC', 'PAGEIND', 'PATANJALI', 'PAYTM', 'PEL', 'PERSISTENT', 'PETRONET', 'PFC', 'PHOENIXLTD', 'PIDILITIND', 'PIIND', 'PNB', 'POLICYBZR', 'POLYCAB', 'POWERGRID', 'PREMIERENE', 'PRESTIGE', 'PVRINOX', 'RAMCOCEM', 'RBLBANK', 'RECLTD', 'RELIANCE', 'RVNL', 'SAIL', 'SBICARD', 'SBILIFE', 'SBIN', 'SHREECEM', 'SHRIRAMFIN', 'SIEMENS', 'SJVN', 'SOLARINDS', 'SONACOMS', 'SRF', 'SUNPHARMA', 'SUNTV', 'SUPREMEIND', 'SUZLON', 'SWIGGY', 'SYNGENE', 'TATACHEM', 'TATACOMM', 'TATACONSUM', 'TATAELXSI', 'TATAMOTORS', 'TATAPOWER', 'TATASTEEL', 'TATATECH', 'TCS', 'TECHM', 'TIINDIA', 'TITAN', 'TORNTPHARM', 'TORNTPOWER', 'TRENT', 'TVSMOTOR', 'UBL', 'ULTRACEMCO', 'UNIONBANK', 'UNITDSPR', 'UPL', 'VBL', 'VEDL', 'VMM', 'VOLTAS', 'WAAREEENER', 'WIPRO', 'YESBANK', 'ZYDUSLIFE'] # Sample
def get_historical_data(symbol):
endpoint = f"{BASE_URL}/market/v1/instruments/history"
params = {
"symbol": symbol,
"exchange": "NSE",
"segment": "EQUITY",
"instrument": symbol,
"interval": "1d",
# "from": datetime (%day,%month,%year)
# "to": "2025-09-08"
}
headers = {"access-token": ACCESS_TOKEN, "Client-Id": CLIENT_ID}
res = requests.get(endpoint, headers=headers, params=params)
data = res.json().get("data", [])
df = pd.DataFrame(data)
df.rename(columns={"open": "Open", "high": "High", "low": "Low", "close": "Close"}, inplace=True)
return df
def calculate_supertrend(df, period=10, multiplier=3):
supertrend = Supertrend(high=df["High"], low=df["Low"], close=df["Close"],
period=period, multiplier=multiplier)
df["supertrend"] = supertrend.supertrend()
df["supertrend_direction"] = supertrend.supertrend_direction()
return df
def generate_signal(df):
if df["supertrend_direction"].iloc[-1] and not df["supertrend_direction"].iloc[-2]:
return "BUY"
elif not df["supertrend_direction"].iloc[-1] and df["supertrend_direction"].iloc[-2]:
return "SELL"
else:
return "HOLD"
def check_and_trade():
global STOCKS
STOCKS = get_nse_200()
for symbol in STOCKS:
df = get_historical_data(symbol)
df = calculate_supertrend(df)
signal = generate_signal(df)
last_close = df["Close"].iloc[-1]
atr = df["High"].iloc[-1] - df["Low"].iloc[-1]
qty = int((leveraged_margin) // last_close)
if signal == "BUY":
sl = min(last_close - atr, last_close)
place_order(symbol, "BUY", qty, sl, tp)
elif signal == "SELL":
sl = max(last_close + atr, last_close * 1.01)
place_order(symbol, "SELL", qty, sl, tp)
else:
print(f"{symbol}: No trade signal.")

[quote="Amit_Kumar7, post:1, topic:56147, full:true"]
Please help me to download and install the TA-lib file. I'm getting this error when I

run my code in my terminal. Please help.
[/quote]