DEF CALCULATE_PREMIUM_AVERAGES_AND_COMBINED_SIGNAL(PREMIUM_LIST&&M1&&M2): # 检查区间 IF LEN(PREMIUM_LIST) < 243: RAISE VALUEERROR("THE PREMIUM LIST MUST CONTAIN AT LEAST 243 ELEMENTS.") IF M1 <= 0 OR M1 > LEN(PREMIUM_LIST): RAISE VALUEERROR("M1 MUST BE A POSITIVE INTEGER AND LESS THAN OR EQUAL TO THE LENGTH OF THE PREMIUM LIST.") IF M2 <= 0 OR M2 > 243: RAISE VALUEERROR("M2 MUST BE A POSITIVE INTEGER AND LESS THAN OR EQUAL TO 243.") # 前M1分钟的折溢价平均值 X1 = SUM(PREMIUM_LIST[lbk]:M1[rbk]) / M1 # 第243-M2至242分钟的折溢价平均值 X2 = SUM(PREMIUM_LIST[lbk]243 - M2:243[rbk]) / M2 # 全天折溢价平均值 X0 = SUM(PREMIUM_LIST) / LEN(PREMIUM_LIST) # 多看信号1 LONG_SIGNAL_1 = INT(X2 > X1) LONG_SIGNAL_2 = INT(X2 > X0) # 计算上行和下行成交量 UP_VOLUME, DOWN_VOLUME = 0, 0 FOR T IN RANGE(2, 242): IF PREMIUM_LIST[lbk]T[rbk] > PREMIUM_LIST[lbk]T - 1[rbk]: UP_VOLUME += PREMIUM_LIST[lbk]T[rbk] - PREMIUM_LIST[lbk]T - 1[rbk] ELSE: DOWN_VOLUME += PREMIUM_LIST[lbk]T - 1[rbk] - PREMIUM_LIST[lbk]T[rbk] # 多看信号2 LONG_SIGNAL_3 = INT(UP_VOLUME > DOWN_VOLUME) # 综合判断看多信号 COMBINED_SIGNAL = INT(LONG_SIGNAL_1 AND LONG_SIGNAL_2 AND LONG_SIGNAL_3) SIGNALS = { 'LONG_SIGNAL_1': LONG_SIGNAL_1, 'LONG_SIGNAL_2': LONG_SIGNAL_2, 'LONG_SIGNAL_3': LONG_SIGNAL_3, 'COMBINED_SIGNAL': COMBINED_SIGNAL } RETURN X1, X2, X0, UP_VOLUME, DOWN_VOLUME, SIGNALS# 数据PREMIUM_DATA = [lbk]0.01[rbk] * 243M1 = 3M2 = 5#计算X1, X2, X0, UP_VOLUME, DOWN_VOLUME, SIGNALS = CALCULATE_PREMIUM_AVERAGES_AND_COMBINED_SIGNAL(PREMIUM_DATA,M1,M2)PRINT(F"前{M1}分钟的折溢价平均值 X1: {X1}")PRINT(F"第243减{M2}至242分钟的折溢价平均值 X2: {X2}")PRINT(F"全天折溢价平均值 X0: {X0}")PRINT(F"上行成交量总值: {UP_VOLUME}")PRINT(F"下行成交量总值: {DOWN_VOLUME}")PRINT("信号:")FOR SIGNAL_NAME, VALUE IN SIGNALS.ITEMS(): IF VALUE == 1: PRINT(F"发出{SIGNAL_NAME}")# 综合信号判断IF SIGNALS[lbk]'COMBINED_SIGNAL'[rbk] == 1: PRINT("综合指标发出看多信号")#文华#