1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      如何使用Python實(shí)現(xiàn)DualThrust區(qū)間突破策略

      這篇文章給大家分享的是有關(guān)如何使用Python實(shí)現(xiàn)Dual Thrust 區(qū)間突破策略的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來(lái)看看吧。

      我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、澄邁ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的澄邁網(wǎng)站制作公司

      Dual Thrust簡(jiǎn)介

      Dual Thrust策略屬于開盤區(qū)間突破策略,它以當(dāng)天開盤價(jià)加減一定的范圍來(lái)確定一個(gè)上下軌道,當(dāng)價(jià)格突破上軌時(shí)做多,價(jià)格突破下軌時(shí)做空。不過與其他突破策略相比有兩點(diǎn)不同:第一個(gè)是Dual Thrust策略在設(shè)置范圍的時(shí)候,引入的是前N個(gè)交易日的開高低收這四個(gè)價(jià)格,這使得在一定時(shí)期內(nèi)范圍相對(duì)穩(wěn)定,對(duì)于趨勢(shì)跟蹤策略來(lái)說(shuō)是比較合理的。

      第二個(gè)是Dual Thrust策略在多頭和空頭的觸發(fā)條件上,考慮了非對(duì)稱性,通過外部參數(shù)Ks和Kx,可以針對(duì)多頭和空頭選擇不同的周期,這一點(diǎn)比較符合期貨市場(chǎng)漲緩跌急的特點(diǎn)。當(dāng)Ks小于Kx時(shí),多頭相對(duì)容易被觸發(fā),當(dāng)Ks大于Kx時(shí),空頭相對(duì)容易被觸發(fā)。這樣的好處是可以根據(jù)自己的交易經(jīng)驗(yàn),動(dòng)態(tài)地調(diào)整Ks和Kx的值。也可以根據(jù)歷史數(shù)據(jù)測(cè)試的最優(yōu)參數(shù)來(lái)使用策略。

      Dual Thrust上下軌

      在Dual Thrust策略中,首先需要定義前N根K線的震蕩區(qū)間,然后震蕩區(qū)間乘以多頭和空頭系數(shù)計(jì)算出范圍,接著以開盤價(jià)加減這個(gè)范圍,形成上軌和下軌,最后根據(jù)價(jià)格與上下軌的相互位置關(guān)系開開平倉(cāng)。

      計(jì)算震蕩區(qū)間
      計(jì)算震蕩區(qū)間首先需要獲取四個(gè)價(jià)格,它們分別是:前N根K線中最高價(jià)(hh)、最高收盤價(jià)(hc)、最低價(jià)(ll)、最低收盤價(jià)(lc)。然后獲取hh與lc的差和hc與ll的差,最后獲取這兩個(gè)差的最大值。公式為:

      • Range = Max(hh-lc,hc-ll)

      計(jì)算范圍
      在計(jì)算范圍的時(shí)候,需要用到兩個(gè)外部參數(shù),分別是多頭系數(shù)Ks和空頭系數(shù)Kx,它們的值可以根據(jù)交易者的經(jīng)驗(yàn)自己設(shè)置。那么多頭的范圍就是Rang乘以Ks;空頭的范圍是Rang乘以Kx。公式為:

      • long_range = Range * Ks

      • short_range = Range * Kx

      計(jì)算上軌下軌
      有了多頭范圍和空頭范圍,就可以根據(jù)開盤價(jià)來(lái)計(jì)算上軌和下軌的值了,其中上軌的值是開盤價(jià)加上多頭范圍,下軌的值是開盤價(jià)減去空頭范圍。公式為:

      • up_line = open + long_rang

      • down_line = open - short_range

      策略邏輯

      如何使用Python實(shí)現(xiàn)Dual Thrust 區(qū)間突破策略

      • 做多:價(jià)格向上突破上軌

      • 做空:價(jià)格向下突破下軌

      與其他突破策略一樣,Dual Thrust策略也是根據(jù)價(jià)格與上下軌的相對(duì)位置關(guān)系來(lái)開平倉(cāng),當(dāng)價(jià)格向上突破上軌時(shí)開多單;當(dāng)價(jià)格向下突破下軌時(shí)開空單。另外,Dual Thrust策略沒有止損止盈機(jī)制,也沒有主動(dòng)平倉(cāng)機(jī)制。也就是說(shuō)當(dāng)持有多單時(shí),如果價(jià)格向下突破下軌時(shí)直接反空為多;當(dāng)持有空單時(shí),如果價(jià)格向上突破上軌時(shí)直接反多為空。

      策略編寫

      第一步:編寫策略架構(gòu)
      還是我們熟悉的策略框架,包含一個(gè)main程序入口函數(shù)和一個(gè)onTick策略主函數(shù),如下:

      # 策略主函數(shù)
      def onTick():
          pass
      
      
      # 程序入口
      def main():
          while True:  # 進(jìn)入無(wú)限循環(huán)模式
              onTick()  # 執(zhí)行策略主函數(shù)
              Sleep(1000)  # 休眠1秒

      定義全局變量
      之所以定義全局變量是因?yàn)?,在程序重?fù)執(zhí)行onTick函數(shù)中,如果變量定義在onTick函數(shù)中,那么這個(gè)變量的值會(huì)隨著onTick的執(zhí)行而改變。但有時(shí)候我們需要當(dāng)達(dá)到某個(gè)條件的時(shí)候才改變這個(gè)變量,所以就需要我們把變量寫到onTick函數(shù)的外面。

      mp = 0  # 用于控制虛擬持倉(cāng)
      last_bar_time = 0  # 用于判斷K線時(shí)間
      up_line = 0  # 上軌
      down_line = 0  # 下軌

      計(jì)算上下軌
      仔細(xì)看下面代碼中的注釋,首先一次性引入所有的全局變量,然后訂閱期貨品種并獲取K線數(shù)組,接著判斷一下K線數(shù)組的狀態(tài)是否符合我們的條件,如果沒問題就從K線數(shù)組中獲取最新的K線數(shù)據(jù)和最新的收盤價(jià)。

      有了以上基礎(chǔ)數(shù)據(jù),就可以計(jì)算上下軌的值了。首先是獲取四個(gè)價(jià)格:最高價(jià)、最高的收盤價(jià)、最低價(jià)、最低的收盤價(jià),然后就可以計(jì)算范圍,最后根據(jù)范圍計(jì)算出上軌和下軌。大家可以根據(jù)以上的計(jì)算流程,熟悉下面的代碼。

      global mp, last_bar_time, up_line, down_line # 引入全局變量
      exchange.SetContractType(FuturesCode)  # 訂閱期貨品種
      bar_arr = exchange.GetRecords()  # 獲取K線數(shù)組
      if not bar_arr or len(bar_arr) < Cycle:
          return  # 如果沒有獲取到K線數(shù)據(jù)或者K線數(shù)據(jù)太短就返回
      last_bar = bar_arr[len(bar_arr) - 1]  # 最新的K線
      last_bar_close = last_bar['Close']  # 最新K線的收盤價(jià)
      if last_bar_time != last_bar['Time']:  # 如果產(chǎn)生了新的K線
          hh = TA.Highest(bar_arr, Cycle, 'High')  # 最高價(jià)
          hc = TA.Highest(bar_arr, Cycle, 'Close')  # 最高的收盤價(jià)
          ll = TA.Lowest(bar_arr, Cycle, 'Low')  # 最低價(jià)
          lc = TA.Lowest(bar_arr, Cycle, 'Close')  # 最低的收盤價(jià)
          Range = max(hh - lc, hc - ll)  # 計(jì)算范圍
          up_line = _N(last_bar['Open'] + Ks * Range)  # 計(jì)算上軌
          down_line = _N(last_bar['Open'] - Kx * Range)  # 計(jì)算下軌
          last_bar_time = last_bar['Time']  # 更新最后時(shí)間戳

      下單交易
      下單交易很簡(jiǎn)單,使用if語(yǔ)句判斷當(dāng)前的持倉(cāng)狀態(tài)和價(jià)格與上下軌的相互位置關(guān)系來(lái)開平倉(cāng)。同樣的在下單交易之前也需要設(shè)置交易方向和類型,即:開多、開空、平多、平空。最后下單之后重置虛擬持倉(cāng)的狀態(tài)。

      if mp == 0 and last_bar_close >= up_line:
          exchange.SetDirection("buy")  # 設(shè)置交易方向和類型
          exchange.Buy(last_bar_close, 1)  # 開多單
          mp = 1  # 設(shè)置虛擬持倉(cāng)的值,即有多單
      if mp == 0 and last_bar_close <= down_line:
          exchange.SetDirection("sell")  # 設(shè)置交易方向和類型
          exchange.Sell(last_bar_close - 1, 1)  # 開空單
          mp = -1  # 設(shè)置虛擬持倉(cāng)的值,即有空單
      if mp == 1 and last_bar_close <= down_line:
          exchange.SetDirection("closebuy")  # 設(shè)置交易方向和類型
          exchange.Sell(last_bar_close - 1, 1)  # 平多單
          mp = 0  # 設(shè)置虛擬持倉(cāng)的值,即空倉(cāng)
      if mp == -1 and last_bar_close >= up_line:
          exchange.SetDirection("closesell")  # 設(shè)置交易方向和類型
          exchange.Buy(last_bar_close, 1)  # 平空單
          mp = 0  # 設(shè)置虛擬持倉(cāng)的值,即空倉(cāng)

      策略回測(cè)

      測(cè)試環(huán)境

      • 交易品種:螺紋鋼指數(shù)

      • 時(shí)間:2015年02月22日~2019年12月06日

      • 周期:一小時(shí)

      • 滑點(diǎn):開平倉(cāng)各2跳

      • 手續(xù)費(fèi):交易所2倍
        如何使用Python實(shí)現(xiàn)Dual Thrust 區(qū)間突破策略
        績(jī)效報(bào)告
        如何使用Python實(shí)現(xiàn)Dual Thrust 區(qū)間突破策略
        資金曲線
        如何使用Python實(shí)現(xiàn)Dual Thrust 區(qū)間突破策略

      感謝各位的閱讀!關(guān)于“如何使用Python實(shí)現(xiàn)Dual Thrust 區(qū)間突破策略”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


      標(biāo)題名稱:如何使用Python實(shí)現(xiàn)DualThrust區(qū)間突破策略
      網(wǎng)站URL:http://ef60e0e.cn/article/pogiph.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        和顺县| 横峰县| 江永县| 界首市| 北票市| 沙湾县| 金华市| 博野县| 晴隆县| 鹿邑县| 伊宁县| 九龙坡区| 衢州市| 乌鲁木齐市| 西畴县| 庆元县| 开封市| 齐齐哈尔市| 本溪市| 仙桃市| 临邑县| 天柱县| 荃湾区| 寿阳县| 海兴县| 通化县| 德兴市| 德州市| 和静县| 双流县| 磴口县| 南木林县| 武宁县| 六枝特区| 陇西县| 双城市| 浠水县| 博兴县| 通渭县| 崇礼县| 共和县|