Sha256: 75b3a40ec1c78e1211e6ff0a89f0a416dd4163fd06b1fbdf4e422ede1dd3640b
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
# frozen_string_literal: true module CossBot class BuyLowSellHigh < Basic private def tick logger.info('=== Start of trading cycle ===') balances = exchange.account_balances currency_to_sell = pair.split('_').last current_balance = balances.detect { |c| c['currency_code'] == currency_to_sell }['available'].to_f pair_depth = exchange.pair_depth(pair) current_price = pair_depth['asks'].first.first.to_f if current_balance <= trade_limit.to_f yield(nil, nil, { status: 0, message: 'Current balance <= trade limit' }) elsif current_balance <= current_price * lot_size yield(nil, nil, { status: 0, message: 'Current balance <= current_price * lot_size' }) else price_with_profit = (current_price + (current_price / 100 * profit.to_f)).round(6) logger.info("Placing BUY order for #{current_price}. Lot size: #{lot_size}") buy_response = exchange.place_limit_order(pair, current_price, 'BUY', lot_size) logger.info("Placing SELL order for #{price_with_profit}. Lot size: #{lot_size}") sell_response = exchange.place_limit_order(pair, price_with_profit, 'SELL', lot_size) logger.info('=== End of trading cycle ===') error = {} error[:buy] = buy_response if buy_response[:status].present? error[:sell] = sell_response if sell_response[:status].present? yield(buy_response, sell_response, error) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
coss_bot-0.1.3 | lib/coss_bot/buy_low_sell_high.rb |