CryptoBridgeなどの取引履歴を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"を足し合わせます
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を買ったとします。
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
---|---|---|---|---|---|---|---|---|---|
2017/10/12 16:00:00 | BUY | OPENLEDGER | bitCNY | 120 | 3(=120BTS/40bitCNY) | BTS | 0 | USD |
しかしBTSは決済通貨としてcryptactに登録されておらず価格データが存在しないので2BTSを法定通貨にして、法定通貨でbitCNYを買ったという形にします。
今回はcryptofreshで情報が取りやすいのでbitUSD価格をUSD価格(法定通貨価格)として扱い、更にbitUSDの価格は常に1USDということにしてやっていきたいと思います。
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
---|---|---|---|---|---|---|---|---|---|
2017/10/12 16:00:00 | SELL | OPENLEDGER | BTS | 120 | 0.0455 (自分で調べます) | USD | 0 | USD | BTS価格欠落 |
2017/10/12 16:00:00 | BUY | OPENLEDGER | bitCNY | 40 | 0.1365(計算で出します) | USD | 0 | USD |
計算について: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でも良いです。
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部は以下のようになります。
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
1/pays/asset_id | 1/pays/amount | 調べたBaseのbitUSD価格 | ここは0です | |||||
2017/10/19 16:47:33 | SELL | openledger | BTC | 0.07298585 | 5,301.00000000 | USD | 0 | USD |
続いてBUY部です。
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy |
---|---|---|---|---|---|---|---|---|
1/receives/asset_id | 1/receives/amount | 計算したBaseのbitUSD価格 | 1/fee/amount | 1/fee/asset_id | ||||
2017/10/19 16:47:33 | BUY | openledger | BTS | 7976.5958 | 0.04850414896 | USD | 0 | BTS |
open.BTCやbridge.BTCは実質BTCなのでBTCに置換します。お互いをトレードしたときとかおかしいことになると思いますがそんなけったいな事態は想定から外しました。
更にbitUSDなどは未対応主軸通貨なのでCTT2などのcryptact用ダミーティッカーに置換しましょう。CTT9まで使い切ってしまったら…どうしましょう?自分が困らないと考えられないですね。(想像力の欠如)
マージントレード(borrow)
BTSを担保にしてsmartcoinを借りる機能がありますが(私のやってみた録)それがcryptactでの空売りエラーを引き起こします。買ってない通貨を売るからですね。
Timestamp | Action | Source | Base | Volume | Price | Counter | Fee | FeeCcy | Comment |
---|---|---|---|---|---|---|---|---|---|
2017-10-19 | BUY | openledger | bitUSD | 100 | 0 | USD | 0 | USD | 借入 |
2017-10-19 | SELL | openledger | bitUSD | 100 | 1 | USD | 0 | USD | |
2017/10/30 | BUY | openledger | bitUSD | 100 | 1 | USD | 0 | USD | |
2017-10-30 | SELL | openledger | bitUSD | 100 | 0 | USD | 0 | USD | 返済 |
二番目がエラーを起こした取引です。存在しないはずのbitUSDを売却しています。そこで同じ日に0USDでbitUSDを買ったことにしました。このままだと実際より100bitUSD多く所持していることになるので、返却用bitUSDが工面できた(三番目の取引です)後、同額を0USDで売ったことにしました。一応これで大丈夫なはずです。cryptactのhelpでも「デリバティブはケースバイケース」としか書かれていないので不安ですが。
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:
Congratulations @keyshenay! You received a personal award!
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!