-
Notifications
You must be signed in to change notification settings - Fork 0
/
position.py
54 lines (43 loc) · 2.09 KB
/
position.py
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
class Position:
def __init__(self, order, openTime, slippage = 0, randomizeSlippage = True, point = 0.00001, stat = []):
self.order = order
if openTime:
self.openTime = openTime
else:
self.openTime = order.openTime
self.timeStopTime = order.positionTimeStopTime
if not order.positionTimeStopTime:
self.timeStopTime = -1
#if order.positionTimeStopTime:
# self.timeStopTime = openTime + timedelta(0, order.positionTimeStopTime * 60)
#else:
# self.timeStopTime = openTime + timedelta(100000)
self.openPrice = order.price
if slippage:
if randomizeSlippage:
from random import randrange
if self.order.orderType == 1:
self.openPrice = self.openPrice + randrange(0, (int(slippage / point))) * point
elif self.order.orderType == -1:
self.openPrice = self.openPrice - randrange(0, (int(slippage / point))) * point
else:
if self.order.orderType == 1:
self.openPrice = self.openPrice + self.slippage
elif self.order.orderType == -1:
self.openPrice = self.openPrice - self.slippage
self.stat = stat
def close(self, closePrice, closeTime, slippage = 0, randomizeSlippage = True, point = 0.00001):
self.closeTime = closeTime
self.closePrice = closePrice
if slippage:
if randomizeSlippage:
from random import randrange
if self.order.orderType == 1:
self.closePrice = self.closePrice - randrange(0, (int(slippage / point))) * point
elif self.order.orderType == -1:
self.closePrice = self.closePrice + randrange(0, (int(slippage / point))) * point
else:
if self.order.orderType == 1:
self.closePrice = self.closePrice - slippage
elif self.order.orderType == -1:
self.closePrice = self.closePrice + slippage