量化合約系統開發(策略及規則)丨量化合約系統開發(詳情及原始碼)

xiaofufu發表於2023-02-23

  量化交易如何運作?


  量化交易使用基於資料的模型來確定特定結果發生的可能性。與其他形式的交易不同,它完全依賴統計方法和程式設計來完成此操作。


  量化交易與演演算法交易


  演演算法交易者使用自動系統來分析圖表模式,然後代表他們開立和關閉頭寸。量化交易者使用統計方法來識別但不一定執行機會。儘管它們彼此重疊,但是這是兩種不應該混淆的獨立技術。


  #plot例項


  def test_plot():

  #繪製曲線


  x=np.linspace(2,21,20)#取閉區間[2,21]之間的等差數列,列表長度20


  y=np.log10(x)+0.5


  plt.figure()#新增一個視窗。如果只顯示一個視窗,可以省略該句。


  plt.plot(x,y)#plot在一個figure視窗中新增一個圖,繪製曲線,預設顏色


  #繪製離散點


  plt.plot(x,y,'.y')#繪製黃色的點,為了和曲線顏色不一樣


  x0,y0=15,np.log10(15)+0.5


  plt.annotate('Interpolation point',xy=(x0,y0),xytext=(x0,y0-1),arrowprops=dict(arrowstyle='->'))#新增註釋


  for x0,y0 in zip(x,y):


  plt.quiver(x0,y0-0.3,0,1,color='g',width=0.005)#繪製箭頭


  x=range(2,21,5)


  y=np.log10(x)+0.5


  plt.plot(x,y,'om')#繪製紫紅色的圓形的點


  x0,y0=7,np.log10(7)+0.5


  plt.annotate('Original point',xy=(x0,y0),xytext=(x0,y0-1),arrowprops=dict(arrowstyle='->'))


  for x0,y0 in zip(x,y):


  plt.quiver(x0,y0+0.3,0,-1,color='g',width=0.005)#繪製箭頭


  #設定座標範圍


  plt.xlim(2,21)#設定x軸範圍


  plt.xticks(range(0,23,2))#設定X軸座標點的值,為[0,22]之間的以2為差值的等差陣列


  plt.ylim(0,3)#設定y軸範圍


  #顯示圖形


  plt.show()#顯示繪製出的圖


  #獲取所有資金


  def get_all_money(codes,names):


  pro=ts.pro_api('ee5c0e991e17949cdafbcf8ec42321ef4bac94e9ca3474e4d62313a3')


  path='./All資金流向/'


  dir=Path(path)


  if not dir.exists():


  os.mkdir(dir)


  for code,name in zip(codes,names):


  name=str.replace(name,'*','')


  file=path+code+name+'.csv'


  if os.path.exists(file):


  df=pd.read_csv(file)


  else:


  try:


  df=pro.moneyflow(ts_code=code)


  df.to_csv(file,encoding='utf_8_sig')


  except Exception:


  continue


  def get_perdata(trade_date,ts_code):


  pro=ts.pro_api('ee5c0e991e17949cdafbcf8ec42321ef4bac94e9ca3474e4d62313a3')


  path='./資金流向/'


  dir=Path(path)


  if not dir.exists():


  os.mkdir(dir)


  file=path+trade_date+'.csv'


  if os.path.exists(file):


  df=pd.read_csv(file)


  else:


  df=pro.moneyflow(trade_date=trade_date)


  df.to_csv(file,encoding='utf_8_sig')


  codes=df['ts_code'].values


  buy_lg_vol=df['buy_lg_vol'].values


  sell_lg_vol=df['sell_lg_vol'].values


  buy_elg_vol=df['buy_elg_vol'].values


  sell_elg_vol=df['sell_elg_vol'].values


  buy_md_vol=df['buy_md_vol'].values


  sell_md_vol=df['sell_md_vol'].values


  i=0


  for code in codes:


  if code==ts_code:


  break


  else:


  i=i+1


  power=1.5


  #print(trade_date,ts_code)


  if i>=len(buy_elg_vol):


  return False


  if(buy_elg_vol<i>+buy_lg_vol<i>)/(sell_elg_vol<i>+sell_lg_vol<i>+1)>power:


  #print('predata True',trade_date,ts_code)


  #print(trade_date,ts_code,buy_lg_vol<i>,sell_lg_vol<i>,buy_elg_vol<i>,sell_elg_vol<i>)


  return True


  else:


  return False


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

相關文章