[TOC]

Le développement de stratégies sur la plateforme de trading quantitatif Inventor est indissociable de la conception des paramètres de stratégie et des interactions de stratégie. La plateforme de trading quantitatif Inventor s’engage à fournir des outils de trading quantitatif simples, faciles à utiliser et puissants, et à itérer en permanence la conception et les fonctions des produits. En améliorant les « paramètres de stratégie » et les « contrôles d’interaction », la flexibilité de conception des paramètres et des interactions dans la conception de stratégie a été encore accrue. Les fonctions des paramètres de stratégie et des commandes interactives ont été améliorées pour faciliter la réalisation de certaines exigences de conception. Dans cet article, examinons deux aspects essentiels de la conception d’une stratégie : la « conception des paramètres de la stratégie » et la « conception de l’interaction de la stratégie ».
Les types de paramètres de stratégie dans Inventor Quant n’ont pas augmenté et ce sont toujours les cinq types de paramètres que nous connaissons :
Alors vous me demanderez certainement, quel contenu a été ajouté et optimisé dans cette mise à jour de la plateforme ?
Cette mise à niveau ajoute la « configuration des composants » pour les contrôles de liaison des paramètres, simplifie les fonctions de « regroupement » et de « dépendance des paramètres » et intègre ces deux fonctions dans la « configuration des composants ». Pour la valeur par défaut du paramètre, une option « facultative »/« obligatoire » est ajoutée pour déterminer si la stratégie est qualifiée pour l’opération. Si le paramètre est défini sur « obligatoire » mais qu’aucune valeur spécifique n’est écrite dans le contrôle des paramètres lorsque le la stratégie est exécutée, Paramètres, la stratégie ne peut pas être exécutée pour le moment. Maintenant que nous avons une compréhension générale des changements de mise à niveau, testons-les en détail.

Nous avons brièvement parlé des fonctions « facultatives »/« obligatoires » auparavant, je n’entrerai donc pas dans les détails ici. Ce qui suit explique principalement la « configuration des composants ». Le paramètre de configuration des composants peut être simplement compris comme suit :
Définissez les différentes propriétés, types et règles des contrôles auxquels les paramètres correspondent (sont liés). Le contrôle de limite par défaut pour les paramètres de type numérique (type nombre) est une zone de saisie. Vous pouvez définir des règles pour les données reçues par la zone de saisie, c’est-à-dire utiliser les contrôles « valeur minimale » et « valeur maximale » dans la figure pour définir eux.
En plus du contrôle de zone de saisie par défaut, la plateforme a ajouté :

Les paramètres de type booléen sont spéciaux dans la mesure où ils n’ont qu’un seul contrôle correspondant. Il s’agit du contrôle de commutateur par défaut. Et la valeur par défaut du paramètre est également requise.
Étant donné que les valeurs booléennes sont soit vraies, soit fausses, ce sont des options binaires. Il est donc très approprié d’utiliser une commande de commutation pour correspondre à ce type de paramètre.
Généralement, les paramètres de type booléen sont utilisés pour contrôler si certaines fonctions de stratégie sont activées sur la plateforme.

En plus du contrôle de zone de saisie par défaut, la plateforme a ajouté :
texte Dans « Type de composant », sélectionnez le paramètre : Texte. La zone de contrôle de saisie sur l’interface de stratégie correspondant au paramètre actuel se transformera en une zone de texte plus grande. Les différences entre un contrôle de texte et un contrôle de zone de saisie ordinaire sont les suivantes : le texte saisi dans la zone de texte peut être renvoyé à la ligne et la zone de texte peut ajuster la taille du contrôle. La valeur variable du paramètre d’interface est : chaîne.
Sélecteur de temps Dans « Type de composant », sélectionnez le paramètre comme : Sélecteur de temps. La zone de contrôle de saisie sur l’interface de stratégie correspondant aux paramètres actuels deviendra une zone de contrôle pour le réglage de l’heure et de la date. Le « Sélecteur d’heure pour le type de composant avec paramètre de type chaîne » est différent du « Sélecteur d’heure pour le type de composant avec paramètre de type numérique ». La sélection d’heure pour le paramètre de type chaîne dispose d’une option « Format d’heure » supplémentaire, qui permet de définir le format d’heure du contrôle. Sélectionnez Format :
Sélecteur de couleurs Dans « Type de composant », sélectionnez le paramètre : Sélecteur de couleurs. Le contrôle de la zone de saisie sur l’interface de stratégie correspondant au paramètre actuel deviendra un contrôle de sélection de couleur. Généralement utilisé pour concevoir des paramètres de définition des couleurs. La valeur variable du paramètre d’interface est : chaîne (la valeur de couleur correspondant à la couleur sélectionnée, par exemple : #7e1717).

Le contrôle par défaut correspondant au paramètre de type de liste déroulante est une liste déroulante, mais cette fois, de nombreuses mises à niveau ont été apportées à la précédente liste déroulante simple à sélection unique :
En plus du contrôle de liste déroulante par défaut, la plateforme ajoute cette fois :

Le paramètre de type de chaîne cryptée est également spécial et n’a qu’un seul contrôle correspondant. Il s’agit du contrôle de zone de saisie cryptée par défaut.
Sur la plateforme, les contrôles de type chaîne cryptée sont généralement utilisés pour définir certaines informations sensibles, telles que les clés secrètes, les mots de passe, etc. Ces valeurs de paramètres d’entrée seront transmises après avoir été cryptées localement.
La valeur variable du paramètre d’interface est : chaîne.
Pour tous les types de paramètres d’interface de stratégie ci-dessus, cette mise à niveau intègre les fonctions précédentes de « regroupement de paramètres » et de « dépendance de paramètres » dans la « configuration des composants ». Il existe des paramètres « Groupement » et « Filtre » dans la configuration des composants de tous les paramètres d’interface.
Regroupement Vous pouvez saisir directement les étiquettes que vous souhaitez regrouper dans la liste déroulante du groupe et utiliser la touche Entrée pour confirmer la saisie du groupe. Le système enregistrera l’étiquette actuellement saisie dans les options de regroupement. Vous pouvez ensuite affecter des groupes aux paramètres d’interface actuels. Après le regroupement, sur l’interface de backtesting de stratégie/trading réel, les paramètres marqués comme groupe seront affichés dans une zone de regroupement.
Filtres Entrez quelques expressions dans le contrôle de filtre pour déterminer si le paramètre actuel doit être activé et affiché. Cette fonction permet d’afficher ou de masquer le paramètre actuel en fonction d’un certain réglage de paramètre. Exemples d’expressions de filtrage :
过滤器格式: a>b , a==1 , a , !a , a>=1&&a<=10 , a>b
Ici, a et b représentent tous deux des variables des paramètres de l’interface de stratégie.
Si les explications ci-dessus ne sont pas très intuitives, la meilleure façon de les comprendre est d’utiliser et de tester ces fonctions de paramètres :
Prenons comme exemple la politique linguistique de JavaScript :
function main() {
Log("---------------------------开始测试数字类型参数---------------------------")
Log("变量pNum1:", pNum1, ", 变量值类型:", typeof(pNum1))
Log("变量pNum2:", pNum2, ", 变量值类型:", typeof(pNum2))
Log("变量pNum3:", pNum3, ", 变量值类型:", typeof(pNum3))
Log("变量pNum4:", pNum4, ", 变量值类型:", typeof(pNum4))
Log("---------------------------开始测试布尔类型参数---------------------------")
Log("变量pBool1:", pBool1, ", 变量值类型:", typeof(pBool1))
Log("变量pBool2:", pBool2, ", 变量值类型:", typeof(pBool2))
Log("---------------------------开始测试字符串类型参数---------------------------")
Log("变量pStr1:", pStr1, ", 变量值类型:", typeof(pStr1))
Log("变量pStr2:", pStr2, ", 变量值类型:", typeof(pStr2))
Log("变量pStr3:", pStr3, ", 变量值类型:", typeof(pStr3))
Log("变量pStr4:", pStr4, ", 变量值类型:", typeof(pStr4))
Log("---------------------------开始测试下拉框类型参数---------------------------")
Log("变量pCombox1:", pCombox1, ", 变量值类型:", typeof(pCombox1))
Log("变量pCombox2:", pCombox2, ", 变量值类型:", typeof(pCombox2))
Log("变量pCombox3:", pCombox3, ", 变量值类型:", typeof(pCombox3))
Log("---------------------------开始测试加密串类型参数---------------------------")
Log("变量pSecretStr1:", pSecretStr1, ", 变量值类型:", typeof(pSecretStr1))
}

Stratégie complète de test des paramètres : https://www.fmz.com/strategy/455212
Il existe une conception de dépendance de paramètres cachée dans les paramètres ci-dessus. De nombreuses stratégies nécessitent d’activer une série de paramètres basés sur un certain paramètre, ce qui peut être réalisé avec des dépendances de paramètres comme celle-ci.
Il existe également cinq types de contrôles interactifs de stratégie dans la plateforme de trading quantitatif Inventor, et ces contrôles interactifs ont également été optimisés et mis à niveau cette fois. Ajout de « configuration des composants » pour simplifier la fonction de regroupement.

Les contrôles interactifs sont fondamentalement les mêmes que la « configuration des composants » des paramètres de l’interface de stratégie. En plus des contrôles de zone de saisie par défaut, les types de composants prennent également en charge :
L’utilisation est la même que celle des différents types de composants des paramètres d’interface de stratégie, elle ne sera donc pas répétée ici.

Les contrôles interactifs sont fondamentalement les mêmes que la « configuration des composants » des paramètres de l’interface de stratégie.

En plus du contrôle de zone de saisie par défaut, le type de composant prend également en charge :

La liste déroulante du contrôle interactif a également été mise à niveau : « prise en charge de plusieurs sélections », « valeurs par défaut personnalisées », liaison d’options à des données spécifiques, etc.
En plus du composant de liste déroulante par défaut, les éléments suivants sont ajoutés :

Un contrôle interactif de type bouton ne comporte aucun élément d’entrée. Lorsqu’elle est déclenchée, la commande interactive envoyée contient uniquement le nom du contrôle bouton.
La meilleure façon de le comprendre est de le tester manuellement. Une stratégie de test est également préparée ici.
Il convient de noter que les contrôles interactifs ne peuvent pas être testés dans le système de backtesting et que seuls des tests en temps réel peuvent être créés.
function main() {
var lastCmd = ""
while (true) {
var cmd = GetCommand() // 接收交互控件产生的消息
if (cmd) {
Log(cmd)
lastCmd = cmd
}
LogStatus(_D(), lastCmd)
Sleep(500)
}
}
Entrez des informations de manière aléatoire, définissez des options, puis cliquez sur le bouton de commande interactif pour générer des messages interactifs. La stratégie capture les messages et les imprime.


Stratégie de test de contrôle interactif terminée : https://www.fmz.com/strategy/455231



function main() {
Log("参数test1使用币种控件选择后,test1的值为:", test1)
Log("参数test2使用交易代码控件选择后,test2的值为:", test2)
}

参数test1使用币种控件选择后,test1的值为: BTC

参数test2使用交易代码控件选择后,test2的值为: ETH_USDT.next_quarter

function main() {
while (true) {
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(2000)
}
}

test1:SOL

test2:XRP_USDT.swap