Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Trading

notebooks/binance.livemd

Trading

Binance portfolio

Pex.BinanceTrade.coins_list()

Trades not saved

Pex.BinanceTrade.coins_list_without_trade()

Trade saved

Pex.Data.list_trades()
|> Enum.filter(&(&1.stop_loss != nil))
|> Enum.map(fn order ->
  {:ok, %{price: price}} = Pex.BinanceAPI.get_price(order.symbol)
  current_price = String.to_float(price)
  percent = Pex.Stat.percent_order(order, current_price)

  %{
    id: order.id,
    coin: order.symbol,
    sl: order.stop_loss,
    tp: order.take_profit,
    # price: current_price,
    percent: Float.ceil(percent, 2),
    bought: order.price
  }
end)
|> Enum.sort(&(&1.coin > &2.coin))

Old binance order

symbol = IO.gets("symbol") |> String.trim("\n")
{limit, _a} = IO.gets("limit") |> Integer.parse()

{:ok, data} = Binance.account_trade_list(symbol, limit)

data
|> Enum.map(
  &%{
    quantity: &1.qty,
    price: &1.price,
    id: &1.id
  }
)

Cancel binance order

order_id = IO.gets("order_id") |> String.trim("\n")

Binance.cancel_order(symbol, 5000, order_id)

Delete trade

{id, _} = IO.gets("order_id") |> Integer.parse()

Pex.Data.delete_trade(id)

Risk management

{distance, _} = IO.gets("distance") |> Float.parse()
pair = IO.gets("pair") |> String.trim("\n")

{:ok, risk} = Pex.BinanceTrade.init_risk_management(pair, distance)

"#{risk.quantity} #{pair} pour un total de #{risk.cost} $ avec un stop loss à #{risk.stop_loss} (prix: #{risk.pair_price})"

Buy Trade

{tp, _} = IO.gets("tp") |> Float.parse()
{distance, _} = IO.gets("distance") |> Float.parse()
pair = IO.gets("pair") |> String.trim("\n")
[coin_1, coin_2] = String.split(pair, "/")

Pex.BinanceTrade.trade_buy(coin_1, coin_2, tp, distance)