午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

 追夢(mèng)文庫(kù) 2020-04-05

一、磚型圖簡(jiǎn)介。

在所有行情軟件中,記錄價(jià)格波動(dòng)軌跡的幾乎都是K線圖,只有在很少的程序化量化軟件中才有磚型圖的身影。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

熱卷hc2005

磚型圖顧名思義,相當(dāng)于是用磚頭一塊一塊地拼湊而成記錄價(jià)格波動(dòng)軌跡的圖形,稱之為“磚型圖”。

每一塊磚的尺寸都一致,這里的尺寸是指行情每上漲或下跌一定距離,就繪制下一塊磚型圖,如果行情沒(méi)有達(dá)到這個(gè)尺寸,無(wú)論行情走了多久,我們都不會(huì)更新磚型圖。因此,磚型圖的走勢(shì)始終就只有上漲和下跌兩個(gè)方向。

二、磚型圖的優(yōu)勢(shì)。

(一)讓行情走勢(shì)結(jié)構(gòu)更加的清晰。

在k線圖中,行情如果遇到小幅的盤整,行情在一個(gè)很小的區(qū)間內(nèi)來(lái)回突突,迷惑你,并且看上去走了很長(zhǎng)的一段時(shí)間,實(shí)際上它并沒(méi)有上漲或下跌多少。

但是,采用磚型圖看行情的話,如果將這個(gè)區(qū)間設(shè)置成磚型圖的尺寸,那么在這個(gè)區(qū)間只繪制一塊磚,從而減少交易者在此區(qū)間的錯(cuò)誤判斷。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!
Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

tick行情走勢(shì)

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

尺寸=2,磚型圖

(二)降低周期參數(shù)對(duì)整個(gè)公式或指標(biāo)計(jì)算的影響。

我們都知道,k線是按照時(shí)間周期來(lái)進(jìn)行繪制的,因此每到一個(gè)時(shí)間節(jié)點(diǎn)它都會(huì)進(jìn)行切換并重新繪制,這樣的話如果在橫盤期間價(jià)格一直不怎么動(dòng),指標(biāo)一樣要滾動(dòng)計(jì)算。

拿均線來(lái)說(shuō),這樣計(jì)算出來(lái)的值很可能就是一根橫向整理的線條,但如果采用磚型圖進(jìn)行繪制均線或計(jì)算其他指標(biāo)的話,就會(huì)降低這樣的影響程度。如下圖所示:

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

一旦采用磚型圖,就沒(méi)有時(shí)間概念了,只有空間的概念。

三、磚型圖代碼編寫。

磚型圖我們可以也看做沒(méi)有影線的k線,磚的最頂部我稱作最高價(jià),最底部我稱為最低價(jià)。繪制磚型圖之前,首先我們要了解單塊磚型圖的構(gòu)造和多塊磚型圖如何組合。

假設(shè),下列行情的開盤價(jià)為3555。

(一)單塊磚型圖。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

假設(shè),上圖是開盤前5分鐘的走勢(shì),開盤下跌。當(dāng)價(jià)格下跌到5跳的時(shí)候,第一塊磚的最高價(jià)就是開盤價(jià),最低價(jià)就是開盤價(jià)-尺寸(5跳),如果開盤價(jià)=3555。

磚的最高價(jià)就是3555

磚最低價(jià)就是3555-5=3550。

如果開盤后上漲了5跳,那么磚最低價(jià)就是開盤價(jià)3555,最高價(jià)就是3560。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

這是第一塊磚型圖的畫法。但是,最重要的是組合磚型圖的畫法,組合方式只有4種。

(二)組合磚型圖畫法。

1.上漲行情的組合。如果市場(chǎng)一開盤就往上走并且超過(guò)了2個(gè)尺寸,也就是10跳。當(dāng)?shù)谝粔K繪制完成之后,價(jià)格回調(diào)并沒(méi)有達(dá)到5跳,進(jìn)而繼續(xù)上揚(yáng)上漲了5跳,那此時(shí)磚型圖的最高最低價(jià)如何確定。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

最高價(jià):上一塊的最高價(jià)+5跳 ,即:3560+5 = 3565。

最低價(jià):上一塊的最高價(jià),即:3565。

如果行情繼續(xù)往上,同時(shí)回調(diào)不夠5跳,那么繼續(xù)按照此邏輯繪制。

2.下跌行情組合。如果市場(chǎng)一開盤就往下走并且超過(guò)了2個(gè)尺寸,也就是10跳。當(dāng)?shù)谝粔K繪制完成之后,價(jià)格回調(diào)并沒(méi)有達(dá)到5跳,進(jìn)而繼續(xù)下跌了5跳,那此時(shí)磚型圖的最高最低價(jià)如何確定。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

開盤價(jià):3555

最高價(jià):上一塊的最低價(jià) ,即:3550。

最低價(jià):上一塊的最低價(jià)-5跳,即:3550-5 = 3545。

如果行情繼續(xù)往下,同時(shí)回調(diào)不夠5跳,那么繼續(xù)按照此邏輯繪制。

3.上漲后反轉(zhuǎn)組合。當(dāng)市場(chǎng)已經(jīng)走了兩塊磚了,此時(shí)遇到阻力位掉頭并向下跌了5跳,此時(shí)的最高價(jià)最低價(jià)如何確定。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

最高價(jià):上一塊的最低價(jià) ,即:3560。

最低價(jià):上一塊的最低價(jià)-5跳,即:3560-5 = 3555。最低價(jià)又回到開盤價(jià)位置。

如果行情繼續(xù)往下,同時(shí)回調(diào)不夠5跳,那么繼續(xù)按照此邏輯繪制。

4.下跌后反轉(zhuǎn)組合。當(dāng)市場(chǎng)已經(jīng)走了兩塊磚了,此時(shí)遇到支撐位掉頭并向上漲了5跳,此時(shí)的最高價(jià)最低價(jià)如何確定。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

最高價(jià):上一塊的最高價(jià)+5跳 ,即:3550+5 = 3555。

最低價(jià):上一塊的最高價(jià),即:3550。最高價(jià)又回到開盤價(jià)位置。

如果行情繼續(xù)往上,同時(shí)回調(diào)不夠5跳,那么繼續(xù)按照此邏輯繪制。

5.震蕩反轉(zhuǎn)組合。如果出現(xiàn)以下行情,繪制方法是和上面的三種繪制方法是一致的。主要出現(xiàn)在行情在某個(gè)區(qū)間內(nèi)上漲5跳后突然反轉(zhuǎn)下跌5跳,反轉(zhuǎn)結(jié)束之后緊接著有反方向漲5跳,如此反復(fù)觸發(fā)設(shè)定的尺寸。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

6.一個(gè)tick多次觸發(fā)多個(gè)尺寸組合。這種情況,是比較少見的,比如一筆超級(jí)大單子突然出現(xiàn),將行情一次就推了100跳,那么此時(shí)應(yīng)該怎么繪制。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

如果出現(xiàn)這種情況,用100/5=20個(gè)尺寸,直接循環(huán)繪制20次,最高價(jià)和最低價(jià)按照上面4個(gè)方法進(jìn)行繪制,下跌100跳也是按照這樣的思路。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

(三)代碼實(shí)現(xiàn)。

1.總的繪制邏輯:

(1)計(jì)算最新一個(gè)tick與上一個(gè)tick的差值,然后除以尺寸,得出需要繪制的次數(shù)。

(2)當(dāng)出現(xiàn)余數(shù)時(shí),當(dāng)前這塊磚繪制完成后,將余數(shù)傳回下一個(gè)tick繼續(xù)累加。

(3)繪制完一塊時(shí),通過(guò)count = count +1 的方式作為磚型圖的x軸,y軸是最高價(jià)和最低價(jià)。

2.代碼繪制邏輯。

(1)導(dǎo)入模塊并獲取8000個(gè)tick數(shù)據(jù),品種使用rb2005。

import pandas as pd

from tqsdk import TqApi

from datetime import timedelta

from matplotlib.path import Path

from matplotlib.patches import PathPatch

import matplotlib.pyplot as plt

import numpy as np

api = TqApi()

ticks = api.get_tick_serial("SHFE.rb2005",8000)

(2)首先我們要計(jì)算最新一個(gè)tick與上一個(gè)tick的差值,然后除以尺寸,得出需要繪制的次數(shù)和需要傳回繼續(xù)累加的余數(shù)。

參數(shù)變量設(shè)置

def renko_charts():
dis_sum = 0 # 每更新一個(gè)tick都將漲跌幅累加,直到至少滿5跳繪制后,將余數(shù)傳回繼續(xù)累加
dis_sum_list = [] # 漲跌幅累加一次,就將當(dāng)時(shí)的累計(jì)漲跌幅存入,方便后續(xù)判斷上一根是否虧損。
Renko_h = [] # 記錄每塊磚的最高價(jià),用于計(jì)算均線。
location = [] # 存儲(chǔ)每一塊磚的坐標(biāo),后面繪制。
dot = 5 # 磚的尺寸
count = 0 # X軸坐標(biāo)
k_list = [] # 用于存儲(chǔ)磚的最高價(jià)最低價(jià)

如果變動(dòng)了至少1個(gè)尺寸,計(jì)算繪制次數(shù)和余數(shù)。decimals 代表余數(shù)(需要傳回繼續(xù)累加),integer代表整數(shù)(需要繪制的次數(shù))

    for i in range(len(ticks)):
last_price = ticks['last_price'].iloc[i]
last_time = pd.to_datetime(ticks.datetime.iloc[i]) + timedelta(hours=8)

if i ==0:
k_list.append(last_price)
Renko_h.append(last_price)

else:
"統(tǒng)計(jì)換線閥值 >= 5,換線"
dis_sum = dis_sum + (last_price - ticks['last_price'].iloc[i-1])

"如果變動(dòng)了5個(gè)點(diǎn),就換線"
if abs(dis_sum) >= dot:
"計(jì)算循環(huán)繪制次數(shù)-閥值的倍數(shù),下一個(gè)Tick繼續(xù)累加"
if dis_sum / dot<0:
decimals = float('-0.' + str(dis_sum / dot).split('.')[1])
else:
decimals = float('0.' + str(dis_sum / dot).split('.')[1])

integer = int(float(str(abs(dis_sum) / dot).split('.')[0]))

首先我們要計(jì)算出第一塊是陰還是陽(yáng),然后在根據(jù)前一塊的陰陽(yáng)和當(dāng)前陰陽(yáng)情況進(jìn)行繪制最新的一塊磚。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

繪制第一塊:也就是說(shuō)只判斷第一次統(tǒng)計(jì)等于或超過(guò)尺寸的情況。

"循環(huán)繪制-連續(xù)出現(xiàn)N條磚"
for j in range(integer):
dis_sum_list.append(dis_sum)
count += 1
print('---------------------------------------------------------')
print('---------------------------------------------------------')
"如果是上漲"
if len(Renko_h) == 1:
# print('換線了---------------')
if dis_sum_list[-1] > 0:
k = k_list[-1] + dot
"最低價(jià)"
k_list.append(k_list[-1])
"最高價(jià)"
k_list.append(k)
dis_sum = decimals # 將剩余部分傳回最新一個(gè)tick繼續(xù)累加漲跌幅
print("最高價(jià):%s,最低價(jià):%s"%(k_list[-1],k_list[-2]))
"基準(zhǔn)價(jià)"
Renko_h.append(k)
print(Renko_h)
"磚形圖坐標(biāo)"
location.append([(count-1,k_list[-2]) ,(count-1,k_list[-1]),
(count,k_list[-1]),(count,k_list[-2]), (count, last_price)])

elif dis_sum_list[-1] < 0:
# print('換線了---------------')
k = k_list[-1] - dot
"最低價(jià)"
k_list.append(k)
"最高價(jià)"
k_list.append(k_list[-1])
dis_sum = decimals # 將剩余部分傳回最新一個(gè)tick繼續(xù)累加漲跌幅
print("最高價(jià):%s,最低價(jià):%s" % (k_list[-1], k_list[-2]))
Renko_h.append(k_list[0])
location.append([(count-1,k_list[-2]) ,(count-1,k_list[-1]),
(count,k_list[-1]),(count,k_list[-2]), (count, last_price)])

繪制第N塊:在上面代碼中,我們已經(jīng)得到了第一塊的最高價(jià)最低價(jià),以及坐標(biāo)。

最高價(jià):k_list[-1]

最低價(jià):k_list[-2]

那么在接下來(lái)我們,我們繪制第N塊磚。

當(dāng)上一塊是陽(yáng),繪制當(dāng)前陰陽(yáng)兩種情況。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!
Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

當(dāng)上一塊是陰,繪制當(dāng)前陰陽(yáng)兩種情況的思路和上述一致。

繪制磚型圖到畫布:rb2005合約tick數(shù)據(jù),尺寸 = 2跳。

length=10
average = []
for i in range(len(Renko_h)):
if i<length:
average.append(np.nan)
else:
average.append(np.mean(Renko_h[i - length:i]))
print(average)
fig, (ax1,ax2) = plt.subplots(2,1,figsize = (20,10))
codes = [Path.MOVETO] + [Path.LINETO] * 3 + [Path.CLOSEPOLY]

for i in range(len(location)):
if i==0:
if location[i][2][1] > 0 and dis_sum_list[0]>0:
path = Path(location[i], codes)
pathpatch = PathPatch(path, facecolor='r', edgecolor='black')
ax2.add_patch(pathpatch)
ax2.autoscale_view()

elif location[i][2][1] < 0 and dis_sum_list[0]<0:
path = Path(location[i], codes)
pathpatch = PathPatch(path, facecolor='g', edgecolor='black')
ax2.add_patch(pathpatch)
ax2.autoscale_view()

else:
if location[i][2][1] > location[i-1][2][1]:
path = Path(location[i], codes)
pathpatch = PathPatch(path, facecolor='r', edgecolor='black')
ax2.add_patch(pathpatch)
ax2.autoscale_view()

else:
path = Path(location[i], codes)
pathpatch = PathPatch(path, facecolor='g', edgecolor='black')
ax2.add_patch(pathpatch)
ax2.autoscale_view()

ax2.plot(average)
ax1.plot(ticks['last_price'])
plt.show()

if __name__ == '__main__':
renko_charts()

run:

rb2005合約tick數(shù)據(jù),尺寸 = 2跳。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

尺寸 = 3跳。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

尺寸 =4跳。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

尺寸 = 5跳。

Python股票期貨交易利器,磚型圖詳細(xì)繪制教程!

6.上面的不同尺寸的磚型圖中,我們可以得出,尺寸越大磚的數(shù)量就越少。反之,越多。

總結(jié)。

本文主要分享了磚型圖的簡(jiǎn)介,算法和代碼實(shí)現(xiàn)。利用磚型圖進(jìn)行交易的人非常少,但并不意味著用它賺不了錢,因?yàn)榇蟛糠值男星檐浖贾挥邪磿r(shí)間節(jié)點(diǎn)來(lái)繪制的k線圖,并沒(méi)有按照空間來(lái)進(jìn)行繪制。

其實(shí)k線圖和磚型圖的最大區(qū)別是,一個(gè)是按照時(shí)間繪制,一個(gè)是按照空間來(lái)繪制,兩者的出發(fā)點(diǎn)懸殊非常大,思考的方式也不一樣。

當(dāng)然還有另外2種描述價(jià)格的算法,量能為閥值的,量能k線,以包含關(guān)系的,纏論,這些都值得去研究一下。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多