rapflag 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2b8cff390019633066b98ec809a1b2456eb34aa
4
- data.tar.gz: 9c18b14083112387fa4f8b6974fb87eac80da22d
3
+ metadata.gz: cf77cd7aa17cec03df50282786fae729745f32c9
4
+ data.tar.gz: 403016b3360c78132875e77fada372c6a7a87f17
5
5
  SHA512:
6
- metadata.gz: 768075044d00f00929d92ec72b0ed1392a6576c8b5825bb84cb384dbe3db21ce4370b6f2cca5315558ffae822fee645d2e8e0a9a1c86a0621ea49784d79c7947
7
- data.tar.gz: 72351fc81bc992b056f530d4edf12b3123876a1af46781cc0027136b78bfb704967b6a7d39fc2005677131683954da62b496fcbb61fa672828ddef2e8d4aea5d
6
+ metadata.gz: fc5a72e89543897293f2656d11427a51605c79cd54cf5f6455567bc0c76ac152c6df06dbd1ee5fffee594199385d80aae421796997c29499c94f65bcab25270d
7
+ data.tar.gz: ad801b4f615cb0d5611eb5c206cad24ebdfeb18d3956a3ea3a77faecf27eb20e84dd36c5abe4bdda5a02705229accc5f2f5bed05c807687ce3db03c457fce860
data/.gitignore CHANGED
@@ -1,4 +1,7 @@
1
1
  etc/
2
+ pkg/
3
+ *.log
2
4
  *.csv
3
5
  *#
4
- output
6
+ output/
7
+ Gemfile.lock
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
+ # gem 'poloniex', :path => '../poloniex'
5
+ gem 'poloniex', :git => 'https://github.com/ngiger/poloniex.git'
data/History.md ADDED
@@ -0,0 +1,5 @@
1
+ # 0.0.3 of 2017.04.02
2
+
3
+ * Output files start with the currency name
4
+
5
+
data/bin/rapflag CHANGED
@@ -3,7 +3,8 @@ dir = File.expand_path(File.dirname(File.dirname(__FILE__)))
3
3
  $LOAD_PATH << File.join(dir, 'lib')
4
4
  require 'rapflag/version'
5
5
  require 'rapflag/config'
6
- require 'rapflag/fetch'
6
+ require 'rapflag/bitfinex'
7
+ require 'rapflag/poloniex'
7
8
  require 'trollop'
8
9
 
9
10
  begin
@@ -13,13 +14,24 @@ end
13
14
 
14
15
  Opts = Trollop::options do
15
16
  opt :clean, "Create summary of transactions by day"
17
+ opt :poloniex, "Use Poloniex API instead of Bitfinex API"
18
+ opt :dump, "Use Poloniex API and dump history into CSV files"
16
19
  end
17
20
 
18
21
  RAPFLAG::Wallets.each do |wallet|
19
22
  RAPFLAG::Config['currencies'].each do |currency|
20
- rap = RAPFLAG::History.new(wallet, currency)
21
- rap.fetch_csv_history
22
- rap.create_csv_file
23
- rap.create_summary if Opts[:clean]
23
+ if Opts[:poloniex]
24
+ crypto_api = RAPFLAG::Poloniex.new(wallet, currency)
25
+ else
26
+ crypto_api = RAPFLAG::Bitfinex.new(wallet, currency)
27
+ end
28
+ if Opts[:dump]
29
+ crypto_api.dump_history
30
+ exit(0)
31
+ end
32
+ crypto_api.fetch_csv_history
33
+ exit(0) if Opts[:poloniex]
34
+ crypto_api.create_csv_file
35
+ crypto_api.create_summary if Opts[:clean]
24
36
  end
25
37
  end
@@ -418,4 +418,48 @@ http_interactions:
418
418
  string: "[[1489363200000,0.8717,0.8793,0.8793,0.8652,28134.30007514],[1489276800000,0.875,0.8717,0.879,0.85101,243519.87684517],[1489190400000,0.86864,0.87499,0.9,0.86,441408.45443568],[1489104000000,0.8741,0.867,0.9,0.851,923547.49462454],[1489017600000,0.86447,0.8771,0.8849,0.8601,69778.53551027],[1488931200000,0.888,0.87652,0.8999,0.86,253035.27171289],[1488844800000,0.9,0.88859,0.9022,0.871,105261.98010844],[1488758400000,0.89003,0.895,0.90285,0.87633,336521.30762563],[1488672000000,0.89001,0.89003,0.8985,0.89,56086.79270542],[1488585600000,0.87989,0.89,0.902,0.8652,289529.60523622],[1488499200000,0.8902,0.8825,0.893,0.864,540453.19236899],[1488412800000,0.89391,0.89,0.9,0.87,468911.9407224],[1488326400000,0.8944,0.8851,0.8987,0.885,63532.34127196],[1488240000000,0.875,0.8997,0.91,0.87291,566659.07956909],[1488153600000,0.869,0.87012,0.87889,0.8627,144892.27628249],[1488067200000,0.851,0.869,0.878,0.8484,515905.82224763],[1487980800000,0.8499,0.8542,0.8547,0.84,115783.00365869],[1487894400000,0.8398,0.845,0.8548,0.82881,300575.72800591],[1487808000000,0.84181,0.839,0.8488,0.83035,75316.36503842],[1487721600000,0.84979,0.8335,0.8499,0.82,145363.28163461],[1487635200000,0.85,0.8445,0.85067,0.832,251648.99451942],[1487548800000,0.84379,0.85,0.85,0.84,109452.47640138],[1487462400000,0.838,0.84,0.84499,0.83301,28404.95416129],[1487376000000,0.8342,0.838,0.8408,0.832,49996.59123255],[1487289600000,0.8365,0.836,0.85,0.82732,245950.8587662],[1487203200000,0.82361,0.83,0.84,0.81316,202499.34273437],[1487116800000,0.81497,0.8282,0.833,0.81081,84004.02947833],[1487030400000,0.819,0.8154,0.8331,0.81,111489.34342463],[1486944000000,0.8011,0.82,0.82,0.8,69217.8466632],[1486857600000,0.81,0.80969,0.81231,0.79522,7220.41251019],[1486771200000,0.81275,0.8099,0.82,0.7923,75919.80448897],[1486684800000,0.811,0.81275,0.821,0.8,150493.04656476],[1486598400000,0.821,0.8051,0.8356,0.77,790581.93256653],[1486512000000,0.8011,0.825,0.84,0.801,330401.04372136],[1486425600000,0.79991,0.8067,0.86,0.79991,1218174.13114576],[1486339200000,0.8,0.7999,0.809,0.798,51325.36930155],[1486252800000,0.76849,0.7999,0.82,0.7684,372082.94755947],[1486166400000,0.77575,0.7684,0.8,0.76,512423.37251592],[1486080000000,0.76454,0.76049,0.82488,0.7601,1235550.16947156],[1485993600000,0.7739,0.7733,0.7739,0.7511,419485.3975492],[1485907200000,0.74899,0.7748,0.7748,0.7401,416657.92432361],[1485820800000,0.7349,0.74577,0.75,0.7261,392621.81484058],[1485734400000,0.71999,0.735,0.735,0.7117,123839.41033231],[1485648000000,0.7092,0.711,0.72,0.70222,78865.06844947],[1485561600000,0.71999,0.70001,0.72,0.7,66319.72995194],[1485475200000,0.706,0.71001,0.72,0.69768,197504.84706629],[1485388800000,0.67314,0.704,0.71,0.66501,490843.78353094],[1485302400000,0.67,0.665,0.67987,0.665,31460.28781611],[1485216000000,0.67989,0.67,0.69,0.67,63888.06958776],[1485129600000,0.68225,0.68668,0.695,0.675,48922.17674387],[1485043200000,0.699,0.68223,0.699,0.67012,91996.64562027],[1484956800000,0.6855,0.692,0.7021,0.6791,101993.68583522],[1484870400000,0.68669,0.685,0.699,0.68375,100180.56460246],[1484784000000,0.68,0.6867,0.7025,0.6687,649505.00402726],[1484697600000,0.6342,0.68375,0.6945,0.6342,722911.29974448],[1484611200000,0.60124,0.6386,0.6489,0.5863,516186.44196343],[1484524800000,0.59375,0.6,0.60774,0.59251,62811.15764391],[1484438400000,0.5878,0.59375,0.616,0.581,182417.51603181],[1484352000000,0.59732,0.5865,0.60932,0.5861,52557.32057884],[1484265600000,0.613,0.60594,0.6288,0.58554,279881.05444294],[1484179200000,0.56269,0.60932,0.6259,0.5455,906197.16431742],[1484092800000,0.5697,0.57,0.58283,0.5501,993936.66527738],[1484006400000,0.5699,0.5697,0.6,0.565,479940.5750157],[1483920000000,0.5598,0.5687,0.5729,0.55132,329146.4819496],[1483833600000,0.5652,0.5649,0.5689,0.5501,97288.348568],[1483747200000,0.557,0.5652,0.56525,0.53892,454727.74806088],[1483660800000,0.54909,0.5491,0.5689,0.5451,203904.48010302],[1483574400000,0.5539,0.55201,0.573,0.5377,457411.4220489],[1483488000000,0.565,0.5491,0.57891,0.5475,400524.72904162],[1483401600000,0.55998,0.55693,0.577,0.54551,160075.95565879],[1483315200000,0.558,0.5525,0.572,0.5455,133718.06884032],[1483228800000,0.529,0.56006,0.56195,0.5278,128780.22146626],[1483142400000,0.5322,0.5374,0.54599,0.529,44383.44032481],[1483056000000,0.55653,0.531,0.55653,0.52789,290837.34805605],[1482969600000,0.534,0.55161,0.55622,0.518,243542.25886407],[1482883200000,0.50588,0.53287,0.5391,0.505,299748.8471437],[1482796800000,0.49633,0.501,0.51978,0.49591,233956.9223055],[1482710400000,0.50466,0.49801,0.51448,0.4935,108493.8375305],[1482624000000,0.51491,0.49816,0.5219,0.4934,120561.41212536],[1482537600000,0.51364,0.5165,0.51986,0.50513,99061.59607589],[1482451200000,0.513,0.50512,0.5263,0.50512,259476.87918021],[1482364800000,0.5095,0.513,0.5247,0.49,298334.06324882],[1482278400000,0.5267,0.51488,0.5328,0.5048,366376.10430987],[1482192000000,0.5346,0.52671,0.5375,0.52671,187976.15133769],[1482105600000,0.53989,0.5346,0.54663,0.5346,62849.91816306],[1482019200000,0.5404,0.5346,0.5406,0.5346,25173.22122431],[1481932800000,0.53579,0.5347,0.54499,0.5297,262970.48780991],[1481846400000,0.52759,0.536,0.538,0.52759,48598.23482657],[1481760000000,0.525,0.5302,0.53629,0.525,33085.14145397],[1481673600000,0.52601,0.525,0.52929,0.525,31545.13039527],[1481587200000,0.53489,0.526,0.537,0.526,28223.40346435],[1481500800000,0.51901,0.5289,0.538,0.5139,134818.31297537],[1481414400000,0.5152,0.5222,0.5314,0.5106,126160.11540098],[1481328000000,0.5152,0.5154,0.52,0.5151,28107.52209897],[1481241600000,0.53,0.5152,0.53,0.5151,65443.35145207],[1481155200000,0.53091,0.5315,0.538,0.5151,159612.3195684],[1481068800000,0.5389,0.53081,0.5389,0.52731,143493.48529196],[1480982400000,0.5379,0.5323,0.5469,0.52151,122801.79769989],[1480896000000,0.5302,0.536,0.54054,0.52,238666.48276357],[1480809600000,0.54019,0.5301,0.5419,0.52482,253305.10020895],[1480723200000,0.5422,0.5404,0.54575,0.5393,32566.54478732],[1480636800000,0.54856,0.54289,0.55588,0.5393,328308.50173319],[1480550400000,0.54932,0.54898,0.55888,0.5475,120793.16140955],[1480464000000,0.55429,0.5506,0.565,0.541,196113.9666031],[1480377600000,0.5513,0.5523,0.55669,0.54,291150.58974002],[1480291200000,0.5786,0.5513,0.5799,0.546,244352.11972233],[1480204800000,0.5845,0.5805,0.5876,0.574,116085.76061325],[1480118400000,0.58501,0.5845,0.5903,0.5845,56083.08346361],[1480032000000,0.596,0.58501,0.596,0.585,206678.79181774],[1479945600000,0.5729,0.607,0.607,0.57,478162.50230475],[1479859200000,0.56372,0.5703,0.5769,0.56372,77176.06333753],[1479772800000,0.57,0.5665,0.57,0.56354,44021.49357207],[1479686400000,0.56801,0.57,0.57001,0.5606,544549.95485346],[1479600000000,0.5687,0.5674,0.571,0.5657,76298.62119632],[1479513600000,0.57001,0.5687,0.572,0.56525,83950.82206462],[1479427200000,0.5608,0.57489,0.58,0.5559,320910.92958937],[1479340800000,0.5692,0.55785,0.579,0.5553,104317.24740244],[1479254400000,0.5478,0.5705,0.5849,0.535,737573.93477848],[1479168000000,0.55,0.5436,0.55078,0.5386,101507.77262058],[1479081600000,0.55,0.5452,0.5589,0.527,390221.49694999]]"
419
419
  http_version:
420
420
  recorded_at: Mon, 13 Mar 2017 13:10:46 GMT
421
+ - request:
422
+ method: get
423
+ uri: https://api.bitfinex.com/v2/candles/trade:1D:tBFXUSD/hist?start%3A1452812400000
424
+ body:
425
+ encoding: US-ASCII
426
+ string: ''
427
+ headers:
428
+ User-Agent:
429
+ - Faraday v0.9.2
430
+ response:
431
+ status:
432
+ code: 200
433
+ message:
434
+ headers:
435
+ date:
436
+ - Mon, 03 Apr 2017 11:56:18 GMT
437
+ content-type:
438
+ - application/json; charset=utf-8
439
+ transfer-encoding:
440
+ - chunked
441
+ connection:
442
+ - close
443
+ set-cookie:
444
+ - __cfduid=d15eba25375dcd03bbe030a768e8e74f41491220578; expires=Tue, 03-Apr-18
445
+ 11:56:18 GMT; path=/; domain=.bitfinex.com; HttpOnly
446
+ vary:
447
+ - Accept-Encoding
448
+ x-powered-by:
449
+ - Express
450
+ etag:
451
+ - W/"1b8f-Cp2jfkke8UTvAgPtkJ1TsgPj5wE"
452
+ access-control-allow-origin:
453
+ - "*"
454
+ access-control-allow-headers:
455
+ - X-BFX-APIKEY,X-BFX-PAYLOAD,X-BFX-SIGNATURE,Content-Type,X-CSRF-Token,bfx-token,bfx-signature,bfx-apikey,bfx-nonce
456
+ server:
457
+ - cloudflare-nginx
458
+ cf-ray:
459
+ - 349bd804af733eb0-ZRH
460
+ body:
461
+ encoding: ASCII-8BIT
462
+ string: "[[1491177600000,0.976,0.9811,0.99,0.97,729966.23114872],[1491091200000,0.973,0.975,0.9799,0.973,61083.50514924],[1491004800000,0.96512,0.973,0.98,0.9635,312641.41056388],[1490918400000,0.971,0.96512,0.9799,0.965,219711.29830056],[1490832000000,0.979,0.96912,0.9825,0.9686,424210.38212123],[1490745600000,0.97031,0.976,0.9815,0.9687,54539.10722358],[1490659200000,0.975,0.97931,0.981,0.967,78696.23581904],[1490572800000,0.972,0.9817,0.9826,0.969,90854.40037865],[1490486400000,0.966,0.972,0.97725,0.96031,137801.05605047],[1490400000000,0.9778,0.97,0.9826,0.9631,218856.68003922],[1490313600000,0.9762,0.96316,0.9828,0.96316,896303.96505809],[1490227200000,0.985,0.9827,0.991,0.97271,481539.53495621],[1490140800000,0.9849,0.9789,0.99,0.9611,644146.38677298],[1490054400000,0.9874,0.9798,0.9878,0.97112,282109.19913051],[1489968000000,0.98,0.97851,0.9898,0.9635,464640.8206998],[1489881600000,0.9551,0.9751,0.99495,0.9551,527263.16799772],[1489795200000,0.989,0.96,0.989,0.951,857166.46079734],[1489708800000,0.96909,0.988,0.99016,0.95041,1831465.54766939],[1489622400000,0.9598,0.968,0.9745,0.93011,707134.11816577],[1489536000000,0.914,0.9481,0.987,0.914,1475989.57955641],[1489449600000,0.8751,0.91,0.932,0.865,901060.94224302],[1489363200000,0.8717,0.8761,0.883,0.8652,376298.09728602],[1489276800000,0.875,0.8717,0.879,0.85101,243519.87684517],[1489190400000,0.86864,0.87499,0.9,0.86,441408.45443568],[1489104000000,0.8741,0.867,0.9,0.851,923547.49462454],[1489017600000,0.86447,0.8771,0.8849,0.8601,69778.53551027],[1488931200000,0.888,0.87652,0.8999,0.86,253035.27171289],[1488844800000,0.9,0.88859,0.9022,0.871,105261.98010844],[1488758400000,0.89003,0.895,0.90285,0.87633,336521.30762563],[1488672000000,0.89001,0.89003,0.8985,0.89,56086.79270542],[1488585600000,0.87989,0.89,0.902,0.8652,289529.60523622],[1488499200000,0.8902,0.8825,0.893,0.864,540453.19236899],[1488412800000,0.89391,0.89,0.9,0.87,468911.9407224],[1488326400000,0.8944,0.8851,0.8987,0.885,63532.34127196],[1488240000000,0.875,0.8997,0.91,0.87291,566659.07956909],[1488153600000,0.869,0.87012,0.87889,0.8627,144892.27628249],[1488067200000,0.851,0.869,0.878,0.8484,515905.82224763],[1487980800000,0.8499,0.8542,0.8547,0.84,115783.00365869],[1487894400000,0.8398,0.845,0.8548,0.82881,300575.72800591],[1487808000000,0.84181,0.839,0.8488,0.83035,75316.36503842],[1487721600000,0.84979,0.8335,0.8499,0.82,145363.28163461],[1487635200000,0.85,0.8445,0.85067,0.832,251648.99451942],[1487548800000,0.84379,0.85,0.85,0.84,109452.47640138],[1487462400000,0.838,0.84,0.84499,0.83301,28404.95416129],[1487376000000,0.8342,0.838,0.8408,0.832,49996.59123255],[1487289600000,0.8365,0.836,0.85,0.82732,245950.8587662],[1487203200000,0.82361,0.83,0.84,0.81316,202499.34273437],[1487116800000,0.81497,0.8282,0.833,0.81081,84004.02947833],[1487030400000,0.819,0.8154,0.8331,0.81,111489.34342463],[1486944000000,0.8011,0.82,0.82,0.8,69217.8466632],[1486857600000,0.81,0.80969,0.81231,0.79522,7220.41251019],[1486771200000,0.81275,0.8099,0.82,0.7923,75919.80448897],[1486684800000,0.811,0.81275,0.821,0.8,150493.04656476],[1486598400000,0.821,0.8051,0.8356,0.77,790581.93256653],[1486512000000,0.8011,0.825,0.84,0.801,330401.04372136],[1486425600000,0.79991,0.8067,0.86,0.79991,1218174.13114576],[1486339200000,0.8,0.7999,0.809,0.798,51325.36930155],[1486252800000,0.76849,0.7999,0.82,0.7684,372082.94755947],[1486166400000,0.77575,0.7684,0.8,0.76,512423.37251592],[1486080000000,0.76454,0.76049,0.82488,0.7601,1235550.16947156],[1485993600000,0.7739,0.7733,0.7739,0.7511,419485.3975492],[1485907200000,0.74899,0.7748,0.7748,0.7401,416657.92432361],[1485820800000,0.7349,0.74577,0.75,0.7261,392621.81484058],[1485734400000,0.71999,0.735,0.735,0.7117,123839.41033231],[1485648000000,0.7092,0.711,0.72,0.70222,78865.06844947],[1485561600000,0.71999,0.70001,0.72,0.7,66319.72995194],[1485475200000,0.706,0.71001,0.72,0.69768,197504.84706629],[1485388800000,0.67314,0.704,0.71,0.66501,490843.78353094],[1485302400000,0.67,0.665,0.67987,0.665,31460.28781611],[1485216000000,0.67989,0.67,0.69,0.67,63888.06958776],[1485129600000,0.68225,0.68668,0.695,0.675,48922.17674387],[1485043200000,0.699,0.68223,0.699,0.67012,91996.64562027],[1484956800000,0.6855,0.692,0.7021,0.6791,101993.68583522],[1484870400000,0.68669,0.685,0.699,0.68375,100180.56460246],[1484784000000,0.68,0.6867,0.7025,0.6687,649505.00402726],[1484697600000,0.6342,0.68375,0.6945,0.6342,722911.29974448],[1484611200000,0.60124,0.6386,0.6489,0.5863,516186.44196343],[1484524800000,0.59375,0.6,0.60774,0.59251,62811.15764391],[1484438400000,0.5878,0.59375,0.616,0.581,182417.51603181],[1484352000000,0.59732,0.5865,0.60932,0.5861,52557.32057884],[1484265600000,0.613,0.60594,0.6288,0.58554,279881.05444294],[1484179200000,0.56269,0.60932,0.6259,0.5455,906197.16431742],[1484092800000,0.5697,0.57,0.58283,0.5501,993936.66527738],[1484006400000,0.5699,0.5697,0.6,0.565,479940.5750157],[1483920000000,0.5598,0.5687,0.5729,0.55132,329146.4819496],[1483833600000,0.5652,0.5649,0.5689,0.5501,97288.348568],[1483747200000,0.557,0.5652,0.56525,0.53892,454727.74806088],[1483660800000,0.54909,0.5491,0.5689,0.5451,203904.48010302],[1483574400000,0.5539,0.55201,0.573,0.5377,457411.4220489],[1483488000000,0.565,0.5491,0.57891,0.5475,400524.72904162],[1483401600000,0.55998,0.55693,0.577,0.54551,160075.95565879],[1483315200000,0.558,0.5525,0.572,0.5455,133718.06884032],[1483228800000,0.529,0.56006,0.56195,0.5278,128780.22146626],[1483142400000,0.5322,0.5374,0.54599,0.529,44383.44032481],[1483056000000,0.55653,0.531,0.55653,0.52789,290837.34805605],[1482969600000,0.534,0.55161,0.55622,0.518,243542.25886407],[1482883200000,0.50588,0.53287,0.5391,0.505,299748.8471437],[1482796800000,0.49633,0.501,0.51978,0.49591,233956.9223055],[1482710400000,0.50466,0.49801,0.51448,0.4935,108493.8375305],[1482624000000,0.51491,0.49816,0.5219,0.4934,120561.41212536],[1482537600000,0.51364,0.5165,0.51986,0.50513,99061.59607589],[1482451200000,0.513,0.50512,0.5263,0.50512,259476.87918021],[1482364800000,0.5095,0.513,0.5247,0.49,298334.06324882],[1482278400000,0.5267,0.51488,0.5328,0.5048,366376.10430987],[1482192000000,0.5346,0.52671,0.5375,0.52671,187976.15133769],[1482105600000,0.53989,0.5346,0.54663,0.5346,62849.91816306],[1482019200000,0.5404,0.5346,0.5406,0.5346,25173.22122431],[1481932800000,0.53579,0.5347,0.54499,0.5297,262970.48780991],[1481846400000,0.52759,0.536,0.538,0.52759,48598.23482657],[1481760000000,0.525,0.5302,0.53629,0.525,33085.14145397],[1481673600000,0.52601,0.525,0.52929,0.525,31545.13039527],[1481587200000,0.53489,0.526,0.537,0.526,28223.40346435],[1481500800000,0.51901,0.5289,0.538,0.5139,134818.31297537],[1481414400000,0.5152,0.5222,0.5314,0.5106,126160.11540098],[1481328000000,0.5152,0.5154,0.52,0.5151,28107.52209897],[1481241600000,0.53,0.5152,0.53,0.5151,65443.35145207],[1481155200000,0.53091,0.5315,0.538,0.5151,159612.3195684],[1481068800000,0.5389,0.53081,0.5389,0.52731,143493.48529196],[1480982400000,0.5379,0.5323,0.5469,0.52151,122801.79769989],[1480896000000,0.5302,0.536,0.54054,0.52,238666.48276357]]"
463
+ http_version:
464
+ recorded_at: Mon, 03 Apr 2017 11:56:18 GMT
421
465
  recorded_with: VCR 3.0.3
@@ -0,0 +1,93 @@
1
+ require 'csv'
2
+ require 'open-uri'
3
+ require 'faraday'
4
+ require 'fileutils'
5
+ require 'rapflag/history'
6
+
7
+ module RAPFLAG
8
+
9
+ class Bitfinex < History
10
+ @@btc_to_usd = {}
11
+ @@bfx_to_usd = {}
12
+
13
+ def get_usd_exchange(date_time = Time.now, from='BTC')
14
+ return 1.0 if from == 'USD'
15
+ key = date_time.strftime(DATE_FORMAT)
16
+ return @@btc_to_usd[key] if from.eql?('BTC') && @@btc_to_usd.size > 0
17
+ return @@bfx_to_usd[key] if from.eql?('BFX') && @@bfx_to_usd.size > 0
18
+
19
+ ms = (date_time.is_a?(Date) ? date_time.to_time : date_time).to_i*1000
20
+ ms_next_date = ms + (3*24*3600)*1000
21
+ # this does not work
22
+ # url = "https://api.bitfinex.com/v2/candles/trade:1D:t#{from}USD/hist?start:#{ms}?end:#{ms_next_date}"
23
+ url = "https://api.bitfinex.com/v2/candles/trade:1D:t#{from}USD/hist?start:#{ms}?end:#{ms_next_date}"
24
+ # therefore we just return the most uptodate
25
+ url = "https://api.bitfinex.com/v2/candles/trade:1D:t#{from}USD/hist?start:#{ms}"
26
+ puts "Fetching #{date_time}: #{url} #{@@btc_to_usd.size} BTC #{@@bfx_to_usd.size} BFX" if $VERBOSE
27
+ response = Faraday.get(url)
28
+ items = eval(response.body)
29
+ rates = {}
30
+ items.each do |item|
31
+ if item.first.eql?(:error)
32
+ puts "Fetching returned #{item}. Aborting"
33
+ exit(1)
34
+ end
35
+ # http://docs.bitfinex.com/v2/reference#rest-public-candles
36
+ # field definitions for [ MTS, OPEN, CLOSE, HIGH, LOW, VOLUME ],
37
+ # MTS int millisecond time stamp
38
+ # OPEN float First execution during the time frame
39
+ # CLOSE float Last execution during the time frame
40
+ # HIGH integer Highest execution during the time frame
41
+ # LOW float Lowest execution during the timeframe
42
+ # VOLUME float Quantity of symbol traded within the timeframe
43
+ # [[1489363200000,1224.4,1211.2,1238,1206.7,6157.96283895],
44
+ timestamp = Time.at(item.first/1000).strftime(DATE_FORMAT)
45
+ rates[timestamp] = item[2]
46
+ end;
47
+ from.eql?('BTC') ? @@btc_to_usd = rates.clone : @@bfx_to_usd = rates.clone
48
+ rates[key] ? rates[key] : nil
49
+ rescue => err
50
+ puts "Err #{err}"
51
+ end
52
+
53
+ def fetch_csv_history
54
+ @history = []
55
+ check_config
56
+ client = ::Bitfinex::Client.new
57
+ timestamp = Time.now.to_i + 1
58
+ while true
59
+ begin
60
+ partial = client.history(@currency, { :limit => 500, :until => timestamp, :wallet => @wallet})
61
+ break unless partial && partial.size > 0
62
+ if partial.is_a?(Hash)
63
+ puts "Got #{partial['error']} while fetching #{@wallet} #{@currency} until #{Time.at(timestamp)}"
64
+ exit 3
65
+ end
66
+ first_time = Time.at(partial.first['timestamp'].to_i).strftime(DATE_TIME_FORMAT)
67
+ last_time = Time.at(partial.last['timestamp'].to_i).strftime(DATE_TIME_FORMAT)
68
+ puts "Feched #{partial.size} @history entries #{first_time} -> #{last_time}" if $VERBOSE
69
+ timestamp = (partial.last['timestamp'].to_i - 1)
70
+ @history = @history | partial
71
+ break if partial.size <= 1
72
+ rescue => error
73
+ puts "error #{error}"
74
+ end
75
+ end
76
+ puts "Feched #{@history.size} history entries" if $VERBOSE
77
+ end
78
+ private
79
+ def check_config
80
+ Config['websocket_api_endpoint'] ||= 'wss://api.bitfinex.com/ws'
81
+ ['api_key',
82
+ 'secret',
83
+ ].each do |item|
84
+ raise "Must define #{item} in config.yml" unless Config[item]
85
+ end
86
+ ::Bitfinex::Client.configure do |conf|
87
+ conf.api_key = Config['api_key']
88
+ conf.secret = Config['secret']
89
+ conf.websocket_api_endpoint = Config['websocket_api_endpoint']
90
+ end
91
+ end
92
+ end
93
+ end
@@ -22,12 +22,6 @@ module RAPFLAG
22
22
  end
23
23
 
24
24
  Config= YAML.load_file(config_file)
25
- Config['websocket_api_endpoint'] ||= 'wss://api.bitfinex.com/ws'
26
25
  Config['currencies'] ||= ['BTC', 'BFX', 'XMR', 'ZEC']
27
26
  Config['currencies'] << 'USD' unless Config['currencies'].index('USD')
28
- Bitfinex::Client.configure do |conf|
29
- conf.api_key = Config['api_key']
30
- conf.secret = Config['secret']
31
- conf.websocket_api_endpoint = Config['websocket_api_endpoint']
32
- end
33
27
  end
@@ -0,0 +1,125 @@
1
+ require 'csv'
2
+ require 'open-uri'
3
+ require 'faraday'
4
+ require 'fileutils'
5
+
6
+ module RAPFLAG
7
+
8
+ class History
9
+ attr_reader :history, :wallet, :currency, :btc_to_usd, :bfx_to_usd
10
+ DATE_FORMAT = '%Y.%m.%d'
11
+ DATE_TIME_FORMAT = '%Y.%m.%d %H:%M:%S'
12
+
13
+ def initialize(wallet = 'trading', currency = 'USD')
14
+ @wallet = wallet
15
+ @currency = currency
16
+ end
17
+
18
+ def create_csv_file
19
+ out_file = "output/#{self.class.to_s.split('::').last.downcase}/#{@currency}_#{@wallet}.csv"
20
+ FileUtils.makedirs(File.dirname(out_file))
21
+ CSV.open(out_file,'w',
22
+ :write_headers=> true,
23
+ :col_sep => ';',
24
+ :headers => ['currency',
25
+ 'amount',
26
+ 'balance',
27
+ 'description',
28
+ 'date_time',
29
+ ] #< column header
30
+ ) do |csv|
31
+ @history.each do | hist_item|
32
+ csv << [ hist_item['currency'],
33
+ hist_item['amount'],
34
+ hist_item['balance'],
35
+ hist_item['description'],
36
+ Time.at(hist_item['timestamp'].to_i).strftime(DATE_TIME_FORMAT),
37
+ ]
38
+ end
39
+ end
40
+
41
+ sums = {}
42
+ @history.each do | hist_item|
43
+ key = /^[^\d]+/.match(hist_item['description'])[0].chomp
44
+ value = hist_item['amount'].to_f
45
+ if sums[key]
46
+ sums[key] += value
47
+ else
48
+ sums[key] = value
49
+ end
50
+ end
51
+
52
+ puts
53
+ puts "Summary for #{@wallet} #{@currency} (#{@history.size} entries}"
54
+ sums.each do |key, value|
55
+ puts " #{sprintf('%40s', key)} is #{value}"
56
+ end
57
+ end
58
+
59
+ Struct.new("Daily", :date, :amount, :balance, :description, :income)
60
+
61
+ def create_summary
62
+ @daily = {}
63
+ @history.sort{|x,y| x['timestamp'] <=> y['timestamp']}.each do | hist_item|
64
+ date = Time.at(hist_item['timestamp'].to_i).strftime(DATE_FORMAT)
65
+ info = Struct::Daily.new(date, hist_item['amount'].to_f, hist_item['balance'].to_f, hist_item['description'])
66
+ amount = hist_item['amount'].to_f
67
+ balance = hist_item['balance'].to_f
68
+ if @daily[date]
69
+ old_balance = @daily[date]
70
+ existing = @daily[date]
71
+ else
72
+ info.income = 0.0
73
+ existing = info
74
+ end
75
+ if /Wire Withdrawal fee|Trading fees for|Margin Funding Payment on wallet/i.match( hist_item['description'])
76
+ existing.income += amount
77
+ end
78
+ existing.balance = balance if balance != 0.0
79
+ @daily[date] = existing
80
+ end
81
+ out_file = "output/#{self.class.to_s.split('::').last.downcase}/#{@currency}_#{@wallet}_summary.csv"
82
+ FileUtils.makedirs(File.dirname(out_file))
83
+ previous_date = nil
84
+ saved_rate = nil
85
+ saved_info = nil
86
+ CSV.open(out_file,'w',
87
+ :write_headers=> true,
88
+ :col_sep => ';',
89
+ :headers => ['currency',
90
+ 'date',
91
+ 'income',
92
+ 'balance',
93
+ 'rate',
94
+ 'balance_in_usd',
95
+ ] #< column header
96
+ ) do |csv|
97
+ @daily.each do |date, info|
98
+ strings = date.split('.')
99
+ fetch_date = Date.new(strings[0].to_i, strings[1].to_i, strings[2].to_i)
100
+ rate = get_usd_exchange(fetch_date, @currency)
101
+ (1..(fetch_date - previous_date -1).to_i).each do |j|
102
+ intermediate = (previous_date + j).strftime('%Y.%m.%d')
103
+ csv << [@currency,
104
+ intermediate,
105
+ saved_info.income,
106
+ saved_info.balance,
107
+ saved_rate ? saved_rate : nil,
108
+ saved_rate ? info.balance * get_usd_exchange(intermediate, @currency) : nil,
109
+ ]
110
+ end if previous_date
111
+ csv << [@currency,
112
+ date,
113
+ info.income,
114
+ info.balance,
115
+ rate ? rate : nil,
116
+ rate ? info.balance * get_usd_exchange(fetch_date, @currency) : nil,
117
+ ]
118
+ previous_date = fetch_date
119
+ saved_info = info
120
+ saved_rate = nil
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end