Created
February 23, 2025 22:39
-
-
Save andersonbosa/ea9ea9e418b40206a2b4642bbc1f64a4 to your computer and use it in GitHub Desktop.
Calcular retorno de lucro em BTC usando Golang.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"os" | |
"strconv" | |
) | |
func main() { | |
if len(os.Args) != 5 { | |
fmt.Println("Uso: go run profit_calc.go <btc_amount> <sell_price> <buy_price> <fee_percent>") | |
fmt.Println("Exemplo: go run profit_calc.go 0.10133 99220.03 95711.03 0.1") | |
os.Exit(1) | |
} | |
btcAmount, err := strconv.ParseFloat(os.Args[1], 64) | |
if err != nil || btcAmount <= 0 { | |
fmt.Println("Erro: Quantidade de BTC inválida (deve ser positiva).") | |
os.Exit(1) | |
} | |
sellPrice, err := strconv.ParseFloat(os.Args[2], 64) | |
if err != nil || sellPrice <= 0 { | |
fmt.Println("Erro: Preço de venda inválido (deve ser positivo).") | |
os.Exit(1) | |
} | |
buyPrice, err := strconv.ParseFloat(os.Args[3], 64) | |
if err != nil || buyPrice <= 0 { | |
fmt.Println("Erro: Preço de compra inválido (deve ser positivo).") | |
os.Exit(1) | |
} | |
feePercent, err := strconv.ParseFloat(os.Args[4], 64) | |
if err != nil || feePercent < 0 { | |
fmt.Println("Erro: Taxa inválida (deve ser não negativa).") | |
os.Exit(1) | |
} | |
buyValue := btcAmount * buyPrice // Valor bruto investido na compra | |
buyFee := buyValue * (feePercent * 0.01) // Taxa da compra (ex.: 0,1% = 0,001) | |
buyTotal := buyValue + buyFee // Investimento total (compra + taxa) | |
sellValue := btcAmount * sellPrice // Valor bruto da venda | |
sellFee := sellValue * (feePercent * 0.01) // Taxa da venda (ex.: 0,1% = 0,001) | |
sellNet := sellValue - sellFee // Valor líquido recebido na venda | |
profitGross := sellValue - buyValue // Lucro bruto (sem taxas) | |
profitNet := sellNet - buyTotal // Lucro líquido (após taxas) | |
returnOnInvestment := (profitNet / buyTotal) * 100 // Retorno percentual sobre o investimento | |
fmt.Println("\n=== Relatório de Lucro de Investimento ===") | |
fmt.Printf("Quantidade negociada: %.5f BTC\n", btcAmount) | |
fmt.Printf("Preço de compra: %.2f USD/BTC\n", buyPrice) | |
fmt.Printf("Preço de venda: %.2f USD/BTC\n", sellPrice) | |
fmt.Printf("Taxa da corretora: %.2f%% por transação\n", feePercent) | |
fmt.Println("-----------------------------------------") | |
fmt.Printf("Investimento bruto (compra): %.2f USD\n", buyValue) | |
fmt.Printf("Taxa na compra: %.2f USD\n", buyFee) | |
fmt.Printf("Investimento total: %.2f USD\n", buyTotal) | |
fmt.Printf("Receita bruta (venda): %.2f USD\n", sellValue) | |
fmt.Printf("Taxa na venda: %.2f USD\n", sellFee) | |
fmt.Printf("Receita líquida: %.2f USD\n", sellNet) | |
fmt.Println("-----------------------------------------") | |
fmt.Printf("Lucro bruto (sem taxas): %.2f USD\n", profitGross) | |
fmt.Printf("Lucro líquido (após taxas): %.2f USD\n", profitNet) | |
fmt.Printf("Retorno sobre investimento: %.2f%%\n", returnOnInvestment) | |
fmt.Println("=========================================") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment