合约量化系统开发(python策略)丨合约量化系统开发(源码成熟)
量化交易”有着两层含义:
【一】是从狭义上来讲,是指量化交易的内容,将交易条件转变成为程序,自动下单;
【二】是从广义上来讲,是指系统交易方法,就是一个整合的交易系统。
即为根据一系列交易条件,智能化辅助决策体系,将丰富的从业经验与交易条件相结合,在交易过程管理好风险控制。
pandas.DataFrame(ts).ewm(span=12).mean()
1.移动平均
def MA(df,n):
MA=Series(rolling_mean(df['Close'],n),name='MA_'+str(n))
df=df.join(MA)
return df
2.指数移动平均
def EMA(df,n):开发逻辑I59源码2OO7系统3O69
EMA=Series(ewma(df['Close'],span=n,min_periods=n-1),name='EMA_'+str(n))
df=df.join(EMA)
return df
3.动量
def MOM(df,n):关于区块链项目技术开发唯:yy625019,代币发行、dapp智能合约开发、链游开发、多链钱包开发
交易所开发、量化合约开发、互助游戏开发、Nft数字藏品开发、众筹互助开发、元宇宙开发、swap开发、
链上合约开发、ido开发、商城开发等,开发过各种各样的系统模式,更有多种模式、制度、案例、后台等,成熟技术团队,欢迎实体参考。
M=Series(df['Close'].diff(n),name='Momentum_'+str(n))
df=df.join(M)
return df
4.变化率
def ROC(df,n):
M=df['Close'].diff(n-1)
N=df['Close'].shift(n-1)
ROC=Series(M/N,name='ROC_'+str(n))
df=df.join(ROC)
return df
5.均幅指标
def ATR(df,n):
i=0
TR_l=[0]
while i<df.index[-1]:
TR=max(df.get_value(i+1,'High'),df.get_value(i,'Close'))-min(df.get_value(i+1,'Low'),df.get_value(i,'Close'))
TR_l.append(TR)
i=i+1
TR_s=Series(TR_l)
ATR=Series(ewma(TR_s,span=n,min_periods=n),name='ATR_'+str(n))
df=df.join(ATR)
return df
6.布林线
def BBANDS(df,n):
MA=Series(rolling_mean(df['Close'],n))
MSD=Series(rolling_std(df['Close'],n))
b1=4*MSD/MA
B1=Series(b1,name='BollingerB_'+str(n))
df=df.join(B1)
b2=(df['Close']-MA+2*MSD)/(4*MSD)
B2=Series(b2,name='Bollinger%b_'+str(n))
df=df.join(B2)
return df
7.转折、支撑、阻力点
def PPSR(df):
PP=Series((df['High']+df['Low']+df['Close'])/3)
R1=Series(2*PP-df['Low'])
S1=Series(2*PP-df['High'])
R2=Series(PP+df['High']-df['Low'])
S2=Series(PP-df['High']+df['Low'])
R3=Series(df['High']+2*(PP-df['Low']))
S3=Series(df['Low']-2*(df['High']-PP))
psr={'PP':PP,'R1':R1,'S1':S1,'R2':R2,'S2':S2,'R3':R3,'S3':S3}
PSR=DataFrame(psr)
df=df.join(PSR)
return df
8.随机振荡器(%K线)
def STOK(df):
SOk=Series((df['Close']-df['Low'])/(df['High']-df['Low']),name='SO%k')
df=df.join(SOk)
return df
9.随机振荡器(%D线)
def STO(df,n):
SOk=Series((df['Close']-df['Low'])/(df['High']-df['Low']),name='SO%k')
SOd=Series(ewma(SOk,span=n,min_periods=n-1),name='SO%d_'+str(n))
df=df.join(SOd)
return df
10.三重指数平滑平均线
def TRIX(df,n):
EX1=ewma(df['Close'],span=n,min_periods=n-1)
EX2=ewma(EX1,span=n,min_periods=n-1)
EX3=ewma(EX2,span=n,min_periods=n-1)
i=0
ROC_l=[0]
while i+1<=df.index[-1]:
ROC=(EX3[i+1]-EX3<i>)/EX3<i>
ROC_l.append(ROC)
i=i+1
Trix=Series(ROC_l,name='Trix_'+str(n))
df=df.join(Trix)
return df
11.平均定向运动指数
def ADX(df,n,n_ADX):
i=0
UpI=[]
DoI=[]
while i+1<=df.index[-1]:
UpMove=df.get_value(i+1,'High')-df.get_value(i,'High')
DoMove=df.get_value(i,'Low')-df.get_value(i+1,'Low')
if UpMove>DoMove and UpMove>0:
UpD=UpMove
else:UpD=0
UpI.append(UpD)
if DoMove>UpMove and DoMove>0:
DoD=DoMove
else:DoD=0
DoI.append(DoD)
i=i+1
i=0
TR_l=[0]
while i<df.index[-1]:
TR=max(df.get_value(i+1,'High'),df.get_value(i,'Close'))-min(df.get_value(i+1,'Low'),df.get_value(i,'Close'))
TR_l.append(TR)
i=i+1
TR_s=Series(TR_l)
ATR=Series(ewma(TR_s,span=n,min_periods=n))
UpI=Series(UpI)
DoI=Series(DoI)
PosDI=Series(ewma(UpI,span=n,min_periods=n-1)/ATR)
NegDI=Series(ewma(DoI,span=n,min_periods=n-1)/ATR)
ADX=Series(ewma(abs(PosDI-NegDI)/(PosDI+NegDI),span=n_ADX,min_periods=n_ADX-1),name='ADX_'+str(n)+'_'+str(n_ADX))
df=df.join(ADX)
return df