淺談python量化 雙均線策略(金叉死叉)
阿新 • • 發佈:2020-06-04
#小策略,策略邏輯是在金叉時候買進,死叉時候賣出,所謂金叉死叉是兩條均線的交叉,當短期均線上穿長期均線為金叉,反之為死叉
#下面是策略程式碼及結構
# 匯入函式庫 from jqdata import * # 初始化函式 def initialize(context): # 設定滬深300作為基準 set_benchmark('000300.XSHG') # True為開啟動態復權模式,使用真實價格交易 set_option('use_real_price',True) # 股票類交易手續費是:買入時佣金萬分之三,賣出時佣金萬分之三加千分之一印花稅,每筆交易佣金最低扣5塊錢 set_order_cost(OrderCost(open_tax=0,close_tax=0.001,\ open_commission=0.0003,close_commission=0.0003,\ close_today_commission=0,min_commission=5),type='stock') #華誼股票 g.security='300027.XSHE' #設定每天執行 run_daily(handle) def handle(context): security=g.security n5=5 n20=20 # 獲取股票的收盤價 close_data = attribute_history(security,n20,'1d',"close",df=False) print(close_data) # 取得過去 ma_n1 天的平均價格 ma_n5 = close_data['close'][-n5:].mean() # 取得過去 ma_n2 天的平均價格 ma_n20 = close_data['close'][-n20:].mean() print(ma_n5,ma_n20) # 取得當前的現金 cash = context.portfolio.available_cash # 如果當前有餘額 if ma_n5 > ma_n20: # 用所有 cash 買入股票,order_value是買賣價值 order_value(security,cash) # 記錄這次買入 log.info("Buying %s" % security) # 如果n5日均線小於n20日均線,並且目前有頭寸 elif ma_n5 < ma_n20 and context.portfolio.positions[security].closeable_amount > 0: # 全部賣出,order_target是買賣數量 order_target(security,0) # 記錄這次賣出 log.info("Selling %s" % (security)) # 繪製n5日均線價格 record(ma_n5=ma_n5) # 繪製n20日均線價格 record(ma_n20=ma_n20)
#整體結果在12-16年回測測試結果效益不錯,阿爾法貝塔最大回撤也還行,難點是在策略和框架的使用和呼叫,這就是這次的雙均線策略記錄
補充知識:(多頭、空頭、金叉、死叉、賣出訊號、買出訊號)的python處理
1.指標概念
均值性指標:以平均資料作為參考的指標
隨機性指標:以最高價最低價等為參考的指標
2.多頭、空頭、金叉、死叉、賣出訊號、買出訊號
多頭:短期均線在長期均線上方
空頭:短期均線在長期均線下方
金叉:短期均線向上穿越長期均線
死叉:短期均線向下穿越長期均線
買出訊號:金叉 + 一定的條件
賣出出訊號:死叉 + 一定的條件
3.Python實現:以KDJ為例
4.測試:篩選滬深股票中賣出訊號的股票
以上這篇淺談python量化 雙均線策略(金叉死叉)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。