跳转至

Introduction

Algo 应用程序如何工作?

Algo 应用程序加载配置文件,根据配置创建对象,然后使用属性初始化它们。一些属性可以是另一个对象的名称,应用程序使用它们将对象链接在一起并形成计算树。然后应用程序使用市场数据事件和时间事件驱动计算树,生成交易信号并发送/取消订单。

算法用户通常从第三方获得交易逻辑组件,并在开始他们的研究过程时实施一些额外的组件。一旦组件在那里,他们大多花时间手动、编程或通过模型拟合过程生成配置文件。因此配置成为交易策略开发过程中的关键。

使用 Json 创建交易逻辑

每个基于 Apifiny 算法的应用程序都使用一个 json 配置文件来指定其环境并组装交易逻辑。下面是一个例子:

{
    "instance": {
        "log_path": "./logs/strategy_demo",
        "name": "strategy_demo",
    },
    "servers": {
        "redis_server": "127.0.0.1"
    },
    "apikeys": {
        "BINANCEUS": {
            "key": "ccdaskfasdjkfjko",
            "secret": "asdfasdfasdfasdf"
            }   
    },
    "fees": {
        "BINANCEUS": {
            "make": 0.0,
            "take": 0.000462
        }
    },    
    "exchanges":
    [
        {"exchange":"BINANCEUS","trade_type":"Direct","market_data_type":"Direct"}
    ],
    "risk_formulas": [
        ["Port_Risk", ["RiskFormula", {"components": [[["BTCUSDT", "BINANCEUS"], 1.0]]}]]
    ],
    "accounts": [
        [10001, ["Account", {"risk_formulas": ["Port_Risk"], "id": 10001}]]
    ],
    "symbols": [
        {"port": ["BTCUSDT", "BINANCEUS"], "cid": 10000}
    ],
    "samplers": [
        ["ts_basis", ["TimeSampler", {"halflife": 1, "msecs": 100}]]
    ],
    "pricing_models": [
        ["BTCUSDT.midpx", ["MidPx", {"port": ["BTCUSDT", "BINANCEUS"]}]], 
        ["BTCUSDT.Vwap", ["Vwap", {"port": ["BTCUSDT", "BINANCEUS"], "sampler": "ts_basis"}]]
    ],
    "variables": [
        ["Zero", ["Const", {"value": 0.0}]]
    ],
    "models": [
        ["Zero_m", ["LinearModel", {"variable": "Zero"}]]
    ],
    "strategies": [
        ["BTCUSDT.BINANCEUS", ["CCEventMakerStrategy", {"symbol": "BTCUSDT", "trade_market": "BINANCEUS", "account": 10001, "dep_pm": "BTCUSDT.midpx", "model": "Zero_m", "VWap": "BTCUSDT.Vwap", "max_spread_bps": 5, "max_quote_frombbo_bps": 0.001, "update_quote_bps": 2, "quote_bps": 3, "allowed_bps": 5, "order_notional": 500, "max_notional": 2500, "max_risk": 2500, "cooloff": 100, "start_time": "00:30:00", "end_time": "23:59:59", "use_separate_logs": true, "close_mode": "none"}]]
    ]
}

C++ 编程接口

Apifiny Algo 为用户提供了丰富的编程接口。从概念上讲,我们可以将 API 分为 2 组:

  • 高级:Quants/traders 使用 c++ 来实现算法组件,例如采样器、定价模型、变量和策略。
  • 低级:交易者/开发人员可以直接访问库的各个方面,例如市场数据回调、下单 API、历史数据播放器等。

交易研究

Algo 提供模拟(回测)和数据生成功能。您可以创建基于规则的交易策略并运行模拟来测试它,或者生成数据并使用机器学习方法来拟合模型。

Quant 库

前面的教程展示了 Apfiny Algo SDK 提供了一个灵活的高性能交易引擎,您可以在它之上创建复杂的交易应用程序。然而,交易者仍然需要代码算法、执行逻辑、投资组合逻辑和风险管理逻辑来进行实际交易。这可以通过量化库来缓解。 Apifiny 将很快为用户提供标准量化库。安装此库后,您很可能只需要编辑 json 配置文件即可进行大部分研究和实时交易。

Apfiny Algo 被设计为可扩展的,它允许第 3 方开发量化库并将其分发给公众。可以同时使用多个库。