量化交易系統開發(說明流程)丨合約量化系統開發(技術分析及原始碼)

MrsFu123發表於2022-05-30

量化交易程式程式碼如下:


  import pandas as pd


  from aip import AipOcr


  import pyautogui


  import pywinauto


  import time


  import ddddocr


  import PIL


  import akshare as ak


  from PIL import Image,ImageDraw


  import pyttsx3


  from finta import TA


  import quantstats as qs


  import yagmail


  import requests


  from bs4 import BeautifulSoup


  from lxml import etree


  import schedule


  import matplotlib.pyplot as plt


  import mplfinance as mpf


  app_id='252342421225'


  api_key='grc71324214ewewlsl8zXo'


  secret_key='ny8ClwdaLIDNaondoAINDOLH5jP9s6RbyG3'


  #登入同花順期貨通


  def featurns_log():


  '''


  登入同花順期貨通,手動啟動程式可以不用呼叫這個函式


  識別驗證碼自動登入


  '''


  import time


  pywinauto.application.Application(backend='uia').start(r'E:同花順期貨通binhapp.exe')


  pyttsx3.speak('運用啟動成功')


  #等待程式


  time.sleep(1)


  #最大化視窗


  pyautogui.click(x=1379,y=18)


  time.sleep(1)


  #點選交易


  pyautogui.click(x=941,y=17)


  #選擇模擬交易


  pyautogui.click(x=1065,y=53)


  time.sleep(1)


  pyautogui.click(x=1155,y=85)


  #等待程式響應


  time.sleep(3)


  #驗證碼區域截圖


  pyautogui.screenshot(imageFilename=r'C:UsersAdministratorDesktop期貨交易驗證碼.png',region=(1042,611,1099-1042,641-611))


  #識別驗證碼


  time.sleep(1)


  ocr=ddddocr.DdddOcr()


  with open(r'C:UsersAdministratorDesktop期貨交易驗證碼.png','rb')as f:


  imag=f.read()


  result=ocr.classification(imag)


  pyttsx3.speak('驗證碼結果{}'.format(result))


  #輸入驗證碼,先定位


  pyautogui.click(x=881,y=632)


  time.sleep(1)


  #輸入驗證碼


  pyautogui.typewrite(result,interval=0.1)


  #點選登入


  time.sleep(1)


  pyautogui.click(x=950,y=722)


  pyttsx3.speak('登入成功')


  #交易狀態的識別,檢測買入等交易是否成功


  def featurns_trader_stats():


  '''


  交易狀態的識別,檢測買入等交易是否成功


  '''


  pyttsx3.speak('交易狀態識別')


  pyautogui.screenshot(r'C:UsersAdministratorDesktop期貨交易交易狀態.png',region=(257,846,638-257,882-846))


  options={'language':'chn_eng'}


  aipcor=AipOcr(app_id,api_key,secret_key)


  image=open(r'C:UsersAdministratorDesktop期貨交易交易狀態.png','rb')


  image1=image.read()


  text_list=aipcor.general(image1,options=options)


  df1=pd.json_normalize(text_list['words_result'])


  df1.to_excel(r'C:UsersAdministratorDesktop期貨交易交易狀態.xlsx')


  df=pd.read_excel(r'C:UsersAdministratorDesktop期貨交易交易狀態.xlsx')


  df_words=df['words']


  text=df_words[0]+df_words[1]


  pyttsx3.speak('識別完成')


  pyttsx3.speak(text)


  #建立多頭頭寸,買入


  def featurns_buy(stock='cu2205',num='1'):


  '''


  stock='期貨程式碼'


  num=買入的手數


  '''


  #點選輸入


  pyttsx3.speak('開始買入建倉')


  pyautogui.click(x=320,y=649)


  #清楚資料


  pyttsx3.speak('開始清除')


  for i in range(6):


  pyautogui.press('backspace')


  pyttsx3.speak('清楚完成')


  pyttsx3.speak('開始輸入')


  pyautogui.typewrite(stock,interval=0.001)


  pyautogui.press('enter')


  pyttsx3.speak('輸入完成')


  #輸入買入手數


  #開始清楚


  pyautogui.click(x=470,y=641)


  pyttsx3.speak('開始清除')


  for i in range(6):


  pyautogui.press('backspace')


  pyttsx3.speak('清除完成')


  pyautogui.typewrite(num,interval=0.001)


  pyttsx3.speak('開始輸入')


  pyautogui.press('enter')


  pyttsx3.speak('輸入完成')


  time.sleep(1)


  #點選買入/加多


  pyautogui.click(x=325,y=729)


  featurns_trader_stats()


  #識別合約資訊


  def exter_featurns_data():


  '''


  採用百度進行合約資訊識別


  截圖進行資訊識別


  '''


  #縮小交易介面


  pyautogui.click(x=1309,y=533)


  time.sleep(1)


  #點選合約資料


  pyautogui.click(x=969,y=51)


  #資訊截圖


  time.sleep(1)


  pyautogui.screenshot(r'C:UsersAdministratorDesktop期貨交易合約資訊.png',region=(552,288,1675-552,520-288))


  options={'language':'chn_eng'}


  aipcor=AipOcr(app_id,api_key,secret_key)


  image=open(r'C:UsersAdministratorDesktop期貨交易合約資訊.png','rb')


  image1=image.read()


  text_list=aipcor.general(image1,options=options)


  df1=pd.json_normalize(text_list['words_result'])


  df1.to_excel(r'C:UsersAdministratorDesktop期貨交易合約資訊.xlsx')


  df=pd.read_excel(r'C:UsersAdministratorDesktop期貨交易合約資訊.xlsx')


  #將合約資料提取成表格資料


  df_words=df['words'][:11]


  data=[]


  col=[]


  for i in df_words.tolist():


  new_list=str(i).split(':')


  col.append(new_list[0])


  data.append(new_list[1])


  new_df=pd.DataFrame(data,col)


  print(new_df)


  pyttsx3.speak('合約資料提取成功')


  #返回交易介面


  def return_trader():


  '''


  返回交易介面


  '''


  pyautogui.click(x=941,y=17)


  #選擇模擬交易


  pyautogui.click(x=1065,y=53)


  time.sleep(1)


  pyautogui.click(x=1155,y=85)


  pyttsx3.speak('返回交易介面成功')


  #關掉交易介面


  def close_trader():


  '''


  關掉交易介面


  '''


  pyautogui.click(x=1301,y=487)


  pyttsx3.speak('交易介面關閉成功')


  #識別期貨結算套保資料


  def featurns_js_td():


  '''


  利用百度進行期貨階數套保資料識別


  '''


  #點選合約資料


  pyautogui.click(x=969,y=51)


  #資訊截圖


  time.sleep(1)


  #點選結算套保


  pyautogui.click(x=1343,y=151)


  time.sleep(1)


  pyautogui.screenshot(r'C:UsersAdministratorDesktop期貨交易結算套保.png',region=(553,293,1671-553,639-293))


  options={'language':'chn_eng'}


  aipcor=AipOcr(app_id,api_key,secret_key)


  image=open(r'C:UsersAdministratorDesktop期貨交易結算套保.png','rb')


  image1=image.read()


  text_list=aipcor.general(image1,options=options)


  df1=pd.json_normalize(text_list['words_result'])


  df1.to_excel(r'C:UsersAdministratorDesktop期貨交易結算套保.xlsx')


  df=pd.read_excel(r'C:UsersAdministratorDesktop期貨交易結算套保.xlsx')


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69993319/viewspace-2897901/,如需轉載,請註明出處,否則將追究法律責任。

相關文章