Ceci est une continuation de Dernière fois.
LESSON 7 Scheduling Functions
Trading Calendars Je vais sauter, je vais vous expliquer quand les futurs sortiront.
Scheduling Functions
Jusqu'à présent, nous avons utilisé handle_data ()
comme timing pour exécuter l'algorithme. Cela se fait toutes les minutes, mais si vous négociez chaque minute, vous risquez de faire faillite facilement moyennant des frais.
Bien entendu, vous voudrez peut-être traiter quotidiennement ou mensuellement. La fonction schedule_function ()
peut programmer l'algorithme à une fréquence spécifiée.
position | Argument de mot-clé | valeur |
---|---|---|
1 | func | Nom de la fonction à exécuter |
2 | date_rules | Règles quotidiennes |
3 | time_rules | Règles d'unité de temps |
Le code ci-dessous exécute la fonction rebalance ()
tous les jours, une heure après le début de la transaction [^ 1].
schedule_function(func=rebalance,
date_rules=date_rules.every_day(),
time_rules=time_rules.market_open(hours=1))
Une fois de plus, les instances date_rules
et time_rules
sont soudainement apparues même si elles ne définissaient rien ... Cela semble aussi être les propres règles de Quantopian.
Les méthodes suivantes sont fournies pour les objets "date_rules" et "time_rules".
date_rules
time_rules
Le code ci-dessous exécute la fonction week_trades ()
30 minutes avant la fin de chaque week-end.
schedule_function(weekly_trades, date_rules.week_end(), time_rules.market_close(minutes=30))
Le code ci-dessous prolonge SPY de 10% du portefeuille en début de semaine et ferme la position 30 minutes avant la fin du week-end. Le code peut être cloné à partir d'ici (https://www.quantopian.com/tutorials/getting-started#lesson7).
def initialize(context):
context.spy = sid(8554)
schedule_function(open_positions, date_rules.week_start(), time_rules.market_open())
schedule_function(close_positions, date_rules.week_end(), time_rules.market_close(minutes=30))
def open_positions(context, data):
order_target_percent(context.spy, 0.10)
def close_positions(context, data):
order_target_percent(context.spy, 0)
schedule_function ()
est ignoré si le marché est fermé. Vous pouvez également ignorer les transactions d'une demi-journée en définissant half_days = False
.
En ce qui concerne les données financières, la gestion des vacances est très gênante, je suis donc reconnaissante pour ce domaine.
[^ 1]: time_rules.market_open ()
renvoie normalement 9:30 (ET: heure normale de l'Est).
Recommended Posts