Documents MyLanguage

Auteur:La bonté, Créé: 2018-12-14 17:33:09, Mis à jour: 2019-04-10 09:11:27

[TOC] Je vous en prie.

  • Description de base

    • Le contrat

      Contrats à terme sur matières premières, contrats de crypto-monnaie

      Contrats à terme sur matières premières/crypto-monnaie

      this_week   OKEX futures contract for current week
      next_week   OKEX futures contract for next week
      quarter     OKEX futures contract for quarter
      
      XBTUSD      BITMEX Perpetual Contract
      
      rb888       Rebar main contract
      MA000       Methanol Index Contract
      rb1901      Rebar contract
      …and so on.
      

      img

      Lorsque vous définissez le contrat, vous pouvez choisir rb1901/rb1905 Les données de marché sont rb1901, le contrat de négociation des ordres est rb1905

    • Variables

      Une variable est un espace ouvert dans la mémoire de l'ordinateur pour stocker des données.

      Déclarer la première variable

      // Assign 1 to the variable a
      a:=1;
      

      Dans M Language, une distinction simple est faite du volume de données:

      1. Données à valeur unique: une seule valeur, par exemple 0, 1, 'abc
      2. Données de séquence: Une séquence de données composée d'un seul ensemble de données à valeur unique, comme Close (prix de clôture), où Close contient le prix de clôture de n cycles [ 10.1, 10.2, 10.3, 10.4, 10.5... ]

      Distinguer de type de variable

      1. Type de chaîne: doit utiliser parcel, le type de chaîne n'est pas autorisé à être utilisé directement, vous devez faire correspondre la sortie de la fonction à la vue
      INFO(CLSOE>OPEN,'OK!');
      
      1. Type de valeur: y compris les entiers, les nombres à virgule flottante (decimal)
      // integer
      int:=2;
      
      // decimal
      float:=3.1;
      
      1. Type booléen, utilisant 1 (pour vrai) ou 0 (pour faux): 1, 0, vrai ou faux, par exemple: A:=1>0; après l'exécution de ce code, la valeur de A est de 1
      // The current period closing price is greater than -999, you will find that the return value of each cycle is 1, representing true, because the closing price is almost impossible to be negative
      Is_true:=Close>-999;
      
      1. Variable globale
      VARIABLE:VALUE1:10;     // Declare a global variable with a value of 10 and execute only once.
      
      • Règles de dénomination

        Dans la plupart des systèmes, la dénomination des variables ne permet pas l'utilisation de systèmes mots réservés (noms de variables intégrés, noms de fonctions), tels que le bien connu Close, C. En outre, les nombres purs ne sont pas autorisés, ou les nombres commencent par, et ne peuvent pas être trop longs, différents systèmes, et les différentes limites de longueur sont différentes. En fait, vous n'avez pas à vous embêter avec l'efficacité du système principal pour l'analyse de l'anglais. Je crois que M Language est très convivial pour les anglophones. Je vous recommande d'utiliser la convention de dénomination suivante:

        Anglais + souligné

        // output
        Move_avg_5:=MA(C,5);
        

        Si vous préférez l'anglais, s'il vous plaît, laissez les gens comprendre le sens de vos variables autant que possible. N'utilisez pas de méthodes de dénomination telles que: A1, AAA, BBB... Croyez-moi, après quelques jours, lorsque vous examinerez à nouveau votre code d'indicateur, vous serez très douloureux en raison du manque de mémoire. De même, lorsque vous exportez du code à d'autres, l'état d'esprit du lecteur doit être effondré.

        Alors, à partir de maintenant, embrassez M Language autant que vous le pouvez!

    • Type de données

      Le type de données est un concept de base. En programmation, lorsque nous assignons des données explicites à une variable, la variable devient le type des données elles-mêmes.

        1. Type de valeur:
        1、2、3、1.1234、2.23456 ……
        
        1. Type de chaîne (str):
        '1' 、'2' 、'3' ,string type must be wrapped with ''
        
        1. Données de séquence:
        a collection of data consisting of a series of single-valued data
        
        1. Type booléen (booléen):

        Utilisez 1 pour vrai et 0 pour faux

        Exemple

        // Declare a variable of a numeric type
        var_int := 1;
        // Declare a variable of sequence data
        var_arr := Close;
        // String type can not be declared separately, you need to combine functions
        INFO(C>O, 'rising line');
        
    • Opérateur

      L'opération et le calcul utilisés pour exécuter le code de l'indicateur, qui est le symbole de l'opération de participation.

      • Opérateur d'affectation

        Utilisé pour attribuer une valeur à une variable

          1. :

          un deux-points, représentant l'affectation et la sortie au diagramme (diagramme suppléant)

          Close1:Close;      // Assign Close to the variable Close1 and output it to the diagram
          
          1. :=

          Le point-virgule égal, représentant l'affectation, mais n'est pas produit dans le diagramme (diagramme principal, sous-graphe...) et n'est pas affiché dans la table de la barre d'état.

          Close2:=Close;     // Assign Close to the variable Close2
          
          1. ^^

          Les deux symboles représentent les affectations, attribuent des valeurs aux variables et les produisent dans le diagramme (diagramme principal).

          lastPrice^^C;
          
          1. ..

          Le symbole représente l'affectation, attribue une valeur à la variable et l'affiche dans la table de barre d'état, mais ne l'affiche pas au diagramme (diagramme principal, sous-diagramme...).

          openPrice..O
          
      • Opérateur relationnel

        Les opérateurs relationnels sont des opérateurs binoculaires utilisés dans les expressions conditionnelles.

        Retour de valeur: type booléen, non vrai (1), doit être faux (0)

          1. Plus grand que >
          // Assign the result of 2 > 1 to the rv1 variable, at this time rv1=1
          Rv1:=2>1;
          
          1. Moins de
          // returns false, which is 0, because 2 is greater than 1. :-)
          rv3:=2<1;
          
          1. Plus grand que ou égal à >=
          x:=Close;
          // Assign the result of the operation with a closing price greater than or equal to ¥ 10 to the variable rv2
          // Note that since “close” is a sequence of data, when the close>=10 operation is performed, the essence is that each cycle is performed, so each cycle will have a return value of 1, 0.
          rv2:=Close>=10;
          
          1. Plus ou moins <=
          Omitted here
          
          1. Il est égal à =
          A:=O=C;     // Determine if the opening price is equal to the closing price.
          
          1. Pas égal à <>
          1<>2       // Judgment weather 1 is equal to 2 or not, the return value is 1 (true)
          
      • Opérateurs logiques

        Return value: Boolean type, not true (1), must be false (0)
        
        1. La logique et &&, peuvent utiliser and à la place, et les côtés gauche et droit de la connexion doivent être vrais en même temps.
        // determine whether cond_a, cond_b, cond_c is true at the same time,
        cond_a:=2>1;
        cond_b:=4>3;
        cond_c:=6>5;
        cond_a && cond_b and cond_c;    // return value 1, true
        
        1. Dans la logique, on peut utiliser or à la place, or relier les côtés gauche et droit, tant que l'un des côtés est vrai, l'ensemble est vrai (retourner vrai)
        cond_a:=1>2;
        cond_b:=4>3;
        cond_c:=5>6;
        cond_a || cond_b or cond_c;    // return value 1, true
        
      • Opérateur arithmétique

        Return value: numeric type
        

        Il s'agit de l'achèvement du symbole des opérateurs arithmétiques de base, qui est le symbole utilisé pour traiter les quatre opérations arithmétiques.

        • Plus +

          A:=1+1;      // return 2
          
        • Soustraire -

          A:=2-1;      // return 1
          
        • Multipliez *

          A:=2*2;      // return 4
          
        • Divisez par /

          A:=4/2;      // return 2
          
    • Fonction

      • Fonction

        Dans le monde de la programmation, une fonction est en fait un morceau de code qui implémente une certaine fonction et peut être appelé par un autre code.

        function(param1,param2,……)
        
        • Composition:

          Le nom de la fonction (paramètre 1, paramètre 2,...), il peut y avoir aucun paramètre, il peut y avoir plusieurs paramètres, tels que MA ((x, n); représente une moyenne mobile simple du x interne renvoyant n cycles, où MA ((() est une fonction, x et n sont les paramètres de la fonction.

          Lors de l'utilisation d'une fonction, nous devons comprendre la définition de base de la fonction, c'est-à-dire quelles données peuvent être obtenues en appelant la fonction. En général, les fonctions ont des paramètres. Lorsque nous passons des paramètres, nous devons nous assurer que le type de données transmis est conforme. À l'heure actuelle, la fonction d'indication de code de la plupart des IDE est très imparfaite.

          Return a simple moving average
          usage:
          AVG:=MA(X,N): N's simple moving average of X, algorithm (X1+X2+X3+...+Xn)/N,N supports variables
          

          C'est une explication très hostile pour les débutants. Ensuite, nous analysons à fond la fonction et essayons de trouver un moyen d'apprendre et d'utiliser rapidement la fonction.

      • Valeur de retour

        Pour apprendre la fonction rapidement, nous devons d'abord comprendre un concept appelé value de retour.

        // Because it will be used in the following code, use the variable return_value to receive and save the return value of function()
        // retrun_value := function(param1,param2);
        // for example:
        AVG:=MA(C,10); // AVG is retrun_value , “function” function is: MA function, param1 parameter: C is the closing price sequence data, param2 parameter: 10.
        
      • Paramètre

        Deuxièmement, le deuxième concept important de la fonction est le paramètre, en passant dans différents paramètres, vous pouvez obtenir différentes valeurs de retour.

        // variable ma5 receives 5 day closing price moving average
        ma5:=MA(C,5);
        // variable ma10 receives 10 day closing price moving average
        ma10:=MA(C,10);
        

        Le premier paramètre X des variables ci-dessus ma5, ma10 est C (prix de clôture), en fait C est aussi une fonction (retour de la séquence de prix de clôture depuis l'ouverture), mais il n'a pas de paramètres.

      • Comment apprendre

          1. Tout d'abord, vous devez comprendre la fonction de la fonction, qui est ce que les données que cette fonction peut nous donner.
          1. Comprendre le type de la valeur de retour, après tout, nous utilisons la fonction afin d'obtenir la valeur de retour.
          1. Nous devons comprendre le type de données du paramètre, MA (x, n), si vous ne connaissez pas le type de données des paramètres x, n, vous ne pouvez pas obtenir la valeur de retour correctement.

        Dans l'introduction de la fonction suivante, utilisez, suivez les trois principes ci-dessus.

    • Amélioration de la langue

      • La programmation mixte entre le langage M et le langage JavaScript

        %%
        // here you can call any API function of FMZ Quant.
        scope.TEST = function(obj) {
            return obj.val * 100;
        }
        %% 
        

      Prix de clôture: C; Le prix de clôture est multiplié par 100: TEST©; Le prix de clôture précédent est magnifié 100 fois: TEST(REF(C, 1)); // La souris se déplace vers la ligne backtest K et la valeur de la variable est affichée.

      
      - scope object
      
        scope object, you can add attributes and assign anonymous functions to attributes. An anonymous function referenced by this attributes can be called in the M language code section.
      
      - scope.getRefs(obj) function
      
        In the JavaScript code block, call the scope.getRefs(obj) function, which returns the data of the incoming obj object.
      
       The following %%%% of the symbolic package's JavaScript code will get the incoming C closing price when the TEST(C) function is called in the M language code.
        The scope.getRefs function returns all closing prices for this K-line data. Since the throw "stop" interrupt routine is used, the variable “arr” contains only the closing price of the first Bar of k-line. You can try to delete throw "stop" and it will execute the last return of the JavaScript code, returning all the closing price data.
        ```
        %%
        scope.TEST = function(obj){
            var arr = scope.getRefs(obj)
            Log("arr:", arr)
            throw "stop"
            return
        }
        %%
        TEST(C);
        ```
      
      - scope.bars
      
        In the JavaScript code block, access all K line bars.
      
        The TEST function returns a value, 1 is the falling k-line and 0 is the rising line.
        
        ```
        %%
        scope.TEST = function(){
            var bars = scope.bars
            return bars[bars.length - 1].Open > bars[bars.length - 1].Close ? 1 : 0    // can only return values
        }
        %%
        arr:TEST;                                                                      
        ```
      
        ```
        # Note:
        # TEST Received anonymous function, the return value must be a numeric value
        # If the anonymous function has no parameters, write VAR:=TEST directly when calling TEST; write VAR:=TEST(); will report an error.
        # TEST in #scope.TEST must be uppercase.
        ```
      
      - scope.bar
      
        In the JavaScript code block, access the current bar.
      
        Calculate the average of “opening high but closing low” of k-line’s prices.
      
        ```
        %%
        scope.TEST = function(){
            var bar = scope.bar
            var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4
            return ret
        }
        %%
        avg^^TEST;
        ```
      
      - scope.depth
      
        Access the market depth data (order book)
      
        ```
        %%
        scope.TEST = function(){
            Log(scope.depth)
            throw "stop"             // Throw an exception after printing the depth data, pause.
        }
        %%
        TEST;
        ```
      
      - scope.symbol
      
        Get the current trading pair name string
      
        ```
        %%
        scope.TEST = function(){
            Log(scope.symbol)
            throw "stop"
        }
        %%
        TEST;
        ```
      
      - scope.barPos
      
        Get the K line Bar location.
      
        ```
        %%
        scope.TEST = function(){
            Log(scope.barPos)
            throw "stop"
        }
        %%
        TEST;
        ```
      
      - scope.get\_locals('name')
      
        This function is used to get the variables in the M language code part
      
        ```
        V:10;
        %%
        scope.TEST = function(obj){
            return scope.get_locals('V')
        }
        %%
        GET_V:TEST(C);
        ```
      
        ```
        # Note:
        # If a variable does not calculate data when the period is insufficient, this time the scope.get_locals function is called in the JavaScript code.
        # When get this variable, it will give an error: line:XX - undefined locals a variable name undefined
        ```
      
      
    • Référence multicycle

      • Utilisez: #EXPORT Nom de formule... #END pour créer une formule. Si vous souhaitez uniquement obtenir des données pour différentes périodes, vous pouvez également écrire une formule vide sans calcul de formule.

        La formule vide est:

        #EXPORT TEST 
        NOP;
        #END           // End
        
      • Utilisation: #IMPORT [MIN, période, nom de la formule] VALEUR de variable AS, formule de référence, obtenir les données de la période définie (prix de clôture, prix d'ouverture, etc., obtenus par valeur de variable).

        Exemple de code:

        // this code demonstrates how to reference formulas of different cycles in the same code
        // #EXPORT extends the syntax, ending with #END as a formula, you can declare multiple
        #EXPORT TEST 
        Mean 1:EMA(C, 20);
        Mean 2:EMA(C, 10);
        #END // End
        
        #IMPORT [MIN,15,TEST] AS VAR15 // Reference formula, K line cycle is 15 minutes
        #IMPORT [MIN,30,TEST] AS VAR30 // Reference formula, K line cycle is 30 minutes
        CROSSUP(VAR15.Mean1, VAR30.Mean1),BPK;
        CROSSDOWN(VAR15.Mean2, VAR30.Mean2),SPK;
        The highest price of 15 mins:VAR15.HIGH;
        The highest price of 30 mins:VAR30.HIGH;
        AUTOFILTER;
        
    • Description du mode

      • Modèle de filtrage du signal pour une position d'ouverture et une position de fermeture

        Dans le modèle, en écrivant la fonction AUTOFILTER pour contrôler et réaliser le filtrage du signal d'une ouverture et d'une fermeture.

        Modèle de filtrage commandes prises en charge: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, ne prend pas en charge BK (5) et autres instructions avec lots

        E.g:

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(C,MA1),BK;
        CROSSUP(MA1,MA2),BK;
        C>BKPRICE+10||C<BKPRICE-5,SP;
        AUTOFILTER;
        
      • Modèle d'addition ou de soustraction de position

        La fonction AUTOFILTER n'est pas écrite dans le modèle, ce qui permet un signal de position d'ouverture continue ou un signal de position de fermeture continue, qui peut être utilisé pour augmenter ou diminuer la position.

        Les commandes prises en charge: BK(N), BP(N), SK(N), SP(N), CLOSEOUT, BPK(N), SPK(N, ne prennent pas en charge les positions ouvertes et fermées sans lot. (1)Régroupement des instructions de soutien. (2) Lorsque plusieurs conditions d'instruction sont remplies en même temps, les signaux sont exécutés dans l'ordre dans lequel les instructions conditionnelles sont écrites. Par exemple:

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(C,MA1),BK(1);
        CROSSUP(MA1,MA2),BK(1);
        C>BKPRICE+10||C<BKPRICE-5,SP(BKVOL);
        
      • 3、une ligne K avec un modèle de signal

        Une ligne K avec un modèle de signal peut être subdivisée en un modèle de prix de clôture et un modèle de prix d'instruction.

        1)Modèle de prix de clôture

        La ligne K traverse le signal de calcul pour passer une commande (le calcul est également effectué lors de la formation d'une ligne K. À ce moment, le signal sera incertain et le signal qui apparaît lorsque la ligne k n'est pas terminée sera ignoré et aucune commande ne sera passée)

        La direction du signal est cohérente avec la direction de la position d'attente et il n'y a pas de condition de disparition du signal.

        E.g:
        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BPK;//5 cycle moving average line up cross 10 cycle moving average line to buy long.
        CROSSDOWN(MA1,MA2),SPK;//5 cycle moving average line down cross 10 cycle moving average line to sell short.
        AUTOFILTER;
        

        2)Modèle de prix d'instruction

        indépendamment du fait que la ligne K soit terminée ou non, le signal est calculé et la commande est passée en temps réel, c'est-à-dire la commande est passée avant la fin de la ligne K;

        Si la direction de la position ne correspond pas à la direction du signal à la fin de la ligne k, la position sera automatiquement synchronisée.

        E.g:

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BPK;//5 cycle moving average line up cross 10 cycle moving average line to buy long.
        CROSSDOWN(MA1,MA2),SPK;//5 cycle moving average line down cross 10 cycle moving average line to sell short.
        AUTOFILTER;
        
      • 4、Une ligne K avec modèle de signal multiple

        Le modèle utilise un multsig ou multsig_min pour contrôler et mettre en œuvre plusieurs signaux à partir d'une seule ligne K.

        Indépendamment du fait que la ligne k soit terminée, calculez le signal et passez une commande en temps réel.

        Le signal ne sera pas revu, il n'y a pas de condition de disparition du signal et la direction du signal est conforme à la direction de la position.

        Exécution multiple répétée dans une ligne K si plusieurs conditions de signal sont remplies

        E.g:
        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BK;
        C>BKPRICE+10||C<BKPRICE-5,SP;
        AUTOFILTER;
        MULTSIG(0,0,2,0);
        

        complément: 1, Modèle de position d'addition et de soustraction, deux méthodes d'un signal k-line: l'ordre de placement de prix de clôture et l'ordre de placement de prix d'instruction sont toutes prises en charge.

        2、Le modèle de position d'addition et de soustraction prend également en charge un seul signal k-line pour passer des ordres.

        Ajout et soustraction modèle de position, écrire la fonction multsig ou multsig_min, réaliser plusieurs fois l'addition et la soustraction de la position sur une ligne k, ou réduire la position plusieurs fois.

    • Affichage du graphique

      • Indicateur supplémentaire du schéma principal

        Utilisez l'opérateur ^^ pour définir l'indicateur à afficher sur l'image principale tout en assignant des valeurs à la variable.

        MA60^^MA(C, 60);  // Calculate the moving average indicator with a parameter of 60
        

        img

      • Indicateur supplémentaire sous-diagramme

        Utilisez l'opérateur : pour définir l'indicateur à afficher sur le diagramme secondaire tout en assignant des valeurs à la variable.

        ATR:MA(MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26);    // Assign a value to the ATR variable, The ":" symbol is followed by the formula for calculating the ATR
        

        Si vous ne voulez pas afficher sur le principal ou sous-diagramme Utilisez l'opérateur ...

        MA60..MA(C, 60);  // Calculate the moving average indicator with a parameter of 60
        

        Vous pouvez utiliser DOT et COLORRED pour définir le type de ligne, la couleur, etc. en fonction des habitudes des utilisateurs qui connaissent le langage M.

    • Problème commun

      Introduire les problèmes fréquemment rencontrés dans la préparation des indicateurs, généralement les points qui nécessitent une attention lors de l'écriture des indicateurs. (Poursuite)

      • Faites attention à la fin de ;.

      • Notez que les mots clés système ne peuvent pas être déclarés comme variables.

      • Notez que la chaîne utilise des guillemets simples, par exemple: ouverture une seule citation.

      • Commentaire

        Nom de l'entreprise

        • // The content of the comment(la méthode d'entrée peut être tapée en anglais et en chinois), ce qui signifie que le code n'est pas compilé pendant le processus d'exécution, c'est-à-dire qu'il n'exécute pas // le contenu derrière.

        • { Comment content }Bloquez les commentaires.

          A:=MA(C,10);
          {The previous line of code is the calculation of the moving average.}
          
        • (* Comment content *)Bloquez les commentaires.

          A:=MA(C,10);
          (*The previous line of code is the calculation of the moving average.*)
          
      • Méthode d'entrée

        Lors de l'écriture de code, il provoque souvent une erreur de symbole parce que la méthode d'entrée bascule entre le chinois et l'anglais.

      • Logique sujette aux erreurs

        1. Pas moins de: Opérateur relationnel correspondant>=
        2. Au plus au plus: opérateur relationnel correspondant<=
  • Référence de données de ligne K

    • Ouvre

      Obtenez le prix d'ouverture du graphique de la ligne K.

      Prix d'ouverture

      Fonction:OUVERT, abrégé en O

      Paramètres: Aucun

      Explanation: Retourner le prix d'ouverture du cycle

      Données de séquence

      OPEN obtained the opening price of the K-line chart.
      
      Note:
      1、can be shorthand as O.
      
      example 1:
      OO:=O;           //Define OO as the opening price; pay attention to the difference between O and 0.
      example 2:
      NN:=BARSLAST(DATE<>REF(DATE,1));
      OO:=REF(O,NN);   //Get the opening price of the day
      example 3:
      MA5:=MA(O,5);    //Define the 5-period moving average of the opening price (O is OPEN shorthand).
      
    • - Très haut.

      Obtenez le prix le plus élevé du graphique de la ligne K

      Prix le plus élevé

      Fonction:HIGH, abrégé en H

      Paramètres: Aucun

      Explication: retourner le prix le plus élevé du cycle

      Données de séquence

      HIGH Get the highest price of the K-line chart.
      
      Note:
      1、can be shorthand as H.
      
      example 1:
      HH:=H;         //Define HH as the highest price.
      example 2:
      HH:=HHV(H,5);  //Take the maximum value of the highest price within 5 cycles.
      example 3:
      REF(H,1);      //Take the highest price of the previous K line
      
    • Faible

      Obtenez le prix le plus bas du graphique de ligne K.

      Le prix le plus bas

      Fonction: LOW, abrégé en L

      Paramètres: Aucun

      Explanation: Retourner le prix le plus bas du cycle.

      Données de séquence

      LOW gets the lowest price of the K-line chart.
      
      Note:
      1、can be shorthand as L.
      
      example 1:
      LL:=L;            //Define LL as the lowest price.
      example 2:
      LL:=LLV(L,5);     //Get the minimum value of the lowest price in 5 cycles.
      example 3:
      REF(L,1);         //Get the lowest price of the previous K line
      
    • À proximité

      Obtenez le prix de clôture du graphique de la ligne K.

      Prix de clôture

      Fonction: CLOSE, abrégé en C

      Paramètres: Aucun

      Explanation: Retourner le prix de clôture du cycle

      Données de séquence

      CLOSE Get the closing price of the K-line chart.
      
      Note:
      1、When the k-line in the market is not finished, get the latest price.
      2、Can be shorthand as C.
      
      example 1:
      A:=CLOSE;          //Define the variable A as the closing price (A is the latest price when the k line is not finished).
      example 2:
      MA5:=MA(C,5);      //Define the 5-period moving average of the closing price (C is short for CLOSE).
      example 3:
      A:=REF(C,1);       //Get the closing price of the previous k line.
      
    • VOL

      Obtenez le volume du graphique de ligne K

      Volume des échanges

      Fonction:VOL, abrégé en V

      Paramètres: Aucun

      Explanation: Retournez le volume de ce cycle.

      Données de séquence

      VOL gets the volume of the K-line chart.
      
      Note:
      Can be shorthand as V.
      The return value of this function on the root TICK is the cumulative value of all TICK transactions for the day.
      
      example 1:
      VV:=V;       //Define VV as volume
      example 2:
      REF(V,1);    //indicates the volume of the previous cycle
      example 3:
      V>=REF(V,1); //The volume is greater than the volume of the previous cycle, indicating that the volume increases (V is short for VOL).
      
    • REF

      Références antérieures

      Reference the value of X before N cycles.
      
      Note:
      1、When N is a valid value, but the current number of k lines is less than N, a null value is returned;
      2、When N is 0, the current X value is returned;
      3、When N is null, it returns a null value.
      4、N can be a variable
      
      example 1:
      REF(CLOSE,5); indicates the closing price of the 5th cycle before the current cycle
      example 2:
      AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C);//Take the closing price of the K line of latest buying long of the open position signal
      //1) When the k-line BARSBK of the BK signal returns a null value, the k-line REF(C, BARSBK) of the BK signal is returned.
      Null value;
      //2)When the BK signal is sent, the k-line BARSBK returns a null value, and if the BARSBK>=1 is not satisfied, then send the closing price of the k-line.
      //3)The k-line BARSBK after the BK signal is sent returns the number of cycles of the K-line of the open position from the current K-line, REF(C, BARSBK)
      Returns the closing price of the opening k line.
      //4)Example: 1, 2, 3 three k lines, 1 K line is the opening position signal K line, then return the closing price of this k line, 2, 3
      K line returns the closing price of the 1 K line.
      
    • Unité

      Prenons l'unité de transaction du contrat de données

      Take the trading unit of the data contract.
      usage:
      UNIT takes the trading unit of the data loading contract.
      

      Avenir des produits de base

      La valeur UNIT est liée au contrat

      rb contract - 1 hand, 10 (tons)
      

      Spots de crypto-monnaie

      Valeur UNIT est 1

      Futures sur crypto-monnaie La valeur en UNIT est liée à la monnaie du contrat

      OKEX Futures: 1 BTC contract represents $100, and 1 contract in other currencies represents $10
      
    • Le prix

      Variation minimale du prix pour les contrats de données

      Take the minimum price change of the data contract.
      usage:
      MINPRICE; Take the minimum price change for loading data contracts.
      
    • Le prix de l'appareil

      Modification minimale du contrat de négociation

      Take the minimum price change of the trading contract.
      usage:
      MINPRICE1; Take the minimum price change of the trading contract.
      
  • Fonction du temps

    • Le BARPOS

      Take the position of the K line
      
      BARPOS,returns the number of cycles from the first K line to the current cycle.
      
      Note:
      1、BARPOS returns the number of existing K lines in the local area, starting from the data existing on the local machine.
      2、The return value of the first K line already on the local machine is 1.
      
      example 1:LLV(L,BARPOS);//Find the minimum value of the local existing data.
      
      example 2:IFELSE(BARPOS=1,H,0);//The current K line is the highest value of the first K line already in the local machine, otherwise it is 0.
      
    • Période

      La valeur de la période est le nombre de minutes.

      1, 3, 5, 15, 30, 60, 1440
      
    • Date de mise en service

      Date de mise en service

      Fonction:DATE

      Paramètres: Aucun

      Explanation : Obtenir la date du cycle à partir de 1900

      Données de séquence

    • Temps

      Prenez le temps de la ligne K.

      TIME,take the K line time.
      
      Note:
      1、The function returns in real time on the real-market, and returns the start time of the K line after the K line is finished.
      2、The function returns the exchange data reception time, which is the exchange time.
      3、The TIME function returns a six-digit form when used in the second period, ie: HHMMSS, which is displayed in four-digit form on other periods, namely: HHMM.
      4、The TIME function can only be loaded in the period below the daily period. The return value of the function is always 1500 in the period above the daily period (Included the daily period).
      5、use the TIME function to close the position of the tail operation needs attention
      (1) The time set by the end of the closing position is recommended to be set to the actual time that can be taken in the K line return value (eg, the RB index is 5 minutes, the last K line return time is 1455, and the tail closing position is set to TIME> =1458, CLOSEOUT; the signal that the tail is closed can not appear in the effect test)
      (2)	Using the TIME function as the condition for closing the position at the end of the market, it is recommended to open position condition also to make the corresponding time limit (such as setting the closing condition of the tail to TIME>=1458, CLOSEOUT; then the corresponding opening conditions are required Add condition TIME<1458; avoid opening the position again after closing the position)
      
      example 1:
      C>O&&TIME<1450,BK;
      C<O&&TIME<1450,SK;
      TIME>=1450,SP;
      TIME>=1450,BP;
      AUTOFILTER;
      //Close the position after 14:50.
      example 2:
      ISLASTSK=0&&C>O&&TIME>=0915,SK;
      
    • L'année

      Années

      YEAR,the year is obtained.
      
      Note:
      YEAR ranges from 1970—2033。
      
      example 1:
      N:=BARSLAST(YEAR<>REF(YEAR,1))+1;
      HH:=REF(HHV(H,N),N);
      LL:=REF(LLV(L,N),N);
      OO:=REF(VALUEWHEN(N=1,O),N);
      CC:=REF(C,N);//take the highest price, the lowest price, the opening price, and the closing price of the previous year.
      example 2:
      NN:=IFELSE(YEAR>=2000 AND MONTH>=1,0,1);
      
    • Le mois

      Renvoie le mois d'un cycle

      MONTH, returns the month of a cycle.
      
      Note:
      MONTH has a value range of 1-12.
      
      example 1:
      VALUEWHEN(MONTH=3&&DAY=1,C);//The closing price is taken when the K-line date is March 1.
      example 2:
      C>=VALUEWHEN(MONTH<REF(MONTH,1),O),SP;
      
    • Journée

      Obtenez le nombre de jours dans un cycle

      DAY, returns the number of days in a cycle.
      
      Note:
      The DAY value ranges from 1-31.
      
      example 1:
      DAY=3&&TIME=0915,BK;//From the date of 3 days, the time is 9:15, buy long.
      example 2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;
      CC:=IFELSE(DAY=1,VALUEWHEN(N=1,O),0);//When the date is 1, the opening price is taken, otherwise the value is 0.
      
    • Temps de travail

      Temps de travail

      HOUR,Returns the number of hours in a cycle.
      
      Note:
      HOUR ranges from 0 to 23
      
      example 1:
      NX:=BARSLAST(CROSS(HOUR=9,0.5));
      DRAWLINE3(CROSSDOWN(HOUR=14,0.5),REF(H,NX),NX,CROSSDOWN(HOUR=14,0.5),REF(H,1),1,0),COLORGREEN;
      //Connect 9:00 to the latest k-line high point before the market close.
      example 2:
      HOUR=10;//The return value is 1 on the K line at 10:00, and the return value on the remaining K lines is 0.
      
    • Une minute

      Une minute

      MINUTE, Returns the number of minutes in a cycle.
      
      Note:
      1:MINUTE has a value range of 0-59
      2:This function can only be loaded on the minute period, returning the number of minutes since the current K line.
      example 1:
      MINUTE=0;//The return value on the minute K line at the beginning of an hour is 1, and the remaining K lines return a value of 0.
      example 2:
      TIME>1400&&MINUTE=50,SP;//close position at 14:50.
      
    • Jour de la semaine

      Obtenez le nombre de semaines

      WEEKDAY, get the number of weeks.
      
      Note:
      1:WEEKDAY has a value range of 0-6.
      2:The value displayed by the function on the weekly cycle is always 5, and the number of weeks on the day of the end of the K line is returned on the monthly cycle.
      
      example 1:
      N:=BARSLAST(MONTH<>REF(MONTH,1))+1;
      COUNT(WEEKDAY=5,N)=3&&TIME>=1450,BP;
      COUNT(WEEKDAY=5,N)=3&&TIME>=1450,SP;
      AUTOFILTER;//each month delivery date is automatically closed all position at the end of that day.
      example 2:
      C>VALUEWHEN(WEEKDAY<REF(WEEKDAY,1),O)+10,BK;
      AUTOFILTER;
      
  • Fonction de jugement logique

    • Les produits

      Renvoie le statut de position du cycle en cours

      BARSTATUS returns the position status of the current cycle.
      
      Note:
      The function returns 1 to indicate that the current cycle is the first cycle, return 2 to indicate the last cycle, and return 0 to indicate that the current cycle is in the middle position.
      
      example:
      A:=IFELSE(BARSTATUS=1,H,0); //If the current K line is the first cycle, the variable A returns the highest value of the K line, otherwise it takes 0.
      
    • Entre les deux

      Entre les deux

      BETWEEN(X,Y,Z) indicates whether X is between Y and Z, and returns 1 (Yes), otherwise returns 0 (No).
      
      Note:
      1、If X=Y, X=Z, or X=Y and Y=Z, the function returns a value of 1 (Yse).
      
      example 1:
      BETWEEN(CLOSE,MA5,MA10); //indicates that the closing price is between the 5-day moving average and the 10-day moving average.
      
    • Les produits

      Fonction croisée

      CROSS(A,B) means that A passes B from the bottom to up, and returns 1 (Yes), otherwise it returns 0 (No).
      
      Note:
      1、The conditions for crossing must satisfy A<=B of pervious k line, and it is confirmed as crossing when the current k-line satisfies A>B.
      
      example 1:
      CROSS(CLOSE,MA(CLOSE,5)); //means the crossing line from below through the 5-period moving average
      
    • En bas de page

      En descendant

      CROSSDOWN(A,B):indicates that when A down crossing B from above, it returns 1 (Yes), otherwise it returns 0 (No).
      
      Note:
      1、CROSSDOWN (A, B) is equivalent to CROSS (B, A), CROSSDOWN (A, B) is written to better understand
      
      example 1:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      CROSSDOWN(MA5,MA10),SK; //MA5 down cross MA10, sell short
      //CROSSDOWN(MA5,MA10),SK; and CROSSDOWN(MA5,MA10)=1, SK; express the same meaning
      
    • Le CROSSUP

      On traverse.

      CROSSUP(A,B) When A passes up from bottom to B, it returns 1 (Yes), otherwise it returns 0 (No)
      
      Note:
      1、CROSSUP (A, B) is equivalent to CROSS (A, B), CROSSUP (A, B) is written to better understand.
      
      example 1:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      CROSSUP(MA5,MA10),BK;//MA5 cross up MA10, buy long.
      //CROSSUP(MA5,MA10),BK; and CROSSUP(MA5,MA10)=1, BK; express the same meaning
      
    • Tout le monde

      Déterminer si elle continue de satisfaire à l'exigence

      EVERY(COND,N),judge whether the COND condition is always satisfied in the N period. If it is, the function returns a value of 1; if it is not, the function returns a value of 0;
      
      Note:
      1、N contains the current k line.
      2、If N is a valid value, but there are not many K lines in front of it, or N is a null value, the condition is not satisfied, and the function returns 0.
      3、N can be a variable
      
      example 1:
      EVERY(CLOSE>OPEN,5);//indicates that it has been a positive line for 5 cycles.
      example 2:
      MA5:=MA(C,5);//Define a 5-cycle moving average
      MA10:=MA(C,10);//Define the 10-cycle moving average
      EVERY(MA5>MA10,4),BK;//MA5 is greater than MA10 in 4 cycles, then buy long.
      //EVERY(MA5>MA10,4),BK; and EVERY(MA5>MA10,4)=1, BK; express the same meaning
      
    • Il existe

      Déterminez s'il y a satisfaction

      EXIST(COND,N) determines whether there are conditions for satisfying COND in N cycles
      
      Note:
      1、N contains the current k line.
      2、N can be a variable.
      3、If N is a valid value, but there are not many K lines in front of it, calculate according to the actual number of cycles.
      
      example 1:
      EXIST(CLOSE>REF(HIGH,1),10);indicates whether there is a maximum price in the 10 cycles that is greater than the previous period, if it exist, return 1, and if it does not exist, returns 0.
      example 2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;
      EXIST(C>MA(C,5),N);//Indicates whether there is a k line that meets the closing price greater than the 5-period moving average. If it exist, return 1, and if it does not exist, return 0.
      
    • Si

      Fonction conditionnelle

      IF(COND,A,B) Returns A if the COND condition is true, otherwise returns B
      
      Note:
      1、COND is a judgment condition; A and B can be conditions or numerical values.
      2、the function supports the variable loop to reference the previous period of its own variable, that is, support the following writing method Y: IF (CON, X, REF (Y, 1));
      example 1:
      IF(ISUP,H,L);// k line is the rising line, take the highest price, otherwise take the lowest price
      example 2:
      A:=IF(MA5>MA10,CROSS(DIFF,DEA),IF(CROSS(D,K),2,0));//When MA5>MA10, take whether DIFF is cross up the DEA, otherwise (MA5 Not greater than MA10), when K, D is down crossing, let A be assigned a value of 2. If the above conditions are not met, A is assigned a value of 0.
      A=1,BPK;//When MA5>MA10, use DIFF cross up DEA as the buying long condition
      A=2,SPK;//When MA5 is not greater than MA10, K D down crossing are used as selling short conditions
      
    • Les États membres

      Fonction conditionnelle

      IFELSE(COND,A,B) Returns A if the COND condition is true, otherwise returns B
      
      Note:
      1、COND is a judgment condition; A and B can be conditions or numerical values.
      2、the function supports the variable loop to refer to the previous period of its own variable, that is, supports the following writing method Y: IFELSE (CON, X, REF (Y, 1));
      example 1:
      IFELSE(ISUP,H,L);//k line is the rising line, take the highest price, otherwise take the lowest price
      example 2:
      A:=IFELSE(MA5>MA10,CROSS(DIFF,DEA),IFELSE(CROSS(D,K),2,0)); //When MA5>MA10, whether DIFF up cross DEA, otherwise (MA5 Not greater than MA10), when K, D down cross, let A be assigned a value of 2. If the above conditions are not met, A is assigned a value of 0.
      A=1,BPK;//When MA5>MA10, use DIFF up cross DEA as the buying long condition
      A=2,SPK;//When MA5 is not greater than MA10, K, D down cross are used as selling short conditions
      
    • Contrat de travail

      temps le contrat en cours un contrat désigné

      weather ISCONTRACT(CODE) is currently the specified contract.
      
      Usage:ISCONTRACT(CODE); is the current contract returns 1, not the current contract returns 0.
      
      Note:
      1、When judging whether it is a specified contract, CODE can be the transaction code of the contract.
      
      example:
      ISCONTRACT('MA888');
      ISCONTRACT('rb1901');
      ISCONTRACT('this_week');    // cryptocurrency OKEX Futures Contract
      ISCONTRACT('XBTUSD');       // cryptocurrency BITMEX Futures Contract
      

      Prise en charge des expressions régulières

      Déterminer le contrat

      ISCONTRACT('this_week');                     // Determine if the current contract is OKEX futures this_week (week) contract
      

      Juge du nom de l'échange

      ISCONTRACT('@Futures_(CTP|BitMEX)');         // Determine whether the current exchange object is a commodity futures or a cryptocurrency BITMEX futures exchange
      ISCONTRACT('@(OKEX|Bitfinex|Futures_CTP)');  // To determine the exchange, you need to add @ character at the beginning
      
    • En bas

      La ligne K en chute

      ISDOWN determines whether the cycle is falling
      
      Note:
      1、ISDOWN is equivalent to C<O
      
      example:
      ISDOWN=1&&C<REF(C,1),SK;//When the current k line is finished and the closing price is lower than the closing price of the previous period, then selling short
      //ISDOWN=1&&C<REF(C,1),SK; is equivalent to ISDOWN&&C<REF(C,1),SK;
      
    • Le montant de la taxe

      Le prix d'ouverture égal au prix de clôture

      ISEQUAL determines if the cycle is "The opening price equal to closing price"
      
      Note:
      1、ISEQUAL is equivalent to C=O
      
      example 1:
      EVERY(ISEQUAL=1,2),CLOSEOUT; //continue for 2 k lines are “The opening price equal to closing price
      

, puis fermez toutes les positions.

```
  • Le dernier bar

    Déterminer si le cycle est la dernière ligne K

    ISLASTBAR determines if the cycle is the last k line
    
    example 1:
    VALUEWHEN(ISLASTBAR=1,REF(H,1));//The current k-line is the last k-line, taking the highest price of the previous cycle.
    
  • Nullement

    Déterminez nul

    ISNULL determine whether it is null or not
    
    Usage:ISNULL(N);if N is null, the function returns 1; if N is non-null, the function returns 0.
    
    Example: MA5:=IFELSE(ISNULL(MA(C,5))=1, C,MA(C,5));//Define a five-period moving average. When the number of K-lines is less than five, return the current K-line closing price.
    
  • Le montant de la subvention

    Ligne ascendante

    ISUP determines whether the cycle is rising
    
    Note:
    1、ISUP is equivalent to C>O
    
    example:
    ISUP=1&&C>REF(C,1),BK;   //If the current k line is a rising k line and the closing price is greater than the closing price of the previous period, then buying long.
                             //ISUP=1&&C>REF(C,1),BK; and ISUP&&C>REF(C,1),BK;
                             //Express the same meaning
    
  • Dernière

    Déterminer la fonction

    LAST(COND,N1,N2) Determines whether the COND condition has been met for the past N1 to N2 cycles.
    
    Note:
    1、If N1 and N2 differ by only one cycle (eg, N1=3, N2=2), the function judges whether the condition is satisfied on the cycle closest to the current K line (ie, whether the K line in the past N2 cycles is meeting the conditions)
    2、When N1/N2 is a valid value, but the current k-line number is less than N1/N2, or N1/N2 null, means is not true, and the function returns 0.
    3、N1 and N2 cannot be variables.
    
    example 1:
    LAST(CLOSE>OPEN,10,5); // indicates that it has been a rising line from the 10th cycle to the 5th cycle in the past.
    example 2:
    MA5:=MA(C,5);
    LAST(C>MA5,4,3);//determine whether the K line from the current k-line 3 cycles satisfies “C greater than MA5”.
    
  • Les espèces d'espèce

    Maintenir la fonction croisée

    LONGCROSS(A,B,N) indicates that A is less than B in N cycles, and this cycle A up cross B from bottom to top.
    
    Note:
    1、When N is a valid value, but the current k-line number is less than N, the LONGCROSS function returns a null value.
    2、N does not support variables.
    
    example 1:
    LONGCROSS(CLOSE,MA(CLOSE,10),20); //indicates that the closing price continues below the 10-day moving average for 20 cycles and then up cross the 10-day moving average from bottom to top.
    
  • Non

    Je ne suis pas...

    NOT(X):Take a non. Returns 1 when X=0, otherwise returns 0.
    example 1:
    NOT(ISLASTBK); If the previous signal is not a BK signal, the NOT (ISLASTBK) returns a value of 1; the previous signal is a BK signal, and the NOT (ISLASTBK) returns a value of 0.
    example 2:
    NOT(BARSBK>=1)=1;//The BK signal is sent to the current K line to satisfy the condition.
    //NOT(BARSBK>=1)=1 is equivalent to NOT (BARSBK>=1).
    
  • NULL

    Retourner nul

    Return null
    usage:
    MA5:=MA(C,5);
    MA10:=MA(C,10);
    A:=IFELSE(MA5>MA10,MA5,NULL),COLORRED;//When MA5>MA10, draw the five-day moving average MA5, when MA5>MA10 is not satisfied, return null value, no drawing line.
    
  • VALUE quand

    Valeur

    VALUEWHEN(COND,X) Takes the current value of X when the COND condition is true. If the COND condition is not true, take the value of X when the COND condition is established last time.
    
    Note:
    X can be either a numerical value or a condition.
    
    example 1
    VALUEWHEN(HIGH>REF(HHV(HIGH,5),1),HIGH);indicates that the current highest price is greater than the maximum value of the highest price of the first five cycles and returns the current highest price.
    example 2:
    VALUEWHEN(DATE<>REF(DATE,1),O);indicates the opening price of the first k-line of the day
    example 3:
    VALUEWHEN(DATE<>REF(DATE,1),L>REF(H,1));//indicates whether the current lowest price on the first k line of the day is greater than the highest price of the last K line yesterday. Returns 1, indicating that there is a price gap on that day. Returns 0, indicating that there are no price gap on that day.
    
  • Fonction d'exécution de la boucle

    • Résultats de l'analyse

      Fonction de condition de boucle

      LOOP2(COND,A,B); loop condition function Returns A if the COND condition is true, otherwise returns B
      
      Note:
      1、COND is a judgment condition; A and B can be conditions or numerical values.
      2、the function supports variable loop reference to the previous period of its own variable, that is, support the following writing method Y: = LOOP2 (CON, X, REF (Y, 1));
      
      example 1:
      X:=LOOP2(ISUP,H,REF(X,1));//k line is the rising line, take the highest price of the current K line, otherwise take the highest price of the pervious K line that is a rising k line; if it has not appeared before, X returns null
      
      example 2:
      BB:=LOOP2(BARSBK=1,LOOP2(L>LV(L,4),L,LV(L,4)),LOOP2(L>REF(BB,1),L,REF(BB,1)));//When holding long position, the lowest price in the first 4 cycles of opening position k line is the starting stop loss point BB, if the lowest price of the subsequent K line is higher than the previous lowest price, taking the current lowest price as stop loss point, otherwise take the previous lowest point to be the stop loss point.
      SS:=LOOP2(BARSSK=1,LOOP2(H<HV(H,4),H,HV(H,4)),LOOP2(H<REF(SS,1),H,REF(SS,1)));// When holding short position, the highest price in the first 4 cycles of opening position k line is the starting stop loss point SS, if the highest price is lower than the previous highest price, taking the current highest price as stop loss point, Otherwise take the previous high point as stop lose points
      H>HV(H,20),BK;
      L<LV(L,20),SK;
      C<BB,SP;
      C>SS,BP;
      AUTOFILTER;
      
      
  • Fonction des statistiques financières

    • Le nombre de membres

      Le nombre de cycles que la première période valable à la période en cours

      BARSCOUNT(COND) The number of cycles that the first valid period to the current one
      
      Note:
      1、The return value is the number of cycles from which the COND is calculated from the first valid period and up to now.
      2、The return value of BARSCOUNT(COND) on the current k line on the condition that the condition is first established is 0.
      
      example:
      BARSCOUNT(MA(C,4));//The calculation MA(C,4) has the first return value to the current number of cycles.
      
    • Les produits de base

      Dernière condition établie vraie

      BARSLAST(COND):The last condition COND was established to the current number of cycles
      
      Note:
      1、The return value of BARSLAST(COND) on the current k line is 0.
      
      example 1:
      BARSLAST(OPEN>CLOSE); //The number of cycles from the previous falling k line to the present
      Example 2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;//minute period, the number of k line on the current day.
      //Because the condition is established, the return value of BARSLAST(COND) on the current k line is 0, so "+1" is the k-line number of current day.
      
    • Les produits chimiques

      La première condition est fixée au nombre actuel de cycles

      BARSSINCE(COND) The first condition is established to the current number of cycles.
      
      Note:
      1、the return value is the first time the COND is established to the current number of cycles
      2、The return value of BARSSINCE (COND) on the current k-line of the condition established for the first time is 0.
      
      example :
      BARSSINCE(CLOSE>OPEN);
      //Statistics of the number of cycles from the K line that satisfies the condition of the first line to the present.
      
    • Les produits de base

      Statistiques La première condition de la période N est l'établissement


Plus de