Documento de MyLanguage

El autor:La bondad, Creado: 2018-12-14 17:33:09, Actualizado: 2019-04-10 09:11:27

[TOC] ¿Qué quieres decir?

  • Descripción básica

    • Contrato

      Contrato de futuros de materias primas, contrato de criptomonedas

      Contrato de futuros de materias primas/criptomonedas

      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

      Al establecer el contrato, puede elegir rb1901/rb1905 Los datos del mercado son rb1901, el contrato de negociación de órdenes es rb1905

    • Variables

      Una variable es un espacio abierto en la memoria del ordenador para almacenar datos.

      Declarar la primera variable

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

      En M Language, se hace una distinción simple del volumen de datos:

      1. Datos de un solo valor: solo un valor, por ejemplo 0, 1, 'abc
      2. Datos de secuencia: Una secuencia de datos que consta de un solo conjunto de datos de un solo valor, como Close (precio de cierre), donde Close contiene el precio de cierre de n ciclos [ 10.1, 10.2, 10.3, 10.4, 10.5... ]

      Distinguir entre tipo variable

      1. Tipo de cadena: debe utilizar paquete, tipo de cadena no está permitido ser utilizado directamente, usted necesita para hacer coincidir la salida de la función a la vista
      INFO(CLSOE>OPEN,'OK!');
      
      1. Tipo de valor: incluidos los enteros, números con coma flotante (decimal)
      // integer
      int:=2;
      
      // decimal
      float:=3.1;
      
      1. Tipo booleano, utilizando 1 (para true) o 0 (para false): 1, 0, true o false, por ejemplo: A:=1>0; después de la ejecución de este código, el valor de A es 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 global
      VARIABLE:VALUE1:10;     // Declare a global variable with a value of 10 and execute only once.
      
      • Reglas de nombramiento

        En la mayoría de los sistemas, la denominación de variables no permite el uso del sistema palabras reservadas (nombres de variables incorporados, nombres de funciones), como el conocido Close, C. Además, los números puros no están permitidos, o los números comienzan con, y no pueden ser demasiado largos, diferentes sistemas, y los diferentes límites de longitud son diferentes. De hecho, no tienes que enredar la eficiencia del sistema principal para el análisis del inglés. Creo que M Language es muy amigable para los hablantes de inglés. Te recomiendo usar la siguiente convención de nombres:

        Inglés + subrayado

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

        Si prefieres el inglés, por favor deja que la gente entienda el significado de tus variables tanto como sea posible. No uses métodos de nombramiento como: A1, AAA, BBB... Créeme, después de unos días, cuando revises tu código de indicador de nuevo, te sentirás muy doloroso debido a la falta de memoria. Del mismo modo, cuando exportas código a otros, la mentalidad del lector debe haber colapsado.

        Entonces, a partir de ahora, abrace el M Language tanto como puedas! Espero que sea una poderosa herramienta para tu análisis y toma de decisiones.

    • Tipo de datos

      El tipo de datos es un concepto básico. En la programación, cuando asignamos un dato explícito a una variable, la variable se convierte en el tipo de los datos en sí.

        1. Tipo de valor:
        1、2、3、1.1234、2.23456 ……
        
        1. Tipo de cadena (str):
        '1' 、'2' 、'3' ,string type must be wrapped with ''
        
        1. Datos de la secuencia:
        a collection of data consisting of a series of single-valued data
        
        1. Tipo booleano (booleano):

        Utilice 1 para verdadero y 0 para falso

        Ejemplo

        // 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');
        
    • El operador

      La operación y el cálculo utilizados para ejecutar el código del indicador, que es el símbolo de la operación de participación.

      • Operador de asignación

        Se utiliza para asignar un valor a una variable

          1. :

          un punto y dos puntos, que representa la asignación y la salida al diagrama (diagrama adjunto)

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

          El punto y coma igual, que representa la asignación, pero no se emite al diagrama (diagrama principal, subgrafo...) y no se muestra en la tabla de la barra de estado.

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

          ^, dos ^ símbolos representan asignaciones, asignan valores a las variables y las sacan al diagrama (diagrama principal).

          lastPrice^^C;
          
          1. ..

          ...,dos puntos, El símbolo representa la asignación, asigna un valor a la variable y lo muestra en la tabla de barra de estado, pero no lo saca al diagrama (diagrama principal, subdiagrama...).

          openPrice..O
          
      • Operador relacional

        Los operadores relacionales son operadores binoculares que se utilizan en expresiones condicionales.

        Valor de retorno: Tipo booleano, no es cierto (1), debe ser falso (0)

          1. Más grande que >
          // Assign the result of 2 > 1 to the rv1 variable, at this time rv1=1
          Rv1:=2>1;
          
          1. Menos de
          // returns false, which is 0, because 2 is greater than 1. :-)
          rv3:=2<1;
          
          1. Más grande o igual a >=
          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. Menor o igual a <=
          Omitted here
          
          1. Es igual a =
          A:=O=C;     // Determine if the opening price is equal to the closing price.
          
          1. No es igual a <>
          1<>2       // Judgment weather 1 is equal to 2 or not, the return value is 1 (true)
          
      • Operadores lógicos

        Return value: Boolean type, not true (1), must be false (0)
        
        1. La lógica y &&, pueden usar y en su lugar, y los lados izquierdo y derecho de la conexión deben ser verdaderos al mismo tiempo.
        // 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. En la lógica, se puede usar or en su lugar, or enlaza los lados izquierdo y derecho, siempre que un lado sea verdadero, el conjunto sea verdadero (retorno verdadero)
        cond_a:=1>2;
        cond_b:=4>3;
        cond_c:=5>6;
        cond_a || cond_b or cond_c;    // return value 1, true
        
      • Operador aritmético

        Return value: numeric type
        

        Es la finalización del símbolo de los operadores aritméticos básicos, que es el símbolo utilizado para procesar las cuatro operaciones aritméticas.

        • Además +

          A:=1+1;      // return 2
          
        • Sustraer...

          A:=2-1;      // return 1
          
        • Multiplicación *

          A:=2*2;      // return 4
          
        • Divide por /

          A:=4/2;      // return 2
          
    • Función

      • Función

        En el mundo de la programación, una función es en realidad una pieza de código que implementa una determinada función y puede ser llamada por otro código.

        function(param1,param2,……)
        
        • Composición:

          El nombre de la función (parámetro 1, parámetro 2,...), puede no haber parámetros, puede haber múltiples parámetros, como MA ((x, n); representa una media móvil simple de la x interna que devuelve n ciclos, donde MA ((() es una La función, x y n son los parámetros de la función.

          Cuando usamos una función, necesitamos entender la definición básica de la función, es decir, qué datos se pueden obtener llamando a la función. En general, las funciones tienen parámetros. Cuando pasamos parámetros, necesitamos asegurarnos de que el tipo de datos que pasamos sea compatible. En la etapa actual, la función de sugerencia de código de la mayoría de los IDE es muy imperfecta. No muestran los tipos de datos específicos para los parámetros dados, lo que nos da algunos problemas.

          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
          

          Esta es una explicación muy hostil para los principiantes. A continuación, analizamos a fondo la función e intentamos encontrar una manera de aprender y usar la función rápidamente.

      • Valor de retorno

        Para aprender la función rápidamente, primero necesitamos entender un concepto llamado valor de retorno.

        // 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.
        
      • Parámetro

        En segundo lugar, el segundo concepto importante de la función es el parámetro, pasando en diferentes parámetros, se puede obtener diferentes valores de retorno.

        // 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);
        

        El primer parámetro X de las variables anteriores ma5, ma10 es C (precio de cierre), de hecho C también es una función (que devuelve la secuencia de precios de cierre desde la apertura), pero no tiene parámetros.

      • Cómo aprender

          1. En primer lugar, usted necesita entender la función de la función , que es lo que los datos que esta función puede darnos.
          1. Comprendiendo el tipo del valor de retorno, después de todo, usamos la función para obtener el valor de retorno.
          1. Necesitamos entender el tipo de datos del parámetro, MA (x, n), si usted no sabe el tipo de datos de los parámetros x, n, no se puede obtener el valor de retorno correctamente.

        En la siguiente introducción de la función, el uso, seguir los tres principios anteriores.

    • Mejora del lenguaje

      • Programación mixta entre lenguaje M y lenguaje JavaScript

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

      Precio de cierre: C; El precio de cierre se magnifica 100 veces: TEST©; El precio de cierre anterior se magnifica 100 veces: TEST(REF(C, 1)); // El ratón se mueve a la línea backtest K y se muestra el valor de la variable.

      
      - 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
        ```
      
      
    • Referencia de varios ciclos

      • Utilice: #EXPORT Formula Name... #END para crear una fórmula. Si sólo desea obtener datos para diferentes períodos, también puede escribir una fórmula vacía sin cálculo de fórmula.

        La fórmula vacía es:

        #EXPORT TEST 
        NOP;
        #END           // End
        
      • Uso: #IMPORT [MIN, período, nombre de la fórmula] VALOR de variable AS, fórmula de referencia, obtener los datos del período establecido (precio de cierre, precio de apertura, etc., obtenidos por valor de variable).

        Ejemplo de código:

        // 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;
        
    • Descripción del modo

      • Modelo de filtración de señales de una posición de apertura y una posición de cierre

        En el modelo, escribiendo la función AUTOFILTER para controlar y realizar el filtrado de la señal de una apertura y un cierre. Cuando múltiples señales de posición de apertura satisfagan la condición, la primera señal se toma como la señal efectiva, y la misma señal en la línea k posterior se filtrará.

        Modelo de filtración soportado comandos: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, no soporta BK (5) y otras instrucciones con lotes

        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;
        
      • Modelo de posición de adición o resta

        La función AUTOFILTER no está escrita en el modelo, lo que permite una señal de posición de apertura continua o una señal de posición de cierre continua, que se puede utilizar para aumentar o disminuir la posición.

        Los comandos admitidos: BK(N), BP(N), SK(N), SP(N), CLOSEOUT, BPK(N), SPK(N, no admiten la posición abierta y cerrada sin lote. (1)Grupo de instrucciones de apoyo. (2) Cuando se cumplen simultáneamente varias condiciones de instrucción, las señales se ejecutan en el orden en que se escriben las instrucciones condicionales. Por ejemplo:

        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, una línea K con un modelo de señal

        Una línea K con un modelo de señal puede subdividirse en un modelo de precio de cierre y un modelo de precio de instrucción.

        1)Modelo de precios de cierre

        La línea K pasa a través de la señal de cálculo para colocar un pedido (el cálculo también se realiza durante la formación de una línea K. En este momento, la señal será incierta, y la señal que aparezca cuando la línea k no esté terminada será ignorada, y no se colocará ningún pedido)

        La dirección de la señal es consistente con la dirección de la posición de espera y no existe ninguna condición de desaparición de la señal.

        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)Modelo de precios de instrucción

        Independientemente de si la línea k está terminada o no, la señal se calcula y el pedido se realiza en tiempo real, es decir, el pedido se realiza antes de que se complete la línea K;

        Si la dirección de la posición no coincide con la dirección de la señal al final de la línea k, la posición se sincronizará automáticamente.

        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、Una línea K con modelo de señal múltiple

        El modelo utiliza un multsig o multsig_min para controlar e implementar múltiples señales desde una sola línea K.

        Independientemente de si la línea k está terminada, calcular la señal y colocar una orden en tiempo real.

        La señal no se revisará, no hay ninguna condición de desaparición de la señal y la dirección de la señal es consistente con la dirección de la posición.

        Ejecuciones múltiples repetidas en una línea K si se cumplen condiciones de señal múltiples

        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);
        

        el suplemento: 1, El modelo de suma y resta de posiciones, dos métodos de una señal de línea k: la orden de colocación de precio de cierre y la orden de colocación de precio de instrucción son todos compatibles.

        2、El modelo de posición de suma y resta también admite una señal única de línea k para realizar órdenes.

        Añadir y restar modelo de posición, escribir la función multsig o multsig_min, realizar múltiples veces de añadir y restar posición en una línea k, o reducir la posición varias veces.

    • Muestra de gráfico

      • Indicador adicional del diagrama principal

        Utilice el operador ^^ para establecer el indicador que se mostrará en la imagen principal mientras asigna valores a la variable.

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

        img

      • Indicador adicional del subdiagrama

        Utilice el operador : para establecer el indicador que se mostrará en el diagrama secundario mientras asigna valores a 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 usted no quiere mostrar en el principal o sub-diagrama Utilice el operador ...

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

        Puedes usar DOT y COLORRED para configurar el tipo de línea, color, etc. en línea con los hábitos de los usuarios que están familiarizados con el lenguaje M.

    • Un problema común

      Introduzca los problemas que se encuentran comúnmente en la preparación de los indicadores, por lo general los puntos que necesitan atención al escribir los indicadores.

      • Presta atención al final de ;.

      • Tenga en cuenta que las palabras clave del sistema no pueden declararse como variables.

      • Tenga en cuenta que la cadena utiliza comillas únicas, por ejemplo: apertura sólo una cita.

      • Comentario

        Anotado

        • // The content of the comment(el método de entrada se puede escribir tanto en inglés como en chino), lo que significa que el código no se compila durante el proceso de ejecución, es decir, no ejecuta // el contenido detrás de él.

        • { Comment content }Bloquea el comentario.

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

          A:=MA(C,10);
          (*The previous line of code is the calculation of the moving average.*)
          
      • Método de entrada

        Cuando se escribe código, a menudo causa un error de símbolo porque el método de entrada cambia entre chino e inglés.

      • Lógica propensa a errores

        1. Por lo menos 0, por lo menos 0, por lo menos: Operador relacional correspondiente>=
        2. No más: Operador relacional correspondiente<=
  • Referencia de datos de línea K

    • Se abre

      Obtener el precio de apertura del gráfico de la línea K

      Precio de apertura

      Función: OPEN, abreviado como O

      Parámetros: Ninguno

      Explicación: Devuelve el precio de apertura del ciclo

      Datos de secuencia

      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).
      
    • - Es muy alto.

      Obtenga el precio más alto del gráfico de la línea K.

      El precio más alto

      Función:HIGH, abreviado como H

      Parámetros: Ninguno

      Explicación: devuelve el precio más alto del ciclo

      Datos de secuencia

      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
      
    • Bajo

      Obtenga el precio más bajo del gráfico de la línea K.

      Precio más bajo

      Función:BAJO, abreviado como L

      Parámetros: Ninguno

      Explicación: devuelve el precio más bajo del ciclo.

      Datos de secuencia

      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
      
    • - ¿ Por qué no?

      Obtener el precio de cierre del gráfico de la línea K

      Precio de cierre

      Función: CLOSE, abreviado como C

      Parámetros: Ninguno

      Explicación: Devuelve el precio de cierre del ciclo

      Datos de secuencia

      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

      Obtener el volumen del gráfico de línea K

      Volumen de las operaciones

      Función:VOL, abreviado como V

      Parámetros: Ninguno

      Explicación: Devuelva el volumen de este ciclo.

      Datos de secuencia

      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).
      
    • El REF

      Referencia previa

      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.
      
    • Unidad

      Tomemos la unidad de transacción del contrato de datos

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

      Futuro de las materias primas

      El valor de UNIT está relacionado con el contrato

      rb contract - 1 hand, 10 (tons)
      

      Esparcimiento de criptomonedas

      El valor de UNIT es 1

      Futuros de criptomonedas El valor en UNIT está relacionado con la moneda del contrato

      OKEX Futures: 1 BTC contract represents $100, and 1 contract in other currencies represents $10
      
    • Precio mínimo

      Cambios mínimos en el precio de los contratos de datos

      Take the minimum price change of the data contract.
      usage:
      MINPRICE; Take the minimum price change for loading data contracts.
      
    • Precio mínimo1

      Cambios mínimos en el contrato comercial

      Take the minimum price change of the trading contract.
      usage:
      MINPRICE1; Take the minimum price change of the trading contract.
      
  • Función del tiempo

    • Las barras

      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.
      
    • Periodo

      El valor del período es el número de minutos.

      1, 3, 5, 15, 30, 60, 1440
      
    • DATOS

      DATOS

      Función:DATE

      Parámetros: Ninguno

      Explicación: Obtener la fecha del ciclo a partir de 1900

      Datos de secuencia

    • Tiempo

      Tome el tiempo de la línea 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;
      
    • Año

      Años

      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);
      
    • Mes de trabajo

      Devuelve el mes de un ciclo

      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;
      
    • DÍA

      Obtener el número de días en un ciclo

      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.
      
    • Horario de trabajo

      Horario de trabajo

      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.
      
    • ¿Qué es esto?

      ¿Qué es esto?

      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.
      
    • DÍA de la semana

      Obtener el número de semanas

      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;
      
  • Función de juicio lógico

    • Las demás especies

      Devuelve el estado de posición del ciclo actual

      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.
      
    • En el medio

      Entre

      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.
      
    • Las demás

      Función cruzada

      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 el caso de los productos

      Cruzando hacia abajo

      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
      
    • Las demás:

      Cruzando hacia arriba

      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
      
    • Todo el mundo

      Determinar si sigue cumpliendo el requisito

      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
      
    • Existen

      Determinar si hay satisfacción

      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 es

      Función condicional

      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
      
    • - ¿Por qué no?

      Función condicional

      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
      
    • Contrato

      tiempo el contrato actual un contrato designado

      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
      

      Apoyo para expresiones regulares

      Determinar el contrato

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

      Juzgar el nombre de la bolsa

      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
      
    • Descenso

      Caída de la línea K

      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;
      
    • Se trata de:

      Precio de apertura igual al precio de cierre

      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
      

, luego cierra toda posición.

```
  • La última barra

    Determinar si el ciclo es la última línea 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.
    
  • No está disponible.

    Determinar el valor nulo

    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.
    
  • El ISUP

    Línea ascendente

    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
    
  • Último

    Determinar la función

    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”.
    
  • Las demás especies

    Mantenga la función cruzada

    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.
    
  • No es

    No es...

    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

    Devuelve nulo

    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.
    
  • Valor cuando

    Valor

    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.
    
  • Función de ejecución del bucle

    • Loop2

      Función de condición del bucle

      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;
      
      
  • Función de las estadísticas financieras

    • Cuenta de bares

      El número de ciclos que el primer período válido al actual

      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.
      
    • Las demás:

      Última condición declarada cierta

      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.
      
    • Las demás sustancias

      La primera condición se establece para el número actual de ciclos

      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.
      
    • Las demás:

      Estadísticas La primera condición en el período N es establecer


Más.