class Livermore::SimpleStrategy

Public Instance Methods

trade() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 3
def trade
  loop do
    fetch_top_tier
    set_goals
    adjust_orders

    tick and sleep config[:tact]
  end
end

Private Instance Methods

adjust_orders() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 44
def adjust_orders
  fetch_orders
  mark_to_cancel
  cancel_orders
  populate_asks
  populate_bids
  create_orders
end
funds() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 78
def funds
  base_name, quote_name = context.market.split('-')

  [
    "#{base_name}: #{context.base_fund}",
    "#{quote_name}: #{context.quote_fund}"
  ]
end
info() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 87
def info
  funds + [best_ask, best_bid].concat(open_orders).sort_by(&:price).reverse
end
mark_to_cancel() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 53
def mark_to_cancel
  context.orders_to_cancel = open_orders.select do |order|
    case order.type
    when Order::ASK then order.price < ask.price
    when Order::BID then order.price > bid.price
    end
  end
end
populate_asks() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 62
def populate_asks
  prevent = open_orders.any? do |order|
    break true if order.type == Order::ASK && order.price >= ask.price
  end

  context.orders_to_create << ask unless prevent
end
populate_bids() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 70
def populate_bids
  prevent = open_orders.any? do |order|
    break true if order.type == Order::BID && order.price <= bid.price
  end

  context.orders_to_create << bid unless prevent
end
set_ask() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 20
def set_ask
  price = best_ask.price + (best_ask.price * config[:ask_delta].to_f / 100)

  context.ask = Order.new(
    market: context.market,
    price: price,
    amount: config[:ask_amount],
    type: Order::ASK,
    operation: :limit_order
  )
end
set_bid() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 32
def set_bid
  price = best_bid.price - (best_bid.price * config[:bid_delta].to_f / 100)

  context.bid = Order.new(
    market: context.market,
    price: price,
    amount: config[:bid_amount],
    type: Order::BID,
    operation: :limit_order
  )
end
set_goals() click to toggle source
# File lib/livermore/strategies/simple_strategy.rb, line 15
def set_goals
  set_ask
  set_bid
end