Global

GetCommand()

获取管理端推送给实盘的交互指令(非阻塞轮询)。

语法

python
cmd = GetCommand()

返回值

  • str:指令内容(字符串,格式由策略自行约定,如普通文本或 JSON)
  • None:当前没有指令,或查询失败

说明

  • 管理端向实盘推送的指令进入托管者中该实盘的指令队列,GetCommand() 每次从队列取出一条,取出后即删除。
  • 调用不会阻塞,没有指令时立即返回 None。
  • 队列中有多条指令时,需要多次调用才能全部取出。

示例

主循环中处理指令

python
def main():
    running = True
    while True:
        cmd = GetCommand()
        if cmd:
            Log(f"📩 收到指令: {cmd}")
            if cmd == "pause":
                running = False
            elif cmd == "resume":
                running = True
            elif cmd == "stop":
                Exit(reason="收到停止指令")

        if running:
            ticker = exchange.GetTicker()
            # ... 策略逻辑 ...
        Sleep(3000)

处理 JSON 指令

python
def handle(cmd):
    try:
        data = json.loads(cmd)
    except ValueError:
        Log("非 JSON 指令:", cmd)
        return
    if data.get("action") == "buy":
        exchange.Buy(data["price"], data["amount"], "手动指令")

def main():
    while True:
        cmd = GetCommand()
        while cmd:                 # 一次取完队列中的所有指令
            handle(cmd)
            cmd = GetCommand()
        Sleep(1000)

相关方法

  • Exit - 主动请求退出,等待清理完成
  • Sleep - 休眠