Python量化交易學習筆記(十四)demo52——程序化交易,交易時間段內自動買入跟蹤股票


本文記錄使用easytrader+easyquotation實現策略的程序化交易的流程。上一篇 已經記錄了使用easytrader進行程序化交易的過程,本文主要對easyquotation獲取實時數據實現策略進行介紹。

  • easyquotation安裝 

 

pip install easyquotation

  

  • 選擇行情數據源

 

# 選擇數據源
import easyquotation as eq
 q = eq.use('qq')

 

 

  • 判斷是否進入交易時間9.30-11.30---1:00--3:00

 

# 判斷是否進入交易時間9.30-11.30---1:00--3:00
time_now = datetime.datetime.now()
if time_now.time() < datetime.time(9, 30, 0) \
or datetime.time(11, 30, 0) <= time_now.time() <= datetime.time(13, 0, 0):
continue
if time_now.time() >= datetime.time(15, 0, 0):
print("當前時間:"+time_now.time().strftime('%Y-%m-%d-%H-%M-%S')+"不在交易時間段,退出交易程序化")
break

 

 

  • 根據時間更新成交量權重

 

volume_weight = 1
if time_now.time() > datetime.time(13, 0, 0):
delta_seconds = (time_now - datetime.datetime(time_now.year, time_now.month, time_now.day, 13, 0, 0)).total_seconds()
volume_weight = 1 + delta_seconds / 7200

print('\n', time_now)
time_str = time_now.strftime('%Y-%m-%d-%H-%M-%S')
#定義一個買入股票對象
buy_stocks = {}
data = q.stocks(stocks)
print('返回數據:'+data)

 

 

  • 循環遍歷

 

for key in data:
# 價格過20日均線
ma_20 = (history_data[key]['ma_19'] * 19 + data[key]['now']) / 20
if not data[key]['now'] >= ma_20:
continue
# 漲幅不能過大
if not (data[key]['now'] - data[key]['close']) / data[key]['close'] < 0.0618:
continue
# 成交量
if not data[key]['volume'] > history_data[key]['volume'] * volume_weight:
continue

buy_price = 0.02 + data[key]['now']
if g_trade:
buy_limit = min(balance, 3000)
if 100 * buy_price < balance:
ret = user.buy(key, buy_price, buy_limit // (buy_price * 100) * 100)
print(ret)

buy_stocks[key] = buy_price
stocks.remove(key)
print(key)

 

 

C:\Python38\python.exe F:/GZH/stock/src/com/gzh/stock51_buy.py
獲取當前目錄:F:\GZH\stock\src\com\gzh/../
股票代碼: ['sh600256', 'sh600348', 'sh600968', 'sh600971', 'sh601857', 'sh603300']
數據:

{
"name": "廣匯能源",
"code": "600256",
"now": 3.28,
"close": 3.4,
"open": 3.38,
"volume": 55377600,
"bid_volume": 15774500,
"ask_volume": 39603000,
"bid1": 3.27,
"bid1_volume": 1127100,
"bid2": 3.26,
"bid2_volume": 1612700,
"bid3": 3.25,
"bid3_volume": 1507900,
"bid4": 3.24,
"bid4_volume": 252600,
"bid5": 3.23,
"bid5_volume": 324400,
"ask1": 3.28,
"ask1_volume": 80100,
"ask2": 3.29,
"ask2_volume": 261900,
"ask3": 3.3,
"ask3_volume": 214900,
"ask4": 3.31,
"ask4_volume": 325600,
"ask5": 3.32,
"ask5_volume": 741600,
"最近逐筆成交": "",
"漲跌": -0.12,
"漲跌(%)": -3.53,
"high": 3.39,
"low": 3.27,
"datetime": datetime.datetime(2021, 7, 8, 10, 30, 15),
"價格/成交量(手)/成交額": "3.28/553776/183582685",
"成交量(手)": 55377600,
"成交額(萬)": 183580000,
"turnover": 0.82,
"PE": 11.78,
"unknown": "",
"high_2": 3.39,
"low_2": 3.27,
"振幅": 3.53,
"流通市值": 221.53,
"總市值": 221.53,
"PB": 1.25,
"漲停價": 3.74,
"跌停價": 3.06,
"量比": 2.92,
"委差": 32006,
"均價": 3.32,
"市盈(動)": 6.9,
"市盈(靜)": 16.58
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM