CryptoBridgeなどの取引履歴をCryptactにアップロードする

in #japanese6 years ago

cryptact

tax@cryptact

前書き

前回expoterで取り出したcsvファイルにJSON形式の項目があったのでこれをCSVに変換しました。今回はそれをさらに加工してcryptactに読ませたいと思います。

CSVファイル加工

0 1/fee/amount 1/fee/asset_id 1/order_id 1/account_id 1/pays/amount 1/pays/asset_id 1/receives/amount 1/receives/asset_id 1/fill_price/base/amount 1/fill_price/base/asset_id 1/fill_price/quote/amount 1/fill_price/quote/asset_id 1/is_maker

とりだしたCSVファイルには全部で以上の項目があります。その内使うのは以下だけです。

1/fee/amount 1/fee/asset_id 1/pays/amount 1/pays/asset_id 1/receives/amount 1/receives/asset_id

そこにexpoterで出力したもとのcsvから"Block Data - Block Time"を足し合わせます

cryptofresh

cryptofresh

asset id は検索しながら手作業でasset nameに置換しましたが、対応表とかあれば一気に置換できると思います。何かご存知だったら教えてください。

次に各通貨の数量ですが、それぞれに適切な小数点を打ってあげないといけません。

特に法則性があるかは分からなかったので一つずつ調べました…

=ifs(D2="OPEN.BTC",B2/100000000,D2="BTS",B2/100000,D2="bitUSD",B2/10000,D2="bitCNY",B2/10000,D2="NINJASOUL",B2/10000,D2="bridge.BCO",B2/10000000,D2="OBITS",B2/10000)

二段階取引

BTSやUIAはcryptactでは全て決済通貨として対応していないので法定通貨を介した二段階取引にせねばいけません。主軸通貨としてはBTS, OBITSなどが対応しているようです。
(cryptactのhelp)

二段階取引の例:120BTSで40bitCNYを買ったとします。

TimestampActionSourceBaseVolumePriceCounterFeeFeeCcyComment
2017/10/12 16:00:00BUYOPENLEDGERbitCNY1203(=120BTS/40bitCNY)BTS0USD

しかしBTSは決済通貨としてcryptactに登録されておらず価格データが存在しないので2BTSを法定通貨にして、法定通貨でbitCNYを買ったという形にします。
今回はcryptofreshで情報が取りやすいのでbitUSD価格をUSD価格(法定通貨価格)として扱い、更にbitUSDの価格は常に1USDということにしてやっていきたいと思います。

TimestampActionSourceBaseVolumePriceCounterFeeFeeCcyComment
2017/10/12 16:00:00SELLOPENLEDGERBTS1200.0455 (自分で調べます)USD0USDBTS価格欠落
2017/10/12 16:00:00BUYOPENLEDGERbitCNY400.1365(計算で出します)USD0USD

計算について:120(BTSVolume)×0.0455(BTS/bitUSD)=5.46USD なので2BTSを売って5.46USDを手に入れたことになります。そしてこの5.46USDで40bitCNYを買えたので、bitCNYの値段は 5.46/40=0.1365bitUSDとなります。あるいは3(BTS/bitCNY)×0.0455(BTS/bitUSD)=0.1365bitUSDでも良いです。

cryptofresh

Priceの調べ方:自分はcryptofreshを一日づつ調べていくという手作業でやりました。apiページを見るとbitUSDのBTS価格を取得できていたりしたので頑張ったらどうにかなりそうな気がしなくもなかったのですが、大変そうなので諦めました。方法ご存知の方いたら是非コメント下さい。

Price調べが終わったらTimestampを日本時間に合わせましょう。Block Data - Block Timeの列を選択し、"T" を半角スペースに置換し、-0.9してやれば良いです。

次は上で挙げた二段階変換のSELL部をやってから、BUY部をやります。Timestampがちゃんとしていれば順番バラバラでもcryptactは大丈夫です。(多分)

イメージ

10/12 buy cny bts
10/13 buy bts btc
  (中略)

10/12 sell bts usd
10/13 sell btc usd
  (中略)
10/12 buy cny usd
10/13 buy bts usd
  (中略)

ということでSELL部は以下のようになります。

TimestampActionSourceBaseVolumePriceCounterFeeFeeCcy
1/pays/asset_id1/pays/amount調べたBaseのbitUSD価格ここは0です
2017/10/19 16:47:33SELLopenledgerBTC0.072985855,301.00000000USD0USD

続いてBUY部です。

TimestampActionSourceBaseVolumePriceCounterFeeFeeCcy
1/receives/asset_id1/receives/amount計算したBaseのbitUSD価格1/fee/amount1/fee/asset_id
2017/10/19 16:47:33BUYopenledgerBTS7976.59580.04850414896USD0BTS

open.BTCやbridge.BTCは実質BTCなのでBTCに置換します。お互いをトレードしたときとかおかしいことになると思いますがそんなけったいな事態は想定から外しました。

更にbitUSDなどは未対応主軸通貨なのでCTT2などのcryptact用ダミーティッカーに置換しましょう。CTT9まで使い切ってしまったら…どうしましょう?自分が困らないと考えられないですね。(想像力の欠如)

マージントレード(borrow)

BTSを担保にしてsmartcoinを借りる機能がありますが(私のやってみた録)それがcryptactでの空売りエラーを引き起こします。買ってない通貨を売るからですね。

TimestampActionSourceBaseVolumePriceCounterFeeFeeCcyComment
2017-10-19BUYopenledgerbitUSD1000USD0USD借入
2017-10-19SELLopenledgerbitUSD1001USD0USD
2017/10/30BUYopenledgerbitUSD1001USD0USD
2017-10-30SELLopenledgerbitUSD1000USD0USD返済

二番目がエラーを起こした取引です。存在しないはずのbitUSDを売却しています。そこで同じ日に0USDでbitUSDを買ったことにしました。このままだと実際より100bitUSD多く所持していることになるので、返却用bitUSDが工面できた(三番目の取引です)後、同額を0USDで売ったことにしました。一応これで大丈夫なはずです。cryptactのhelpでも「デリバティブはケースバイケース」としか書かれていないので不安ですが。

Sort:  

Boost Your Post. Send 0.100 STEEM or SBD and your post url on memo and we will resteem your post on 5000+ followers. check our account to see the follower count.

Congratulations @keyshenay! You have received a personal award!

1 Year on Steemit
Click on the badge to view your Board of Honor.

Do not miss the last post from @steemitboard:

SteemitBoard Ranking update - Steem Power, Followers and Following added

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @keyshenay! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.030
BTC 59035.93
ETH 2519.79
USDT 1.00
SBD 2.47