{
  "strategyId": "ai_generated_000001_open_cap_band",
  "version": "2",
  "parser": "omniquant-engine-script-v2",
  "market": "CN_A",
  "signalSymbol": "000001.SH",
  "benchmark": {
    "instrumentId": "000852.SH",
    "fallbackInstrumentId": "000852.SH"
  },
  "engineConfig": {
    "market": "CN_A",
    "signalSymbol": "000001.SH",
    "benchmarkSymbol": "000852.SH",
    "refreshRate": 15,
    "rankLimit": 40
  },
  "runtimeExpressions": {
    "prelude": "let refresh_rate = 15;\nlet stocknum = 40;\nlet xs = 0.008;\nlet base_index_level = 2000;\nlet lower_offset = 3;\nlet upper_offset = 28;\n\nfn cap_floor(current_price, base_index_level, xs, lower_offset) {\nround((current_price - base_index_level) * xs + lower_offset)\n}\n\nfn cap_ceiling(current_price, base_index_level, xs, upper_offset) {\nround((current_price - base_index_level) * xs + upper_offset)\n}",
    "selection": {
      "limitExpr": "stocknum",
      "marketCapField": "market_cap",
      "marketCapLowerExpr": "cap_floor(signal_open, base_index_level, xs, lower_offset)",
      "marketCapUpperExpr": "cap_ceiling(signal_open, base_index_level, xs, upper_offset)",
      "stockFilterExpr": "stock_ma5 > stock_ma10 && stock_ma10 > stock_ma30 && rolling_mean(\"volume\", 5) < rolling_mean(\"volume\", 60) && !ends_with(symbol, \".BJ\") && !at_upper_limit && !at_lower_limit"
    },
    "ordering": {
      "rankBy": "market_cap",
      "rankExpr": "",
      "rankOrder": "asc"
    }
  }
}
