Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.05 KB | None | 0 0
  1. import requests
  2. import hmac
  3. import hashlib
  4. import time
  5. import json
  6. import math
  7. from operator import sub
  8. period = 3600
  9. secret = 'TaRJU7uNMLYgxFs4kPiqAlnJXK6bAiuLUbvQ'
  10. key='gHNDRhngFgDJ4ufwCY'
  11. http_url = 'https://api-testnet.bybit.com/v2/'
  12.  
  13.  
  14.  
  15. def http_request(method,path,params):
  16. expires = str(int(round(time.time())) + 2000)
  17. nonce = str(int(round(time.time())) + 1)
  18. request = path+expires
  19. signature = hmac.new(secret.encode(), request.encode(), hashlib.sha256).hexdigest()
  20. headers = {
  21. 'content-type': 'application/json,application/x-www-form-urlencoded',
  22. 'api-key': key,
  23. 'api-nonce': nonce,
  24. 'api-signature': signature,
  25. 'accept': 'application/json',
  26. 'api-expires': expires
  27. }
  28. if 'POST' in path:
  29. response = requests.post(http_url+method, params=params, headers=headers).json()
  30. elif 'GET' in path:
  31. response = requests.get(http_url + method, params=params, headers=headers).json()
  32. elif 'PUT' in path:
  33. response = requests.put(http_url + method, params=params, headers=headers).json()
  34. elif 'DELETE' in path:
  35. response = requests.delete(http_url + method, params=params, headers=headers).json()
  36. return response
  37.  
  38. def Get_Kline(symbol, interval,brs):
  39. bars = brs*2
  40. if bars >200:
  41. return 'Too long kline call :'+str(bars),'have to be less than 200'
  42. if interval == 'D':
  43. cinterval = 1440
  44. elif interval == 'M':
  45. cinterval = 43200
  46. elif interval == 'Y':
  47. cinterval= 518400
  48. else:
  49. cinterval = interval
  50. kserie = []
  51. kperiod = str(int(time.time() - ((cinterval*60)*bars)))
  52. kdata = requests.get('https://api-testnet.bybit.com/v2/public/kline/list?symbol='+symbol+'&interval='+str(interval)+'&from='+kperiod+'&limit='+str(bars)).json()
  53. serie = kdata.get('result')
  54. for br in serie:
  55. prices = [float(br.get('open')),float(br.get('high')),float(br.get('low')),float(br.get('close')),float(br.get('volume')),float(br.get('open_time'))]
  56. #print(prices)
  57. kserie.append(prices)
  58. kserie.reverse()
  59. data = json.load(open('price.json'))
  60. data[str(interval)] = kserie
  61. with open('price.json', 'w') as ps:
  62. json.dump(data, ps,indent=2)
  63. return kserie
  64. #
  65. #
  66. #
  67. #
  68. # # print(serie)
  69. #
  70. #
  71. #
  72. print(Get_Kline('BTCUSD',5,12))
  73. def wmats(ts):
  74. csl = 0
  75. znm = 0
  76. for p, i in enumerate(reversed(ts)):
  77. csl += ((p + 1) * i)
  78. znm += p + 1
  79. return round((csl / znm), 1)
  80.  
  81.  
  82. def Wma(interval,brs,source):
  83. wmaserie = []
  84. bars = brs*2
  85. with open('price.json') as wprs:
  86. wdata = json.load(wprs).get(str(interval))
  87. #print(wdata)
  88. sprc = []
  89. for counter, prc in enumerate(wdata):
  90. sprc.append(prc[source])
  91. if counter >=(bars-1):
  92. break
  93. #print(sprc)
  94. pointer = 0
  95. for itr in range(brs):
  96. cts = []
  97. csl = 0
  98. znm = 0
  99. for pnt in range(pointer,(pointer+brs)):
  100. cts.append(sprc[pnt])
  101. #print(cts)
  102. for p,i in enumerate(reversed(cts)):
  103. #print(csl,' ',znm)
  104. #print(p+1,'*',i)
  105. csl+=((p+1)*i)
  106. znm +=p+1
  107. #print(csl,' ',znm)
  108. #print('=====================')
  109. wmaserie.append(round((csl/znm),1))
  110. pointer+=1
  111. return wmaserie
  112.  
  113.  
  114. def HullMA(interval,brs,source):
  115. hma=[]
  116. bars = brs * 2
  117. with open('price.json') as hprs:
  118. hdata = json.load(hprs).get(str(interval))
  119. hprc = []
  120. for counter, prc in enumerate(hdata):
  121. hprc.append(prc[source])
  122. if counter >= (bars - 1):
  123. break
  124. hpointer = 0
  125. for hitr in range(brs):
  126. hserie = []
  127. for witr in range(int(math.sqrt(brs))):
  128. htss = []
  129. htsl = []
  130. for pnt in range(hpointer,(hpointer+round(brs/2))):
  131. htss.append(hprc[pnt])
  132. wma1 = 2*wmats(htss)
  133. for pnt2 in range(hpointer,hpointer+(brs-1)):
  134. htsl.append(hprc[pnt2])
  135. #print(hpointer, ' ',hpointer+brs)
  136. wma2 = wmats(htsl)
  137. hsrc = wma1-wma2
  138. hserie.append(hsrc)
  139. hpointer+= 1
  140. hma.append(wmats(hserie))
  141. hpointer-=int((math.sqrt(brs))-1)
  142. #print(hpointer)
  143. return hma
  144.  
  145. # print('ass',Wma(interval,round(brs/2),source))
  146. # wma1 = [2* w for w in Wma(interval,round(brs/2),source)]
  147. # print('kss',wma1)
  148. # wma2 = Wma(interval,brs,source)
  149. # print('w2',wma2)
  150. # hsrc = list(map(sub,wma1,wma2))
  151. # print('hsrc', hsrc)
  152. # hserie = []
  153. # for counter, prc in enumerate(hsrc):
  154. # hserie.append(prc)
  155. # if counter >= (math.sqrt(brs)-1 ):
  156. # break
  157. # print('hs',hserie)
  158. # csl = 0
  159. # znm = 0
  160. # for p, i in enumerate(reversed(hserie)):
  161. # # print(csl,' ',znm)
  162. # # print(p+1,'*',i)
  163. # csl += ((p + 1) * i)
  164. # znm += p + 1
  165. # # print(csl,' ',znm)
  166. # # print('=====================')
  167. # print(round((csl / znm), 1))
  168. # #hullma = wma(2 * wma(interval, brs / 2, 3) - wma(interval, brs, 3), round(sqrt(length)))
  169. # for counter, prc in enumerate(hsrc):
  170. # hserie.append(prc)
  171. # if counter >= (math.sqrt(brs) - 1):
  172. # break
  173. # hma.append(wmats(hserie))
  174. # hpointer += 1
  175.  
  176. print(HullMA(5,6,3))
  177.  
  178. # def Hma(interval,bars,source):
  179. # for price,ind in enumerate(wdata):
  180. # print(price,ind)
  181.  
  182. # wma = Wma(5,12,3)
  183.  
  184.  
  185. # fr = str(int(time.time()-period))
  186. # print(fr)
  187. # print(time.time())
  188. # print(http_request('public/kline/list','GET/v2/public/kline/list?symbol=BTCUSD&interval=1&from='+fr+'&limit=60','symbol=BTCUSD&interval=1&from='+fr+'&limit=60'))
  189. # //@version=4
  190. # study(title = "Hull MA", shorttitle="HMA", overlay = true)
  191. # length = input(9, minval=1)
  192. # src = input(close, title="Source")
  193. # hma1 = Wma(5,6,3)
  194. # hma2 = Wma(5,12,3)
  195. # # hullma = wma(2*wma(5, 12/2,3)-wma(5,12,3), round(sqrt(length)))
  196. # hma = (hma1-hma2)+hma1
  197. # print(hma)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement