diff --git a/container/src/hledger-flow/accounts/bittrex/bittrex-shared.bash b/container/src/hledger-flow/accounts/bittrex/bittrex-shared.bash index e09889e..075641d 100755 --- a/container/src/hledger-flow/accounts/bittrex/bittrex-shared.bash +++ b/container/src/hledger-flow/accounts/bittrex/bittrex-shared.bash @@ -60,6 +60,7 @@ function parse_deposit() printf("%.8f", $4); printf OFS # Amount printf OFS # Proceeds printf OFS # Fees + printf OFS # Cost-basis printf $5 OFS # Destination printf $6 OFS # TXID printf "IN" OFS # Direction @@ -90,6 +91,22 @@ function parse_trade() # So, turn BTC-USD into two separate columns. sub(/-/, ",", $4) + # TODO: HACK: see #51 and respective lib_taxes work-around + # Calculate cost-basis + switch ($3) + { + case "BUY": + cost_basis=sprintf("%.8f", $6 + $7) + break + case "SELL": + cost_basis=sprintf("%.8f", $6 - $7) + break + default: + printf "FATAL: unsupported order type: " $3 + print $0 + exit + } + printf $1 OFS # UID printf date OFS # Date printf "TRADE" OFS # Type @@ -99,6 +116,7 @@ function parse_trade() printf("%.8f", $5); printf OFS # Amount printf("%.8f", $6); printf OFS # Proceeds printf("%.8f", $7); printf OFS # Fees + printf cost_basis OFS # Cost-basis printf OFS # Destination printf OFS # TXID printf OFS # Direction @@ -129,6 +147,7 @@ function parse_withdrawal() printf("%.8f", $4); printf OFS # Amount printf OFS # Proceeds printf("%.8f", $5); printf OFS # Fees + printf OFS # Cost-basis printf $6 OFS # Destination printf $7 OFS # TXID printf "OUT" OFS # Direction diff --git a/container/src/hledger-flow/accounts/bittrex/bittrex-shared.rules b/container/src/hledger-flow/accounts/bittrex/bittrex-shared.rules index 9477ea7..a990260 100644 --- a/container/src/hledger-flow/accounts/bittrex/bittrex-shared.rules +++ b/container/src/hledger-flow/accounts/bittrex/bittrex-shared.rules @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -fields code_,date,type,order_type,currency_one,currency_two,amount_,proceeds,fees,destination,txid,direction,subaccount +fields code_,date,type,order_type,currency_one,currency_two,amount_,proceeds,fees,cost_basis,destination,txid,direction,subaccount date-format %Y-%m-%d %H:%M:%S description %date +0000 @@ -59,7 +59,6 @@ if %type ^TRADE$ amount %amount_ %currency_one @@ %proceeds %currency_two account2 assets:bittrex:%subaccount:%currency_two comment type:%type, order_type:%order_type, code:%code_, taxed_as:%order_type - comment2 %date +0000,BUY,bittrex,%currency_one,%amount_,%currency_two,%proceeds,, if %type ^TRADE$ & %fees [1-9] @@ -67,11 +66,48 @@ if %type ^TRADE$ amount3 -%fees %currency_two account4 expenses:bittrex:%subaccount:fees:trades:%currency_two amount4 %fees %currency_two - comment2 %date +0000,BUY,bittrex,%currency_one,%amount_,%currency_two,%proceeds,%currency_two,%fees + +# +# BUY +# + +if %type ^TRADE$ +& %order_type ^BUY$ + comment2 %date +0000,BUY,bittrex,%currency_one,%amount_,%currency_two,%cost_basis,, + +if %type ^TRADE$ +& %order_type ^BUY$ +& %fees [1-9] + comment2 %date +0000,BUY,bittrex,%currency_one,%amount_,%currency_two,%cost_basis,%currency_two,%fees +# TODO: HACK: re: #51, FeeCurrency and Fee are added even though cost_basis is calculated (for non-fiat fee disposal, see lib_taxes) + +# TODO: HACK: see #51 and respective lib_taxes work-around +if %type ^TRADE$ +& %order_type ^BUY$ +& %fees [1-9] +& %currency_two ^USD$ + comment2 %date +0000,BUY,bittrex,%currency_one,%amount_,%currency_two,%cost_basis,, + +# +# SELL +# if %type ^TRADE$ & %order_type ^SELL$ amount -%amount_ %currency_one @@ %proceeds %currency_two - comment2 %date +0000,SELL,bittrex,%currency_one,%amount_,%currency_two,%proceeds,%currency_two,%fees + comment2 %date +0000,SELL,bittrex,%currency_one,%amount_,%currency_two,%cost_basis,, + +if %type ^TRADE$ +& %order_type ^SELL$ +& %fees [1-9] + comment2 %date +0000,SELL,bittrex,%currency_one,%amount_,%currency_two,%cost_basis,%currency_two,%fees +# TODO: HACK: re: #51, FeeCurrency and Fee are added even though cost_basis is calculated (for non-fiat fee disposal, see lib_taxes) + +# TODO: HACK: see #51 and respective lib_taxes work-around +if %type ^TRADE$ +& %order_type ^SELL$ +& %fees [1-9] +& %currency_two ^USD$ + comment2 %date +0000,SELL,bittrex,%currency_one,%amount_,%currency_two,%cost_basis,, # vim: sw=2 sts=2 si ai et