-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathanglebrokingcode.py
More file actions
124 lines (101 loc) · 3.78 KB
/
Copy pathanglebrokingcode.py
File metadata and controls
124 lines (101 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from smartapi import SmartConnect
import warnings
import pdb
import requests
import pandas as pd
import datetime
import time
# import mibian
def angelbrok_login():
try:
global feedToken, client_code, obj, password
obj = SmartConnect(api_key="")
client_code = ""
password = "@#"
data = obj.generateSession(client_code,password)
refreshToken = data['data']['refreshToken']
# print (dict(data))
feedToken=obj.getfeedToken()
# userProfile= obj.getProfile(refreshToken)
# print (dict(userProfile))
print ("\nLogin succesfull!")
except Exception as e:
print("Error in login", e)
angelbrok_login()
def get_instruments():
global instrument_df
url = 'https://margincalculator.angelbroking.com/OpenAPI_File/files/OpenAPIScripMaster.json'
request = requests.get(url=url, verify=False)
data = request.json()
instrument_df = pd.DataFrame(data)
instrument_df.to_csv("instruments.csv")
instrument_df.set_index("symbol", inplace=True)
return instrument_df
instrument_df = get_instruments()
# print(instrument_df)
def get_token_and_exchange(name):
symboltoken = instrument_df.loc[name]['token']
exchange = instrument_df.loc[name]['exch_seg']
return symboltoken, exchange
def get_ohlc(name, exchange):
symboltoken = instrument_df.loc[name]['token']
ohlc_data = obj.ltpData(exchange, name, symboltoken)
ohlc_data = ohlc_data['data']
return ohlc_data
def get_ltp(name, exchange):
symboltoken = instrument_df.loc[name]['token']
ltp_data = obj.ltpData(exchange, name, symboltoken)
ltp = ltp_data['data']['ltp']
return ltp
def get_historical_data(name, interval, timeperiod):
token, exchange = get_token_and_exchange(name)
try:
intervals_dict = {'1min': 'ONE_MINUTE', '3min': 'THREE_MINUTE', '5min': 'FIVE_MINUTE', '10min': 'TEN_MINUTE', '15min': 'FIFTEEN_MINUTE', '30min': 'THIRTY_MINUTE', 'hour': 'ONE_HOUR', 'day': 'ONE_DAY'}
todate = str(datetime.datetime.now())[:16]
from_date = str(datetime.datetime.now().date() - datetime.timedelta(days=timeperiod))+" "+"09:15"
symboltoken = instrument_df.loc[name]['token']
historicParam = {"exchange": exchange, "symboltoken": symboltoken, "interval": intervals_dict[interval], "fromdate": from_date, "todate": todate}
response = obj.getCandleData(historicParam)
dict1 = {}
historic_df = pd.DataFrame()
for data in response['data']:
dict1['date'] = data[0]
dict1['open'] = data[1]
dict1['high'] = data[2]
dict1['low'] = data[3]
dict1['close'] = data[4]
dict1['volume'] = data[5]
historic_df = historic_df.append(dict1, ignore_index=True)
return historic_df
except Exception as e:
print(e)
print("ready")
# def place_order(orderparams):
# orderId = obj.placeOrder(orderparams)
# print(" order is placed with orderid= ", orderId)
# return orderId
def place_order(token,symbol,qty,buy_sell,ordertype,price,variety= 'NORMAL',exch_seg='NSE',triggerprice=0):
try:
orderparams = {
"variety": variety,
"tradingsymbol": symbol,
"symboltoken": token,
"transactiontype": buy_sell,
"exchange": exch_seg,
"ordertype": ordertype,
"producttype": "INTRADAY",
"duration": "DAY",
"price": price,
"squareoff": "0",
"stoploss": "0",
"quantity": qty,
"triggerprice":triggerprice
}
orderId=obj.placeOrder(orderparams)
print("The order id is: {}".format(orderId))
return orderId
except Exception as e:
print("Order placement failed:")
def cancelOrder(order_id,variety):
satus=obj.cancelOrder(order_id,variety)
return satus