㈠ 最全集合競價選股公式:集合競價選股公式有哪些
集合競價選股公式有很多,下面例舉1個成功率最高的集合競價選股公式:
ST:=STRFIND(stkname,'ST',1)>0;
S:=STRFIND(stkname,'S',1)>0;
停牌:=(DYNAINFO(4)=0);
附加:=CLOSE/ref(CLOSE,5)<1.2 AND CLOSE<37 AND FINANCE2(37)/10000<4;
一字板:=C/REF(C,1)>=1.09 AND O=C;
xg0:=not(ST) and not(停牌) and not(S) AND NOT(一字板);
量比:=V/REF(MA(V,5),1);
流通盤:=FINANCE2(37)/10000<6;
D1:=ISBUYORDER AND DYNAINFO(9)*C/100>=50;{分筆買入單>50萬}
D2:=(DYNAINFO(23)-DYNAINFO(22))/CAPITAL*100>=0.4;{內外盤凈};
T1:=DYNAINFO(11)/DYNAINFO(4)>=1.03 AND DYNAINFO(11)/DYNAINFO(4)<=1.05;
T2:=H/DYNAINFO(3)<=1.075 AND C/DYNAINFO(3)<=1.06 AND C>=DYNAINFO(11) AND C
T3:=HOUR=9 AND MINUTE>25.99;{時間控制}
預警:=T1 AND T2 AND T3 AND D1 AND D2;
換手率:=COUNT(VOL/CAPITAL*100<3,3)=0;
現價:=DYNAINFO(7);
均價:=DYNAINFO(11)+(DYNAINFO(11)*0.021);
條件:=IF(現價>均價,1,0);
集合競價:=量比 AND 流通盤 AND 預警 AND 條件;
選股:XG0 AND 集合競價;CXH:=STRTONUM(STRRIGHT(DATESTR(CURRENTDATE),1));
WARNING('http://www.cxh99.com',CURRENTTIME>180000 and (CXH=1 OR CXH=6));
DRAWTEXTREL(10 ,10 ,'指標公式');
㈡ 求集合競價規則選股方法的策略源碼
# coding=utf-8
from __future__ import print_function, absolute_import, unicode_literals
from gm.api import *
'''
本策略基於掘金量化平台
本策略通過獲取SHSE.000300滬深300的成份股數鍵歷搭據並統計其30天內
開盤價大於前收盤價的天數,並在該天數大於閾值10的時候加入股票池
隨後對不在股票池的股票平倉並等權配置股票池的標的,每次交易間隔1個月.
回測數據為:SHSE.000300在2015-01-15的成份股
回測時間為:2017-07-01 08:00:00到2017-10-01 16:00:00
'''
def init(context):
# 每月第一個交易稿拿日爛銀的09:40 定時執行algo任務
schele(schele_func=algo, date_rule='1m', time_rule='09:40:00')
# context.count_bench累計天數闕值
context.count_bench = 10
# 用於對比的天數
context.count = 30
# 最大交易資金比例
context.ratio = 0.8
def algo(context):
# 獲取當前時間
now = context.now
# 獲取上一個交易日
last_day = get_previous_trading_date(exchange='SHSE', date=now)
# 獲取滬深300成份股
context.stock300 = get_history_constituents(index='SHSE.000300', start_date=last_day,
end_date=last_day)[0]['constituents'].keys()
# 獲取當天有交易的股票
not_suspended_info = get_history_instruments(symbols=context.stock300, start_date=now, end_date=now)
not_suspended_symbols = [item['symbol'] for item in not_suspended_info if not item['is_suspended']]
trade_symbols = []
if not not_suspended_symbols:
print('沒有當日交易的待選股票')
return
for stock in not_suspended_symbols:
recent_data = history_n(symbol=stock, frequency='1d', count=context.count, fields='pre_close,open',
fill_missing='Last', adjust=ADJUST_PREV, end_time=now, df=True)
diff = recent_data['open'] - recent_data['pre_close']
# 獲取累計天數超過闕值的標的池.並剔除當天沒有交易的股票
if len(diff[diff > 0]) >= context.count_bench:
trade_symbols.append(stock)
print('本次股票池有股票數目: ', len(trade_symbols))
# 計算權重
percent = 1.0 / len(trade_symbols) * context.ratio
# 獲取當前所有倉位
positions = context.account().positions()
# 如標的池有倉位,平不在標的池的倉位
for position in positions:
symbol = position['symbol']
if symbol not in trade_symbols:
order_target_percent(symbol=symbol, percent=0, order_type=OrderType_Market,
position_side=PositionSide_Long)
print('市價單平不在標的池的', symbol)
# 對標的池進行操作
for symbol in trade_symbols:
order_target_percent(symbol=symbol, percent=percent, order_type=OrderType_Market,
position_side=PositionSide_Long)
print(symbol, '以市價單調整至權重', percent)
if __name__ == '__main__':
'''
strategy_id策略ID,由系統生成
filename文件名,請與本文件名保持一致
mode實時模式:MODE_LIVE回測模式:MODE_BACKTEST
token綁定計算機的ID,可在系統設置-密鑰管理中生成
backtest_start_time回測開始時間
backtest_end_time回測結束時間
backtest_adjust股票復權方式不復權:ADJUST_NONE前復權:ADJUST_PREV後復權:ADJUST_POST
backtest_initial_cash回測初始資金
backtest_commission_ratio回測傭金比例
backtest_slippage_ratio回測滑點比例
'''
run(strategy_id='strategy_id',
filename='main.py',
mode=MODE_BACKTEST,
token='token_id',
backtest_start_time='2017-07-01 08:00:00',
backtest_end_time='2017-10-01 16:00:00',
backtest_adjust=ADJUST_PREV,
backtest_initial_cash=10000000,
backtest_commission_ratio=0.0001,
backtest_slippage_ratio=0.0001)