Skip to content
  • GO中一个包含go源码的文件夹即包(package),是组织代码的最小单元;
  • 包之间可以互相导入,但不能形成依赖环;
  • 包的依赖关系和文件夹包含无关,所有包在依赖上都是平等的;(层级很深的文件夹对应包甚至可以作为项目入口包)
  • 包的导入import语句必须放在文件顶部,不能在函数中导入,也不能动态导入;
  • 整个go项目的所有包依赖关系应形成一个单向无环树。

Go包依赖关系

banbot按功能特性和依赖关系划分了若干不同的包,而常用的一些全局变量大多分散在多个包,下面是全部包的依赖关系:

core

 --

btime

 core

utils

 core btime

config

 core btime utils

exg

 config utils core

orm

 exg config

data

 orm exg config

strat

 orm utils

goods

 orm exg

biz

 exg orm strat goods data

opt

 biz data orm goods strat

live

 biz data orm goods strat opt

entry

 optmize live data

各个Go包中的重要全局变量

text
core
    Ctx  // 全局上下文,可select <- core.Ctx响应全局退出事件
    StopAll // 发出全局退出事件
    NoEnterUntil  // 在给定截止时间戳之前禁止开单
    
biz
    AccOdMgrs // 订单簿对象,必定不为空
    AccLiveOdMgrs // 实盘订单簿对象,实盘时不为空
    AccWallets // 钱包
    
data
    Spider // 爬虫

orm
    HistODs // 已平仓的订单:全部出场,仅回测使用
    AccOpenODs // 打开的订单:尚未提交、已提交未入场、部分入场,全部入场,部分出场
    AccTriggerODs // 尚未提交的限价入场单,等待轮询提交到交易所,仅实盘使用
    AccTaskIDs // 当前任务ID
    AccTasks // 当前任务

exg
    Default  // 交易所对象

strat
    StagyMap // 策略注册map
    Versions // 策略版本
    Envs // 涉及的所有K线环境:Pair+TimeFrame
    PairTFStags // 标的+TF+策略 pair:[stratID]TradeStrat
    AccJobs // 涉及的所有标的 account: pair_tf: [stratID]StratJob
    AccInfoJobs // 涉及的所有辅助信息标的 account: pair_tf: [stratID]StratJob
    ForbidJobs // 禁止创建的策略任务 pair_TF: stratID: empty

注意:所有Acc开头的变量都是支持多账户的map