現貨期權交易所繫統開發(多語言)丨現貨期權交易所繫統開發(詳細邏輯及原始碼)
The development technology of digital currency exchange is a decentralized consensus mechanism to maintain a complete,distributed and tamper-proof ledger database.It enables participants in the blockchain to achieve a unified ledger system without establishing trust relationships.
As a new information and network technology,blockchain uses encryption technology,distributed network and consensus mechanism to ensure that the information recorded by each node in the network is true and effective.Blockchain is constantly penetrating into all walks of life and has shown a good development trend.
huobipro=ccxt.huobipro({
'apiKey':'',
'secret':'',
})
先使用ccxt獲取交易所的例項,I35 Develop 7O98 software O7I8 然後獲取歷史k線,得到的資料使用dataframe格式接受
huobipro.fetch_ohlcv(symbol=symbol,limit=limit_num,timeframe=timeframe)
然後利用pandas提供的函式計算MA,
df['median_short']=df['close'].rolling(n_short,min_periods=1).mean()
df['median_long']=df['close'].rolling(n_long,min_periods=1).mean()
然後再找出買入賣出訊號,
#找出買入訊號
condition1=df['median_short']>df['median_long']#短均線上穿長均線
condition2=df['median_short'].shift(1)<=df['median_long'].shift(1)
df.loc[condition1&condition2,'signal']=1#產生買入訊號的k線標記為1
#找出賣出訊號
condition1=df['median_short']<df['median_long']#短均線上穿長均線
condition2=df['median_short'].shift(1)>=df['median_long'].shift(1)
df.loc[condition1&condition2,'signal']=0#產生賣出訊號的k線標記為0
有了交易訊號,就可以獲取訊號,再判斷進行下單(huobipro.create_limit_buy/sell_order()了)
第五步:其實第四步就可以交易了,第五步是回測,一般來說先回測再根據回測結果選用策略,最後才進行實盤
回測分析的相關有很多種,在這方面我也不是很懂,目前我還是習慣用累計利潤來進行分析,
#由signal計算出實際的每天持倉
df['pos']=df['signal'].shift()
df['pos'].fillna(method='ffill',inplace=True)
df['pos'].fillna(value=0,inplace=True)
到這裡持倉訊號就有了,就可以根據持倉和歷史k線的價格計算累計利潤了,
df['change']=df['close'].pct_change(1)#根據收盤價計算漲跌幅
df['by_at_open_change']=df['close']/df['open']-1#開盤買入到收盤的漲跌幅
df['sell_next_open_change']=df['open'].shift(-1)/df['close']-1#這根收盤到下根開盤的漲跌幅
df.at[len(df)-1,'sell_next_open_change']=0#補全空值df.at[4,'B']
condition1=df['pos']==1
condition2=df['pos']!=df['pos'].shift(1)
open_pos_condition=condition1&condition2
#選取平倉條件
condition1=df['pos']==0
condition2=df['pos']!=df['pos'].shift(1)
close_pos_condition=condition1&condition2
#對每次交易進行分組
df.loc[open_pos_condition,'start_time']=df['open_time']
df['start_time'].fillna(method='ffill',inplace=True)
df.loc[df['pos']==0,'start_time']=pd.NaT
init_cash=1000#初始資金
#計算倉位變動
#開倉時倉位
df.loc[open_pos_condition,'position']=init_cash*(1+df['by_at_open_change'])
group_num=len(df.groupby('start_time'))
if group_num>1:
temp=df.groupby('start_time').apply(lambda x:x['close']/x.iloc[0]['close']*x.iloc[0]['position'])
temp=temp.reset_index(level=[0])
df['position']=temp['close']
df['position_max']=df['position']*df['high']/df['close']
df['position_min']=df['position']*df['low']/df['close']
##平倉時的倉位
#df.loc[close_pos_condition,'position']*=(1+df.loc[close_pos_condition,'sell_next_open_change'])
#計算持倉利潤
df['porfit']=(df['position']-init_cash)*df['pos']#持倉利潤或虧損
#df.loc[df['pos']==1,'porfit_min']=(df['position_min']-init_cash)*df['pos']#最小持倉盈利或虧損
#df.loc[df['pos']==0,'porfit_max']=(df['position_max']-init_cash)*df['pos']
#計算實際資金量
df['cash']=init_cash+df['porfit']#實際資金
#計算資金曲線
df['equity_change']=df['cash'].pct_change()
#開倉日收益率
df.loc[open_pos_condition,'equity_change']=df.loc[open_pos_condition,'cash']/init_cash-1
df['equity_change'].fillna(value=0,inplace=True)
df['equity_curve']=(1+df['equity_change']).cumprod()
df['equity_curve']=df['equity_curve']*init_cash
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2936531/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 現貨期權交易所開發詳情丨現貨期權交易所繫統開發(原理及邏輯)
- 現貨期權交易所繫統(成熟原始碼)丨現貨期權交易所繫統開發(方案)原始碼
- 現貨期權期貨交易所開發(詳情)丨現貨期權期貨交易所繫統開發(PHP/JAVA開發)PHPJava
- 現貨期權交易所開發案例原始碼丨現貨期權交易所繫統開發(海外版)原始碼
- 現貨期權合約交易所開發正式版丨現貨期權合約交易所繫統開發(詳情規則)及案例原始碼原始碼
- 現貨期權期貨數字貨幣秒合約交易所繫統開發(開發案例及原始碼)原始碼
- 現貨期權合約交易所開發模板丨現貨期權合約交易所繫統開發技術說明及方案
- 數字貨幣交易所開發詳情丨數字貨幣交易所繫統開發(詳細及邏輯)丨數字貨幣交易所原始碼原始碼
- 現貨合約跟單交易所開發(穩定版)丨現貨合約跟單交易所繫統開發(詳情及邏輯)原始碼原始碼
- 量化合約/合約量化/秒合約/永續合約/現貨期權期貨/交易所繫統開發案例及原始碼原始碼
- 交易所繫統丨交易所繫統開發(上線版)丨交易所開發詳細原始碼部署原始碼
- 現貨期權期貨/合約量化/量化合約/秒合約/永續合約/交易所繫統開發成熟技術及原始碼原始碼
- swap交易所繫統(原始碼)丨swap交易所繫統開發(去中心化交易所開發詳細)原始碼中心化
- 現貨期權合約量化/量化合約/秒合約/永續合約/交易所繫統開發(開發案例及原始碼)原始碼
- 交易所開發(海外版)/交易所繫統開發(案例詳細)/交易所繫統原始碼及demo原始碼
- 交易所開發(海外版)丨交易所繫統開發(多語言)丨交易所成熟原始碼版原始碼
- 深度解析:交易所繫統開發(海外版)交易所繫統開發(多語言)交易所開發(原始碼部署)原始碼
- 數字貨幣交易所開發(案例)丨數字貨幣交易所繫統開發(JAVA/PHP開發)及原始碼JavaPHP原始碼
- 區塊鏈交易所開發運營版丨區塊鏈交易所繫統開發(詳細案例)及邏輯方案丨原始碼區塊鏈原始碼
- 數字貨幣交易所開發正式版丨數字貨幣交易所繫統開發(開發詳情)及案例原始碼原始碼
- BSEX交易所開發運營版丨BSEX交易所繫統開發(開發詳細)及原始碼功能原始碼
- 數字貨幣交易所錢包系統開發(開發說明)丨數字貨幣錢包交易所繫統開發(原始碼詳細)原始碼
- 什麼是現貨合約跟單交易所繫統開發應用詳細及方案丨案例原始碼原始碼
- 交易所開發(海外版)丨交易所繫統開發(Python)丨 交易所繫統原始碼功能Python原始碼
- Uniswap丨justswap丨pancakeswap去中心化薄餅交易所繫統開發(詳細及邏輯)中心化
- 數字貨幣交易所開發方案丨數字貨幣交易所繫統開發(正式版)丨數字貨幣交易所開發原始碼原始碼
- BSEX交易所繫統開發(開發方案)丨BSEX交易所開發(原始碼詳情)原始碼
- 數字貨幣交易所繫統開發(海外版)丨數字貨幣交易所開發(原始碼版)原始碼
- swap去中心化交易所繫統開發實現邏輯(原始碼示例)中心化原始碼
- Web3期權合約交易所繫統制度開發詳情丨多鏈錢包模式示例Web模式
- 永續合約交易所繫統開發(開發邏輯)丨永續合約系統開發(原始碼方案)原始碼
- 期權現貨交易系統開發|秒合約系統開發原始碼原始碼
- 區塊鏈交易所繫統開發(海外版)丨區塊鏈交易所繫統開發(開發案例及原始碼)區塊鏈原始碼
- 合約跟單/交易所繫統開發(開發demo),合約跟單/交易所繫統開發(邏輯及案例)
- 深入分析:海外版數字貨幣交易所繫統開發(多語言)及案例原始碼原始碼
- 數字貨幣交易所繫統開發技術原始碼丨區塊鏈去中心化交易所繫統開發(成熟技術)原始碼區塊鏈中心化
- Uniswap交易所繫統開發(穩定版)丨Uniswap交易所開發成品及原始碼原始碼
- 數字貨幣交易所開發(海外版)丨數字貨幣交易所繫統開發(swap交易所開發案例)