我的具体策略逻辑如下:
1、按照半个小时扫描一次所有主板非ST股票,并进一步筛选目前收盘价上穿5-10-20-30-60-90-125日线的其中三条;
2、并且要求进一步筛选去年和近两个季度都盈利的股票;
3、要加上选出的股票的位置判断;位置要位于近两年最低价的130%以内;
4、单日成交量较上一日倍量;筹码集中度70小于15%
5.符合条件的股票池中,买入的顺序为分时的量比和主力净量越大越优先;
6、在上述策略中加入限制条件:总持有股票数量为不超过2只;且单只股票的仓位不得大于二分之一;
7、在量化交易策略中加入买入和卖出条件:买入条件为选出股票的分时价格的当时平均价格挂买入,买入金额为20万元;卖出条件为:止损3%,止盈5%-10%;
8、持股周期为不超过三天;
请大家依据上述逻辑编辑脚本,目的是在同花顺supermind上能回测策略并执行量化交易;数据来源和执行平台都是同花顺量化平台;谢谢!
同花顺supermind的帮助链接如下:https://quant.10jqka.com.cn/view/help/4
基于同花顺supermind的量化策略脚本编辑
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
21条回答 默认 最新
关注 要在同花顺SuperMind平台上实现你描述的量化策略,可以按照以下步骤编写策略脚本。以下是一个示例脚本,基于你的策略逻辑进行实现:
# 导入必要的库 import numpy as np import pandas as pd # 设置策略参数 scan_interval = 30 # 扫描间隔,单位分钟 max_hold_stocks = 2 # 最大持有股票数量 max_position_per_stock = 0.5 # 单只股票最大仓位比例 buy_amount = 200000 # 每次买入金额 stop_loss = 0.03 # 止损比例 take_profit_min = 0.05 # 最小止盈比例 take_profit_max = 0.10 # 最大止盈比例 max_hold_days = 3 # 持股周期,单位天 # 筛选股票函数 def filter_stocks(data): filtered_stocks = [] for stock in data: # 条件1:收盘价上穿均线 close = stock['close'] ma5 = stock['ma5'] ma10 = stock['ma10'] ma20 = stock['ma20'] ma30 = stock['ma30'] ma60 = stock['ma60'] ma90 = stock['ma90'] ma125 = stock['ma125'] if sum([close > ma for ma in [ma5, ma10, ma20, ma30, ma60, ma90, ma125]]) >= 3: # 条件2:去年和近两个季度盈利 if stock['last_year_profit'] > 0 and stock['last_two_quarters_profit'] > 0: # 条件3:位置判断 if close <= stock['lowest_price_2_years'] * 1.3: # 条件4:成交量和筹码集中度 if stock['volume_today'] >= stock['volume_yesterday'] * 2 and stock['chip_concentration'] <= 15: filtered_stocks.append(stock) return filtered_stocks # 排序股票函数 def sort_stocks(filtered_stocks): sorted_stocks = sorted(filtered_stocks, key=lambda x: (x['volume_ratio'], x['net_main_force']), reverse=True) return sorted_stocks # 买入股票函数 def buy_stocks(sorted_stocks): for stock in sorted_stocks: if len(holdings) < max_hold_stocks: if stock['ticker'] not in holdings: # 买入股票 buy_price = stock['current_price'] buy_quantity = buy_amount / buy_price holdings[stock['ticker']] = {'buy_price': buy_price, 'buy_quantity': buy_quantity, 'buy_date': current_date} # 更新仓位 portfolio_value = sum([holdings[ticker]['buy_price'] * holdings[ticker]['buy_quantity'] for ticker in holdings]) if portfolio_value > total_cash * max_position_per_stock: break # 卖出股票函数 def sell_stocks(): for ticker in list(holdings.keys()): stock = get_stock_data(ticker) buy_price = holdings[ticker]['buy_price'] current_price = stock['current_price'] if (current_price / buy_price - 1) <= -stop_loss or (current_price / buy_price - 1) >= take_profit_min or (current_price / buy_price - 1) >= take_profit_max or (current_date - holdings[ticker]['buy_date']).days > max_hold_days: # 卖出股票 sell_price = current_price sell_quantity = holdings[ticker]['buy_quantity'] total_cash += sell_price * sell_quantity del holdings[ticker] # 初始化持仓和现金 holdings = {} total_cash = 1000000 # 初始现金金额 # 主策略函数 def strategy(data): filtered_stocks = filter_stocks(data) sorted_stocks = sort_stocks(filtered_stocks) buy_stocks(sorted_stocks) sell_stocks() # 获取股票数据函数(示例) def get_stock_data(ticker): # 此处应实现从同花顺平台获取股票数据的逻辑 pass # 主程序 current_date = pd.Timestamp.now() while True: if (pd.Timestamp.now() - current_date).seconds >= scan_interval * 60: current_date = pd.Timestamp.now() stock_data = get_all_stock_data() # 获取所有股票数据 strategy(stock_data)
解释:
- 筛选股票:
filter_stocks
函数根据你的策略条件筛选股票。 - 排序股票:
sort_stocks
函数根据量比和主力净量排序股票。 - 买入股票:
buy_stocks
函数按照排序结果买入股票。 - 卖出股票:
sell_stocks
函数根据止损、止盈和持股周期条件卖出股票。 - 主策略函数:
strategy
函数整合筛选、排序、买入和卖出逻辑。 - 主程序:在主程序中定期调用策略函数。
注意事项:
- 数据获取:示例中
get_stock_data
和get_all_stock_data
函数需要实现从同花顺平台获取股票数据的逻辑。你可以参考同花顺SuperMind的API文档来实现。 - 持仓管理:示例中
holdings
和total_cash
用于管理持仓和现金情况。 - 回测和执行:在同花顺SuperMind平台上进行回测和执行时,需要确保数据获取和策略逻辑的实现符合平台要求。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 筛选股票:
悬赏问题
- ¥30 求给定范围的全体素数p的(p-2)的连乘积
- ¥15 VFP如何使用阿里TTS实现文字转语音?
- ¥100 需要跳转番茄畅听app的adb命令
- ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
- ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
- ¥50 opencv4nodejs 如何安装
- ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
- ¥15 nginx反向代理获取ip,java获取真实ip
- ¥15 eda:门禁系统设计
- ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页