量化交易/合約交易系統(tǒng)開發(fā)策略詳細(xì),合約交易/量化交易系統(tǒng)開發(fā)(案例設(shè)計(jì))及源碼
量化交易,又稱為自動化交易,英文全稱為“Quantitative Trading”,指以機(jī)器人替代人為的主觀判斷,參考海量的歷史數(shù)據(jù)制定交易策略,Reduce the impact of investor sentiment fluctuations and avoid making irrational investment decisions in extreme market frenzy or pessimism.
量化交易主要有三大優(yōu)勢:
1、速度和準(zhǔn)確性。定量分析是建立在事先編制好的程式與運(yùn)算法則之上,當(dāng)系統(tǒng)偵測到符合交易準(zhǔn)則時,便會精確地執(zhí)行指令。
2、不受人為情緒影響。用計(jì)算機(jī)程序和編寫好的算法來保證一個特定的交易結(jié)果,而且這個過程是被自動地、嚴(yán)格地進(jìn)行的,這樣就可以對情緒進(jìn)行控制,避免過度交易。
3、回測能力。通過對歷史行情及交易數(shù)據(jù)的分析,可以判斷該模型在目前行情下的表現(xiàn)。
#coding:utf-8
import os,sys
import pandas as pd
import numpy as np
import math
#寫一個趨勢跟蹤策略量化交易程序
if len(sys.argv)==2:
code=sys.argv[1]
else:
print('usage:python ma20_ma60.py stockcode')
sys.exit(1)
if len(code)!=6:
print('stock code length:6')
sys.exit(2)
df=pd.read_csv(f'{code}.csv')
#計(jì)算移動平均線
df['ma20']=df['close'].rolling(window=20).mean()
df['ma60']=df['close'].rolling(window=60).mean()
df=df[df['date']>'2020-01-01']
cost=100000
cash=cost
stock=0
fee=0.0005
for index,row in df.iterrows():
if row['ma20']>row['ma60']and stock==0:
date=row['date']
price=row['close']
stock=math.floor(cash*(1-fee)/price/100)*100
cash=cash-stock*price*(1+fee)
print(f'{date}:cash={cash:.2f},stock={stock}x{price:.2f}')
#如果短期移動平均線下穿長期移動平均線,則賣出
elif row['ma20']<row['ma60']and stock>0:
date=row['date']
price=row['close']
cash=cash+stock*price*(1-fee)
stock=0
print(f'{date}:cash={cash:.2f},stock={stock}x{price:.2f}')
#計(jì)算最終收益
price=df.iloc[-1]['close']
profit=cash+stock*price-cost
print(f'profit={profit:.2f},stock={stock}x{price:.2f}')