小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

如何利用龍系短線(xiàn)SHT指標(biāo)實(shí)現(xiàn)高效交易——Python編策略回測(cè)詳解

 深圳東方紅 2023-06-05 發(fā)布于廣東

本文將介紹一種基于龍系短線(xiàn)SHT指標(biāo)的交易策略,并使用Python編寫(xiě)代碼。該策略的思想是在每個(gè)股票交易日中,通過(guò)計(jì)算SHT指標(biāo)的值來(lái)判斷市場(chǎng)趨勢(shì),并在趨勢(shì)發(fā)生變化時(shí)開(kāi)倉(cāng)或平倉(cāng)。接下來(lái),我們將按照以下順序進(jìn)行講解:

文章圖片1
  1. 什么是龍系短線(xiàn)SHT指標(biāo)?
  2. 編寫(xiě)計(jì)算SHT指標(biāo)的Python函數(shù)。
  3. 定義交易策略。
  4. 編寫(xiě)實(shí)現(xiàn)交易策略的Python函數(shù)。

在開(kāi)始之前,請(qǐng)確保您已安裝以下Python庫(kù):

  • pandas
  • numpy
  • talib
  • yfinance
  • matplotlib
文章圖片2

1. 什么是龍系短線(xiàn)SHT指標(biāo)?

龍系短線(xiàn)SHT指標(biāo)是一種趨勢(shì)指標(biāo),由兩條線(xiàn)組成:短期趨勢(shì)線(xiàn)(SHT)和長(zhǎng)期趨勢(shì)線(xiàn)(LHT)。通過(guò)比較這兩條線(xiàn)的位置和交叉情況,可以評(píng)估市場(chǎng)的短期和長(zhǎng)期趨勢(shì)。

具體而言,當(dāng)SHT線(xiàn)位于LHT線(xiàn)之上時(shí),市場(chǎng)處于上漲趨勢(shì);當(dāng)SHT線(xiàn)位于LHT線(xiàn)之下時(shí),市場(chǎng)處于下跌趨勢(shì)。當(dāng)SHT線(xiàn)向上穿過(guò)LHT線(xiàn)時(shí),市場(chǎng)趨勢(shì)可能發(fā)生轉(zhuǎn)變,建議買(mǎi)入;反之,當(dāng)SHT線(xiàn)向下穿過(guò)LHT線(xiàn)時(shí),市場(chǎng)趨勢(shì)可能發(fā)生轉(zhuǎn)變,建議賣(mài)出。

文章圖片3

2. 編寫(xiě)計(jì)算SHT指標(biāo)的Python函數(shù)。

我們可以使用TALib庫(kù)計(jì)算龍系短線(xiàn)SHT指標(biāo)的值。下面是一個(gè)計(jì)算函數(shù)的示例代碼:

import talibdef calculate_sht(data, short_period=5, long_period=20): sht = talib.EMA(data, timeperiod=short_period) lht = talib.EMA(data, timeperiod=long_period) return sht, lht

該函數(shù)接受一個(gè)數(shù)據(jù)序列(例如股票價(jià)格)和可選的短期和長(zhǎng)期滑動(dòng)窗口大小,并返回兩個(gè)序列:SHT指標(biāo)和LHT指標(biāo)的值。

3. 定義交易策略。

基于龍系短線(xiàn)SHT指標(biāo),我們可以設(shè)計(jì)一個(gè)簡(jiǎn)單的交易策略:當(dāng)SHT線(xiàn)向上穿過(guò)LHT線(xiàn)時(shí),買(mǎi)入;當(dāng)SHT線(xiàn)向下穿過(guò)LHT線(xiàn)時(shí),賣(mài)出。具體而言,我們可以定義以下變量:

  • sht: SHT指標(biāo)的序列。
  • lht: LHT指標(biāo)的序列。
  • position: 當(dāng)前倉(cāng)位,即持有的股票數(shù)量。
  • cash: 當(dāng)前現(xiàn)金余額。
  • buy_price: 上次買(mǎi)入時(shí)的價(jià)格。
  • sell_price: 上次賣(mài)出時(shí)的價(jià)格。

算法的流程如下:

  1. 計(jì)算SHT和LHT指標(biāo)的值。
  2. 若SHT線(xiàn)向上穿過(guò)LHT線(xiàn)且當(dāng)前倉(cāng)位為0,則在開(kāi)盤(pán)價(jià)以當(dāng)前現(xiàn)金余額的全部金額買(mǎi)入,同時(shí)記錄買(mǎi)入價(jià)格。
  3. 若SHT線(xiàn)向下穿過(guò)LHT線(xiàn)且當(dāng)前倉(cāng)位大于0,則在收盤(pán)價(jià)以當(dāng)前持有的股票數(shù)量全部賣(mài)出,同時(shí)記錄賣(mài)出價(jià)格。
  4. 更新當(dāng)前現(xiàn)金余額和倉(cāng)位。

4. 編寫(xiě)實(shí)現(xiàn)交易策略的Python函數(shù)。

文章圖片5


現(xiàn)在我們可以利用以上算法編寫(xiě)實(shí)現(xiàn)交易策略的Python函數(shù)了。示例代碼如下:

import yfinance as yfimport matplotlib.pyplot as pltdef backtest(symbol, start_date, end_date, short_period=5, long_period=20, initial_cash=100000):    # 下載股票數(shù)據(jù)    data = yf.download(symbol, start=start_date, end=end_date, thread=0)# 計(jì)算SHT和LHTclose_price = data['Adj Close'].valuessht, lht = calculate_sht(close_price, short_period, long_period)# 初始化變量cash = initial_cashposition = 0buy_price = 0sell_price = 0# 遍歷每個(gè)交易日for i in range(long_period, len(close_price)):    # 如果當(dāng)前倉(cāng)位為0    if position == 0:        # 如果SHT向上穿過(guò)LHT        if sht[i] > lht[i] and sht[i-1] <= lht[i-1]:            # 計(jì)算可買(mǎi)入的股票數(shù)量            buy_count = int(cash / close_price[i])            # 更新倉(cāng)位和現(xiàn)金余額            position = buy_count            cash -= buy_count * close_price[i]            # 記錄買(mǎi)入價(jià)格            buy_price = close_price[i]            print('買(mǎi)入 %d 股,價(jià)格為 %.2f,余額為 %.2f' % (buy_count, buy_price, cash))    # 如果當(dāng)前倉(cāng)位不為0    else:        # 如果SHT向下穿過(guò)LHT        if sht[i] < lht[i] and sht[i-1] >= lht[i-1]:            # 更新倉(cāng)位和現(xiàn)金余額            cash += position * close_price[i]            # 記錄賣(mài)出價(jià)格            sell_price = close_price[i]            print('賣(mài)出 %d 股,價(jià)格為 %.2f,余額為 %.2f' % (position, sell_price, cash))            position = 0      # 計(jì)算收益率和資產(chǎn)價(jià)值      returns = (cash + position * close_price[-1] - initial_cash) / initial_cash      asset_value = cash + position * close_price[-1]      # 輸出回測(cè)結(jié)果      print('收益率: %.2f%%' % (returns * 100))      print('資產(chǎn)價(jià)值: %.2f' % asset_value)      # 畫(huà)出股票價(jià)格和SHT/LHT指標(biāo)的圖像      fig, ax = plt.subplots(figsize=(12, 8))      ax.plot(data.index, close_price)      ax.plot(data.index, sht)      ax.plot(data.index, lht)      plt.legend(['Close', 'SHT', 'LHT'])      plt.title(symbol)      plt.show()

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(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)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多