这里我们利用整节课所有的知识,来进行实盘模拟交易,你可以选择真实交易,可以使用你注册的券商进行实际交易,但是对于刚开始上手量化的同学,提醒大家还是用模拟账户,这样你可以等整个程序都跑顺了之后,再去用真金白银去交易。
一、实战
创建一个python文件,用于跑策略:
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
import Data.Stock as st
import Strategy.ma_strategy as ma
import easytrader
import pandas as pd
import time
#交易初始化
user = easytrader.use('universal_client')
user.connect(r'C:\同花顺软件\同花顺\xiadan.exe')
user.enable_type_keys_for_editor()
#参数设置
start_date = '2016-01-01'
end_date = '2021-01-01'
#确定股票池:沪深300
stocks = st.get_index_list()
print("===========股票列表", stocks)
#找到有交易信号的股票,为之后交易进行准备
for stock in stocks:
data = st.get_single_price(stock, 'daily', start_date, end_date)
print("==============股票数据", stock, "==============")
# 跑策略:双均线
data = ma.ma_strategy(data=data)
print(data.tail())
#判断交易信号:买入、卖出
signal = data['signal'].iloc[-1]
print("===========交易信号", signal, "==============")
# 去除股票代码后缀(.XSHE)
code = stock.split('.')[0]
#获取当期收盘价
price = data['close'].iloc[-1]
# 交易数量
amount = 100
#判断持仓信息(转化为DataFrame )
position = pd.DataFrame(user.position)
stock_pos = None
if position.empty == False:
stock_pos = position[position['证券代码'] == code]['可用余额'].iloc[0]
print("===============当前持仓:", stock_pos, "============")
if signal == 1:
entrust = user.buy(code, price, amount)
print("===============买入id:", entrust, "============")
elif signal == -1 and stock_pos is not None:
entrust = user.sell(code, price, stock_pos)
print("===============卖出id:", entrust, "============")
else:
print("未产生信号")
time.sleep(3)
运行即可完成自动化
看起来跑的挺顺利的。可以看到大部分是无交易信号的。在实盘之前,最好模拟交易几个月,你在跑策略的过程中会发现很多问题,你也会充分的意思到它和你回测的结果的不同。
到这里我们基本上把策略的部分和模拟交易的部分给结合起来了。
转载请注明:xuhss » Python量化交易实战-42双均线策略股票量化交易模拟实战