请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  源码分享 帖子:3363204 新帖:6

画图tick级实时吃单砸盘(level1)

SCSDV_d发表于:10 月 12 日 00:00回复(1)
#下载数据
import jqdata
import pandas
data=get_ticks('601595.XSHG', start_dt='2018-09-24',end_dt='2019-09-27',
         fields=['time', 'current', 'high', 'low', 'volume', 'money','a1_v','a2_v','a3_v','a4_v',
                'a5_v','a1_p','a2_p','a3_p','a4_p','a5_p','b1_v','b2_v','b3_v','b4_v',
                'b5_v','b1_p','b2_p','b3_p','b4_p','b5_p'])
data=pandas.DataFrame(data)
data.to_csv('data2.csv')
#重复行删除
import pandas as pd
df=pd.read_csv('data2.csv')
import datetime
df2=df.drop_duplicates(['time'])
df2.to_csv('new(2).csv')
#吃单,砸盘分类
import datetime
import time
import pandas as pd
import plotly
import plotly.graph_objs as go
df2=pd.read_csv('new(2).csv')

vol=50000

a=[]
b=[]
c=[]
a1_p=[]
a2_p=[]
a3_p=[]
a4_p=[]
a5_p=[]
a1_v=[]
a2_v=[]
a3_v=[]
a4_v=[]
a5_v=[]
b1_p=[]
b2_p=[]
b3_p=[]
b4_p=[]
b5_p=[]
b1_v=[]
b2_v=[]
b3_v=[]
b4_v=[]
b5_v=[]
for i in range(1,len(df2)):
    k1=str(df2.time[i-1])
    k2=str(df2.time[i])
    if df2.current[i]!=0:
        t1 = datetime.datetime.strptime(k1, '%Y%m%d%H%M%S.%f')
        t2 = datetime.datetime.strptime(k2, '%Y%m%d%H%M%S.%f')
        #print(i, t2, t2 - t1)
        a.append(t1)
        b.append(df2.current[i])
        c.append(df2.volume[i]-df2.volume[i-1])
        a1_p.append(df2.a1_p[i])
        a2_p.append(df2.a2_p[i])
        a3_p.append(df2.a3_p[i])
        a4_p.append(df2.a4_p[i])
        a5_p.append(df2.a5_p[i])
        a1_v.append(df2.a1_v[i])
        a2_v.append(df2.a2_v[i])
        a3_v.append(df2.a3_v[i])
        a4_v.append(df2.a4_v[i])
        a5_v.append(df2.a5_v[i])
        b1_p.append(df2.b1_p[i])
        b2_p.append(df2.b2_p[i])
        b3_p.append(df2.b3_p[i])
        b4_p.append(df2.b4_p[i])
        b5_p.append(df2.b5_p[i])
        b1_v.append(df2.b1_v[i])
        b2_v.append(df2.b2_v[i])
        b3_v.append(df2.b3_v[i])
        b4_v.append(df2.b4_v[i])
        b5_v.append(df2.b5_v[i])
new_1=[]
new_2=[]
new_4=[]
#吃单
for i in range(len(c)):
    if a2_p[i]>=0 and a1_p[i]==a1_p[i-1] and a1_v[i-1]-a1_v[i]>=vol \
             and b[i]>b[i-1]:#卖一=前卖一,卖一减少
        new_1.append(a[i])
        new_2.append(b[i])
        new_4.append(round((a1_v[i-1]-a1_v[i])/100,0))

    if b[i]>=0 and b1_v[i]-b1_v[i-1]>=vol and b1_p[i]==b1_p[i-1]\
            and b[i]>b[i-1] :#买一==前买一,买单增加
        new_1.append(a[i])
        new_2.append(b[i])
        new_4.append(round((b1_v[i]-b1_v[i-1])/100,0))

    if b[i] > 0 and b1_v[i]+c[i] >= vol and b1_p[i] == a1_p[i - 1]\
            and b[i]>b[i-1] :#买一==前卖一,买单增加
        new_1.append(a[i])
        new_2.append(b[i])
        new_4.append(round((b1_v[i]+c[i])/100,0))

    if b[i] > 0 and b1_v[i]+b2_v[i]+c[i] >= vol and b1_p[i] == a2_p[i - 1]\
            and b[i]>b[i-1] :#买一==前卖二,买单增加
        new_1.append(a[i])
        new_2.append(b[i])
        new_4.append(round((b1_v[i]+b2_v[i]+c[i])/100,0))

    if b[i] > 0 and b1_v[i]+b2_v[i]+b3_v[i]+c[i]  >= vol and b1_p[i] == a3_p[i - 1]\
            and b[i]>b[i-1] :#买一==前卖三,买单增加
        new_1.append(a[i])
        new_2.append(b[i])
        new_4.append(round((b1_v[i]+b2_v[i]+b3_v[i]+c[i])/100,0))

    if b[i] > 0 and b1_v[i]+b2_v[i]+b3_v[i]+b4_v[i]+c[i] >= vol and b1_p[i] == a4_p[i - 1]\
            and b[i]>b[i-1] :#买一==前卖四,买单增加
        new_1.append(a[i])
        new_2.append(b[i])
        new_4.append(round((b1_v[i]+b2_v[i]+b3_v[i]+b4_v[i]+c[i])/100,0))

new_1=pd.DataFrame(new_1)
new_2=pd.DataFrame(new_2)
new_4=pd.DataFrame(new_4)
new=pd.concat([new_1,new_2,new_4],axis=1)
new.columns=["time","current","changed"]
new=new.set_index(["time"])
new.to_csv("500手吃单.csv")

#砸盘#a卖b买
za_1 = []
za_2 = []
za_4 = []
for i in range(len(c)):
    if a2_p[i]>=0 and a1_p[i]==a1_p[i-1] and a1_v[i]-a1_v[i-1]>=vol \
             and b[i]<b[i-1]:#卖一=前卖一,卖一增加
        za_1.append(a[i])
        za_2.append(b[i])
        za_4.append(round((a1_v[i]-a1_v[i-1])/100,0))

    if a2_p[i]>0 and a1_p[i]==b1_p[i-1] and a1_v[i]+c[i]>=vol \
            and b[i]<b[i-1]:#卖一=前买一,卖出挂单增加
        za_1.append(a[i])
        za_2.append(b[i])
        za_4.append(round((a1_v[i]+c[i])/100,0))

    if a2_p[i]>0 and a1_p[i]==b2_p[i-1] and a1_v[i]+a2_v[i]+c[i]>=vol \
            and b[i]<b[i-1] :#卖一=前买二,卖出挂单增加
        za_1.append(a[i])
        za_2.append(b[i])
        za_4.append(round((a1_v[i]+a2_v[i]+c[i])/100,0))

    if a2_p[i]>0 and a1_p[i]==a4_p[i-1] and a1_v[i]+a2_v[i]+a3_v[i]+c[i]>=vol \
            and b[i]<b[i-1] :#卖一=前卖三,卖出挂单增加
        za_1.append(a[i])
        za_2.append(b[i])
        za_4.append(round((a1_v[i]+a2_v[i]+a3_v[i]+c[i])/100,0))

    if a2_p[i]>0 and a1_p[i]==a5_p[i-1] and a1_v[i]+a2_v[i]+a3_v[i]+a4_v[i]+c[i]>=vol \
            and b[i]<b[i-1] :#卖一=前卖四,卖出挂单增加
        za_1.append(a[i])
        za_2.append(b[i])
        za_4.append(round((a1_v[i]+a2_v[i]+a3_v[i]+a4_v[i]+c[i])/100,0))

za_1=pd.DataFrame(za_1)
za_2=pd.DataFrame(za_2)
za_4=pd.DataFrame(za_4)
za=pd.concat([za_1,za_2,za_4],axis=1)
za.columns=["time","current","changed"]
za=za.set_index(["time"])
za.to_csv("500手砸盘.csv")
#plotly画图
import datetime
import time
import pandas as pd
import plotly
import plotly.graph_objs as go
df2=pd.read_csv('new(2).csv')
a=[]
b=[]
c=[]
a1_p=[]
a2_p=[]
a3_p=[]
a4_p=[]
a5_p=[]
a1_v=[]
a2_v=[]
a3_v=[]
a4_v=[]
a5_v=[]
b1_p=[]
b2_p=[]
b3_p=[]
b4_p=[]
b5_p=[]
b1_v=[]
b2_v=[]
b3_v=[]
b4_v=[]
b5_v=[]
for i in range(1,len(df2)):
    k1=str(df2.time[i-1])
    k2=str(df2.time[i])
    if df2.current[i]!=0:
        t1 = datetime.datetime.strptime(k1, '%Y%m%d%H%M%S.%f')
        t2 = datetime.datetime.strptime(k2, '%Y%m%d%H%M%S.%f')
        #print(i, t2, t2 - t1)
        a.append(t1)
        b.append(df2.current[i])
        c.append(df2.volume[i]-df2.volume[i-1])
        a1_p.append(df2.a1_p[i])
        a2_p.append(df2.a2_p[i])
        a3_p.append(df2.a3_p[i])
        a4_p.append(df2.a4_p[i])
        a5_p.append(df2.a5_p[i])
        a1_v.append(df2.a1_v[i])
        a2_v.append(df2.a2_v[i])
        a3_v.append(df2.a3_v[i])
        a4_v.append(df2.a4_v[i])
        a5_v.append(df2.a5_v[i])
        b1_p.append(df2.b1_p[i])
        b2_p.append(df2.b2_p[i])
        b3_p.append(df2.b3_p[i])
        b4_p.append(df2.b4_p[i])
        b5_p.append(df2.b5_p[i])
        b1_v.append(df2.b1_v[i])
        b2_v.append(df2.b2_v[i])
        b3_v.append(df2.b3_v[i])
        b4_v.append(df2.b4_v[i])
        b5_v.append(df2.b5_v[i])
put=pd.read_csv('500手砸盘.csv')
call=pd.read_csv('500手吃单.csv')
#zhic=pd.read_csv('100手支撑.csv')
put_time=[]
for i in put.time:
    w2=datetime.datetime.strptime(i, '%Y-%m-%d %H:%M:%S.%f')
    #w2 = datetime.datetime.strptime(i, '%Y-%m-%d %H:%M:%S')
    put_time.append(w2)
call_time=[]
for i in call.time:
    w12=datetime.datetime.strptime(i, '%Y-%m-%d %H:%M:%S.%f')
    print(w12)
    #w12 = datetime.datetime.strptime(i, '%Y-%m-%d %H:%M:%S')
    call_time.append(w12)

trace = go.Scatter(
    x=a,
    y=b,
    name='price',
    xaxis='x1',
    yaxis='y1',
    line=dict(width=2, color='#509BFF')
)



trace4 = go.Scatter(x=put_time,y=put.current,xaxis='x1',yaxis='y1',
                    text=put.changed,textposition='top right', textfont=dict(color='#00FF00'),
                    mode='markers+text',line=dict(width=2, color='#00FF00'),name='砸盘')
trace42 = go.Scatter(x=put_time,y=put.current,xaxis='x1',yaxis='y1',
                    text="砸盘",textposition='top left', textfont=dict(color='#00FF00'),
                    mode='markers+text',line=dict(width=2, color='#00FF00'),name='砸盘')
trace5 = go.Scatter(x=call_time,y=call.current,xaxis='x1',yaxis='y1',
                    text=call.changed,textposition='bottom right',  textfont=dict(color='#FF5108'),
                    mode='markers+text',line=dict(width=2, color='#FF5108'),name='吃单')
trace52 = go.Scatter(x=call_time,y=call.current,xaxis='x1',yaxis='y1',
                    text="吃单",textposition='bottom left',  textfont=dict(color='#FF5108'),
                    mode='markers+text',line=dict(width=2, color='#FF5108'),name='吃单')
'''trace6 = go.Scatter(x=zhic_time,y=zhic.current,xaxis='x1',yaxis='y1',
                    text=call.changed,textposition='bottom right',  textfont=dict(color='#509BFF'),
                    mode='markers+text',line=dict(width=2, color='#509BFF'),name='支撑')
trace62 = go.Scatter(x=zhic_time,y=zhic.current,xaxis='x1',yaxis='y1',
                    text="支撑",textposition='bottom left',  textfont=dict(color='#509BFF'),
                    mode='markers+text',line=dict(width=2, color='#509BFF'),name='支撑')'''

trace2 = go.Bar(
    x=call_time,
    y=call.changed,
    name='吃单量',
    xaxis='x1',
    yaxis='y2',
    marker=dict(color='#EEEEEE', line=dict(color='#FF5108', width=1)),
    opacity=0.6
)
trace3 = go.Bar(
    x=put_time,
    y=put.changed,
    name='砸盘量',
    xaxis='x1',
    yaxis='y2',
    marker=dict(color='#EEEEEE', line=dict(color='#00FF00', width=1)),
    opacity=0.6
)
axis=dict(
    showline=True,
    zeroline=False,
    showgrid=True,
    mirror=True,
    ticklen=4,
    gridcolor='#ffffff',
    tickfont=dict(size=10)
)
layout1 = dict(
    width=1600,
    height=800,
    autosize=False,
    title='tick',
    margin = dict(t=100),
    showlegend=False,
    xaxis1=dict(axis, **dict(anchor='y1', type = "category",showticklabels=False)),
    yaxis1=dict(axis, **dict(anchor='x1')),
    yaxis2=dict(
        overlaying='y1',
        side='right'
    ),
)


fig1 = dict(data=[trace,trace2,trace3,trace4,trace42,trace5,trace52], layout=layout1)
plotly.offline.plot(fig1, filename='tick.html')

全部回复

0/140

量化课程

    移动端课程