Skip to content

Instantly share code, notes, and snippets.

@salanfe
Last active April 6, 2020 07:11
Show Gist options
  • Save salanfe/ef49a1acca1db5e4dab3292e56c692ba to your computer and use it in GitHub Desktop.
Save salanfe/ef49a1acca1db5e4dab3292e56c692ba to your computer and use it in GitHub Desktop.
kraken_rate_limit_test
package main
import (
"log"
"os"
"os/signal"
"syscall"
"time"
krakenapi "github.com/beldur/kraken-go-api-client"
)
var (
callPeriod = 1000 * time.Millisecond
)
func main() {
exit := make(chan os.Signal)
signal.Notify(exit, syscall.SIGINT, syscall.SIGTERM)
since := int64(1)
counter := 0
api := krakenapi.New("KEY", "SECRET")
ticker := time.NewTicker(callPeriod)
defer ticker.Stop()
currentCallTS := time.Now()
lastCallTS := currentCallTS
run := true
for run {
select {
case <-exit:
log.Println("exit signal received")
run = false
case <-ticker.C:
currentCallTS := time.Now()
response, err := api.Trades(krakenapi.XETHZEUR, since)
if err != nil {
log.Fatalf("counter=%d, error=%s", counter, err)
}
elapsedTime := currentCallTS.Sub(lastCallTS)
lastCallTS = currentCallTS
log.Printf("elapsedTime=%fs, since=%d, last=%d, len=%d, counter=%d", elapsedTime.Seconds(), since, response.Last, len(response.Trades), counter)
since = response.Last
counter++
}
}
log.Println("bye")
}
/*
=======================
=== terminal output ===
=======================
> go run main.go
2020/04/05 15:08:51 elapsedTime=1.000384s, since=1, last=1439315345846191902, len=1000, counter=0
2020/04/05 15:08:51 elapsedTime=0.999945s, since=1439315345846191902, last=1439484792551644881, len=1000, counter=1
2020/04/05 15:08:53 elapsedTime=1.000865s, since=1439484792551644881, last=1439571556364685313, len=1000, counter=2
2020/04/05 15:08:54 elapsedTime=1.003914s, since=1439571556364685313, last=1439726137832537406, len=1000, counter=3
2020/04/05 15:08:54 elapsedTime=0.999997s, since=1439726137832537406, last=1439927976765826164, len=1000, counter=4
2020/04/05 15:08:56 elapsedTime=1.000010s, since=1439927976765826164, last=1440392933829755478, len=1000, counter=5
2020/04/05 15:08:57 elapsedTime=0.999979s, since=1440392933829755478, last=1440654802375324420, len=1000, counter=6
2020/04/05 15:08:58 elapsedTime=0.997753s, since=1440654802375324420, last=1441046786718743426, len=1000, counter=7
2020/04/05 15:08:59 elapsedTime=0.997382s, since=1441046786718743426, last=1441536416078198172, len=1000, counter=8
2020/04/05 15:09:00 elapsedTime=1.004833s, since=1441536416078198172, last=1441914016596588364, len=1000, counter=9
2020/04/05 15:09:01 elapsedTime=0.995105s, since=1441914016596588364, last=1442139305158905052, len=1000, counter=10
2020/04/05 15:09:02 elapsedTime=1.000352s, since=1442139305158905052, last=1442454423689686295, len=1000, counter=11
2020/04/05 15:09:03 elapsedTime=1.000459s, since=1442454423689686295, last=1442922925355587774, len=1000, counter=12
2020/04/05 15:09:04 elapsedTime=1.004124s, since=1442922925355587774, last=1443161265430067813, len=1000, counter=13
2020/04/05 15:09:05 elapsedTime=0.995419s, since=1443161265430067813, last=1443477736352428678, len=1000, counter=14
2020/04/05 15:09:06 elapsedTime=1.000122s, since=1443477736352428678, last=1444122950679973408, len=1000, counter=15
2020/04/05 15:09:07 elapsedTime=1.000025s, since=1444122950679973408, last=1444844923719847691, len=1000, counter=16
2020/04/05 15:09:08 elapsedTime=0.999422s, since=1444844923719847691, last=1445249742012374546, len=1000, counter=17
2020/04/05 15:09:09 elapsedTime=1.005019s, since=1445249742012374546, last=1445547731196052660, len=1000, counter=18
2020/04/05 15:09:10 elapsedTime=0.999856s, since=1445547731196052660, last=1445878986050985893, len=1000, counter=19
2020/04/05 15:09:11 elapsedTime=0.997928s, since=1445878986050985893, last=1445969494471100668, len=1000, counter=20
2020/04/05 15:09:12 elapsedTime=1.002216s, since=1445969494471100668, last=1446073728702588291, len=1000, counter=21
2020/04/05 15:09:13 elapsedTime=0.996847s, since=1446073728702588291, last=1446186954987490424, len=1000, counter=22
2020/04/05 15:09:14 elapsedTime=1.003201s, since=1446186954987490424, last=1446319316490168945, len=1000, counter=23
2020/04/05 15:09:15 elapsedTime=0.995590s, since=1446319316490168945, last=1446506916584432627, len=1000, counter=24
2020/04/05 15:09:16 elapsedTime=1.002388s, since=1446506916584432627, last=1446640895363494546, len=1000, counter=25
2020/04/05 15:09:17 elapsedTime=0.997563s, since=1446640895363494546, last=1446828689464642107, len=1000, counter=26
2020/04/05 15:09:18 elapsedTime=1.004399s, since=1446828689464642107, last=1447015038369190766, len=1000, counter=27
2020/04/05 15:09:19 elapsedTime=0.999910s, since=1447015038369190766, last=1447093879681610247, len=1000, counter=28
2020/04/05 15:09:20 elapsedTime=0.996807s, since=1447093879681610247, last=1447239596766382220, len=1000, counter=29
2020/04/05 15:09:20 counter=30, error=Could not execute request! #7 ([EAPI:Rate limit exceeded])
exit status 1
*/
import krakenex
import decimal
import time
pair = 'XETHZEUR'
since = str(1)
k = krakenex.API()
def now():
return decimal.Decimal(time.time())
counter = 0
while True:
ret = k.query_public('Trades', data = {'pair': pair, 'since': since})
if len(ret['error']) > 0:
print("time=",now()," counter=",counter," err=", ret['error'])
break
last = ret['result']['last']
print("ts=%.5f, counter=%d, len=%d, since=%s, last=%s" %(now(), counter, len(ret['result'][pair]), since, last))
counter+=1
since = last
time.sleep(1)
'''
=======================
=== terminal output ===
=======================
> python3 main.py ~/python_sandbox/krakenex_test@mac14828.home
ts=1586155951.62600, counter=0, len=1000, since=1, last=1439315345846191902
ts=1586155952.92645, counter=1, len=1000, since=1439315345846191902, last=1439484792551644881
ts=1586155954.18856, counter=2, len=1000, since=1439484792551644881, last=1439571556364685313
ts=1586155955.48187, counter=3, len=1000, since=1439571556364685313, last=1439726137832537406
ts=1586155956.91667, counter=4, len=1000, since=1439726137832537406, last=1439927976765826164
ts=1586155958.35021, counter=5, len=1000, since=1439927976765826164, last=1440392933829755478
ts=1586155959.78385, counter=6, len=1000, since=1440392933829755478, last=1440654802375324420
ts=1586155961.11501, counter=7, len=1000, since=1440654802375324420, last=1441046786718743426
ts=1586155962.44626, counter=8, len=1000, since=1441046786718743426, last=1441536416078198172
ts=1586155963.74342, counter=9, len=1000, since=1441536416078198172, last=1441914016596588364
ts=1586155965.03213, counter=10, len=1000, since=1441914016596588364, last=1442139305158905052
ts=1586155966.73915, counter=11, len=1000, since=1442139305158905052, last=1442454423689686295
ts=1586155968.18142, counter=12, len=1000, since=1442454423689686295, last=1442922925355587774
ts=1586155969.46283, counter=13, len=1000, since=1442922925355587774, last=1443161265430067813
ts=1586155970.84315, counter=14, len=1000, since=1443161265430067813, last=1443477736352428678
ts=1586155972.27678, counter=15, len=1000, since=1443477736352428678, last=1444122950679973408
ts=1586155973.60813, counter=16, len=1000, since=1444122950679973408, last=1444844923719847691
ts=1586155974.87635, counter=17, len=1000, since=1444844923719847691, last=1445249742012374546
ts=1586155976.24205, counter=18, len=1000, since=1445249742012374546, last=1445547731196052660
ts=1586155977.90976, counter=19, len=1000, since=1445547731196052660, last=1445878986050985893
ts=1586155979.34285, counter=20, len=1000, since=1445878986050985893, last=1445969494471100668
ts=1586155980.77616, counter=21, len=1000, since=1445969494471100668, last=1446073728702588291
ts=1586155982.30904, counter=22, len=1000, since=1446073728702588291, last=1446186954987490424
ts=1586155983.64336, counter=23, len=1000, since=1446186954987490424, last=1446319316490168945
ts=1586155985.07798, counter=24, len=1000, since=1446319316490168945, last=1446506916584432627
ts=1586155986.81839, counter=25, len=1000, since=1446506916584432627, last=1446640895363494546
ts=1586155988.76346, counter=26, len=1000, since=1446640895363494546, last=1446828689464642107
ts=1586155990.19729, counter=27, len=1000, since=1446828689464642107, last=1447015038369190766
ts=1586155991.63072, counter=28, len=1000, since=1447015038369190766, last=1447093879681610247
ts=1586155992.96185, counter=29, len=1000, since=1447093879681610247, last=1447239596766382220
time= 1586155994.2895720005035400390625 counter= 30 err= ['EAPI:Rate limit exceeded']
'''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment