資源簡介
量化投資策略,ht_trendline,kama,r-breaker僅供參考, 不對投資結果負責

代碼片段和文件信息
#?!/usr/bin/env?python
#?-*-?coding:?utf-8?-*-
#?策略代碼總共分為三大部分,1)PARAMS變量?2)initialize函數?3)handle_data函數
#?請根據指示閱讀。或者直接點擊運行回測按鈕,進行測試,查看策略效果。
#?策略名稱:Hilbert?Transform?-?Instantaneous?Trendline指標策略
#?關鍵詞:希爾伯特變換、均線。
#?方法:
#?1)改進的均線指標,降低延遲;
#?2)最新價格在均線之上時買入,在均線之下時賣出
import?numpy?as?np
import?talib
#?閱讀1,首次閱讀可跳過:
#?PARAMS用于設定程序參數,回測的起始時間、結束時間、滑點誤差、初始資金和持倉。
#?可以仿照格式修改,基本都能運行。如果想了解詳情請參考新手學堂的API文檔。
PARAMS?=?{
????“start_time“:?“2017-06-01?00:00:00“
????“end_time“:?“2017-08-20?00:00:00“
????“commission“:?0.002??#?手續費
????“slippage“:?0.001??#?交易滑點
????“account_initial“:?{“huobi_cny_cash“:?10000
????????????????????????“huobi_cny_btc“:?0}
}
#?閱讀2,遇到不明白的變量可以跳過,需要的時候回來查閱:
#?initialize函數是兩大核心函數之一(另一個是handle_data),用于初始化策略變量。
#?策略變量包含:必填變量,以及非必填(用戶自己方便使用)的變量
def?initialize(context):
????#?設置回測頻率?可選:“1m“?“5m“?“15m“?“30m“?“60m“?“4h“?“1d“?“1w“
????context.frequency?=?“4h“
????#?設置回測基準?比特幣:“huobi_cny_btc“?萊特幣:“huobi_cny_ltc“?以太坊:“huobi_cny_eth“
????#?context.benchmark?=?“huobi_cny_btc“
????context.benchmark?=?“huobi_cny_eth“
????#?設置回測標的?比特幣:“huobi_cny_btc“?萊特幣:“huobi_cny_ltc“?以太坊:“huobi_cny_eth“
????#?context.security?=?“huobi_cny_btc“
????context.security?=?“huobi_cny_eth“
????#?獲取歷史數據的長度
????context.user_data.ht_window?=?100
????context.user_data.upper?=?0.01
????context.user_data.lower?=?0.01
????context.user_data.stop_loss?=?0.1
????context.user_data.max_net?=?None
????#?至此initialize函數定義完畢。
#?閱讀3,策略核心邏輯:
#?handle_data函數定義了策略的執行邏輯,按照frequency生成的bar依次讀取并執行策略邏輯,直至程序結束。
#?handle_data和bar的詳細說明,請參考新手學堂的解釋文檔。
def?handle_data(context):
????#?獲取歷史數據?取后window根bar
????hist?=?context.data.get_price(context.security?count=context.user_data.ht_window
??????????????????????????????????frequency=‘60m‘)
????if?len(hist.index)?????????context.log.warn(“bar的數量不足?等待下一根bar...“)
????????return
????#?歷史收盤價
????hist_close?=?np.array(hist[“close“])
????#?初始化買入/賣出信號
????long_signal_triggered?=?False
????short_signal_triggered?=?False
????#?計算指標值
????ht_line?=?talib.HT_TRENDLINE(hist_close)
????current_price?=?context.data.get_current_price(context.security)
????current_drawdown?=?0
????if?context.account.huobi_cny_eth?>?HUOBI_CNY_ETH_MIN_ORDER_QUANTITY:
????????if?context.user_data.max_net?is?None:
????????????context.user_data.max_net?=?context.account.huobi_cny_net
????????else:
????????????if?context.account.huobi_cny_net?>?context.user_data.max_net:
????????????????context.user_data.max_net?=?context.account.huobi_cny_net
????????current_drawdown?=?(context.account.huobi_cny_net?-?context.user_data.max_net)?/?context.user_data.max_net
????else:
????????context.user_data.max_net?=?None
????context.log.info(‘dd?=?%s‘%current_drawdown)
????if?-current_drawdown?>=?context.user_data.stop_loss:
????????context.log.info(“觸發止損信號“)
????????short_signal_triggered?=?True
????else:
????????#??產生買入/賣出信號
????????if?current_price?>?ht_line[-1]*(1+context.user_data.upper):
????????????long_signal_triggered?=?True
????????elif?current
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????3360507??2017-08-25?10:41??ht_trend.docx
?????目錄???????????0??2017-08-25?10:59??__MACOSX\
?????文件?????????187??2017-08-25?10:41??__MACOSX\._ht_trend.docx
?????文件????????5289??2017-08-24?19:33??ht_trendline.py
?????文件??????216147??2017-08-25?10:58??kama.docx
?????文件?????????187??2017-08-25?10:58??__MACOSX\._kama.docx
?????文件????????4150??2017-08-25?10:55??kama.py
?????文件??????942577??2017-08-25?10:45??r-breaker.docx
?????文件?????????187??2017-08-25?10:45??__MACOSX\._r-breaker.docx
?????文件????????7043??2017-08-25?10:11??r-breaker.py
評論
共有 條評論