forked from zhangshuiyong/nodequant
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathNodeQuantApp.js
More file actions
110 lines (91 loc) · 4.2 KB
/
NodeQuantApp.js
File metadata and controls
110 lines (91 loc) · 4.2 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
/**
* Created by majc_tom on 2017/6/11.
*/
require("./common");
require("./systemConfig");
require("./userConfig");
let EventEmitter = require('events').EventEmitter;
let MainEngine=require("./engine/mainEngine");
let StrategyEngine=require("./engine/strategyEngine");
//事件触发器
global.AppEventEmitter = new EventEmitter();
class NodeQuantApp{
constructor(application){
console.log(">>>>>>>>>> "+AppName+" <<<<<<<<<<");
console.log("Date :" + new Date(Date.now()).toLocaleTimeString());
let sendMarketOrder = require('./routes/test/sendMarketOrder');
let sendLimitOrder = require('./routes/test/sendLimitOrder');
let sendStopLimitOrder = require('./routes/test/sendStopLimitOrder');
let sendMarketIfTouchedOrder = require('./routes/test/sendMarketIfTouchedOrder');
let sendFillOrKillLimitOrder = require('./routes/test/sendFillOrKillLimitOrder');
let sendFillAndKillLimitOrder = require('./routes/test/sendFillAndKillLimitOrder');
let cancelOrder = require('./routes/test/cancelOrder');
let subscribeContract = require('./routes/test/subscribeContract');
let unSubscribeContract = require('./routes/test/unSubscribeContract');
let queryCommissionRate=require('./routes/test/queryCommissionRate');
let queryInvestorPosition = require('./routes/test/queryInvestorPosition');
let queryTradingAccount = require('./routes/test/queryTradingAccount');
let getTradingDay = require('./routes/test/getTradingDay');
application.use('/sendMarketOrder',sendMarketOrder);
application.use('/sendLimitOrder',sendLimitOrder);
application.use('/sendStopLimitOrder',sendStopLimitOrder);
application.use('/sendMarketIfTouchedOrder',sendMarketIfTouchedOrder);
application.use('/sendFillOrKillLimitOrder',sendFillOrKillLimitOrder);
application.use('/sendFillAndKillLimitOrder',sendFillAndKillLimitOrder);
application.use('/cancelOrder',cancelOrder);
application.use('/subscribeContract',subscribeContract);
application.use('/unSubscribeContract',unSubscribeContract);
application.use('/queryCommissionRate',queryCommissionRate);
application.use('/queryInvestorPosition',queryInvestorPosition);
application.use('/queryTradingAccount',queryTradingAccount);
application.use('/getTradingDay',getTradingDay);
let redis =require("redis");
//初始化配置系统数据库
this.SystemDBClient = redis.createClient(System_DBConfig.Port,System_DBConfig.Host);
if(System_DBConfig.Password!==undefined && System_DBConfig.Password!=="")
{
this.SystemDBClient.auth(System_DBConfig.Password);
}
this.SystemDBClient.on("error", function (err) {
console.log("系统数据库出错,SystemDBClient Error " + err);
});
//初始化配置行情数据库
try
{
if(MarketData_DBConfig!==undefined && MarketData_DBConfig.Port!==undefined && MarketData_DBConfig.Host !== undefined)
{
let InfluxDB = require('./model/influxdb/influxdb');
this.MarketDataDBClient=new InfluxDB();
}
}catch(err)
{
console.log("初始化行情数据库出错:" + err);
}
this.StrategyEngine=new StrategyEngine();
//上层引擎先实例化
//主引擎负责启动底层各个客户端,还有启动上层的引擎
//用于实现多策略,多品种。一个策略实例---只能交易一个品种?mq可以一个策略接收多个品种的Tick
this.MainEngine=new MainEngine();
}
Start()
{
if(this.MarketDataDBClient)
{
//数据库启动,主引擎才启动
this.MarketDataDBClient.Start(function () {
global.Application.MainEngine.Start();
});
}else
{
global.Application.MainEngine.Start();
}
}
Exit()
{
console.log('NodeQuant Exit');
global.Application.MainEngine.Stop(MainEngineStatus.Stop);
// 关闭数据库连接(RedisDB)
this.SystemDBClient.quit();
}
}
module.exports = NodeQuantApp;