Les ressources ont été chargées... Je charge...

30 lignes de code vous amènent dans le monde de l'investissement quantitatif.

Auteur:L'inventeur de la quantification - un petit rêve, Créé à partir de: 2016-04-06 10:17:26, mis à jour à partir de: 2020-01-13 15:17:11

Une stratégie de ligne moyenne extrêmement simplifiée de 30 lignes pour créer un système de revenus positifs

C'est vrai! C'est vrai que c'est 30 lignes de code! J'ai l'habitude de lire les articles en 30 lignes seulement pour en avoir une idée macro!

Les paramètres de stratégie sont les suivants:

Paramètres Décrire Le type Par défaut
Période rapide Cycle de mise sur le marché Numéros 3
Période lente Cycle de mise sur le marché Numéros 7
EntréePériode Période d'observation Numéros 3
Période de sortie Cycle de vente rapide Numéros 3
SortiePériode lente Cycle de démarrage lent Numéros 7
Période de sortie Période d'observation Numéros 1
Ratio de position Proportion de postes Numéros 0.8
L'intervalle Période de consultation ((secondes) Numéros 10

img

  • Importé交易类库Il est facile d'écrire des stratégies, sans avoir à se soucier de savoir si l'on doit acheter ou vendre.
  • Lorsque vous lisez le code et que vous trouvez une variable non déclarée, vous êtes perplexe.
function main() {
    var STATE_IDLE  = -1;
    var state = STATE_IDLE;
    var opAmount = 0;
    var initAccount = $.GetAccount();
    Log(initAccount);
    while (true) {
        if (state === STATE_IDLE) {
            var n = $.Cross(FastPeriod, SlowPeriod);
            if (Math.abs(n) >= EnterPeriod) {
                opAmount = parseFloat((initAccount.Stocks * PositionRatio).toFixed(3));
                var obj = n > 0 ? $.Buy(opAmount) : $.Sell(opAmount);
                if (obj) {
                    opAmount = obj.amount;
                    state = n > 0 ? PD_LONG : PD_SHORT;
                    Log("开仓详情", obj, "交叉周期", n);
                }
            }
        } else {
            var n = $.Cross(ExitFastPeriod, ExitSlowPeriod);
            if (Math.abs(n) >= ExitPeriod && ((state === PD_LONG && n < 0) || (state === PD_SHORT && n > 0))) {
                var obj = state === PD_LONG ? $.Sell(opAmount) : $.Buy(opAmount);
                state = STATE_IDLE;
                var nowAccount = $.GetAccount();
                LogProfit(nowAccount.Balance - initAccount.Balance, '钱:', nowAccount.Balance, '币:', nowAccount.Stocks, '平仓详情:', obj, "交叉周期", n);
            }
        }
        Sleep(Interval*1000);
    }
}
  • Cette stratégie n'utilise qu'une seule fonction principale main (), sans aucun autre module de fonction.
  • J'ai publié une annotation de code de cette stratégie sur le groupe QQ, et les étudiants débutants peuvent voir les annotations facilement.
  • Si vous n'êtes pas encore inscrit au groupe officiel de QQ, veuillez vous joindre à l'équipe: 309368835 Inventors Quantitative EA Exchange (BotVS) ; la stratégie est simple, quelques dizaines de lignes de code!
  • Pour les élèves qui n'ont pas de base en JavaScript, nous avons simplifié la grammaire afin que les élèves ne comprennent pas le code.

Déclaration des variables

Le mot clévar+ Nom de la variable, par exemplevar name = “小明”

Le cycle

while(循环条件){
    // 将会重复执行的代码
}

Les conditions de la boucle sont vraies si le code est exécuté à plusieurs reprises dans {}; les conditions de la boucle sont fausses si la boucle est sautée.

Conditions de département

if (判断条件){
    // 执行代码
} else {
    // 执行代码
}

C'est très simple, la traduction est si (true) {exécute ce code} ce qui signifie que {exécute ce code}

Les valeurs

Une=Le chiffre est une attribution, par exemple.

name = “张三”;

Il est facile de confondre l'attribution et l'équivalence. Pour comparer==Les deux équivalents, Exemples“张三”==“李四”C'est clair que le Tchang Tsu n'est pas Li Tsu.“张三”==“李四”Je suis désolée.

API associée

Avant d'écrire une démo de la stratégie, nous avons analysé les API et les fonctions d'exportation de modèles utilisées dans la stratégie, avec des informations détaillées sur la documentation de l'API et le code source du modèle dans la quantification des inventeurs.

  • Fonction $.GetAccount: Une fonction d'exportation de modèle utilisée pour obtenir des informations sur les comptes d'échange
  • Fonction de log: API pour exporter des informations vers les journaux, afficher des valeurs, etc.
  • Fonction $.Cross: une fonction d'exportation de modèle utilisée pour détecter l'intersection des indicateurs homogènes
  • Fonction $.Buy: fonction d'exportation de modèle utilisée pour acheter des opérations
  • Fonction $.Sell: fonction d'exportation de modèle utilisée pour vendre des opérations
  • Fonction LogProfit: API, pour l'exportation des gains, la fonction peut ajouter d'autres informations à partir du deuxième paramètre
  • La fonction de sommeil: API, qui permet à un programme de s'arrêter pendant un moment et dont l'unité de paramètre est une milliseconde.

Le code de stratégie utilise également des fonctions de bibliothèque et des méthodes d'objets de JavaScript.

  • La fonction math.abs ((): renvoie la valeur absolue de l'argument
  • La fonction toFixed (() de l'objet Number: conserve les nombres de base à quatre-cinq places par paramètre.
  • ParseFloat est une fonction globale qui permet de retourner le nombre de float.

Vous trouverez plus d'informations sur JavaScript ci-dessus à l'adresse suivante:http://www.w3school.com.cn/jsref/jsref_obj_number.aspApprendre

Le schéma du processus est peint à la main, sans outils, comme un amateur.

img

Nous avons mis en place notre stratégie étape par étape

Toutes les entrées de programmes stratégiques sont des entrées de processus.main()Une fonction, c'est-à-dire que la stratégie commence à fonctionner à partir de la fonction main.

img

img

img

img

img

Disque réel

La stratégie simple de 30 lignes est terminée! La stratégie Running! est en cours d'exécution, achetez l'opération.

img

Grâce à Inventor Quantitative, qui a fourni un code aussi léger, il y a beaucoup de stratégies open source sur Inventor Quantitative à apprendre et à améliorer avec de nombreux experts en quantification.

官方QQ群定期更新学习资源,为量化学习者铺平道路,登堂入室。

Vidéos d'accompagnement

http://v.youku.com/v_show/id_XMTUyNDY1NjQ2NA==.html

Les sources


Relationnée

Plus de

FMZ_JHLa fonction $.GetAccount dans l'API a-t-elle été mise à jour en exchange.GetAccount?

Ils ont été tués.Je comprends le code, mais je ne sais pas ce que cette stratégie fait exactement.

:)Merci, petit rêve, ton article est très bien écrit.

Je vous en prie.Le tutoriel du propriétaire est très bien écrit, merci!

le bincoinMerci à mon propriétaire, je vais bien étudier.

Les courts-circuits de Wang Won vendent des stratégies à prix élevéElle est morte il y a longtemps.

L'inventeur de la quantification - un petit rêve$.GetAccount est la fonction d'exportation du modèle FMZ (le modèle est du code réutilisable, voir la description du modèle dans la documentation de l'API). $.GetAccount est la fonction d'exportation du modèle: https://www.fmz.com/strategy/10989. Les stratégies ci-dessus ne sont qu'une partie du code, sans paramètres de stratégie, et les stratégies complètes peuvent être recherchées en ligne droite sur la place des stratégies.

Ils ont été tués.C'est ce qui s'est passé.

L'inventeur de la quantification - un petit rêveIl s'agit de deux lignes horizontales, les lignes rapides traversent généralement des signaux d'achat, avec une plus grande probabilité d'augmentation (opération d'achat automatique du programme); les lignes rapides traversent généralement des signaux de vente, avec une plus grande probabilité de baisse (opération de vente automatique du programme).

L'inventeur de la quantification - un petit rêveJe ne suis pas très gentil, je vais faire plus de matériel d'apprentissage plus tard, merci pour votre soutien!

L'inventeur de la quantification - un petit rêveNous vous invitons à continuer! Merci pour votre soutien.