Initial commit
This commit is contained in:
82
app/models/trigger.rb
Normal file
82
app/models/trigger.rb
Normal file
@@ -0,0 +1,82 @@
|
||||
# encoding: UTF-8
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Trigger < ApplicationRecord
|
||||
extend Enumerize
|
||||
|
||||
belongs_to :order, required: true
|
||||
|
||||
# Enumerized list of statuses supported by trigger
|
||||
#
|
||||
# @note
|
||||
# pending(initial,default)
|
||||
# Trigger and order were created and persisted in DB.
|
||||
#
|
||||
# active
|
||||
# Trigger was added to triggerbook and waiting for being triggered by trade.
|
||||
#
|
||||
# done
|
||||
# Trigger was triggered by trade and thrown appropriate order.
|
||||
#
|
||||
# cancelled
|
||||
# Trigger was created but order was rejected by system on creation or
|
||||
# trigger was activated but order was cancelled by user.
|
||||
#
|
||||
# (1) (2)
|
||||
# Pending --------> Active ----------> Done
|
||||
# | |
|
||||
# |(3) |(4)
|
||||
# | |
|
||||
# '------------> Cancelled
|
||||
#
|
||||
# 1 - add to triggerbook and lock order funds
|
||||
# 2 - triggered by trade
|
||||
# 3 - reject order on submit
|
||||
# 4 - cancel order by user
|
||||
STATES = { pending: 0, active: 100, done: 200, cancelled: 255 }.freeze
|
||||
|
||||
# TODO: Order types documentation.
|
||||
TYPES = {
|
||||
# Regular order types:
|
||||
market: 10,
|
||||
limit: 11,
|
||||
stop_loss: 20,
|
||||
stop_loss_limit: 21,
|
||||
trailing_stop: 30,
|
||||
trailing_stop_limit: 31,
|
||||
oco: 41,
|
||||
|
||||
# Margin order types:
|
||||
margin_market: 110,
|
||||
margin_limit: 111,
|
||||
margin_stop_loss: 120,
|
||||
margin_stop_loss_limit: 121,
|
||||
margin_trailing_stop: 130,
|
||||
margin_trailing_stop_limit: 131,
|
||||
margin_oco: 141
|
||||
}.freeze
|
||||
|
||||
enumerize :state, in: STATES, scope: true
|
||||
|
||||
enumerize :order_type, in: TYPES, scope: true
|
||||
end
|
||||
|
||||
# == Schema Information
|
||||
# Schema version: 20201125134745
|
||||
#
|
||||
# Table name: triggers
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# order_id :bigint not null
|
||||
# order_type :integer unsigned, not null
|
||||
# value :binary(128) not null
|
||||
# state :integer default("pending"), unsigned, not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_triggers_on_order_id (order_id)
|
||||
# index_triggers_on_order_type (order_type)
|
||||
# index_triggers_on_state (state)
|
||||
#
|
||||
Reference in New Issue
Block a user