1. 程式人生 > 程式設計 >淺談python量化 雙均線策略(金叉死叉)

淺談python量化 雙均線策略(金叉死叉)

#小策略,策略邏輯是在金叉時候買進,死叉時候賣出,所謂金叉死叉是兩條均線的交叉,當短期均線上穿長期均線為金叉,反之為死叉

淺談python量化 雙均線策略(金叉死叉)

#下面是策略程式碼及結構

# 匯入函式庫
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)

淺談python量化 雙均線策略(金叉死叉)

#整體結果在12-16年回測測試結果效益不錯,阿爾法貝塔最大回撤也還行,難點是在策略和框架的使用和呼叫,這就是這次的雙均線策略記錄

補充知識:(多頭、空頭、金叉、死叉、賣出訊號、買出訊號)的python處理

1.指標概念

均值性指標:以平均資料作為參考的指標

隨機性指標:以最高價最低價等為參考的指標

2.多頭、空頭、金叉、死叉、賣出訊號、買出訊號

多頭:短期均線在長期均線上方

空頭:短期均線在長期均線下方

金叉:短期均線向上穿越長期均線

死叉:短期均線向下穿越長期均線

買出訊號:金叉 + 一定的條件

賣出出訊號:死叉 + 一定的條件

3.Python實現:以KDJ為例

淺談python量化 雙均線策略(金叉死叉)

淺談python量化 雙均線策略(金叉死叉)

淺談python量化 雙均線策略(金叉死叉)

4.測試:篩選滬深股票中賣出訊號的股票

淺談python量化 雙均線策略(金叉死叉)

以上這篇淺談python量化 雙均線策略(金叉死叉)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。