極值波動策略

2022-04-03 19:54:54 字數 1496 閱讀 4426

設想得很好,在每次波動的極值點進行操作,用**和賣出**兩個陣列記錄**和賣出**。這樣可以保證每個操作都盈利。

以一次**低點為例,從低到高,查詢賣出列表,如果匹配,說明前期的某個賣出操作已經可以盈利,則**,並刪除賣出陣列中的記錄。從低到高搜尋,可以保證把最高的賣出**留到後面,增加操作的容量。

如果賣出列表沒有對應操作,則查詢**列表,如果臨近範圍已經有**記錄,則不買,防止在某個價位反覆**,如果該區間沒有**記錄,則**,並記錄。核心策略如下:

#分布判斷,如果可行,修改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

這是回測的結果:

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

無論是調整區間,還是調整盈利預期,還是保持兩個列表平衡,都不能有效改善。

分析原因:買賣的控制,儘管保證了每次買賣自己盈利了,但對於總體,或者兩個列表上「掛著」的交易來說,可能是一種虧損。

銷售波動統計

任務描述 本關任務 假定有一組資料記錄著賣場每天 不超過3030天 的銷售額 假設都是整數 要求你統計並輸出銷售的波動情況,即計算每天相對於前一天的銷售額的增減情況 即後項減前項的差值 例如連續55天的銷售額分別是 23 56 12 76 43,則銷售波動情況的輸出為 33 44 64 33。其中 ...

極值問題(dp)

問題描述 已知m n為整數,且滿足下列兩個條件 m n 即1 m,n k,1 k 109 n2 m n m2 2 1 你的任務是 程式設計輸入正整數k,求一組滿足上述兩個條件的m n,並且使m2 n2的值最大。例如,從鍵盤輸入k 1995,則輸出 m 987 n 1597。輸入樣例 1995 輸出樣...

極值問題(acms)

問題描述 已知m n為整數,且滿足下列兩個條件 m n 即1 m,n k,1 k 109 n2 m n m2 2 1 你的任務是 程式設計輸入正整數k,求一組滿足上述兩個條件的m n,並且使m2 n2的值最大。例如,從鍵盤輸入k 1995,則輸出 m 987 n 1597。輸入樣例 輸出樣例 如下 ...