@@ -798,7 +798,8 @@ def calc_signal(self, inst: Instrument, day: datetime.datetime) -> (Signal, Deci
798798 else :
799799 sell_sig = True
800800 self .__strategy .force_opens .remove (inst )
801- signal = signal_code = price = volume = use_margin = None
801+ signal = signal_code = price = volume = volume_ori = use_margin = None
802+
802803 priority = PriorityType .LOW
803804 if pos :
804805 # 多头持仓
@@ -880,7 +881,8 @@ def calc_signal(self, inst: Instrument, day: datetime.datetime) -> (Signal, Deci
880881 # 开新仓
881882 elif buy_sig or sell_sig :
882883 risk_each = Decimal (df .atr [idx ]) * Decimal (inst .volume_multiple )
883- volume = round ((self .__current + self .__fake ) * risk / risk_each )
884+ volume_ori = (self .__current + self .__fake ) * risk / risk_each
885+ volume = round (volume_ori )
884886 if volume > 0 :
885887 new_bar = DailyBar .objects .filter (
886888 exchange = inst .exchange , code = inst .main_code , time = day .date ()).first ()
@@ -895,7 +897,9 @@ def calc_signal(self, inst: Instrument, day: datetime.datetime) -> (Signal, Deci
895897 code = signal_code if signal_code else inst .main_code ,
896898 strategy = self .__strategy , instrument = inst , type = signal , trigger_time = day , defaults = {
897899 'price' : price , 'volume' : volume , 'priority' : priority , 'processed' : False })
898- logger .info (f"新信号: { sig } 预估保证金: { use_margin :.0f} ({ use_margin / 10000 :.1f} 万)" )
900+ volume_ori = volume_ori if volume_ori else volume
901+ logger .info (f"新信号: { sig } ({ volume_ori :.1f} 手) "
902+ f"预估保证金: { use_margin :.0f} ({ use_margin / 10000 :.1f} 万)" )
899903 return signal , use_margin
900904 except Exception as e :
901905 logger .warning (f'calc_signal 发生错误: { repr (e )} ' , exc_info = True )
0 commit comments