由於之前寫第9天的時候還是股市小白,籌碼資料直接照搬了,
今天由於要處理籌碼資料所以乾脆整個打掉重寫了,
仿照第18天的格式,一樣把資料整理完後暫存,之後直接撈就可以了。
第九天完整程式碼
法人大量買超跟著買,賣超反之。
為了避免參雜人性因素,我採用標準差來定義「大量」,
只要超過2個標準差,即視為「異常值」
以投信為例:
class FollowerCheckCons(ConsStrategy):
# Class variable for parameters tuning
check_ratio = 0.3
def init(self):
super().init()
self.Dealer_self_Balance = self.I(
lambda buy, sell: buy - sell,
self.data.df.Dealer_self_buy,
self.data.df.Dealer_self_sell,
plot=True,
)
self.Foreign_Investor_Balance = self.I(
lambda buy, sell: buy - sell,
self.data.df.Foreign_Investor_buy,
self.data.df.Foreign_Investor_sell,
plot=True,
)
self.Investment_Trust_Balance = self.I(
lambda buy, sell: buy - sell,
self.data.df.Investment_Trust_buy,
self.data.df.Investment_Trust_sell,
plot=True,
)
self.conservative = True
def next(self):
if self.Investment_Trust_Balance[-1] > (
self.Investment_Trust_Balance.mean()
+ 2 * self.Investment_Trust_Balance.std()
):
if len(self.trades) > 0:
self.trades[0].close()
self.buy()
elif self.Investment_Trust_Balance[-1] < (
self.Investment_Trust_Balance.mean()
- 2 * self.Investment_Trust_Balance.std()
):
if len(self.trades) > 0:
self.trades[0].close()
if self.conservative == False:
self.sell()
class FollowerCheck(FollowerCheckCons):
def init(self):
super().init()
self.conservative = False