fyers-api-v3 1.3.0 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HSM/datasocket.min.js +1 -1
- package/HSM/mapper.js +220 -220
- package/HSM_Package/hslib.js +4 -4
- package/README.md +171 -171
- package/apiService/apiService.js +869 -869
- package/config/config.js +28 -28
- package/errorHandler/errorHandler.js +36 -36
- package/index.js +8 -8
- package/logger/log.js +61 -61
- package/obfuscate.js +24 -24
- package/ordersocket/fyersSocket.js +325 -325
- package/ordersocket/mapper.js +78 -78
- package/package.json +24 -27
- package/sample/api.js +46 -84
- package/sample/datasocket.js +24 -24
- package/sample/ordersocket.js +29 -29
package/ordersocket/mapper.js
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
const ordersMapper = {
|
|
2
|
-
'client_id': 'clientId',
|
|
3
|
-
'id': 'id',
|
|
4
|
-
'id_parent': 'parentId',
|
|
5
|
-
'id_exchange': 'exchOrdId',
|
|
6
|
-
'qty': 'qty',
|
|
7
|
-
'qty_remaining': 'remainingQuantity',
|
|
8
|
-
'qty_filled': 'filledQty',
|
|
9
|
-
'price_limit': 'limitPrice',
|
|
10
|
-
'price_stop': 'stopPrice',
|
|
11
|
-
'
|
|
12
|
-
'ord_type': 'type',
|
|
13
|
-
'fy_token': 'fyToken',
|
|
14
|
-
'exchange': 'exchange',
|
|
15
|
-
'segment': 'segment',
|
|
16
|
-
'symbol': 'symbol',
|
|
17
|
-
'instrument': 'instrument',
|
|
18
|
-
'oms_msg': 'message',
|
|
19
|
-
'offline_flag': 'offlineOrder',
|
|
20
|
-
'time_oms': 'orderDateTime',
|
|
21
|
-
'validity': 'orderValidity',
|
|
22
|
-
'product_type': 'productType',
|
|
23
|
-
'tran_side': 'side',
|
|
24
|
-
'ord_status': 'status',
|
|
25
|
-
'ord_source': 'source',
|
|
26
|
-
'symbol_exch': 'ex_sym',
|
|
27
|
-
'symbol_desc': 'description',
|
|
28
|
-
'ordertag': 'orderTag'
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const positionbookMapper = {
|
|
32
|
-
'symbol': 'symbol',
|
|
33
|
-
'id': 'id',
|
|
34
|
-
'buy_avg': 'buyAvg',
|
|
35
|
-
'buy_qty': 'buyQty',
|
|
36
|
-
'buy_val': 'buyVal',
|
|
37
|
-
'sell_avg': 'sellAvg',
|
|
38
|
-
'sell_qty': 'sellQty',
|
|
39
|
-
'sell_val': 'sellVal',
|
|
40
|
-
'net_avg': 'netAvg',
|
|
41
|
-
'net_qty': 'netQty',
|
|
42
|
-
'tran_side': 'side',
|
|
43
|
-
'qty': 'qty',
|
|
44
|
-
'product_type': 'productType',
|
|
45
|
-
'pl_realized': 'realized_profit',
|
|
46
|
-
'rbirefrate': 'rbiRefRate',
|
|
47
|
-
'fy_token': 'fyToken',
|
|
48
|
-
'exchange': 'exchange',
|
|
49
|
-
'segment': 'segment',
|
|
50
|
-
'day_buy_qty': 'dayBuyQty',
|
|
51
|
-
'day_sell_qty': 'daySellQty',
|
|
52
|
-
'cf_buy_qty': 'cfBuyQty',
|
|
53
|
-
'cf_sell_qty': 'cfSellQty',
|
|
54
|
-
'qty_multiplier': 'qtyMulti_com',
|
|
55
|
-
'pl_total': 'pl',
|
|
56
|
-
'cross_curr_flag': 'crossCurrency',
|
|
57
|
-
'pl_unrealized': 'unrealized_profit',
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
const tradebookMapper = {
|
|
61
|
-
'id_fill': 'tradeNumber',
|
|
62
|
-
'id': 'orderNumber',
|
|
63
|
-
'qty_traded': 'tradedQty',
|
|
64
|
-
'price_traded': 'tradePrice',
|
|
65
|
-
'traded_val': 'tradeValue',
|
|
66
|
-
'product_type': 'productType',
|
|
67
|
-
'client_id': 'clientId',
|
|
68
|
-
'id_exchange': 'exchangeOrderNo',
|
|
69
|
-
'ord_type': 'orderType',
|
|
70
|
-
'tran_side': 'side',
|
|
71
|
-
'symbol': 'symbol',
|
|
72
|
-
'fill_time': 'orderDateTime',
|
|
73
|
-
'fy_token': 'fyToken',
|
|
74
|
-
'exchange': 'exchange',
|
|
75
|
-
'segment': 'segment',
|
|
76
|
-
'ordertag': 'orderTag'
|
|
77
|
-
}
|
|
78
|
-
|
|
1
|
+
const ordersMapper = {
|
|
2
|
+
'client_id': 'clientId',
|
|
3
|
+
'id': 'id',
|
|
4
|
+
'id_parent': 'parentId',
|
|
5
|
+
'id_exchange': 'exchOrdId',
|
|
6
|
+
'qty': 'qty',
|
|
7
|
+
'qty_remaining': 'remainingQuantity',
|
|
8
|
+
'qty_filled': 'filledQty',
|
|
9
|
+
'price_limit': 'limitPrice',
|
|
10
|
+
'price_stop': 'stopPrice',
|
|
11
|
+
'price_traded': 'tradedPrice',
|
|
12
|
+
'ord_type': 'type',
|
|
13
|
+
'fy_token': 'fyToken',
|
|
14
|
+
'exchange': 'exchange',
|
|
15
|
+
'segment': 'segment',
|
|
16
|
+
'symbol': 'symbol',
|
|
17
|
+
'instrument': 'instrument',
|
|
18
|
+
'oms_msg': 'message',
|
|
19
|
+
'offline_flag': 'offlineOrder',
|
|
20
|
+
'time_oms': 'orderDateTime',
|
|
21
|
+
'validity': 'orderValidity',
|
|
22
|
+
'product_type': 'productType',
|
|
23
|
+
'tran_side': 'side',
|
|
24
|
+
'ord_status': 'status',
|
|
25
|
+
'ord_source': 'source',
|
|
26
|
+
'symbol_exch': 'ex_sym',
|
|
27
|
+
'symbol_desc': 'description',
|
|
28
|
+
'ordertag': 'orderTag'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const positionbookMapper = {
|
|
32
|
+
'symbol': 'symbol',
|
|
33
|
+
'id': 'id',
|
|
34
|
+
'buy_avg': 'buyAvg',
|
|
35
|
+
'buy_qty': 'buyQty',
|
|
36
|
+
'buy_val': 'buyVal',
|
|
37
|
+
'sell_avg': 'sellAvg',
|
|
38
|
+
'sell_qty': 'sellQty',
|
|
39
|
+
'sell_val': 'sellVal',
|
|
40
|
+
'net_avg': 'netAvg',
|
|
41
|
+
'net_qty': 'netQty',
|
|
42
|
+
'tran_side': 'side',
|
|
43
|
+
'qty': 'qty',
|
|
44
|
+
'product_type': 'productType',
|
|
45
|
+
'pl_realized': 'realized_profit',
|
|
46
|
+
'rbirefrate': 'rbiRefRate',
|
|
47
|
+
'fy_token': 'fyToken',
|
|
48
|
+
'exchange': 'exchange',
|
|
49
|
+
'segment': 'segment',
|
|
50
|
+
'day_buy_qty': 'dayBuyQty',
|
|
51
|
+
'day_sell_qty': 'daySellQty',
|
|
52
|
+
'cf_buy_qty': 'cfBuyQty',
|
|
53
|
+
'cf_sell_qty': 'cfSellQty',
|
|
54
|
+
'qty_multiplier': 'qtyMulti_com',
|
|
55
|
+
'pl_total': 'pl',
|
|
56
|
+
'cross_curr_flag': 'crossCurrency',
|
|
57
|
+
'pl_unrealized': 'unrealized_profit',
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const tradebookMapper = {
|
|
61
|
+
'id_fill': 'tradeNumber',
|
|
62
|
+
'id': 'orderNumber',
|
|
63
|
+
'qty_traded': 'tradedQty',
|
|
64
|
+
'price_traded': 'tradePrice',
|
|
65
|
+
'traded_val': 'tradeValue',
|
|
66
|
+
'product_type': 'productType',
|
|
67
|
+
'client_id': 'clientId',
|
|
68
|
+
'id_exchange': 'exchangeOrderNo',
|
|
69
|
+
'ord_type': 'orderType',
|
|
70
|
+
'tran_side': 'side',
|
|
71
|
+
'symbol': 'symbol',
|
|
72
|
+
'fill_time': 'orderDateTime',
|
|
73
|
+
'fy_token': 'fyToken',
|
|
74
|
+
'exchange': 'exchange',
|
|
75
|
+
'segment': 'segment',
|
|
76
|
+
'ordertag': 'orderTag'
|
|
77
|
+
}
|
|
78
|
+
|
|
79
79
|
module.exports = { "orders": ordersMapper, "position": positionbookMapper, "tradebook": tradebookMapper }
|
package/package.json
CHANGED
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "fyers-api-v3",
|
|
3
|
-
"version": "1.3.
|
|
4
|
-
"description": "connect to fyers API",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"test": "echo \"Error: no test specified\" && exit 1"
|
|
8
|
-
},
|
|
9
|
-
"author": "",
|
|
10
|
-
"license": "ISC",
|
|
11
|
-
"dependencies": {
|
|
12
|
-
"axios": "^1.3.5",
|
|
13
|
-
"jsonwebtoken": "^9.0.1",
|
|
14
|
-
"ws": "^8.13.0"
|
|
15
|
-
},
|
|
16
|
-
"devDependencies": {
|
|
17
|
-
"javascript-obfuscator": "^4.0.2"
|
|
18
|
-
},
|
|
19
|
-
"repository": {
|
|
20
|
-
"type": "git",
|
|
21
|
-
"url": "
|
|
22
|
-
},
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
},
|
|
26
|
-
"homepage": "https://github.com/FyersDev/fyers-api-js#readme"
|
|
27
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "fyers-api-v3",
|
|
3
|
+
"version": "1.3.3",
|
|
4
|
+
"description": "connect to fyers API",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
8
|
+
},
|
|
9
|
+
"author": "",
|
|
10
|
+
"license": "ISC",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"axios": "^1.3.5",
|
|
13
|
+
"jsonwebtoken": "^9.0.1",
|
|
14
|
+
"ws": "^8.13.0"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"javascript-obfuscator": "^4.0.2"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "https://github.com/FyersDev/fyers-api-sample-code/tree/sample_v3/v3/node"
|
|
22
|
+
},
|
|
23
|
+
"homepage": "https://myapi.fyers.in/docsv3"
|
|
24
|
+
}
|
package/sample/api.js
CHANGED
|
@@ -1,84 +1,46 @@
|
|
|
1
|
-
var fyersModel= require("../index.js").fyersModel
|
|
2
|
-
|
|
3
|
-
var fyers= new fyersModel()
|
|
4
|
-
|
|
5
|
-
fyers.setAppId("QC7T0H8425-100")
|
|
6
|
-
|
|
7
|
-
fyers.setRedirectUrl("https://www.google.com")
|
|
8
|
-
// generate authcode
|
|
9
|
-
////////////////////////////
|
|
10
|
-
|
|
11
|
-
// var URL=fyers.generateAuthCode()
|
|
12
|
-
|
|
13
|
-
// console.log(URL)
|
|
14
|
-
|
|
15
|
-
// after getting authcode
|
|
16
|
-
|
|
17
|
-
////////////////////////////
|
|
18
|
-
|
|
19
|
-
// generate accesstoken
|
|
20
|
-
////////////////////////////
|
|
21
|
-
// var authcode=""
|
|
22
|
-
|
|
23
|
-
// fyers.generate_access_token({"client_id":fyers.AppID,"secret_key":"4362L6SS2C","auth_code":authcode}).then((response)=>{
|
|
24
|
-
// console.log(response)
|
|
25
|
-
// })
|
|
26
|
-
////////////////////////////
|
|
27
|
-
|
|
28
|
-
fyers.setAccessToken("")
|
|
29
|
-
|
|
30
|
-
fyers.get_profile().then((response)=>{
|
|
31
|
-
console.log(response)
|
|
32
|
-
}).catch((err)=>{
|
|
33
|
-
console.log(err)
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
fyers.getQuotes(["NSE:SBIN-EQ","NSE:TCS-EQ"]).then((response)=>{
|
|
37
|
-
console.log(response)
|
|
38
|
-
}).catch((err)=>{
|
|
39
|
-
console.log(err)
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
fyers.getMarketDepth({"symbol":["NSE:SBIN-EQ","NSE:TCS-EQ"],"ohlcv_flag":1}).then((response)=>{
|
|
43
|
-
console.log(response)
|
|
44
|
-
}).catch((err)=>{
|
|
45
|
-
console.log(err)
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
let mlOrdBody = {
|
|
49
|
-
"orderTag": "ta1",
|
|
50
|
-
"productType": "MARGIN",
|
|
51
|
-
"offlineOrder": false,
|
|
52
|
-
"orderType":"3L",
|
|
53
|
-
"validity": "IOC",
|
|
54
|
-
"legs": {
|
|
55
|
-
"leg1": {
|
|
56
|
-
"symbol": "NSE:NIFTY24JULFUT",
|
|
57
|
-
"qty": 25,
|
|
58
|
-
"side": 1,
|
|
59
|
-
"type":1,
|
|
60
|
-
"limitPrice": 26250
|
|
61
|
-
},
|
|
62
|
-
"leg2": {
|
|
63
|
-
"symbol": "NSE:NIFTY24SEPFUT",
|
|
64
|
-
"qty": 50,
|
|
65
|
-
"side": 1,
|
|
66
|
-
"type":1,
|
|
67
|
-
"limitPrice": 26250
|
|
68
|
-
},
|
|
69
|
-
"leg3": {
|
|
70
|
-
"symbol": "NSE:NIFTY24AUGFUT",
|
|
71
|
-
"qty": 75,
|
|
72
|
-
"side": 1,
|
|
73
|
-
"type":1,
|
|
74
|
-
"limitPrice": 26250
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
fyers.place_multileg_order(mlOrdBody).then((response)=>{
|
|
81
|
-
console.log(response)
|
|
82
|
-
}).catch((err)=>{
|
|
83
|
-
console.log(err)
|
|
84
|
-
})
|
|
1
|
+
var fyersModel= require("../index.js").fyersModel
|
|
2
|
+
|
|
3
|
+
var fyers= new fyersModel()
|
|
4
|
+
|
|
5
|
+
fyers.setAppId("QC7T0H8425-100")
|
|
6
|
+
|
|
7
|
+
fyers.setRedirectUrl("https://www.google.com")
|
|
8
|
+
// generate authcode
|
|
9
|
+
////////////////////////////
|
|
10
|
+
|
|
11
|
+
// var URL=fyers.generateAuthCode()
|
|
12
|
+
|
|
13
|
+
// console.log(URL)
|
|
14
|
+
|
|
15
|
+
// after getting authcode
|
|
16
|
+
|
|
17
|
+
////////////////////////////
|
|
18
|
+
|
|
19
|
+
// generate accesstoken
|
|
20
|
+
////////////////////////////
|
|
21
|
+
// var authcode=""
|
|
22
|
+
|
|
23
|
+
// fyers.generate_access_token({"client_id":fyers.AppID,"secret_key":"4362L6SS2C","auth_code":authcode}).then((response)=>{
|
|
24
|
+
// console.log(response)
|
|
25
|
+
// })
|
|
26
|
+
////////////////////////////
|
|
27
|
+
|
|
28
|
+
fyers.setAccessToken("")
|
|
29
|
+
|
|
30
|
+
fyers.get_profile().then((response)=>{
|
|
31
|
+
console.log(response)
|
|
32
|
+
}).catch((err)=>{
|
|
33
|
+
console.log(err)
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
fyers.getQuotes(["NSE:SBIN-EQ","NSE:TCS-EQ"]).then((response)=>{
|
|
37
|
+
console.log(response)
|
|
38
|
+
}).catch((err)=>{
|
|
39
|
+
console.log(err)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
fyers.getMarketDepth({"symbol":["NSE:SBIN-EQ","NSE:TCS-EQ"],"ohlcv_flag":1}).then((response)=>{
|
|
43
|
+
console.log(response)
|
|
44
|
+
}).catch((err)=>{
|
|
45
|
+
console.log(err)
|
|
46
|
+
})
|
package/sample/datasocket.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
let DataSocket = require("../index.js").fyersDataSocket;
|
|
2
|
-
|
|
3
|
-
var skt= DataSocket.getInstance("")
|
|
4
|
-
|
|
5
|
-
skt.on("connect",function(){skt.subscribe(['NSE:IDEA-EQ',"NSE:SBIN-EQ"],false,1)
|
|
6
|
-
skt.mode(skt.FullMode,1)
|
|
7
|
-
console.log(skt.isConnected())
|
|
8
|
-
// skt.mode(skt.LiteMode,[11,12,13])
|
|
9
|
-
// skt.channelresume(2)
|
|
10
|
-
// skt.unsubscribe(['NSE:IDEA-EQ'],false,1)
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
skt.on("message",function(message){
|
|
14
|
-
console.log({"TEST":message})
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
skt.on("error",function(message){
|
|
18
|
-
console.log("erroris",message)
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
skt.on("close",function(){
|
|
22
|
-
console.log("socket closed")
|
|
23
|
-
})
|
|
24
|
-
skt.connect()
|
|
1
|
+
let DataSocket = require("../index.js").fyersDataSocket;
|
|
2
|
+
|
|
3
|
+
var skt= DataSocket.getInstance("")
|
|
4
|
+
|
|
5
|
+
skt.on("connect",function(){skt.subscribe(['NSE:IDEA-EQ',"NSE:SBIN-EQ"],false,1)
|
|
6
|
+
skt.mode(skt.FullMode,1)
|
|
7
|
+
console.log(skt.isConnected())
|
|
8
|
+
// skt.mode(skt.LiteMode,[11,12,13])
|
|
9
|
+
// skt.channelresume(2)
|
|
10
|
+
// skt.unsubscribe(['NSE:IDEA-EQ'],false,1)
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
skt.on("message",function(message){
|
|
14
|
+
console.log({"TEST":message})
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
skt.on("error",function(message){
|
|
18
|
+
console.log("erroris",message)
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
skt.on("close",function(){
|
|
22
|
+
console.log("socket closed")
|
|
23
|
+
})
|
|
24
|
+
skt.connect()
|
|
25
25
|
skt.autoreconnect()
|
package/sample/ordersocket.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
var fyersOrderSocket= require("../index.js").fyersOrderSocket
|
|
2
|
-
|
|
3
|
-
var skt=new fyersOrderSocket("
|
|
4
|
-
|
|
5
|
-
skt.on("error",function (errmsg) {
|
|
6
|
-
console.log(errmsg)
|
|
7
|
-
})
|
|
8
|
-
skt.on('general',function (msg) {
|
|
9
|
-
console.log(msg)
|
|
10
|
-
})
|
|
11
|
-
skt.on('connect',function () {
|
|
12
|
-
skt.subscribe([skt.orderUpdates,skt.tradeUpdates,skt.positionUpdates,skt.edis,skt.pricealerts])
|
|
13
|
-
console.log(skt.isConnected())
|
|
14
|
-
})
|
|
15
|
-
skt.on('close',function () {
|
|
16
|
-
console.log('closed')
|
|
17
|
-
})
|
|
18
|
-
skt.on('orders',function (msg) {
|
|
19
|
-
console.log("orders",msg)
|
|
20
|
-
})
|
|
21
|
-
skt.on('trades',function (msg) {
|
|
22
|
-
console.log('trades',msg)
|
|
23
|
-
})
|
|
24
|
-
skt.on('positions',function (msg) {
|
|
25
|
-
console.log('positions',msg)
|
|
26
|
-
})
|
|
27
|
-
skt.autoreconnect()
|
|
28
|
-
skt.connect()
|
|
29
|
-
|
|
1
|
+
var fyersOrderSocket= require("../index.js").fyersOrderSocket
|
|
2
|
+
|
|
3
|
+
var skt=new fyersOrderSocket("")
|
|
4
|
+
|
|
5
|
+
skt.on("error",function (errmsg) {
|
|
6
|
+
console.log(errmsg)
|
|
7
|
+
})
|
|
8
|
+
skt.on('general',function (msg) {
|
|
9
|
+
console.log(msg)
|
|
10
|
+
})
|
|
11
|
+
skt.on('connect',function () {
|
|
12
|
+
skt.subscribe([skt.orderUpdates,skt.tradeUpdates,skt.positionUpdates,skt.edis,skt.pricealerts])
|
|
13
|
+
console.log(skt.isConnected())
|
|
14
|
+
})
|
|
15
|
+
skt.on('close',function () {
|
|
16
|
+
console.log('closed')
|
|
17
|
+
})
|
|
18
|
+
skt.on('orders',function (msg) {
|
|
19
|
+
console.log("orders",msg)
|
|
20
|
+
})
|
|
21
|
+
skt.on('trades',function (msg) {
|
|
22
|
+
console.log('trades',msg)
|
|
23
|
+
})
|
|
24
|
+
skt.on('positions',function (msg) {
|
|
25
|
+
console.log('positions',msg)
|
|
26
|
+
})
|
|
27
|
+
skt.autoreconnect()
|
|
28
|
+
skt.connect()
|
|
29
|
+
|