Stratégie de temps de démarrage du backtest personnalisable

Auteur:ChaoZhang est là., Date: le 26 septembre 2023 à 20h53h15
Les étiquettes:

Résumé

L'objectif de cette stratégie est de permettre aux utilisateurs de personnaliser l'heure de début du backtesting pour un backtesting plus flexible et personnalisable.

La logique de la stratégie

Cette stratégie utilise les fonctions d'heure et d'horodatage de Pine Script pour implémenter une heure de début de backtest personnalisable.

Il permet d'abord aux utilisateurs d'entrer une année, un mois, une date, une heure et une minute personnalisés dans les paramètres.

Dans la vérification de l'état de la stratégie, il ajoute une nouvelle condition startTime. La stratégie ne démarrera que lorsque le temps actuel est supérieur ou égal à startTime.

Par exemple:

longCondition = crossover(sma(close, 14), sma(close, 28))

if (longCondition and startTime)

  strategy.entry("My Long Entry Id", strategy.long) 

Les utilisateurs peuvent configurer de manière flexible l'heure de début du backtest au lieu d'être limités à des temps codés.

Analyse des avantages

Cette stratégie de temps de démarrage de backtest personnalisable présente les avantages suivants:

  1. Plus flexible: les utilisateurs peuvent personnaliser entièrement l'heure de début du backtest au lieu d'être limités à un point fixe dans le temps.

  2. Plus réaliste: l'heure de démarrage peut être réglée sur la durée d'exécution réelle de la stratégie, ce qui rend le backtest plus réaliste.

  3. Convient pour le backtesting basé sur des événements: l'heure de début peut être définie en fonction de l'heure d'occurrence d'un événement pour le backtesting d'événements spécifiques.

  4. Adaptation facile des conditions: les conditions de démarrage du backtest peuvent être facilement ajustées pour un backtest ciblé de différentes étapes.

  5. Répétable et fiable: la paramétration de l'heure de début du backtest permet des résultats de backtest répétables et fiables.

Analyse des risques

L'utilisation d'un temps de démarrage de backtest personnalisable comporte également certains risques:

  1. Les résultats dépendent de l'heure de début: des heures de début différentes peuvent donner des résultats de backtest très différents.

  2. Le temps de démarrage nécessite une sélection minutieuse: des temps de démarrage déraisonnables peuvent provoquer une distorsion des résultats des backtests.

  3. Risque accru d'ajustement de la courbe: surajustement facile en ajustant l'heure de départ aux données historiques.

  4. Comparabilité réduite: les résultats de cette stratégie sont moins comparables à ceux des backtests à temps de démarrage fixe.

Les solutions:

  1. Test de retour à plusieurs reprises pour évaluer l'impact des changements d'heure de début sur les résultats.

  2. Choisissez les heures d'événement significatif comme heures de début pour minimiser les distorsions.

  3. Ajustez soigneusement les heures de début afin d'éviter de suradapter les données historiques.

  4. Garder les tests de retour à temps de démarrage fixes comme référence pour la comparaison avec les tests de retour personnalisés.

Directions d'optimisation

Cette stratégie de temps de démarrage des backtests personnalisable peut également être améliorée dans les aspects suivants:

  1. Prise en charge de la personnalisation des heures de début et de fin pour une configuration entièrement flexible de la fenêtre de temps de backtest.

  2. Prise en charge de plusieurs modes horaires: dates spécifiques, dates relatives, événement-driven, etc. pour une configuration de temps plus intelligente et plus pratique.

  3. Prise en charge de l'interface de configuration graphique pour un réglage plus intuitif des paramètres de temps.

  4. Prise en charge de la configuration de différentes granularités de temps: année, mois, jour, heure, minute, seconde, etc.

  5. Enregistrer la configuration du temps de backtest pour des résultats reproductibles, traçables et comparables.

  6. Ajouter la validation des configurations de temps incorrectes pour éviter les backtests de mauvaise qualité dus à des réglages de temps déraisonnables.

  7. Fournir une liaison de temps de démarrage pour synchroniser facilement les temps de démarrage entre plusieurs stratégies.

Résumé

Cette stratégie permet une configuration personnalisable et flexible des temps de démarrage des backtests pour réduire les limitations et rendre les backtests plus réalistes. Mais la dépendance des résultats sur les temps de démarrage doit être surveillée pour utiliser plusieurs backtests, modèles basés sur des événements, etc. pour réduire la distorsion. Cette stratégie a également de nombreuses directions d'amélioration pour atteindre une configuration de temps de backtest plus intelligente et plus pratique à l'avenir.


/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("C320up Strategy Tester Start Time", overlay = true)
// Copy and paste below into your strategy
// Strategy Tester Start Time
xYear = input(2018, title = "Start Year")
xMonth = input(01, title = "Start Month", minval = 01, maxval = 12)
xDay = input(01, title = "Start Day", minval = 01, maxval = 31)
xHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
xMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = time >= timestamp(xYear, xMonth, xDay, xHour, xMinute)
// End copy and paste
// Add (and startTime) at the end of your condition/s to activate

// The strategy below is just an example
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
    strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition and startTime)
    strategy.entry("My Short Entry Id", strategy.short)
// Happy trading!


Plus de