Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import hmac
- import hashlib
- import time
- import json
- import math
- from operator import sub
- period = 3600
- secret = 'TaRJU7uNMLYgxFs4kPiqAlnJXK6bAiuLUbvQ'
- key='gHNDRhngFgDJ4ufwCY'
- http_url = 'https://api-testnet.bybit.com/v2/'
- def http_request(method,path,params):
- expires = str(int(round(time.time())) + 2000)
- nonce = str(int(round(time.time())) + 1)
- request = path+expires
- signature = hmac.new(secret.encode(), request.encode(), hashlib.sha256).hexdigest()
- headers = {
- 'content-type': 'application/json,application/x-www-form-urlencoded',
- 'api-key': key,
- 'api-nonce': nonce,
- 'api-signature': signature,
- 'accept': 'application/json',
- 'api-expires': expires
- }
- if 'POST' in path:
- response = requests.post(http_url+method, params=params, headers=headers).json()
- elif 'GET' in path:
- response = requests.get(http_url + method, params=params, headers=headers).json()
- elif 'PUT' in path:
- response = requests.put(http_url + method, params=params, headers=headers).json()
- elif 'DELETE' in path:
- response = requests.delete(http_url + method, params=params, headers=headers).json()
- return response
- def Get_Kline(symbol, interval,brs):
- bars = brs*2
- if bars >200:
- return 'Too long kline call :'+str(bars),'have to be less than 200'
- if interval == 'D':
- cinterval = 1440
- elif interval == 'M':
- cinterval = 43200
- elif interval == 'Y':
- cinterval= 518400
- else:
- cinterval = interval
- kserie = []
- kperiod = str(int(time.time() - ((cinterval*60)*bars)))
- kdata = requests.get('https://api-testnet.bybit.com/v2/public/kline/list?symbol='+symbol+'&interval='+str(interval)+'&from='+kperiod+'&limit='+str(bars)).json()
- serie = kdata.get('result')
- for br in serie:
- 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'))]
- #print(prices)
- kserie.append(prices)
- kserie.reverse()
- data = json.load(open('price.json'))
- data[str(interval)] = kserie
- with open('price.json', 'w') as ps:
- json.dump(data, ps,indent=2)
- return kserie
- #
- #
- #
- #
- # # print(serie)
- #
- #
- #
- print(Get_Kline('BTCUSD',5,12))
- def wmats(ts):
- csl = 0
- znm = 0
- for p, i in enumerate(reversed(ts)):
- csl += ((p + 1) * i)
- znm += p + 1
- return round((csl / znm), 1)
- def Wma(interval,brs,source):
- wmaserie = []
- bars = brs*2
- with open('price.json') as wprs:
- wdata = json.load(wprs).get(str(interval))
- #print(wdata)
- sprc = []
- for counter, prc in enumerate(wdata):
- sprc.append(prc[source])
- if counter >=(bars-1):
- break
- #print(sprc)
- pointer = 0
- for itr in range(brs):
- cts = []
- csl = 0
- znm = 0
- for pnt in range(pointer,(pointer+brs)):
- cts.append(sprc[pnt])
- #print(cts)
- for p,i in enumerate(reversed(cts)):
- #print(csl,' ',znm)
- #print(p+1,'*',i)
- csl+=((p+1)*i)
- znm +=p+1
- #print(csl,' ',znm)
- #print('=====================')
- wmaserie.append(round((csl/znm),1))
- pointer+=1
- return wmaserie
- def HullMA(interval,brs,source):
- hma=[]
- bars = brs * 2
- with open('price.json') as hprs:
- hdata = json.load(hprs).get(str(interval))
- hprc = []
- for counter, prc in enumerate(hdata):
- hprc.append(prc[source])
- if counter >= (bars - 1):
- break
- hpointer = 0
- for hitr in range(brs):
- hserie = []
- for witr in range(int(math.sqrt(brs))):
- htss = []
- htsl = []
- for pnt in range(hpointer,(hpointer+round(brs/2))):
- htss.append(hprc[pnt])
- wma1 = 2*wmats(htss)
- for pnt2 in range(hpointer,hpointer+(brs-1)):
- htsl.append(hprc[pnt2])
- #print(hpointer, ' ',hpointer+brs)
- wma2 = wmats(htsl)
- hsrc = wma1-wma2
- hserie.append(hsrc)
- hpointer+= 1
- hma.append(wmats(hserie))
- hpointer-=int((math.sqrt(brs))-1)
- #print(hpointer)
- return hma
- # print('ass',Wma(interval,round(brs/2),source))
- # wma1 = [2* w for w in Wma(interval,round(brs/2),source)]
- # print('kss',wma1)
- # wma2 = Wma(interval,brs,source)
- # print('w2',wma2)
- # hsrc = list(map(sub,wma1,wma2))
- # print('hsrc', hsrc)
- # hserie = []
- # for counter, prc in enumerate(hsrc):
- # hserie.append(prc)
- # if counter >= (math.sqrt(brs)-1 ):
- # break
- # print('hs',hserie)
- # csl = 0
- # znm = 0
- # for p, i in enumerate(reversed(hserie)):
- # # print(csl,' ',znm)
- # # print(p+1,'*',i)
- # csl += ((p + 1) * i)
- # znm += p + 1
- # # print(csl,' ',znm)
- # # print('=====================')
- # print(round((csl / znm), 1))
- # #hullma = wma(2 * wma(interval, brs / 2, 3) - wma(interval, brs, 3), round(sqrt(length)))
- # for counter, prc in enumerate(hsrc):
- # hserie.append(prc)
- # if counter >= (math.sqrt(brs) - 1):
- # break
- # hma.append(wmats(hserie))
- # hpointer += 1
- print(HullMA(5,6,3))
- # def Hma(interval,bars,source):
- # for price,ind in enumerate(wdata):
- # print(price,ind)
- # wma = Wma(5,12,3)
- # fr = str(int(time.time()-period))
- # print(fr)
- # print(time.time())
- # 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'))
- # //@version=4
- # study(title = "Hull MA", shorttitle="HMA", overlay = true)
- # length = input(9, minval=1)
- # src = input(close, title="Source")
- # hma1 = Wma(5,6,3)
- # hma2 = Wma(5,12,3)
- # # hullma = wma(2*wma(5, 12/2,3)-wma(5,12,3), round(sqrt(length)))
- # hma = (hma1-hma2)+hma1
- # print(hma)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement