Skip to content

Commit dd8dc48

Browse files
committed
changes;
1 parent 99ebf71 commit dd8dc48

File tree

8 files changed

+83122
-71
lines changed

8 files changed

+83122
-71
lines changed

ADANIENT_F1.xlsx

3.98 MB
Binary file not shown.

classes/DayEntry.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ def reset(self):
2828

2929
def printOpenTrade(self):
3030
if self.currentTrade:
31-
print 'Enter Price: {}, Enter Time: {}, TradeType: {}'.format(self.currentTrade.enterPrice, self.currentTrade.timeEntered, self.currentTrade.tradeType)
31+
print 'OpenTrade - Enter Price: {}, Enter Time: {}, TradeType: {}'.format(self.currentTrade.enterPrice, self.currentTrade.timeEntered, self.currentTrade.tradeType)
32+
33+
def printAllTrades(self, verbose = False):
34+
for trade in self.trades:
35+
trade.toString(verbose)
3236

3337
# @property
3438
# def enterPrice(self):

classes/RenkoEntry.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
from utils.TimeUtil import revConvertTime
2+
13
class Renko:
2-
def __init__(self, low, high, renkoType):
4+
def __init__(self, low, high, renkoType, time):
35
self.low = low
46
self.high = high
57
self.renkoType = renkoType
8+
self.time = time
69

710
def toString(self, verbose):
811
if verbose:
9-
print('low: {}, high: {}, type: {}'.format(self.low, self.high, self.renkoType))
12+
print('time: {}, low: {}, high: {}, type: {}'.format(revConvertTime(self.time), self.low, self.high, self.renkoType))

classes/TradeEntry.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,11 @@ def exitTrade(self, exitType, timeExited, eodPrice, verbose = False):
4242
self.calculateProfitPercentage(self.enterPrice, self.exitPrice, brokerage)
4343
elif self.tradeType == -1:
4444
self.calculateProfitPercentage(self.exitPrice, self.enterPrice, brokerage)
45+
self.toString(verbose)
46+
47+
def toString(self, verbose = False):
4548
if verbose:
46-
print(self.tradeType, self.enterPrice, self.exitPrice, revConvertTime(self.timeEntered), revConvertTime(self.timeExited), self.profitPercentage)
49+
print("{:d}, {:.4f}, {:.4f}, {:s}, {:s}, {:.4f}".format(self.tradeType, self.enterPrice, self.exitPrice, revConvertTime(self.timeEntered), revConvertTime(self.timeExited), self.profitPercentage))
4750

4851
def calculateProfitPercentage(self, buyPrice, sellPrice, brokerage):
4952
self.profitPercentage = 100*(sellPrice*(1-brokerage) - buyPrice)/(1.0*buyPrice)

classes/YearEntry.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Year:
2+
def __init__(self):
3+
self.days = []
4+
self.trades = []
5+
6+
def dayOver(self, day):
7+
self.days.append(day)
8+
map(lambda trade : self.trades.append(trade), day.trades)

eom_renko_multiStock.ipynb

Lines changed: 83037 additions & 46 deletions
Large diffs are not rendered by default.

eom_renko_multiStock.py

Lines changed: 59 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
# coding: utf-8
33

4-
# In[37]:
4+
# In[12]:
55

66

77
import time
@@ -17,10 +17,11 @@
1717
from utils.FileUtil import getFutureList
1818
from collections import deque
1919
from utils.Constants import futuresList
20+
from classes.YearEntry import Year
2021
# import copy
2122

2223

23-
# In[38]:
24+
# In[13]:
2425

2526

2627
def getSellEndOfDay(currentDate, stockType):
@@ -35,22 +36,26 @@ def renkoExperiment(paramList, stockType = 'FUTURES', verbose=False):
3536
newDay = Day(0, money, getSellEndOfDay(dateList[0], stockType))
3637
renkoDeque = deque(maxlen=paramEntry.stepCount)
3738
paramEntry.setBrickHeight(df['openingPrice'][0])
39+
year = Year()
3840
for date in dateList:
3941
new_df = df[(df.date == date)]
4042
day = renkoScript(new_df, paramEntry, newDay, renkoDeque, stockType, verbose)
41-
# if verbose:
42-
# print(date, newDay.money, day.money, day.dailyTrades)
43-
# day.printOpenTrade()
43+
if verbose:
44+
print(date, newDay.money, day.money, day.dailyTrades)
45+
day.printOpenTrade()
4446
sellEndOfDay = getSellEndOfDay(date, stockType)
45-
newDay = day.initializeNextDay(sellEndOfDay)
47+
newDay = day.initializeNextDay(sellEndOfDay)
48+
# day.printAllTrades(True)
49+
# year.dayOver(day)
50+
4651
yearlyProfitPercentage = (day.money - 1) * 100
4752
paramEntry.profitPercentage = yearlyProfitPercentage
4853
paramEntry.toString()
49-
54+
5055
return paramEntry
5156

5257

53-
# In[39]:
58+
# In[14]:
5459

5560

5661
def bruteAnalysis(stockName, parameterDict, pool, threadPoolSize):
@@ -79,18 +84,18 @@ def bruteAnalysis(stockName, parameterDict, pool, threadPoolSize):
7984
return csvList
8085

8186

82-
# In[43]:
87+
# In[15]:
8388

8489

8590
def getParameterGrid(parameterDict):
8691
parameterGrid = ParameterGrid(parameterDict)
8792
return parameterGrid
8893

8994
def getRenkoParameterDict():
90-
brickHeightPercentage = [0.05, 0.1, 0.15, 0.2, 0.25, 0.3]
91-
stepCount = [3,4,5,7]
92-
# brickHeightPercentage = [0.1]
93-
# stepCount = [3]
95+
# brickHeightPercentage = [0.05, 0.1, 0.15, 0.2, 0.25, 0.3]
96+
# stepCount = [3,4,5,7]
97+
brickHeightPercentage = [0.05]
98+
stepCount = [3]
9499

95100
parameterDict = {
96101
'brickHeightPercentage' : brickHeightPercentage,
@@ -99,14 +104,14 @@ def getRenkoParameterDict():
99104
return parameterDict
100105

101106

102-
# In[44]:
107+
# In[16]:
103108

104109

105110
# stockList = futuresList
106-
stockList= ['RELIANCE']
111+
stockList= ['ADANIENT_F1']
107112

108113

109-
# In[45]:
114+
# In[17]:
110115

111116

112117
threadPoolSize = 24
@@ -124,7 +129,7 @@ def getRenkoParameterDict():
124129
pool.join()
125130

126131

127-
# In[6]:
132+
# In[ ]:
128133

129134

130135
# parameterDict = getRenkoParameterDict()
@@ -167,3 +172,40 @@ def getRenkoParameterDict():
167172

168173
len(futuresList)
169174

175+
176+
# In[14]:
177+
178+
179+
a = [1,2]
180+
b = [1,3,4]
181+
182+
183+
# In[15]:
184+
185+
186+
c = []
187+
188+
189+
# In[16]:
190+
191+
192+
map(lambda x : c.append(x), a)
193+
194+
195+
# In[17]:
196+
197+
198+
c
199+
200+
201+
# In[18]:
202+
203+
204+
map(lambda x : c.append(x), b)
205+
206+
207+
# In[19]:
208+
209+
210+
c
211+

scripts/dayScript.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@ def dayScript(df, param, day, stockType, verbose = False):
5757

5858
def getNewRenko(lastRenko, minute, brickHeight):
5959
if minute.high > lastRenko.high + brickHeight:
60-
renko = Renko(lastRenko.high, lastRenko.high + brickHeight, 1)
60+
renko = Renko(lastRenko.high, lastRenko.high + brickHeight, 1, minute.time)
6161
elif minute.low < lastRenko.low - brickHeight:
62-
renko = Renko(lastRenko.low - brickHeight, lastRenko.low, -1)
62+
renko = Renko(lastRenko.low - brickHeight, lastRenko.low, -1, minute.time)
6363
else:
6464
return None
6565
return renko
@@ -77,7 +77,7 @@ def generateRenko(minute, renkoDeque, brickHeight, stepCount, verbose):
7777
# import pdb;pdb.set_trace()
7878
size = len(renkoDeque)
7979
if size == 0:
80-
newRenko = Renko(minute.openingPrice, minute.openingPrice, 0)
80+
newRenko = Renko(minute.openingPrice, minute.openingPrice, 0, minute.time)
8181
newRenko.toString(verbose)
8282
renkoDeque.append(newRenko)
8383
else:
@@ -111,7 +111,7 @@ def renkoScript(df, param, day, renkoDeque, stockType, verbose = False):
111111
marketOpen, marketClose = getMarketDetails(stockType)
112112
for row in df.iterrows():
113113
minute = Minute(row)
114-
minute.toString(verbose)
114+
# minute.toString(verbose)
115115
renkoDeque = generateRenko(minute, renkoDeque, param.brickHeight, param.stepCount, verbose)
116116
if len(renkoDeque) == param.stepCount:
117117
if marketOpen <= minute.time < marketClose:

0 commit comments

Comments
 (0)