Add 000852 volume trend platform strategy example
This commit is contained in:
51
data/demo/000852量价微盘平台策略.engine-script.txt
Normal file
51
data/demo/000852量价微盘平台策略.engine-script.txt
Normal file
@@ -0,0 +1,51 @@
|
||||
let refresh_rate = 15;
|
||||
let stocknum = 40;
|
||||
let close_rate = 1.07;
|
||||
let loss_rate = 0.93;
|
||||
let rsi_rate = 1.0001;
|
||||
let trade_rate = 0.5;
|
||||
|
||||
fn band_start(current_price) {
|
||||
if abs(current_price - 2000) < 0.000001 {
|
||||
7
|
||||
} else {
|
||||
(current_price - 2000) * (4.0 / 500.0) + 7
|
||||
}
|
||||
}
|
||||
|
||||
fn band_end(current_price) {
|
||||
band_start(current_price) + 10
|
||||
}
|
||||
|
||||
strategy("microcap_volume_trend_000852") {
|
||||
market("CN_A")
|
||||
benchmark("000852.SH")
|
||||
signal("000852.SH")
|
||||
|
||||
rebalance.every_days(refresh_rate).at("10:18")
|
||||
|
||||
universe.exclude("paused", "st", "kcb", "one_yuan", "new_listing")
|
||||
|
||||
selection.limit(stocknum)
|
||||
selection.market_cap_band(
|
||||
field="market_cap",
|
||||
lower=band_start(signal_close),
|
||||
upper=band_end(signal_close)
|
||||
)
|
||||
|
||||
risk.index_exposure(
|
||||
signal_ma5 > signal_ma10 * rsi_rate ? 1.0 : trade_rate
|
||||
)
|
||||
|
||||
filter.stock_expr(
|
||||
stock_ma5 > stock_ma10 * rsi_rate &&
|
||||
stock_ma10 > stock_ma30 * rsi_rate &&
|
||||
rolling_mean("volume", 5) < rolling_mean("volume", 20) &&
|
||||
rolling_mean("volume", 5) < rolling_mean("volume", 60)
|
||||
)
|
||||
|
||||
risk.take_profit(close_rate)
|
||||
risk.stop_loss(loss_rate)
|
||||
|
||||
ordering.rank_by("market_cap", "asc")
|
||||
}
|
||||
38
data/demo/000852量价微盘平台策略.strategy_spec.json
Normal file
38
data/demo/000852量价微盘平台策略.strategy_spec.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"strategyId": "microcap_volume_trend_000852",
|
||||
"version": "2",
|
||||
"parser": "omniquant-engine-script-v2",
|
||||
"market": "CN_A",
|
||||
"signalSymbol": "000852.SH",
|
||||
"benchmark": {
|
||||
"instrumentId": "000852.SH",
|
||||
"fallbackInstrumentId": "000852.SH"
|
||||
},
|
||||
"engineConfig": {
|
||||
"market": "CN_A",
|
||||
"signalSymbol": "000852.SH",
|
||||
"benchmarkSymbol": "000852.SH",
|
||||
"refreshRate": 15,
|
||||
"rankLimit": 40
|
||||
},
|
||||
"runtimeExpressions": {
|
||||
"prelude": "let refresh_rate = 15;\nlet stocknum = 40;\nlet close_rate = 1.07;\nlet loss_rate = 0.93;\nlet rsi_rate = 1.0001;\nlet trade_rate = 0.5;\nfn band_start(current_price) {\n if abs(current_price - 2000) < 0.000001 {\n 7\n } else {\n (current_price - 2000) * (4.0 / 500.0) + 7\n }\n}\nfn band_end(current_price) {\n band_start(current_price) + 10\n}",
|
||||
"selection": {
|
||||
"limitExpr": "stocknum",
|
||||
"marketCapField": "market_cap",
|
||||
"marketCapLowerExpr": "band_start(signal_close)",
|
||||
"marketCapUpperExpr": "band_end(signal_close)",
|
||||
"stockFilterExpr": "stock_ma5 > stock_ma10 * rsi_rate && stock_ma10 > stock_ma30 * rsi_rate && rolling_mean(\"volume\", 5) < rolling_mean(\"volume\", 20) && rolling_mean(\"volume\", 5) < rolling_mean(\"volume\", 60)"
|
||||
},
|
||||
"risk": {
|
||||
"exposureExpr": "signal_ma5 > signal_ma10 * rsi_rate ? 1.0 : trade_rate",
|
||||
"stopLossExpr": "loss_rate",
|
||||
"takeProfitExpr": "close_rate"
|
||||
},
|
||||
"ordering": {
|
||||
"rankBy": "market_cap",
|
||||
"rankExpr": "",
|
||||
"rankOrder": "asc"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user