-
Notifications
You must be signed in to change notification settings - Fork 13
/
notifications_pinbar_simulation.py
58 lines (44 loc) · 1.87 KB
/
notifications_pinbar_simulation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from core.portfolio import Portfolio
from core.backtest import Backtest
from core.configuration import Configuration
from datahandlers.data_handler_factory import DataHandlerFactory
from executionhandlers.simulated_execution import SimulatedExecutionHandler
from executionhandlers.execution_handler_factory import ExecutionHandlerFactory
from strategies.pinbar_notifications import PinBarNotificationsStrategy
from positionsizehandlers.fixed_position_size import FixedPositionSize
from loggers.text_logger import TextLogger
from datahandlers.historic_csv_data_handler import HistoricCSVDataHandler
def get_strategy():
return PinBarNotificationsStrategy
def main():
strategy = get_strategy()
args_namespace = strategy.create_argument_parser(True).parse_args()
events_log_file = '{}/events.log'.format(args_namespace.output_directory)
strategy_params = strategy.get_strategy_params(args_namespace)
strategy_params['send_notifications'] = False
strategy_params['webhook'] = ''
configuration = Configuration(data_handler_name=HistoricCSVDataHandler,
execution_handler_name=SimulatedExecutionHandler)
configuration.set_option(Configuration.OPTION_CSV_DIR, args_namespace.data_directory)
simulation = Backtest(
args_namespace.output_directory,
args_namespace.symbols,
args_namespace.initial_capital_usd,
0,
args_namespace.start_date,
configuration,
DataHandlerFactory(),
ExecutionHandlerFactory(),
Portfolio,
strategy,
FixedPositionSize(0.5),
TextLogger(events_log_file),
[Backtest.LOG_TYPE_EVENTS],
strategy_params,
'equity.csv',
'trades.csv',
)
simulation.run()
simulation.print_performance()
if __name__ == "__main__":
main()