-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
56 lines (51 loc) · 1.62 KB
/
main.js
File metadata and controls
56 lines (51 loc) · 1.62 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
import fastify from 'fastify';
import {getAccBalance} from './saxo.js';
import {
calcAccRiskPct,
calcAccRewardPct,
calcLongPosProfit,
calcLongPosLoss,
calcLongPosRiskRewardRatio,
calcShortPosProfit,
calcShortPosLoss,
calcShortPosRiskRewardRatio,
} from './calculator.js';
const api = fastify();
const port = 3000;
api.get('/v1/calculate', async r => {
let {type, entry, takeProfit, stopLoss, quantity} = r.query;
entry = parseFloat(entry);
takeProfit = parseFloat(takeProfit);
stopLoss = parseFloat(stopLoss);
quantity = parseInt(quantity);
let b = 0.00;
await getAccBalance().then(r => {
b = r;
}).catch(e => console.error(e));
if (type === 'buy') {
let p = calcLongPosProfit(entry, takeProfit, quantity);
let l = calcLongPosLoss(entry, stopLoss, quantity);
return {
profit: p,
loss: l,
riskRewardRatio: calcLongPosRiskRewardRatio(entry, takeProfit, stopLoss, quantity),
accountLossPct: calcAccRiskPct(b, l),
accountGainPct: calcAccRewardPct(b, p)
};
} else {
let p = calcShortPosProfit(entry, takeProfit, quantity);
let l = calcShortPosLoss(entry, stopLoss, quantity);
return {
profit: p,
loss: l,
riskRewardRatio: calcShortPosRiskRewardRatio(entry, takeProfit, stopLoss, quantity),
accountLossPct: calcAccRiskPct(b, l),
accountGainPct: calcAccRewardPct(b, p)
};
}
});
api.listen({port}).then(() => {
console.log(`Listening on port ${port}`);
}).catch(e => {
throw e;
});