<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python告訴你,這樣買的股票才有靈魂

          共 1785字,需瀏覽 4分鐘

           ·

          2022-04-28 16:45


          之前聽過一句話:要想賺大錢必須學(xué)會長線持倉,但如果要賺快錢就要學(xué)會日內(nèi)交易。如今的量化交易范圍之廣令人驚嘆,各種交易策略層出不窮,其中最為流行的就是日內(nèi)交易策略。
          日內(nèi)交易是一種快進快出的交易方式,由于可以控制隔夜風(fēng)險的特點,得到了很多交易者的推崇和接受。為了幫助大家了解日內(nèi)交易,豐富策略倉庫,本節(jié)我們將深入了解商品期貨中最為流行的日內(nèi)策略之一日內(nèi)高低點突破策略。

          什么是日內(nèi)交易

          日內(nèi)交易的目的是以更小的損失,來獲取當天市場微小的價格波動所帶來的利潤。它是指開倉和平倉在同一天內(nèi)或同一交易時間段內(nèi)完成的交易方式,開倉和平倉可以是單次,也可以是多次,只要是開平倉在同一個交易日前結(jié)束就行。
          理論上日內(nèi)交易不承擔(dān)隔夜的跳空風(fēng)險,相對來說是一種較完美的低風(fēng)險交易策略,但實際上并非如此,雖然日內(nèi)交易回避了跳空所帶來的風(fēng)險,同時也錯失了跳空所帶來的利潤。但如果以正確的方式交易,通過配合不同的交易規(guī)則,日內(nèi)交易往往也能產(chǎn)生豐厚的回報。


          策略邏輯

          我們知道判斷上漲趨勢最簡單的方法是,當前低點比前一個低點更高,當前高點也比前一個高點更高;同理下跌趨勢最簡單的方法是,當前低點比前一個低點更低,當前高點也比前一個高點更低。但如果僅僅以高低點的比較去判斷趨勢的漲跌,這未免太過簡陋,因為價格可能在一個點上來回跳動幾十次甚至上百次,從而導(dǎo)致交易過于頻繁。
          所以我們需要設(shè)定一個價格區(qū)間來過濾這些日常雜波,來對簡單的高低點突破策略進行完善。我們可以根據(jù)歷史行情所出現(xiàn)的最高價和最低價,組成一個包含上軌和下軌的通道。根據(jù)順勢交易的原則,當價格突破上軌時多頭開倉,當價格突破下軌時空頭開倉。
          多頭開倉:當前無持倉,時間是在開盤與收盤前10分鐘之間,并且價格大于上軌
          空頭開倉:當前無持倉,時間是在開盤與收盤前10分鐘之間,并且價格小于下軌
          多頭平倉:當前持多單,價格小于下軌,或者時間大于14:50
          空頭平倉:當前持空單,價格大于上軌,或者時間大于14:50
          有人統(tǒng)計過,大部分的窄幅止損都是無效的,小空間的止損會頻繁打臉,所以我們要做的就是設(shè)計一個寬幅止損:
          如果多頭開倉后,價格不升反跌,我們所要做的不是立即止損,而是等待觀望,直到價格跌破下軌才止損出局;
          空頭開倉后也是如此,當價格不跌反升,繼續(xù)等待價格是否會自我修正,直到跌破上軌才止損出局。


          策略編寫

          1. 導(dǎo)入time
          import?time
          因為日內(nèi)策略在編寫的時候,要判斷當前的時間來控制開平倉邏輯,這個策略在設(shè)計的時候是:只能在930分之1450分之間開倉,1450分之后全部平倉,其余的時間都過濾掉了。所以就需要引入time時間庫。

          2. 編寫策略框架
          #?策略主函數(shù)
          def?onTick():
          ????pass
          ?
          #?程序入口
          def?main():
          ????while?True:??#?進入無限循環(huán)模式
          ????????onTick()??#?執(zhí)行策略主函數(shù)
          ????????Sleep(1000)#?休眠1秒
          編寫策略就像蓋房子一樣,先把地基和框架搭建好,再往里面填充東西。我們這里用了兩個函數(shù),一個是main主函數(shù),另一個是onTick函數(shù),程序會先從main函數(shù)執(zhí)行代碼,在main函數(shù)中,我們用了一個無限循環(huán)模式,重復(fù)執(zhí)行onTick函數(shù)。

          3. 設(shè)置全局變量
          mp?=?on_line?=?under_line?=?0
          在全局變量中,mp主要用于控制虛擬持倉,判斷持倉一般分為兩種,一種是真實的賬戶持倉,另一種就是虛擬持倉,還有一種是真實持倉和虛擬持倉聯(lián)合判斷。實盤時我們只使用真實持倉就足夠了,但這里為了簡化策略,作為演示使用虛擬持倉。on_lineunder_line分別記錄上軌和下軌。

          4. 處理時間
          def?can_time(hour,?minute):
          ????hour?=?str(hour)
          ????minute?=?str(minute)
          ????if?len(minute)?==?1:
          ????????minute?=?"0"?+?minute
          ????return?int(hour?+?minute)
          ?
          _C(exchange.SetContractType,?"MA888")??#?訂閱期貨品種
          bar_arr?=?_C(exchange.GetRecords)??#?獲取K線列表
          if?len(bar_arr)?10:
          ????return
          time_new?=?bar_arr[-1]['Time']??#?獲取當根K線的時間戳
          time_local_new?=?time.localtime(time_new?/?1000)??#?處理時間戳
          hour_new?=?int(time.strftime("%H",?time_local_new))??#?獲取小時
          minute_new?=?int(time.strftime("%M",?time_local_new))#?獲取分鐘
          day_new?=?int(time.strftime("%d",?time_local_new))#?當前K線日期
          time_previous?=?bar_arr[-2]['Time']??#?獲取上根K線的時間戳
          previous?=?time.localtime(time_previous?/?1000)??#?處理時間戳
          day_previous?=?int(time.strftime("%d",?previous))??#?上根K線日期
          注意:處理時間一共用于兩個地方:一個是判斷當前時間是否在我們規(guī)定的交易時間內(nèi),如果當前是在這個時間之內(nèi),并且已經(jīng)達到了開倉條件就開倉,如果不是在這個時間之內(nèi),并且當前有持倉就平掉所有持倉,達到收盤前平倉的目的。

          另一個是判斷當前K線是不是最新交易日的K線,因為我們的策略邏輯是每當新的一天K線出現(xiàn)時,就重置上下軌。通過對比兩個K線的時間戳來重置on_lineunder_line的值,也就是說上下軌通道是在不斷變化的。

          5. 計算高低點上下軌
          global?mp,?on_line,?under_line??#?引入全局變量
          high?=?bar_arr[-2]['High']??#?獲取上根K線的最高價
          low?=?bar_arr[-2]['Low']??#?獲取上根K線的最低價
          if?day_new?!=?day_previous:??#?如果是最新一根K線
          ????on_line?=?high?*?up?#?重置上軌
          ????under_line?=?low?*?down??#?重置下軌
          can_trade?=?can_time(hour_new,?minute_new)
          if?can_trade?930:??#?如果不是在規(guī)定交易的時間內(nèi)
          ????if?high?>?on_line:??#?如果上根K線最高價大于上軌
          ????????on_line?=?high?*?up??#?重置上軌
          ????if?low?#?如果上根K線最低價小于下軌
          ????????under_line?=?low?*?down??#?重置上軌
          if?on_line?-?under_line?10:??#?如果上軌與下軌的差小于10
          ????return
          計算高低點上下軌的邏輯其實非常簡單:如果當前是第一根K線,那么on_lineunder_line的值分別是最高價和最低價,如果當前K線是最新交易日的K線,就重置on_lineunder_line的值為最高價和最低價;
          一旦在規(guī)定的交易時間內(nèi),on_lineunder_line的值就固定不變了,除非在這個時間之外并且如果上根K線最高價大于on_line就重置為最新的最高價;如果上根K線最低價小于under_line就重置為最新的最低價。

          5. 下單交易
          在下單交易之前,我們先獲取當前最新價格,因為在下單時需要在函數(shù)中傳入下單價格。然后使用if語句,根據(jù)之前設(shè)計的交易邏輯,先是判斷當前的持倉狀態(tài),然后再判斷當前時間狀態(tài),以及最新價格與上下軌的相互位置關(guān)系,最后下單交易并重置虛擬持倉狀態(tài)。
          close_new?=?bar_arr[-1]['Close']??#?獲取最新價格(賣價),用于開平倉
          #?如果持多單,并且價格小于下軌或者非規(guī)定的交易時間
          if?mp?>?0?and?(close_new?or?can_trade?>?1450):
          ????exchange.SetDirection("closebuy")??#?設(shè)置交易方向和類型
          ????exchange.Sell(close_new?-?1,?1)??#?平多單
          ????mp?=?0??#?設(shè)置虛擬持倉的值,即空倉
          #?如果持空單,并且價格大于上軌或者非規(guī)定的交易時間
          if?mp?0?and?(close_new?>?on_line?or?can_trade?>?1450):
          ????exchange.SetDirection("closesell")??#?設(shè)置交易方向和類型
          ????exchange.Buy(close_new,?1)??#?平空單
          ????mp?=?0??#?設(shè)置虛擬持倉的值,即空倉
          if?mp?==?0?and?930?1450:?#?如果當前無持倉且在交易時間內(nèi)
          ????if?close_new?>?on_line:??#?如果價格大于上軌
          ????????exchange.SetDirection("buy")??#?設(shè)置交易方向和類型
          ????????exchange.Buy(close_new,?1)??#?開多單
          ????????mp?=?1??#?設(shè)置虛擬持倉的值,即有多單
          ????elif?close_new?#?如果價格小于下軌
          ????????exchange.SetDirection("sell")??#?設(shè)置交易方向和類型
          ????????exchange.Sell(close_new?-?1,?1)??#?開空單
          ???????mp?=?-1??#?設(shè)置虛擬持倉的值,即有空單
          預(yù)測今天下午的天氣是很容易的,但是要想預(yù)測這個月內(nèi)的天氣卻很難。日內(nèi)交易不需要較長的持倉周期,所承受的市場波動風(fēng)險較低,盡管這種交易方式不符合每個人的風(fēng)格,但對于那些風(fēng)險較為敏感的交易者來說,日內(nèi)交易還是相當值得深入研究。


          6.?完整策略代碼

          下面是完整的策略代碼和注釋,你也可以在這個https://www.fmz.com/strategy/175316鏈接中,進入該策略主頁面,完整復(fù)制該策略代碼包括默認參數(shù),并進行在線回測。
          #?導(dǎo)入庫
          import?time
          ?
          #?定義全局變量:虛擬持倉、上軌、下軌
          mp?=?on_line?=?under_line?=?0
          ?
          #?處理時間函數(shù)
          def?can_time(hour,?minute):
          ????hour?=?str(hour)
          ????minute?=?str(minute)
          ????if?len(minute)?==?1:
          ????????minute?=?"0"?+?minute
          ????return?int(hour?+?minute)
          ?
          def?onTick():
          ????_C(exchange.SetContractType,?"MA888")??#?訂閱期貨品種
          ????bar_arr?=?_C(exchange.GetRecords)??#?獲取K線列表
          ????if?len(bar_arr)?10:
          ????????return
          ????time_new?=?bar_arr[-1]['Time']??#?獲取當根K線的時間戳
          ????time_local_new?=?time.localtime(time_new?/?1000)??#?處理時間戳
          ????hour_new?=?int(time.strftime("%H",?time_local_new))??#?獲取小時
          ????minute_new?=?int(time.strftime("%M",?time_local_new))#?獲取分鐘
          ????day_new?=?int(time.strftime("%d",?time_local_new))#?當前K線日期
          ????time_previous?=?bar_arr[-2]['Time']??#?獲取上根K線的時間戳
          ????previous?=?time.localtime(time_previous?/?1000)??#?處理時間戳
          ????day_previous?=?int(time.strftime("%d",?previous))??#?上根K線日期
          ????global?mp,?on_line,?under_line??#?引入全局變量
          ????high?=?bar_arr[-2]['High']??#?獲取上根K線的最高價
          ????low?=?bar_arr[-2]['Low']??#?獲取上根K線的最低價
          ????if?day_new?!=?day_previous:??#?如果是最新一根K線
          ????????on_line?=?high?*?up?#?重置上軌
          ????????under_line?=?low?*?down??#?重置下軌
          ????can_trade?=?can_time(hour_new,?minute_new)
          ????if?can_trade?930:??#?如果不是在規(guī)定交易的時間內(nèi)
          ????????if?high?>?on_line:??#?如果上根K線最高價大于上軌
          ????????????on_line?=?high?*?up??#?重置上軌
          ????????if?low?#?如果上根K線最低價小于下軌
          ????????????under_line?=?low?*?down??#?重置上軌
          ????if?on_line?-?under_line?10:??#?如果上軌與下軌的差小于10
          ????????return
          ?close_new?=?bar_arr[-1]['Close']??#?獲取最新價格(賣價),用于開平倉
          ????#?如果持多單,并且價格小于下軌或者非規(guī)定的交易時間
          ????if?mp?>?0?and?(close_new?or?can_trade?>?1450):
          ????????exchange.SetDirection("closebuy")??#?設(shè)置交易方向和類型
          ????????exchange.Sell(close_new?-?1,?1)??#?平多單
          ????????mp?=?0??#?設(shè)置虛擬持倉的值,即空倉
          ????#?如果持空單,并且價格大于上軌或者非規(guī)定的交易時間
          ????if?mp?0?and?(close_new?>?on_line?or?can_trade?>?1450):
          ????????exchange.SetDirection("closesell")??#?設(shè)置交易方向和類型
          ????????exchange.Buy(close_new,?1)??#?平空單
          ????????mp?=?0??#?設(shè)置虛擬持倉的值,即空倉
          ????if?mp?==?0?and?930?1450:?#?如果當前無持倉且在交易時間內(nèi)
          ????????if?close_new?>?on_line:??#?如果價格大于上軌
          ????????????exchange.SetDirection("buy")??#?設(shè)置交易方向和類型
          ????????????exchange.Buy(close_new,?1)??#?開多單
          ????????????mp?=?1??#?設(shè)置虛擬持倉的值,即有多單
          ????????elif?close_new?#?如果價格小于下軌
          ????????????exchange.SetDirection("sell")??#?設(shè)置交易方向和類型
          ????????????exchange.Sell(close_new?-?1,?1)??#?開空單
          ????????????mp?=?-1??#?設(shè)置虛擬持倉的值,即有空單
          ??????????????
          def?main():
          ????while?True:
          ????????onTick()
          ????????Sleep(1000)
          ?

          文末贈書


          推薦《商品期貨量化交易實戰(zhàn)》,送5本,

          由電子工業(yè)出版社贊助。



          送書規(guī)則


          規(guī)則很簡單:我們每個月都會給大家送書(累計送出379多本),常來留言混臉熟的都會有機會!這次送出的是書籍,非常值得一讀。只要你堅持每日來留言打卡進精選,就會回報!名單會月底公布!



          推薦閱讀:

          入門:?最全的零基礎(chǔ)學(xué)Python的問題? |?零基礎(chǔ)學(xué)了8個月的Python??|?實戰(zhàn)項目?|學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評,電影《后來的我們》?|?38年NBA最佳球員分析?|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個海量小姐姐素描圖?|碟中諜這么火,我用機器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!


          AI:?會做詩的機器人?|?給圖片上色?|?預(yù)測收入?|?碟中諜這么火,我用機器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          小工具:?Pdf轉(zhuǎn)Word,輕松搞定表格和水??!?|?一鍵把html網(wǎng)頁保存為pdf!|??再見PDF提取收費!?|?用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換?|?制作一款釘釘?shù)蛢r機票提示器!?|60行代碼做了一個語音壁紙切換器天天看小姐姐!

          瀏覽 32
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国三级视频 | 国产真人无码 | 影音先锋人人操 | 精品孕妇一级A片免费看 | 在线看片操 |