关于n的设置错误。
来源:13-9 量化交易策略实战--低估值量化交易策略(下)

慕容3139001
2023-03-25
代码中,n的设置十分混乱。
根据局大盘止损,具体用法详见dp_stoploss函数说明
def broader_stoploss(context):
stoploss = bm_stoploss(kernel=2, n=3, threshold=0.1) #n=3?
if stoploss:
if len(context.portfolio.positions) > 0:
for stock in list(context.portfolio.positions.keys()):
order_target(stock, 0)
大盘止损函数
def bm_stoploss(kernel=2, n=10, threshold=0.03): #不是默认60吗? #用kernel也行,用mode也行
’’‘
方法1:当大盘N日均线(默认60日)与昨日收盘价构成“死叉”,则发出True信号
方法2:当大盘N日内跌幅超过阈值,则发出True信号
’’
第一次出现n,是在第二行n=3,第二次是在大盘止损函数中,n=10,第三次,是告知默认n=60.既然n默认为60,那么,def bm_stoploss中,n怎么会等于10呢,不是默认60吗?
而最开始的stoploss = bm_stoploss(kernel=2, n=3, threshold=0.1) n=3就更奇怪了。
不知是否如此,谢谢!
1回答
-
meteor2022
2023-03-26
方法1与方法2的N在业务意义上根本不一样,方法1的N为大盘N日均线,方法2的N表示大盘在N日内的跌幅。
方法1与方法2是两种止损的不同思路,实际代码中采用的是方法2进行止损。希望同学仔细阅读代码,并理解代码
stoploss = bm_stoploss(kernel=2, n=3, threshold=0.1) #n=3 表示实例化了方法2的大盘在3日内跌幅超过0.1就止损。
032023-04-01
相似问题