Source code for qf_lib.backtesting.events.time_event.regular_time_event.calculate_and_place_orders_event

#     Copyright 2016-present CERN – European Organization for Nuclear Research
#
#     Licensed under the Apache License, Version 2.0 (the "License");
#     you may not use this file except in compliance with the License.
#     You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#     Unless required by applicable law or agreed to in writing, software
#     distributed under the License is distributed on an "AS IS" BASIS,
#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#     See the License for the specific language governing permissions and
#     limitations under the License.
#

from qf_lib.backtesting.events.time_event.regular_time_event.regular_market_event import RegularMarketEvent


[docs]class CalculateAndPlaceOrdersRegularEvent(RegularMarketEvent): """ Class implementing the logic for all triggering regular calculation of signals and placing orders. This should be used as a trigger for a a strategy to run calculations. Example: trigger_time {"hour": 13, "minute": 30, "second": 0, "microsecond": 0} CalculateAndPlaceOrdersRegularEvent.set_trigger_time(trigger_time) will result in an event being triggered every day at 13:30 trigger_time {"minute": 5, "second": 0, "microsecond": 0} CalculateAndPlaceOrdersRegularEvent.set_trigger_time(trigger_time) will result in an event being triggered every hour, 00:05, 01:05, 02:05, ... """ _timer = None def notify(self, listener) -> None: listener.calculate_and_place_orders()
[docs] @classmethod def set_daily_default_trigger_time(cls): """ Convenience method used to set daily trigger time at 1:00 a.m. every day. This causes the signals to be calculated every day (in case if exclude_weekends() was not called, on working days otherwise) early in the morning. """ cls.set_trigger_time({"hour": 1, "minute": 0, "second": 0, "microsecond": 0})