trader

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 20, 2023 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FUTURE_ACCOUNT        = 1     // 期货
	SECURITY_ACCOUNT      = 2     // 股票
	CREDIT_ACCOUNT        = 3     // 信用
	FUTURE_OPTION_ACCOUNT = 5     // 期货期权
	STOCK_OPTION_ACCOUNT  = 6     // 股票期权
	HUGANGTONG_ACCOUNT    = 7     // 沪港通
	INCOME_SWAP_ACCOUNT   = 8     // 美股收益互换
	NEW3BOARD_ACCOUNT     = 10    // 全国股转账号
	SHENGANGTONG_ACCOUNT  = 11    // 深港通
	AT_OFFSITEBANKING     = 13    // 场外理财账户
	AT_OUTTER_FUTURE      = 1001  // 期货外盘
	AT_IB                 = 1002  // IB
	AT_NS_TRUSTBANK       = 15001 // 场外托管
	AT_INTERBANK          = 15002 // 银行间账号
	AT_BANK               = 15003 // 银行账号
	AT_OTC                = 15005 // 场外账号
)

账号类型

View Source
const (
	ACCOUNT_STATUS_INVALID       = -1 // 无效
	ACCOUNT_STATUS_OK            = 0  // 正常
	ACCOUNT_STATUS_WAITING_LOGIN = 1  // 连接中
	ACCOUNT_STATUSING            = 2  // 登陆中
	ACCOUNT_STATUS_FAIL          = 3  // 失败
	ACCOUNT_STATUS_INITING       = 4  // 初始化中
	ACCOUNT_STATUS_CORRECTING    = 5  // 数据刷新校正中
	ACCOUNT_STATUS_CLOSED        = 6  // 收盘后
	ACCOUNT_STATUS_ASSIS_FAIL    = 7  // 穿透副链接断开
	ACCOUNT_STATUS_DISABLEBYSYS  = 8  // 系统停用(总线使用-密码错误超限)
	ACCOUNT_STATUS_DISABLEBYUSER = 9  // 用户停用(总线使用)
)
View Source
const (
	STOCK_BUY                        = 23
	STOCK_SELL                       = 24
	CREDIT_BUY                       = 23 // 担保品买入
	CREDIT_SELL                      = 24 // 担保品卖出
	CREDIT_FIN_BUY                   = 27 // 融资买入
	CREDIT_SLO_SELL                  = 28 // 融券卖出
	CREDIT_BUY_SECU_REPAY            = 29 // 买券还券
	CREDIT_DIRECT_SECU_REPAY         = 30 // 直接还券
	CREDIT_SELL_SECU_REPAY           = 31 // 卖券还款
	CREDIT_DIRECT_CASH_REPAY         = 32 // 直接还款
	CREDIT_FIN_BUY_SPECIAL           = 40 // 专项融资买入
	CREDIT_SLO_SELL_SPECIAL          = 41 // 专项融券卖出
	CREDIT_BUY_SECU_REPAY_SPECIAL    = 42 // 专项买券还券
	CREDIT_DIRECT_SECU_REPAY_SPECIAL = 43 // 专项直接还券
	CREDIT_SELL_SECU_REPAY_SPECIAL   = 44 // 专项卖券还款
	CREDIT_DIRECT_CASH_REPAY_SPECIAL = 45 // 专项直接还款
)

交易方向

View Source
const (
	LATEST_PRICE                  = 5  // 最新价
	FIX_PRICE                     = 11 // 指定价/限价
	MARKET_SH_CONVERT_5_CANCEL    = 42 // 最优五档即时成交剩余撤销[上交所][股票]
	MARKET_SH_CONVERT_5_LIMIT     = 43 // 最优五档即时成交剩转限价[上交所][股票]
	MARKET_PEER_PRICE_FIRST       = 44 // 对手方最优价格委托[上交所[股票]][深交所[股票][期权]]
	MARKET_MINE_PRICE_FIRST       = 45 // 本方最优价格委托[上交所[股票]][深交所[股票][期权]]
	MARKET_SZ_INSTBUSI_RESTCANCEL = 46 // 即时成交剩余撤销委托[深交所][股票][期权]
	MARKET_SZ_CONVERT_5_CANCEL    = 47 // 最优五档即时成交剩余撤销[深交所][股票][期权]
	MARKET_SZ_FULL_OR_CANCEL      = 48 // 全额成交或撤销委托[深交所][股票][期权]
)

报价类型

View Source
const (
	ORDER_UNREPORTED      = 48  // 未报
	ORDER_WAIT_REPORTING  = 49  // 待报
	ORDER_REPORTED        = 50  // 已报
	ORDER_REPORTED_CANCEL = 51  // 已报待撤
	ORDER_PARTSUCC_CANCEL = 52  // 部成待撤
	ORDER_PART_CANCEL     = 53  // 部撤
	ORDER_CANCELED        = 54  // 已撤
	ORDER_PART_SUCC       = 55  // 部成
	ORDER_SUCCEEDED       = 56  // 已成
	ORDER_JUNK            = 57  // 废单
	ORDER_UNKNOWN         = 255 // 未知
)
View Source
const (
	InvalidFee    = float64(0) // 无效的费用
	InvalidVolume = int(0)     // 无效的股数
	UnknownVolume = int(1)     // 未知的股数
)

Variables

This section is empty.

Functions

func AddCodeToBlackList added in v0.8.0

func AddCodeToBlackList(code string, secureType SecureType)

AddCodeToBlackList 新增黑白名单成分股

func CacheSync added in v0.7.7

func CacheSync()

CacheSync 缓存同步

func CalculateAvailableFund added in v0.7.7

func CalculateAvailableFund(tradeRule *config.TradeRule) float64

CalculateAvailableFund 计算一只股票的可动用资金量

参数:

totalBalance: 总账户余额
marketValue: 股票当前市值
averageCost: 平均买入成本(用于计算盈亏)
commission: 交易佣金率

返回值:

availableFund: 可动用资金量

func CalculateBuyPriceLimit added in v0.7.9

func CalculateBuyPriceLimit(price float64) float64

CalculateBuyPriceLimit 计算合适的买入价格

价格笼子, +2%和+0.10哪个大
目前使用, 当前价格+0.05

func CalculateFundForStrategy added in v0.7.7

func CalculateFundForStrategy(model models.Strategy) float64

计算策略标的的可用资金

func CalculateSellPriceLimit added in v0.7.9

func CalculateSellPriceLimit(price float64) float64

CalculateSellPriceLimit 计算卖出价格笼子

func CancelOrder

func CancelOrder(orderId int) error

CancelOrder 撤单

func CheckForBuy added in v0.8.0

func CheckForBuy(code string) bool

CheckForBuy 检查是否可以买

func CheckForSell added in v0.8.0

func CheckForSell(code string) bool

CheckForSell 检查是否可卖

func DirectOrder added in v0.7.7

func DirectOrder(direction Direction, strategyName, orderRemark, securityCode string, price float64, volume int) (int, error)

直接下单(透传)

func PlaceOrder

func PlaceOrder(direction Direction, model models.Strategy, securityCode string, price float64, volume int) (int, error)

PlaceOrder 下委托订单

func ProhibitBuyingToBlackList added in v0.8.0

func ProhibitBuyingToBlackList(code string)

func ProhibitSellingToBlackList added in v0.8.0

func ProhibitSellingToBlackList(code string)

func ProhibitTradingToBlackList added in v0.8.0

func ProhibitTradingToBlackList(code string)

ProhibitTradingToBlackList 禁止交易 - 双向

func SyncLoadListOfBlackAndWhite added in v0.8.0

func SyncLoadListOfBlackAndWhite()

SyncLoadListOfBlackAndWhite 同步黑白名单

func SyncPositions added in v0.7.7

func SyncPositions()

SyncPositions 同步持仓

func UpdatePositions added in v0.7.7

func UpdatePositions()

UpdatePositions 更新持仓

func UsageOfSecureType added in v0.8.0

func UsageOfSecureType() string

Types

type AccountDetail

type AccountDetail struct {
	TotalAsset  float64 `name:"总金额" json:"total_asset"`
	Cash        float64 `name:"可用" json:"cash"`
	MarketValue float64 `name:"市值" json:"market_value"`
	FrozenCash  float64 `name:"冻结" json:"frozen_cash"`
}

AccountDetail 账户信息

func QueryAccount

func QueryAccount() (*AccountDetail, error)

QueryAccount 查询账户信息

type AccountStatus added in v0.7.7

type AccountStatus int

AccountStatus 账号状态

type BlackAndWhite added in v0.8.0

type BlackAndWhite struct {
	Code string     `name:"证券代码" dataframe:"code"`
	Type SecureType `name:"类型" dataframe:"type"`
}

BlackAndWhite 黑白名单

type Direction

type Direction string

Direction 交易方向

const (
	BUY  Direction = "buy"  // 买入
	SELL Direction = "sell" // 卖出
	JUNK Direction = "junk" // 废单
)

func (Direction) Flag added in v0.7.7

func (d Direction) Flag() string

交易类型标志

func (Direction) String

func (d Direction) String() string

type OrderDetail

type OrderDetail struct {
	AccountType   int     `name:"账户类型" json:"account_type"`  // 账户类型
	AccountId     string  `name:"资金账户" json:"account_id"`    // 资金账号
	OrderTime     string  `name:"委托时间" json:"order_time"`    // 报单时间
	StockCode     string  `name:"证券代码" json:"stock_code"`    // 证券代码, 例如"600000.SH"
	OrderType     int     `name:"订单类型" json:"order_type"`    // 委托类型, 23:买, 24:卖
	Price         float64 `name:"委托价格" json:"price"`         // 报价价格, 如果price_type为指定价, 那price为指定的价格, 否则填0
	PriceType     int     `name:"报价类型" json:"price_type"`    // 报价类型, 详见帮助手册
	OrderVolume   int     `name:"委托量" json:"order_volume"`   // 委托数量, 股票以'股'为单位, 债券以'张'为单位
	OrderId       int     `name:"订单ID" json:"order_id"`      // 委托编号
	OrderSysid    string  `name:"合同编号" json:"order_sysid"`   // 柜台编号
	TradedPrice   float64 `name:"成交均价" json:"traded_price"`  // 成交均价
	TradedVolume  int     `name:"成交数量" json:"traded_volume"` // 成交数量, 股票以'股'为单位, 债券以'张'为单位
	OrderStatus   int     `name:"订单状态" json:"order_status"`  // 委托状态
	StatusMessage string  `name:"委托状态描述" json:"status_msg"`  // 委托状态描述, 如废单原因
	StrategyName  string  `name:"策略名称" json:"strategy_name"` // 策略名称
	OrderRemark   string  `name:"委托备注" json:"order_remark"`  // 委托备注
}

OrderDetail 委托订单

func QueryOrders

func QueryOrders() ([]OrderDetail, error)

QueryOrders 查询当日委托

func (OrderDetail) SecurityCode added in v0.7.7

func (d OrderDetail) SecurityCode() string

SecurityCode 获取证券代码

type OrderResult

type OrderResult struct {
	ProxyResult
	OrderId int `json:"order_id"`
}

OrderResult 结果

type OrderStatus added in v0.7.7

type OrderStatus int

OrderStatus 委托状态

type Position added in v0.7.7

type Position struct {
	AccountType     int     `name:"账户类型" dataframe:"account_type"`     // 账户类型
	AccountId       string  `name:"资金账户" dataframe:"account_id"`       // 资金账号
	StrategyCode    int     `name:"策略编码" dataframe:"strategy_code"`    // 策略编码
	OrderFlag       string  `name:"订单标识" dataframe:"order_flag"`       // 订单标识
	SecurityCode    string  `name:"证券代码" dataframe:"stock_code"`       // 证券代码, 例如"sh600000"
	Volume          int     `name:"持仓数量" dataframe:"volume"`           // 持仓数量,股票以'股'为单位, 债券以'张'为单位
	CanUseVolume    int     `name:"可卖数量" dataframe:"can_use_volume"`   // 可用数量, 股票以'股'为单位, 债券以'张'为单位
	OpenPrice       float64 `name:"开仓价" dataframe:"open_price"`        // 开仓价
	MarketValue     float64 `name:"市值" dataframe:"market_value"`       // 市值
	FrozenVolume    int     `name:"冻结数量" dataframe:"frozen_volume"`    // 冻结数量
	OnRoadVolume    int     `name:"在途股份" dataframe:"on_road_volume"`   // 在途股份
	YesterdayVolume int     `name:"昨夜拥股" dataframe:"yesterday_volume"` // 昨夜拥股
	AvgPrice        float64 `name:"成本价" dataframe:"avg_price"`         // 成本价
	CreateTime      string  `name:"创建时间" dataframe:"create_time"`      // 创建时间
	LastOrderId     string  `name:"前订单ID" dataframe:"last_order_id"`   //  前订单ID
	BuyTime         string  `name:"买入时间" dataframe:"buy_time"`         // 买入时间
	BuyPrice        float64 `name:"买入价格" dataframe:"buy_price"`        // 买入价格
	BuyVolume       int     `name:"买入数量" dataframe:"buy_volume"`       // 买入数量
	SellTime        string  `name:"卖出时间" dataframe:"sell_time"`        // 卖出时间
	SellPrice       float64 `name:"卖出价格" dataframe:"sell_price"`       // 卖出价格
	SellVolume      int     `name:"卖出数量" dataframe:"sell_volume"`      // 卖出数量
	CancelTime      string  `name:"撤单时间" dataframe:"cancel_time"`      // 撤单时间
	UpdateTime      string  `name:"更新时间" dataframe:"update_time"`      // 更新时间
}

Position 持仓

func (*Position) Key added in v0.7.7

func (p *Position) Key() string

Key 用证券代码作为关键字

func (*Position) MergeFromOrder added in v0.7.7

func (p *Position) MergeFromOrder(order OrderDetail) bool

MergeFromOrder 订单合并到持仓

func (*Position) Sync added in v0.7.7

func (p *Position) Sync(other PositionDetail) bool

type PositionDetail

type PositionDetail struct {
	AccountType     int     `name:"账户类型" json:"account_type"`     // 账户类型
	AccountId       string  `name:"资金账户" json:"account_id"`       // 资金账号
	StockCode       string  `name:"证券代码" json:"stock_code"`       // 证券代码, 例如"600000.SH"
	Volume          int     `name:"持仓数量" json:"volume"`           // 持仓数量,股票以'股'为单位, 债券以'张'为单位
	CanUseVolume    int     `name:"可卖数量" json:"can_use_volume"`   // 可用数量, 股票以'股'为单位, 债券以'张'为单位
	OpenPrice       float64 `name:"开仓价" json:"open_price"`        // 开仓价
	MarketValue     float64 `name:"市值" json:"market_value"`       // 市值
	FrozenVolume    int     `name:"冻结数量" json:"frozen_volume"`    // 冻结数量
	OnRoadVolume    int     `name:"在途股份" json:"on_road_volume"`   // 在途股份
	YesterdayVolume int     `name:"昨夜拥股" json:"yesterday_volume"` // 昨夜拥股
	AvgPrice        float64 `name:"成本价" json:"avg_price"`         // 成本价
}

PositionDetail 持仓信息

func QueryHolding

func QueryHolding() ([]PositionDetail, error)

QueryHolding 查询持仓

type ProxyResult

type ProxyResult struct {
	Status  int    `json:"status"`
	Message string `json:"message"`
}

type SecureType added in v0.8.0

type SecureType uint8

SecureType 安全类型

白名单: Pure(纯净), Safe(安全), Trustworthy(值得信赖), Approved(已批准), Acceptable(可接受), Permitted(允许)
黑名单: Forbidden(禁止), Unsafe(不安全), Untrustworthy(不值得信赖), Rejected(被拒绝), Unacceptable(不可接受), Prohibited(禁止)
备选: SecureVariety, SecureType, SecureKind
const (
	FreeTrading        SecureType = iota // 自由交易
	ProhibitForBuying                    // 禁止买入
	ProhibitForSelling                   // 禁止卖出
	ProhibitTrading    SecureType = 0xff // 禁止交易, 买入和卖出

)

type TradeFee added in v0.7.7

type TradeFee struct {
	Direction     Direction // 交易方向
	SecurityCode  string    // 证券代码
	Price         float64   // 价格
	Volume        int       // 数量
	StampDutyFee  float64   // 印花税, 双向, 默认单向, 费率0.1%
	TransferFee   float64   // 过户费, 双向, 默认是0.06%
	CommissionFee float64   // 券商佣金, 按照成交金额计算, 双向, 0.025%
	MarketValue   float64   // 股票市值
	TotalFee      float64   // 支出总费用
}

TradeFee 交易费用

func EvaluateFeeForBuy added in v0.7.7

func EvaluateFeeForBuy(securityCode string, fund, price float64) *TradeFee

EvaluateFeeForBuy 评估买入总费用

func EvaluateFeeForSell added in v0.7.7

func EvaluateFeeForSell(securityCode string, price float64, volume int) *TradeFee

EvaluateFeeForSell 评估卖出费用

func (*TradeFee) CalculateFundFromSell added in v0.7.7

func (f *TradeFee) CalculateFundFromSell(price float64, volume int) float64

CalculateFundFromSell 计算卖出股票后净收益

func (*TradeFee) CalculateNumToBuy added in v0.7.7

func (f *TradeFee) CalculateNumToBuy(fund, price float64) int

CalculateNumToBuy 估算可买股票数量

评估买入操作涉及的所有费用
返回100股的整数倍

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL