極值波動策略
- 2019 年 10 月 8 日
- 筆記
設想得很好,在每次波動的極值點進行操作,用買入和賣出價格兩個數組記錄買入和賣出價格。這樣可以保證每個操作都盈利。
以一次價格低點為例,從低到高,查詢賣出列表,如果匹配,說明前期的某個賣出操作已經可以盈利,則買入,並刪除賣出數組中的記錄。從低到高搜索,可以保證把最高的賣出價格留到後面,增加操作的容量。
如果賣出列表沒有對應操作,則查詢買入列表,如果臨近範圍已經有買入記錄,則不買,防止在某個價位反覆買入,如果該區間沒有買入記錄,則買入,並記錄。核心策略如下:
#分布判斷,如果可行,修改g.long或g.short,返回True #使用g.orderprice和g.mm判斷 def distcheck(): jl=1 #預設的盈利距離 idx=int(g.orderprice/g.step) #求出區間索引 buycnt=len([x for x in g.buy if x>0]) sellcnt=len([x for x in g.sell if x>0]) if g.mm==1: #買入 #if buycnt-sellcnt>0: #return False for i in range((idx+jl),len(g.sell)): #遍歷尋找 if g.sell[i]>0: print("買入%.2f(%.2f)"%(g.orderprice,g.sell[i])) g.sell[i]=0 return True if g.buy[idx]==0: g.buy[idx]=g.orderprice print("買入%.2f"%(g.orderprice)) return True if g.mm==-1: #賣出 #if sellcnt-buycnt>0: #return False for i in range((idx-jl),0,-1): #遍歷尋找 if g.buy[i]>0: print("賣出%.2f(%.2f)"%(g.orderprice,g.buy[i])) g.buy[i]=0 return True if g.sell[idx]==0: g.sell[idx]=g.orderprice print("賣出%.2f"%(g.orderprice)) return True return False
這是回測的結果:

很不理想,這種操作,可能導致分化,買入列表最後都是一些高價,賣出列表都是低價,這是最後階段的列表

無論是調整區間,還是調整盈利預期,還是保持兩個列表平衡,都不能有效改善。
分析原因:買賣的控制,儘管保證了每次買賣自己盈利了,但對於總體,或者兩個列表上「掛著」的交易來說,可能是一種虧損。