Setup for Alog trading

Hi @Tradehull_Imran, i have keeping watching your videos on YouTube. Thank you for sharing you knowledge it will help for people how are using Algo trading.

i have installed latest version of pyhton. but i am not sure whether libraries are installed or not. because in every step i keep getting errors, i request you to please help to fix it and get out me of it.

import pdb
import time
import datetime
import traceback
import talib
from Dhan_Tradehull import Tradehull
import pandas as pd

client_code = “110279037”
token_id = “eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJkaGFuIiwicGFydG5lcklkIjoiIiwiZXhwIjoxNzI1NDMxNTc2LCJ0b2tlbkNvbnN1bWVyVHlwZSI6IlNFTEYiLCJ3ZWJob29rVXJsIjoiIiwiZGhhbkNsaWVudElkIjoiMTEwMjc5MDMzNyJ9.sW4kUgmS2WS7RX24OqPF07vkAdiQko3ZAX3dsKeBu_SzHio_yUQjla4PPp9TbDEwzn8pw1MH1nh4MvHjb7MZ_g”
tsl = Tradehull(client_code,token_id) # tradehull_support_library

#tsl.get_intraday_data(‘ACC’,‘NSE’,1)

tsl.get_intraday_data(‘NIFTY’,‘NSE’,1)

available_balance = tsl.get_balance()
max_risk_for_the_day = (available_balance1)/100-1
print(“available_balance”, available_balance)

#ltp1 = tsl.get_ltp(‘ACC’)
ltp2 = tsl.get_ltp(‘NIFTY’)
#ltp3 = tsl.get_ltp(‘BANKNIFTY 28 AUG 51600 CALL’)
ltp4 = tsl.get_ltp(‘NIFTY 19 JUN 23200 CALL’)

previous_hist_data = tsl.get_historical_data(‘ACC’,‘NSE’,12)
intraday_hist_data = tsl.get_intraday_data(‘ACC’,‘NSE’,1)

ce_name, pe_name, strike = tsl.ATM_Strike_Selection(‘NIFTY’,‘19-06-2025’)
otm_ce_name, pe_name, ce_OTM_strike, pe_OTM_strike = tsl.OTM_Strike_Selection(‘NIFTY’,‘19-06-2025’,3)
ce_name, pe_name, ce_ITM_strike, pe_ITM_strike = tsl.ITM_Strike_Selection(‘NIFTY’,‘19-06-2025’, 4)

intraday_hist_data = tsl.get_intraday_data(otm_ce_name,‘NFO’,1)
intraday_hist_data[‘rsi’] = talib.RSI(intraday_hist_data[‘close’], timeperiod=14)

lot_size = tsl.get_lot_size(‘NIFTY 19 JUN 23200 CALL’)
lot_size = tsl.get_lot_size(otm_ce_name)
qty = 2*lot_size

next lecture

orderid1 = tsl.order_placement(‘NIFTY 19 JUN 23200 CALL’,‘NFO’,25, 0.05, 0, ‘LIMIT’, ‘BUY’, ‘MIS’)
#orderid2 = tsl.order_placement(‘BANKNIFTY 28 AUG 51600 CALL’,‘NFO’,15, 0.05, 0, ‘LIMIT’, ‘BUY’, ‘MIS’)
orderid3 = tsl.order_placement(‘ACC’,‘NSE’, 1, 0, 0, ‘MARKET’, ‘BUY’, ‘MIS’)
exit_all = tsl.cancel_all_orders()

live_pnl = tsl.get_live_pnl()
if live_pnl < max_risk_for_the_day:
exit_all = tsl.cancel_all_orders()
response = tsl.kill_switch(‘ON’)

error in CMD
C:\Users\Admin\3. Session3 - Codebase\Dhan codebase>py “Dhan_codebase usage.py”
Traceback (most recent call last):
File “C:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_codebase usage.py”, line 6, in
from Dhan_Tradehull import Tradehull
File “C:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 2, in
import mibian
ModuleNotFoundError: No module named ‘mibian’

C:\Users\Admin\3. Session3 - Codebase\Dhan codebase>py “Dhan_codebase usage.py”
Traceback (most recent call last):
File “C:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_codebase usage.py”, line 5, in
import talib
ModuleNotFoundError: No module named ‘talib’

C:\Users\Admin\3. Session3 - Codebase\Dhan codebase>

thank you

Hi @Tanoj_Bhupathi ,

Install mibian using the below code

pip install mibian

Refer the below to install talib:

Let me know if you face any issue.

Thank you @Tradehull_Imran it worked for me.

please help me fix these errors

-----Logged into Dhan-----
reading existing file all_instrument 2025-06-19.csv
Got the instrument file
dhanhq.intraday_minute_data() missing 2 required positional arguments: ‘from_date’ and ‘to_date’
Traceback (most recent call last):
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 253, in get_intraday_data
ohlc = self.Dhan.intraday_minute_data(str(security_id),exchangeSegment,instrument_type)
TypeError: dhanhq.intraday_minute_data() missing 2 required positional arguments: ‘from_date’ and ‘to_date’
dhanhq.intraday_minute_data() missing 2 required positional arguments: ‘from_date’ and ‘to_date’
Traceback (most recent call last):
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 253, in get_intraday_data
ohlc = self.Dhan.intraday_minute_data(str(security_id),exchangeSegment,instrument_type)
TypeError: dhanhq.intraday_minute_data() missing 2 required positional arguments: ‘from_date’ and ‘to_date’
available_balance 18.78
DataFrame constructor not properly called!
Traceback (most recent call last):
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 222, in get_historical_data
df = pd.DataFrame(ohlc[‘data’])
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\frame.py”, line 886, in init
raise ValueError(“DataFrame constructor not properly called!”)
ValueError: DataFrame constructor not properly called!
dhanhq.intraday_minute_data() missing 2 required positional arguments: ‘from_date’ and ‘to_date’
Traceback (most recent call last):
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 253, in get_intraday_data
ohlc = self.Dhan.intraday_minute_data(str(security_id),exchangeSegment,instrument_type)
TypeError: dhanhq.intraday_minute_data() missing 2 required positional arguments: ‘from_date’ and ‘to_date’
Traceback (most recent call last):
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 394, in ATM_Strike_Selection
closest_index = ce_df[‘diff’].idxmin()
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\series.py”, line 2686, in idxmin
i = self.argmin(axis, skipna, *args, **kwargs)
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\base.py”, line 789, in argmin
result = nanops.nanargmin(delegate, skipna=skipna)
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\nanops.py”, line 1194, in nanargmin
result = values.argmin(axis)
ValueError: attempt to get argmin of an empty sequence
— Logging error —
Traceback (most recent call last):
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 394, in ATM_Strike_Selection
closest_index = ce_df[‘diff’].idxmin()
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\series.py”, line 2686, in idxmin
i = self.argmin(axis, skipna, *args, **kwargs)
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\base.py”, line 789, in argmin
result = nanops.nanargmin(delegate, skipna=skipna)
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\nanops.py”, line 1194, in nanargmin
result = values.argmin(axis)
ValueError: attempt to get argmin of an empty sequence

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\logging_init_.py”, line 1151, in emit
msg = self.format(record)
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\logging_init_.py”, line 999, in format
return fmt.format(record)
~~~~~~~~~~^^^^^^^^
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\logging_init_.py”, line 712, in format
record.message = record.getMessage()
~~~~~~~~~~~^^
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\logging_init_.py”, line 400, in getMessage
msg = msg % self.args
^

TypeError: not all arguments converted during string formatting
Call stack:
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\static_api.py”, line 36, in
ce_name, pe_name, strike = tsl.ATM_Strike_Selection(‘NIFTY’,‘05-09-2024’)
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 421, in ATM_Strike_Selection
self.logger.exception("Got exception in ce_pe_option_df ", e)
Message: 'Got exception in ce_pe_option_df ’
Arguments: (ValueError(‘attempt to get argmin of an empty sequence’),)
exception got in ce_pe_option_df attempt to get argmin of an empty sequence
Getting Error at OTM strike Selection as attempt to get argmin of an empty sequence
Getting Error at OTM strike Selection as attempt to get argmin of an empty sequence
single positional indexer is out-of-bounds
Traceback (most recent call last):
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\Dhan_Tradehull.py”, line 251, in get_intraday_data
security_id = self.instrument_df[((self.instrument_df[‘SEM_TRADING_SYMBOL’]==tradingsymbol)|(self.instrument_df[‘SEM_CUSTOM_SYMBOL’]==tradingsymbol))&(self.instrument_df[‘SEM_EXM_EXCH_ID’]==instrument_exchange[exchange])].iloc[-1][‘SEM_SMST_SECURITY_ID’]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\indexing.py”, line 1191, in getitem
return self._getitem_axis(maybe_callable, axis=axis)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\indexing.py”, line 1752, in _getitem_axis
self._validate_integer(key, axis)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File “C:\Users\Admin\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\core\indexing.py”, line 1685, in _validate_integer
raise IndexError(“single positional indexer is out-of-bounds”)
IndexError: single positional indexer is out-of-bounds
Traceback (most recent call last):
File “c:\Users\Admin\3. Session3 - Codebase\Dhan codebase\static_api.py”, line 42, in
intraday_hist_data[‘rsi’] = talib.RSI(intraday_hist_data[‘close’], timeperiod=14)
~~~~~~~~~~~~~~~~~~^^^^^^^^^
TypeError: ‘NoneType’ object is not subscriptable

@Tradehull_Imran I’m primarily interested in retrieving only the options chain—no stock data, please. If the recent errors where I mentioned are resolved, it would be a tremendous help to see just the options chain response.

Thank you for focusing solely on that—it’s exactly what I need. :pray: