[Mod] add support for reverse contract in CtaBacktester

This commit is contained in:
vn.py 2019-10-18 23:05:09 +08:00
parent da33b01f7b
commit 01fed04246
3 changed files with 30 additions and 4 deletions

View File

@ -133,6 +133,7 @@ class BacktesterEngine(BaseEngine):
size: int,
pricetick: float,
capital: int,
inverse: bool,
setting: dict
):
""""""
@ -151,7 +152,8 @@ class BacktesterEngine(BaseEngine):
slippage=slippage,
size=size,
pricetick=pricetick,
capital=capital
capital=capital,
inverse=inverse
)
strategy_class = self.classes[class_name]
@ -184,6 +186,7 @@ class BacktesterEngine(BaseEngine):
size: int,
pricetick: float,
capital: int,
inverse: bool,
setting: dict
):
if self.thread:
@ -204,6 +207,7 @@ class BacktesterEngine(BaseEngine):
size,
pricetick,
capital,
inverse,
setting
)
)
@ -240,6 +244,7 @@ class BacktesterEngine(BaseEngine):
size: int,
pricetick: float,
capital: int,
inverse: bool,
optimization_setting: OptimizationSetting,
use_ga: bool
):
@ -263,7 +268,8 @@ class BacktesterEngine(BaseEngine):
slippage=slippage,
size=size,
pricetick=pricetick,
capital=capital
capital=capital,
inverse=inverse
)
strategy_class = self.classes[class_name]
@ -303,6 +309,7 @@ class BacktesterEngine(BaseEngine):
size: int,
pricetick: float,
capital: int,
inverse: bool,
optimization_setting: OptimizationSetting,
use_ga: bool
):
@ -324,6 +331,7 @@ class BacktesterEngine(BaseEngine):
size,
pricetick,
capital,
inverse,
optimization_setting,
use_ga
)

View File

@ -84,6 +84,9 @@ class BacktesterManager(QtWidgets.QWidget):
self.pricetick_line = QtWidgets.QLineEdit("0.2")
self.capital_line = QtWidgets.QLineEdit("1000000")
self.inverse_combo = QtWidgets.QComboBox()
self.inverse_combo.addItems(["正向", "反向"])
backtesting_button = QtWidgets.QPushButton("开始回测")
backtesting_button.clicked.connect(self.start_backtesting)
@ -136,6 +139,7 @@ class BacktesterManager(QtWidgets.QWidget):
form.addRow("合约乘数", self.size_line)
form.addRow("价格跳动", self.pricetick_line)
form.addRow("回测资金", self.capital_line)
form.addRow("合约模式", self.inverse_combo)
left_vbox = QtWidgets.QVBoxLayout()
left_vbox.addLayout(form)
@ -248,6 +252,11 @@ class BacktesterManager(QtWidgets.QWidget):
pricetick = float(self.pricetick_line.text())
capital = float(self.capital_line.text())
if self.inverse_combo.currentText() == "正向":
inverse = False
else:
inverse = True
old_setting = self.settings[class_name]
dialog = BacktestingSettingEditor(class_name, old_setting)
i = dialog.exec()
@ -268,6 +277,7 @@ class BacktesterManager(QtWidgets.QWidget):
size,
pricetick,
capital,
inverse,
new_setting
)
@ -298,6 +308,11 @@ class BacktesterManager(QtWidgets.QWidget):
pricetick = float(self.pricetick_line.text())
capital = float(self.capital_line.text())
if self.inverse_combo.currentText() == "正向":
inverse = False
else:
inverse = True
parameters = self.settings[class_name]
dialog = OptimizationSettingEditor(class_name, parameters)
i = dialog.exec()
@ -318,6 +333,7 @@ class BacktesterManager(QtWidgets.QWidget):
size,
pricetick,
capital,
inverse,
optimization_setting,
use_ga
)

View File

@ -1157,7 +1157,8 @@ def optimize(
pricetick: float,
capital: int,
end: datetime,
mode: BacktestingMode
mode: BacktestingMode,
inverse: bool
):
"""
Function for running in multiprocessing.pool
@ -1174,7 +1175,8 @@ def optimize(
pricetick=pricetick,
capital=capital,
end=end,
mode=mode
mode=mode,
inverse=inverse
)
engine.add_strategy(strategy_class, setting)