def save_setting(self): """""" setting = { "tick": self.tick_recordings, "bar": self.bar_recordings } save_json(self.setting_filename, setting)
def save_order(self) -> None: """""" order_data = { "date": datetime.now().strftime("%Y-%m-%d"), "data": self.order_reference_map } save_json(self.order_filename, order_data)
def save_setting(self) -> None: """""" setting = { "trade_slippage": self.trade_slippage, "timer_interval": self.timer_interval, "instant_trade": self.instant_trade } save_json(self.setting_filename, setting)
def remove_strategy_setting(self, strategy_name: str): """ Update setting file. """ if strategy_name not in self.strategy_setting: return self.strategy_setting.pop(strategy_name) save_json(self.setting_filename, self.strategy_setting)
def sync_strategy_data(self, strategy: StrategyTemplate): """ Sync strategy data into json file. """ data = strategy.get_variables() data.pop("inited") # Strategy status (inited, trading) should not be synced. data.pop("trading") self.strategy_data[strategy.strategy_name] = data save_json(self.data_filename, self.strategy_data)
def save_data(self) -> None: """""" data = {"date": datetime.now().strftime("%Y-%m-%d")} for contract_result in self.contract_results.values(): key = f"{contract_result.reference},{contract_result.vt_symbol}" data[key] = { "open_pos": contract_result.open_pos, "last_pos": contract_result.last_pos } save_json(self.data_filename, data)
def update_strategy_setting(self, strategy_name: str, setting: dict): """ Update setting file. """ strategy = self.strategies[strategy_name] self.strategy_setting[strategy_name] = { "class_name": strategy.__class__.__name__, "vt_symbol": strategy.vt_symbol, "setting": setting, } save_json(self.setting_filename, self.strategy_setting)
def save_strategy_setting(self): """ Save setting file. """ strategy_setting = {} for name, strategy in self.strategies.items(): strategy_setting[name] = { "class_name": strategy.__class__.__name__, "vt_symbols": strategy.vt_symbols, "setting": strategy.get_parameters() } save_json(self.setting_filename, strategy_setting)
def save_data(self) -> None: """""" position_data = [] for position in self.positions.values(): if not position.volume: continue d = { "vt_symbol": position.vt_symbol, "volume": position.volume, "price": position.price, "direction": position.direction.value } position_data.append(d) save_json(self.data_filename, position_data)
def save_algo_setting(self): """""" save_json(self.setting_filename, self.algo_settings)
def save_setting(self) -> None: """""" setting = {"timer_interval": self.timer_interval} save_json(self.setting_filename, setting)
def start_backtesting(self): """""" class_name = self.class_combo.currentText() vt_symbol = self.symbol_line.text() interval = self.interval_combo.currentText() start = self.start_date_edit.dateTime().toPyDateTime() end = self.end_date_edit.dateTime().toPyDateTime() rate = float(self.rate_line.text()) slippage = float(self.slippage_line.text()) size = float(self.size_line.text()) pricetick = float(self.pricetick_line.text()) capital = float(self.capital_line.text()) if self.inverse_combo.currentText() == "正向": inverse = False else: inverse = True # Check validity of vt_symbol if "." not in vt_symbol: self.write_log("本地代码缺失交易所后缀,请检查") return _, exchange_str = vt_symbol.split(".") if exchange_str not in Exchange.__members__: self.write_log("本地代码的交易所后缀不正确,请检查") return # Save backtesting parameters backtesting_setting = { "class_name": class_name, "vt_symbol": vt_symbol, "interval": interval, "start": start.isoformat(), "rate": rate, "slippage": slippage, "size": size, "pricetick": pricetick, "capital": capital, "inverse": inverse, } save_json(self.setting_filename, backtesting_setting) # Get strategy setting old_setting = self.settings[class_name] dialog = BacktestingSettingEditor(class_name, old_setting) i = dialog.exec() if i != dialog.Accepted: return new_setting = dialog.get_setting() self.settings[class_name] = new_setting result = self.backtester_engine.start_backtesting( class_name, vt_symbol, interval, start, end, rate, slippage, size, pricetick, capital, inverse, new_setting) if result: self.statistics_monitor.clear_data() self.chart.clear_data() self.trade_button.setEnabled(False) self.order_button.setEnabled(False) self.daily_button.setEnabled(False) self.candle_button.setEnabled(False) self.trade_dialog.clear_data() self.order_dialog.clear_data() self.daily_dialog.clear_data() self.candle_dialog.clear_data()
def save_setting(self) -> None: """""" # For normal spread setting = [] for spread in self.spreads.values(): if isinstance(spread, AdvancedSpreadData): continue leg_settings = [] for leg in spread.legs.values(): price_multiplier = spread.price_multipliers[leg.vt_symbol] trading_multiplier = spread.trading_multipliers[leg.vt_symbol] inverse_contract = spread.inverse_contracts[leg.vt_symbol] leg_setting = { "vt_symbol": leg.vt_symbol, "price_multiplier": price_multiplier, "trading_multiplier": trading_multiplier, "inverse_contract": inverse_contract } leg_settings.append(leg_setting) spread_setting = { "name": spread.name, "leg_settings": leg_settings, "active_symbol": spread.active_leg.vt_symbol, "min_volume": spread.min_volume } setting.append(spread_setting) save_json(self.setting_filename, setting) # For advanced spread setting = [] for spread in self.spreads.values(): if not isinstance(spread, AdvancedSpreadData): continue leg_settings = [] for variable, vt_symbol in spread.variable_symbols.items(): trading_direction = spread.variable_directions[variable] price_multiplier = spread.price_multipliers[vt_symbol] trading_multiplier = spread.trading_multipliers[vt_symbol] inverse_contract = spread.inverse_contracts[vt_symbol] leg_setting = { "variable": variable, "vt_symbol": vt_symbol, "trading_direction": trading_direction, "trading_multiplier": trading_multiplier, "inverse_contract": inverse_contract } leg_settings.append(leg_setting) spread_setting = { "name": spread.name, "leg_settings": leg_settings, "price_formula": spread.price_formula, "active_symbol": spread.active_leg.vt_symbol, "min_volume": spread.min_volume } setting.append(spread_setting) save_json(self.advanced_filename, setting)
def save_setting(self): """""" setting = self.get_setting() save_json(self.setting_filename, setting)