写一个基于聚宽平台的,简单的交易策略
时间: 2024-05-12 14:14:47 浏览: 11
好的,以下是一个简单的交易策略:
策略思路:使用均线策略,当股票价格突破20日均线时买入,当股票价格跌破20日均线时卖出。
具体实现步骤:
1. 获取股票数据。
使用聚宽平台的接口,获取指定股票的历史价格数据。
2. 计算20日均线。
对于每一天的股票价格数据,计算20日均线。
3. 判断买卖信号。
如果当天股票价格突破20日均线,则产生买入信号;如果当天股票价格跌破20日均线,则产生卖出信号。
4. 下单交易。
如果有买入信号,则以市价买入指定数量的股票;如果有卖出信号,则以市价卖出持有的股票。
5. 定时运行策略。
将该策略部署到聚宽平台上,定时运行,实现自动交易。
代码实现:
```python
# 导入所需模块
import jqdatasdk as jq
from jqlib.technical_analysis import *
import talib
# 初始化聚宽账号
jq.auth('账号', '密码')
# 设置策略参数
code = '000001.XSHE' # 股票代码
start_date = '2015-01-01' # 开始日期
end_date = '2021-01-01' # 结束日期
amount = 10000 # 每次交易的股票数量
# 获取股票价格数据
df = jq.get_price(code, start_date=start_date, end_date=end_date, frequency='daily')
# 计算20日均线
df['ma20'] = talib.MA(df['close'], timeperiod=20)
# 判断买卖信号
df['signal'] = 0
df.loc[df['close'] > df['ma20'], 'signal'] = 1
df.loc[df['close'] < df['ma20'], 'signal'] = -1
# 下单交易
positions = 0
for i in range(len(df)):
if df['signal'][i] == 1 and positions == 0:
# 产生买入信号,以市价买入指定数量的股票
price = df['close'][i]
amount_to_buy = amount // price // 100 * 100 # 保证买入数量为100的整数倍
jq.order(code, amount_to_buy, price=price, side='buy', time='open')
positions = amount_to_buy
elif df['signal'][i] == -1 and positions > 0:
# 产生卖出信号,以市价卖出持有的股票
price = df['close'][i]
jq.order(code, positions, price=price, side='sell', time='open')
positions = 0
# 输出交易结果
print(f'Total returns: {jq.get_trade_days(start_date, end_date)[-1]} - {jq.get_trade_days(start_date, end_date)[0]}')
```
这是一个简单的交易策略,仅供参考。在实际应用中,需要根据市场情况和个人风险偏好进行适当调整。