Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- #запрашивает баланс пользователя
- #проходит tkPar читает настройки, с биржи цену, ставти если нужно ордера
- #ордера не снимает и не учитывает, на ошибки забивает, за спредом не следит!!!
- import ssl
- import json
- import time
- import hmac
- import hashlib
- import urllib
- import urllib2
- from decimal import *
- #create by reddish111 ETH-0x394b570584F2D37D441E669e74563CD164142930 BTC-12r2MkL2BLtYasUGxysngEz1uJTpvB1vQE like cupone
- # Replace these with your own API key data
- wexAKey = 'your-api-key-here'
- wexASec = 'your-api-secret-here'
- #кофициент и вычеты балансов 'min_amount',cof=b2/b1,min_b1,min_b2
- tkPar={'usdet_usd':['0.1','1','0','0'],'ruret_rur':['1','1.8','0','3000']}
- __nonce=0
- def nonce(mul=1):
- global __nonce
- nonce=int(time.time()*mul)
- if nonce<=__nonce:
- nonce=__nonce+1
- __nonce=nonce
- return nonce
- def rqurl(url,key='',secret='',param=''): #(Low Level API call)
- ps={}
- hd={'User-Agent':'bot','Content-type':'application/x-www-form-urlencoded'}
- if param!='':
- param['nonce']=nonce()
- ps=urllib.urlencode(param)
- sig = hmac.new(secret,ps, digestmod=hashlib.sha512).hexdigest()
- hd.update({'Key': key,'Sign': sig,}) #'nonce':nonce()
- url='https://wex.nz/tapi/'
- else:
- url='https://wex.nz/api/3/'+url
- rop = urllib2.urlopen(urllib2.Request(url, ps,hd),context=ssl._create_unverified_context())
- data = json.loads(rop.read())
- rop.close()
- return data
- def rqurl2(met,par={}): #(trade api)
- par['method']=met
- res=rqurl('',wexAKey,wexASec,par)
- return res
- def dds(par): #конверт в dec через str
- ret=Decimal(str(par))
- return ret
- def runBot():
- fpr='' #полный список пар для запроса
- for pr in tkPar:
- fpr=pr if fpr=='' else fpr+'-'+pr
- dep=rqurl('depth/'+fpr) #информацию о активных ордерах пары
- bal=rqurl2('getInfo')
- for pr in tkPar: #проверить балансировку и если надо сделать ордер
- c1,c2=pr.split('_') #названия валют пары
- bf=bal['return']['funds']
- tp=tkPar[pr]
- b1=dds(bf[c1])-dds(tp[2])
- b2=dds(bf[c2])-dds(tp[3])
- prs=dep[pr]['asks'][0]
- prb=dep[pr]['bids'][0]
- pp=dds(tp[1])
- dprs=dds(prs[0])
- dprb=dds(prb[0])
- bm=b1*pp*dprs
- bl=b1*pp*dprb
- dtp=dds(tp[0])
- print pr
- # print(b1,b2,bm,bl,dtp) #тут ещё условия для оптимизации
- if b2<bm: #продажа или покупка что то 1!!!
- am=((bm-b2)/(dprs*2)).quantize(dtp)
- if am<dtp: #меньше min не ставить
- continue
- res=rqurl2('Trade',{'pair':pr,'type':'sell','rate':str(dprs),'amount':str(am)})
- print 'sell',am #,res
- else:
- if b2>bl:
- am=((b2-bl)/(2*dprb)).quantize(dtp)
- if am<dtp: #меньше min не ставить
- continue
- res=rqurl2('Trade',{'pair':pr,'type':'buy','rate':str(dprb),'amount':str(am)})
- print 'buy',am #,res
- #если не учитывать открытые ордера то если баланс=0 с 1 стороны выставит весь баланс 2ой в ордера!!!
- #args=sys.argv #короче для старта должно быть примерно cof=b2/b1
- if __name__ == '__main__':
- for i in range(100000):
- print i
- try:
- runBot()
- except:
- print 'pass some erorr'
- time.sleep(5) #спать 10сек
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement