@Tradehull_Imran sir
Today I have tried again
# https://ta-lib.github.io/ta-lib-python/
# https://www.notion.so/TradeHull-Dhan-Codebase-76b32fa814e64aea843e14a148854214#efa40986725341e6bfa9ad6fcfc10a6d
import pdb
from Dhan_Tradehull_V2 import Tradehull
import pandas as pd
import talib
import time
import datetime
client_code = ""
token_id = ""
tsl = Tradehull(client_code,token_id)
available_balance = tsl.get_balance()
leveraged_margin = available_balance*5
max_trades = 1
per_trade_margin = (leveraged_margin/max_trades)
max_loss = (available_balance*1)/100*-1
watchlist = ['TATAMOTORS']
traded_wathclist = []
tarde_info = {'Direction': 'buy', 'level': 819}
while True:
live_pnl = tsl.get_live_pnl()
current_time = datetime.datetime.now().time()
if current_time < datetime.time(9, 30):
print("wait for market to start", current_time)
continue
if (current_time > datetime.time(15, 15)) or (live_pnl < max_loss):
# I_want_to_trade_no_more = tsl.kill_switch('ON') # removed Kill swtich as it may get accidenyl hit while Testing and block all future order placement
order_details = tsl.cancel_all_orders()
print("Market is over, Bye Bye see you tomorrow", current_time)
break
for stock_name in watchlist:
time.sleep(0.2)
print(f"Scaning {stock_name}")
chart_5 = tsl.get_historical_data(tradingsymbol = stock_name, exchange = 'NSE',timeframe="5") # Upgraded 5 minute chart according to Dhan_Tradehull_V2
cc_5 = chart_5.iloc[-1] # pandas
no_repeat_order = stock_name not in traded_wathclist
if (tarde_info['Direction'] == "buy") and no_repeat_order:
cc_volume = cc_5['volume']
average_volume = chart_5['volume'].mean()
breakout_c1 = cc_5['close'] > tarde_info['level']
breakout_c2 = cc_volume > 2*average_volume
breakout_c3 = cc_5['open'] != cc_5['close']
atm_ce_name, atm_pe_name, strike = tsl.ATM_Strike_Selection(stock_name,'09-12-2024') #atm_ce_name, pe_strike, ce_OTM_price, pe_OTM_price = tsl.OTM_Strike_Selection(stock_name,'08-08-2024',3)
atm_ce_ltp = tsl.get_ltp_data(names = [atm_ce_name])[atm_ce_name]
lot_size = tsl.get_lot_size(atm_ce_name)
entry_price = round((atm_ce_ltp*1.02),1)
sl_price = round((atm_ce_ltp*0.8),1)
entry_orderid = tsl.order_placement(atm_ce_name,'NFO', lot_size, entry_price, 0, 'LIMIT', 'BUY', 'MIS')
sl_orderid = tsl.order_placement(atm_ce_name,'NFO', lot_size, 0, sl_price, 'STOPMARKET', 'SELL', 'MIS')
traded_wathclist.append(stock_name)
but getting same error
PS C:\Users\Subhajit Panja\Documents\Algorithim_HQ> & "c:/Users/Subhajit Panja/Documents/Algorithim_HQ/.venv/Scripts/python.exe" "c:/Users/Subhajit Panja/Documents/Algorithim_HQ/3rd live Algo/Breakout Algo on Stock Options.py"
Codebase Version 2.1
-----Logged into Dhan-----
reading existing file all_instrument 2024-12-09.csv
Got the instrument file
Scaning TATAMOTORS
Traceback (most recent call last):
File "c:\Users\Subhajit Panja\Documents\Algorithim_HQ\3rd live Algo\Dhan_Tradehull_V2.py", line 514, in ATM_Strike_Selection
closest_index = ce_df['diff'].idxmin()
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\series.py", line 2460, in idxmin
i = self.argmin(axis, skipna, *args, **kwargs) # type: ignore[arg-type]
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\base.py", line 742, in argmin
return nanops.nanargmin( # type: ignore[return-value]
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\nanops.py", line 96, in _f
return f(*args, **kwargs)
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\nanops.py", line 1193, in nanargmin
result = values.argmin(axis) # type: ignore[var-annotated]
ValueError: attempt to get argmin of an empty sequence
--- Logging error ---
Traceback (most recent call last):
File "c:\Users\Subhajit Panja\Documents\Algorithim_HQ\3rd live Algo\Dhan_Tradehull_V2.py", line 514, in ATM_Strike_Selection
closest_index = ce_df['diff'].idxmin()
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\series.py", line 2460, in idxmin
i = self.argmin(axis, skipna, *args, **kwargs) # type: ignore[arg-type]
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\base.py", line 742, in argmin
return nanops.nanargmin( # type: ignore[return-value]
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\nanops.py", line 96, in _f
return f(*args, **kwargs)
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\nanops.py", line 1193, in nanargmin
result = values.argmin(axis) # type: ignore[var-annotated]
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\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1081, in emit
msg = self.format(record)
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 925, in format
return fmt.format(record)
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 664, in format
record.message = record.getMessage()
File "C:\Users\Subhajit Panja\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 369, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
File "c:/Users/Subhajit Panja/Documents/Algorithim_HQ/3rd live Algo/Breakout Algo on Stock Options.py", line 64, in <module>
atm_ce_name, atm_pe_name, strike = tsl.ATM_Strike_Selection(stock_name,'09-12-2024') #atm_ce_name, pe_strike, ce_OTM_price, pe_OTM_price = tsl.OTM_Strike_Selection(stock_name,'08-08-2024',3)
File "c:\Users\Subhajit Panja\Documents\Algorithim_HQ\3rd live Algo\Dhan_Tradehull_V2.py", line 541, 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
None
Traceback (most recent call last):
File "c:/Users/Subhajit Panja/Documents/Algorithim_HQ/3rd live Algo/Breakout Algo on Stock Options.py", line 67, in <module>
atm_ce_ltp = tsl.get_ltp_data(names = [atm_ce_name])[atm_ce_name]
KeyError: None
updated below things
atm_ce_name, atm_pe_name, strike = tsl.ATM_Strike_Selection(stock_name,'09-12-2024')
watchlist = [‘TATAMOTORS’]
tarde_info = {‘Direction’: ‘buy’, ‘level’: 819}
@Tradehull_Imran sir here also same