Stratégie d'ordre chronométrée

Auteur:ChaoZhang est là., Date: le 28 septembre 2023 à 15h26h20
Les étiquettes:

Résumé

L'idée principale de la stratégie d'ordre chronométré est de mener des opérations d'achat et de vente à des points de temps définis par l'utilisateur. Cette stratégie permet aux utilisateurs de définir un moment précis. À ce moment, il vendra d'abord la position actuelle, puis placera un ordre d'achat limite à 1% sous le prix actuel. Cela permet de rééquilibrer périodiquement à un moment spécifique chaque jour.

La logique de la stratégie

La stratégie utilise d'abord la fonction d'entrée pour obtenir l'heure et la minute personnalisées définies par l'utilisateur, puis génère le temps d'exécution de l'ordre en utilisant la fonction d'horodatage.

Plus précisément, la stratégie vérifie d'abord si l'heure actuelle se situe dans la plage de dates de début et de fin définie par l'utilisateur. Si oui, lorsque le moment d'exécution de l'ordre spécifié est atteint, elle vendra d'abord la position actuelle au prix du marché, puis placera un ordre d'achat limite à 99% du prix actuel. Cela permet de rééquilibrer à un prix 1% inférieur au prix actuel au moment spécifié.

Analyse des avantages

Le plus grand avantage de cette stratégie est qu'elle peut rééquilibrer périodiquement les positions à des moments spécifiques sans intervention manuelle, réduisant les coûts de main-d'œuvre.

Les avantages spécifiques sont les suivants:

  1. Opération entièrement automatisée, réduisant les coûts manuels.

  2. Permet un rééquilibrage périodique des positions à des moments précis.

  3. Obtient des opportunités d'achat extrêmement faibles, environ 1% en dessous des prix courants, lors de chaque rééquilibrage.

  4. Des temps de rééquilibrage personnalisables, réglage flexible.

  5. Date de début et de fin personnalisable pour les cycles de rééquilibrage, pratique pour l'optimisation des tests antérieurs.

Analyse des risques

La stratégie comporte également des risques à prendre en compte:

  1. Si le moment de rééquilibrage périodique est mal choisi, il peut manquer de meilleures opportunités d'achat ou se vendre à des moments inappropriés.

  2. Le prix d'achat n'est que de 1% inférieur au prix de vente, il est possible qu'il n'y ait pas suffisamment d'écart de prix d'achat ultra-faible à chaque cycle de rééquilibrage.

  3. Les ordres de vente et d'achat sont tous deux des ordres de marché, et peuvent être soumis à un certain degré de glissement.

  4. Si la stratégie ne fonctionne qu'à des moments précis, le marché ne peut pas être géré entre ces moments.

  5. Un rééquilibrage fréquent entraînera des frais de négociation relativement élevés.

Les solutions correspondantes:

  1. Choisir les moments de rééquilibrage appropriés, en les combinant également avec d'autres indicateurs techniques.

  2. Augmenter le paramètre de l'écart de prix d'achat selon le cas.

  3. Choisissez des produits avec une bonne profondeur et une faible volatilité.

  4. Combiner avec d'autres stratégies de gestion des risques pendant les périodes de non-rééquilibrage.

  5. Contrôler la fréquence de rééquilibrage de manière appropriée afin d'équilibrer les avantages et les coûts de négociation.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser la sélection des moments de rééquilibrage en fonction des caractéristiques du cycle intradien des produits de négociation.

  2. Ajouter d'autres indicateurs techniques pour éviter le rééquilibrage en période défavorable, par exemple en combinant des indicateurs de tendance de moyenne mobile.

  3. Optimiser le paramètre d'achat ultra-faible pour équilibrer l'avantage et le coût de négociation.

  4. Adopter un arrêt de perte / prise de bénéfice pour gérer les positions entre les rééquilibres.

  5. Utiliser des algorithmes d'apprentissage automatique pour s'entraîner sur les données historiques et optimiser automatiquement les points de rééquilibrage.

  6. Ajoutez des ajustements autour des scissions des actions, des dividendes, etc. pour suivre les changements de calendrier.

Résumé

En général, la stratégie d'ordre chronométré peut automatiser le processus de négociation et réduire les coûts d'exploitation manuelle grâce à un rééquilibrage périodique. Il y a une grande marge d'optimisation dans des domaines tels que la sélection du point de temps de rééquilibrage, le réglage des paramètres d'achat, le stop loss / take profit et l'amélioration de l'algorithme.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/








// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ytrevor

//@version=4
strategy("Order At Specified Time", overlay=true)


// -- These inputs are for customizing the times of your desired orders -- //
customHour = input(title="Hour for Order Execution", type=input.integer, defval=01, minval=00, maxval=24) //
customMinute = input(title="Minute for Order Execution", type=input.integer, defval=00, minval=00, maxval=59)
targetTime = timestamp("UTC", year, month, dayofmonth, customHour, customMinute, 00) //Order executes at this time

inDateRange = (time >= targetTime) and (time <= targetTime) //Orders are placed everyday at 01:00 UTC, or any other time specified via input


// -- These inputs are for back testing. Feel free to change the start and end dates via input -- // 
startDay = input(title="Start Day", type=input.integer, defval=10, minval=1, maxval=31) 
startMonth = input(title="Start Month", type=input.integer, defval=2, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2021)
endDay = input(title="End Day", type=input.integer, defval=22, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2021)

betweenDates = true


// -- Order execution --  //
if betweenDates
    buyPrice = close*0.99 //Buy at 1% lower than selling price
    strategy.entry("Sell", strategy.short, when=inDateRange) //Sell at 01:00 UTC, or at any other time specified via input
    strategy.entry("Buy", strategy.long, limit=buyPrice, when=inDateRange) //Buy limit order placed at the same time, 1% lower than selling price




Plus de