Los inventores cuantifican el archivo de My Language (Mylang)

El autor:Un sueño pequeño., Creado: 2018-11-30 13:29:33, Actualizado: 2022-12-09 17:46:10

[TOC] ¿Qué quieres decir?

My es un lenguaje de transacción programada que es compatible y mejorado con Ma. FMZ quantified My hace rigurosas comprobaciones gramaticales, por ejemplo, cuando se usa lenguaje ampliado para embeber código de lenguaje JavaScript.%%Si el operador contiene más de un carácter de espacio después del operador, se producirá un error.

  • Información básica

    • El contrato

      El contrato de moneda digital

      El contrato de moneda digital

      this_week     数字货币期货当周合约
      next_week     数字货币期货次周合约
      month         数字货币期货月度合约
      quarter       数字货币期货季度合约
      next_quarter  数字货币期货次季度合约
      third_quarter 数字货币期货第三季度合约
      last_quarter  最后季度合约
      
      XBTUSD        BITMEX永续合约
      swap          除BITMEX交易所以外数字货币期货永续合约
      
      具体可以参看JavaScript/Python/C++文档的exchange.SetContractType()函数部分
      

      img

    • Variables

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

      Abre la primera variable

      // 将1赋值给变量a
      a:=1;
      

      En el麦语言En el interior, desde数据量La diferencia es simple:

      1. Datos de un solo valor: sólo un valor, por ejemplo01’abc’
      2. Datos de secuencia: una serie de datos que se compone de un conjunto de datos de un solo valor, por ejemploClose(precio de cierre), aquíCloseIncluyenPrecio de cierre del ciclo[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]

      Distinguir el tipo de aluminio de la variable aluminio

      1. Tipo de cadena: tiene que usarse''Los paquetes, los tipos de strings no se permiten directamente, y se requiere una función con la que exportarlos a la vista.
      INFO(CLSOE>OPEN,'OK!');
      
      1. Tipo de valor: incluye números enteros, números flotantes y decimales.
      // 整数
      int:=2;
      
      // 小数
      float:=3.1;
      
      1. El tipo Boole, que usa 1 (para decir verdad) o 0 (para decir falso): 1, 0, verdad o mentira. Por ejemplo:A:=1>0;El código que se ejecuta es el mismo que el que se ejecuta en la página web.AEl valor es 1⁄4.
      // 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数
      is_true:=Close>-999;
      
      1. Variables globales
      VARIABLE:VALUE1:10;     // 声明一个全局变量,赋值为10,只执行一次。
      

      Los resultados de las pruebas son:

      VARIABLE:NX:0;    // 初始一个全局变量NX为0
      NX..NX+1;         // 每次累加1
      INFO(1,NX);       // 每次打印NX
      

      Al principioINFOLa frase está impresa:101Es posible que haya dudas de que el principio no sea0¿Qué es eso? Esto se debe a que la línea K inicial tiene 100 líneas y se ha recorrido 100 líneas y se ha sumado 100 veces. El disco real depende de la cantidad de K que se obtiene inicialmente.

      • Las reglas de nombramiento

        En la mayoría de los sistemas, los nombres de variables no permiten el uso de la barra de reservas del sistema (por ejemplo, el nombre de variable incorporado, el nombre de la función).CloseCTambién no se permiten números puros o iniciales numéricos. No se permiten finales muy largos, con diferentes límites de longitud en los diferentes sistemas. De hecho, no tienes que confundir el sistema principal con la eficiencia de la resolución del chino, creyendo que el lenguaje de la cepa es muy amigable con el chino.

        1. Nombre en chino
        // 优雅的输出
        五日均线:=MA(C,5);
        
        1. Inglés + líneas abajo
        // 输出
        move_avg_5:=MA(C,5);
        

        Si prefieres el inglés, haz lo posible para que la gente entienda el significado de tus variables.A1AAABBB... este tipo de denominación. Creo que cuando vuelvas a revisar tu código de indicadores en algún momento, te sentirás muy doloroso por la falta de memoria.

        Entonces, a partir de ahora, abrace el lenguaje de Omelet. Que sea una herramienta poderosa para tu análisis y toma de decisiones.

    • Tipo de datos

      El tipo de datos es un concepto básico en la escritura, cuando le damos un valor de datos definido a una variable, la variable se convierte en el tipo de la propia información.

        1. Tipo de valor:
        1、2、3、1.1234、2.23456 ...
        
        1. El tipo de str (str):
        '1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
        
        1. Los datos de la secuencia:
        一系列单值数据构成的数据集合
        
        1. El tipo boolean:

        Usado1Representantestrue0Representantesfalse

        Ejemplos

        // 声明一个数值类型的变量
        var_int := 1;
        // 声明一个序列数据的变量
        var_arr := Close;
        // 字符串类型不能单独声明,需要结合函数
        INFO(C>O, '阳线');
        
    • Operador

      Las operaciones utilizadas para ejecutar el código de indicadores, las computaciones, en términos simples, son los símbolos que participan en las operaciones.

      • Operador de asignación

        Se usa para asignar un valor a una variable.

          1. :

          :, representa la asignación y se exporta al gráfico (subgráfico).

          Close1:Close;      // 将Close赋值给变量Close1,并且输出到图中
          
          1. :=

          :=, representa la asignación, pero no se produce en el gráfico (gráfico principal, subgráfico...) ni se muestra en la tabla de tablas de estado.

          Close2:=Close;     // 将Close赋值给变量Close2
          
          1. ^^

          ^^¿Qué es esto?^Los símbolos representan asignaciones, asignan a las variables y se exportan a los gráficos.

          lastPrice^^C;
          
          1. ..

          ..¿Qué es esto?.Los símbolos representan asignaciones, asignan asignaciones a las variables y muestran nombres de variables, valores en el gráfico, pero no dibujan en el gráfico (gráfico principal, subgráfico, etc.).

          openPrice..O
          
      • Operador relacional

        El operador relacional es un operador bidireccional que se usa en las expresiones condicionales. Se utiliza para determinar la relación entre dos datos.

        El valor de retorno: tipo Bull, notrueEs decir,false(0)。

          1. Es más grande que>
          // 将2>1的运算结果赋值给rv1变量,此时rv1=1
          rv1:=2>1;
          
          1. Menos de<
          // 返回false,也就是0,因为2大于1
          rv3:=2<1;
          
          1. Es más que igual a>=
          x:=Close;
          // 将收盘价大于等于10的运算的结果赋值给变量rv2
          // 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
          rv2:=Close>=10;
          
          1. Menos es igual a<=
          此处省略
          
          1. es igual a=
          A:=O=C;     // 判断开盘价是不是等于收盘价。
          
          1. No es igual a<>
          1<>2       // 判断1是否不等于2,返回值为1(true)
          
      • Operador lógico

        El valor de retorno: tipo Bull, notrueEs decir,false(0)。

        1. La lógica y&&¿Qué es esto?andAlternativamente, los lados izquierdo y izquierdo de la conexión deben formarse simultáneamente.
        // 判断 cond_a,cond_b,cond_c 是否同时成立
        cond_a:=2>1;
        cond_b:=4>3;
        cond_c:=6>5;
        cond_a && cond_b and cond_c;    // 返回值为1,成立
        
        1. La lógica o||¿Qué es esto?orLa sustitución o el enlace a ambos lados de la izquierda y la izquierda, un lado establecido (true), y el conjunto establecido (return true).
        cond_a:=1>2;
        cond_b:=4>3;
        cond_c:=5>6;
        cond_a || cond_b or cond_c;    // 返回值为1,成立
        
        1. ()Operador que calcula las expresiones dentro de los paréntesis.
        1>2 AND (2>3 OR 3<5)    // 运算结果为假
        1>2 AND 2>3 OR 3<5      // 运算结果为真
        
      • Operador de cálculo

        返回值:数值类型
        

        Los operadores aritméticos son los símbolos para realizar operaciones aritméticas básicas (operadores aritméticos), es decir, los símbolos para manejar operaciones de cuatro dimensiones.

        • Más +

          A:=1+1;      // 返回 2
          
        • ¿Qué es esto?

          A:=2-1;      // 返回 1
          
        • ¿Por qué no?

          A:=2*2;      // 返回 4
          
        • No lo sé.

          A:=4/2;      // 返回 2
          
    • Función

      • Función

        En el mundo de la programación, la función de acoplamiento es en realidad un fragmento de código que implementa una función; y puede ser llamado para otros códigos, en general de la siguiente manera:

        function(param1,param2,...)
        
        • Los miembros del grupo son:

          Los nombres de las funciones (parámetros 1, 2,...) pueden no tener parámetros o tener varios parámetros.MA(x,n);Los representantes regresannEn el cicloxLa media móvil simple de la media móvil simple de la media móvil simple de la media móvil simple de la media móvil simple de la media móvil simple de la media móvil simple de la media móvil simple de la media móvil simple de la media móvil.MA()Es una función.xynEs el parámetro de la función.

          Cuando usamos funciones, necesitamos entender la definición básica de la función, es decir, qué datos se pueden obtener al llamar a la función. Generalmente, las funciones tienen parámetros, y cuando pasamos parámetros, necesitamos asegurarnos de que el tipo de datos que pasamos es conforme.MA(x,n);La explicación es la siguiente:

          返回简单移动平均
          用法:
          AVG:=MA(X,N): X的N日简单移动平均,算法(X1+X2+X3+...+Xn)/N,N支持变量
          

          Esto es muy poco amistoso para los principiantes. A continuación, analizamos las funciones a fondo, tratando de encontrar una forma rápida de aprender, de usar las funciones.

      • El valor de retorno

        Para aprender rápidamente las funciones, primero tenemos que entender un concepto llamado "valor de retorno".Volver hacia atrásSi el valor representa un valor específico, entonces el valor de retorno significa: datos que se pueden obtener.

        // 因为后面的代码中会用到,所以用变量 return_value 接收、保存 function()的返回值
        // retrun_value := function(param1,param2);
        // 例如:
        AVG:=MA(C,10);     // AVG即retrun_value,function函数即:MA函数,param1参数:C即收盘价序列数据,param2参数:10。
        
      • Parámetros

        El segundo concepto importante de la función secundaria es el de los parámetros, los cuales pueden ser transmitidos a diferentes parámetros para obtener diferentes valores de retorno.

        // 变量ma5接收5日收盘价移动平均值
        ma5:=MA(C,5);
        // 变量ma10接收10日收盘价移动平均值
        ma10:=MA(C,10);
        

        Variables mencionadosma5ma10El primer parámetro deXTodos ellos.C(Precio de cierre), en realidadCTambién puede ser una función (que devuelve la secuencia de precios de cierre de apertura a fecha), pero no tiene parámetros. El segundo parámetro 5, 10 se utiliza para decirMA()Para obtener una media móvil de cierre de varios días, la función se vuelve más flexible a través de los parámetros.

      • Cómo aprender

          1. Primero, hay que entender el papel de la función, es decir, qué datos puede devolvernos esta función.
          1. Por último, el tipo de valor que se devuelve, después de todo, estamos usando funciones para obtener el valor de retorno.
          1. Luego necesitamos saber el tipo de datos de los parámetros.MA(x,n)Si no conoces los parámetrosxnEl tipo de datos de la página no puede obtener el valor de retorno correcto.

        La función se presenta, utiliza y sigue los 3 principios mencionados anteriormente.

    • La mejora del lenguaje

      • 麦语言¿Qué es esto?JavaScriptProgramación mixta

        %%
        // 这里面可以调用发明者量化的任何API 
        scope.TEST = function(obj) {
            return obj.val * 100;
        }
        %%
        收盘价:C;
        收盘价放大100倍:TEST(C);
        上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值
        
        • scopeObjeto

          scopeLos objetos pueden agregar propiedades y asignar funciones anónimas a las propiedades, y en la parte del código de la lengua maya se puede llamar a la función anónima que hace referencia a esta propiedad.

        • scope.getRefs(obj)Función

          En elJavaScriptEn el bloque de código, llamascope.getRefs(obj)La función regresa a la transmisión.objLos datos del objeto.

          Las siguientes%% %%El símbolo está envueltoJavaScriptEn el código se obtiene el código de Ma.TEST(C)Se transmite cuando se llama una funciónCEl precio de cierre.scope.getRefsLa función devuelve todos los precios de cierre de los datos de la línea K.throw "stop"El procedimiento de interrupción. Por lo tanto, las variablesarrContiene sólo el precio de cierre del primer Bar.throw "stop"¿Qué es lo que está sucediendo?JavaScriptEl código finalreturnEn el caso de los precios más bajos, los precios más bajos son los precios más bajos.

          %%
          scope.TEST = function(obj){
              var arr = scope.getRefs(obj)
              Log("arr:", arr)
              throw "stop"
              return
          }
          %%
          TEST(C);
          
        • scope.bars

          En elJavaScriptAcceso a todas las K-bars en el bloque de código.

          TESTLa función devuelve un valor numérico. 1 es la línea de la vagina y 0 es la línea del sol.

          %%
          scope.TEST = function(){
              var bars = scope.bars
              return bars[bars.length - 1].Open > bars[bars.length - 1].Close ? 1 : 0    // 只能返回数值
          }
          %%
          arr:TEST;                                                                      
          
          # 注意:
          # TEST接收的匿名函数,返回值必须是数值。
          # 如果匿名函数没有参数,在调用TEST的时候直接写VAR:=TEST;写VAR:=TEST();会报错。
          # scope.TEST中的TEST必须是大写。
          
        • scope.bar

          En elJavaScriptEn el bloque de código, accede a la barra actual.

          Se calcula el promedio de precios altos y bajos.

          %%
          scope.TEST = function(){
              var bar = scope.bar
              var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4
              return ret
          }
          %%
          avg^^TEST;
          
        • scope.depth

          Los datos de profundidad del mercado están disponibles en el sitio web de la compañía.

          %%
          scope.TEST = function(){
              Log(scope.depth)
              throw "stop"             // 打印一次深度数据后就抛出异常,暂停
          }
          %%
          TEST;
          
        • scope.symbol

          Obtener la secuencia de nombres de transacciones actuales.

          %%
          scope.TEST = function(){
              Log(scope.symbol)
              throw "stop"
          }
          %%
          TEST;
          
        • scope.barPos

          Obtener la posición de la línea KBar.

          %%
          scope.TEST = function(){
              Log(scope.barPos)
              throw "stop"
          }
          %%
          TEST;
          
        • el alcance.get_locals (nombre)

          Esta función se utiliza para obtener variables en la parte de código de la lengua maya.

          V:10;
          %%
          scope.TEST = function(obj){
              return scope.get_locals('V')
          }
          %%
          GET_V:TEST(C);
          
          # 注意:
          # 如果某个变量,由于周期不足的时候计算不出数据,这个时候在JavaScript代码中调用scope.get_locals函数
          # 获取这个变量时,会报错:line:XX - undefined locals某个变量名undefined
          
        • scope.canTrade

          canTradeEtiqueta de la propiedad si el bar actual es el último bar o no

          Por ejemplo, para determinar si las estrategias están en un estado en el que se pueden negociar.

          %%
          scope.LOGTICKER = function() {
              if(exchange.IO("status") && scope.canTrade){
                  var ticker = exchange.GetTicker();
                  if(ticker){
                      Log("ticker:", ticker);
                      return ticker.Last;
                  }
              }
          }
          %%
          LASTPRICE..LOGTICKER;
          
      • Ejemplos de uso:

        %%
        scope.TEST = function(a){
            if (a.val) {
                throw "stop"
            }    
        }
        %%
        O>C,BK;
        C>O,SP;
        TEST(ISLASTSP);
        

        La estrategia de apertura, cierre y cierre después de una operación.

    • Referencias multicíclicas

      El sistema automáticamente selecciona un ciclo de K-línea de base adecuado y utiliza este dato de ciclo de K-línea de base para sintetizar todos los datos de K-línea de referencia, asegurando la precisión de los datos.

      • Usado para:#EXPORT 公式名 ... #ENDCrear una fórmula. También se puede escribir una fórmula en blanco si no se realiza el cálculo de la fórmula solo para obtener datos de diferentes ciclos.

        La fórmula vacía es:

        #EXPORT TEST 
        NOP;
        #END           // 结束
        
      • Usado para:#IMPORT [MIN,周期,公式名] AS 变量值Figura de referencia. Obtener datos de los ciclos establecidos (precio de cierre, precio de apertura, etc., obtenidos mediante valores de variables).

        IMPORTEn la ordenMINEs decir,Escala de minutosEl creador de la plataforma de cuantificación del lenguaje Maé.IMPORTSolo soporte en la ordenMINLos niveles. Ahora hay soporte para ciclos no estándares, por ejemplo.#IMPORT [MIN,240,TEST] AS VAR240Importa datos como las líneas K de ciclos de 240 minutos (cuatro horas).

        Ejemplo de código:

        // 本代码演示如何引用不同周期的公式在同一代码里
        // #EXPORT扩展语法,以#END结束标记为一个公式,可以声明多个
        #EXPORT TEST 
        均值1:EMA(C, 20);
        均值2:EMA(C, 10);
        #END // 结束
        
        #IMPORT [MIN,15,TEST] AS VAR15 // 引用公式,K线周期用15分钟
        #IMPORT [MIN,30,TEST] AS VAR30 // 引用公式,K线周期用30分钟
        CROSSUP(VAR15.均值1, VAR30.均值1),BPK;
        CROSSDOWN(VAR15.均值2, VAR30.均值2),SPK;
        十五分最高价:VAR15.HIGH;
        三十分最高价:VAR30.HIGH;
        AUTOFILTER;
        
      • Se usa para referencias multicircularesREFLLVHHVLas instrucciones de referencia de datos que necesitan atención.

        (*backtest
        start: 2021-08-05 00:00:00
        end: 2021-08-05 00:15:00
        period: 1m
        basePeriod: 1m
        exchanges: [{"eid":"Futures_OKCoin","currency":"ETH_USD"}]
        args: [["TradeAmount",100,126961],["ContractType","swap",126961]]
        *)      
        
        %%
        scope.PRINTTIME = function() {
            var bars = scope.bars;
            return _D(bars[bars.length - 1].Time);
        }
        %%
        BARTIME:PRINTTIME;      
        
        #EXPORT TEST 
        REF1C:REF(C,1);
        REF1L:REF(L,1);
        #END // 结束      
        
        #IMPORT [MIN,5,TEST] AS MIN5
        INFO(1, 'C:', C, 'MIN5.REF1C:', MIN5.REF1C, 'REF(MIN5.C, 1):', REF(MIN5.C, 1), '触发BAR时间:', BARTIME, '#FF0000');
        INFO(1, 'L:', L, 'MIN5.REF1L:', MIN5.REF1L, 'REF(MIN5.L, 1):', REF(MIN5.L, 1), '触发BAR时间:', BARTIME, '#32CD32');
        AUTOFILTER;
        

        ComparaciónMIN5.REF1CyREF(MIN5.C, 1)Las diferencias se pueden ver:MIN5.REF1CEs el valor del precio de cierre del segundo inversor de la barra del momento actual de los datos de la línea K de 5 minutos.REF(MIN5.C, 1)Es el ciclo de la línea K del modelo actual ((el ciclo de repetición del código anterior está configurado para 1 minuto, es decir,period: 1m), la segunda barra del punto negativo del momento actual es el precio de cierre del ciclo de 5 minutos. Las dos definiciones son diferentes y pueden usarse según las necesidades.

    • Descripción del modelo

      • Un modelo de filtración de señales en línea

        En el modelo se escribeAUTOFILTERLa función para controlar y implementar una filtración de señales uniforme, cuando se cumplen las condiciones de varias señales de apertura, se toma la primera señal como señal efectiva y se filtra la misma señal en la línea k posterior.

        Las instrucciones soportadas por el modelo de filtro: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, instrucciones con guiones como BK ((5) no soportadas.

        Por ejemplo:

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(C,MA1),BK;
        CROSSUP(MA1,MA2),BK;
        C>BKPRICE+10||C<BKPRICE-5,SP;
        AUTOFILTER;
        
        理解:
        如上范例,没有设置 AUTOFILTER 时,第三行BK 和第四行BK 第五行SP,依次触发,每根K线触发一次信号。开仓后,再到平仓,即重置模型状态。      
        如果设置 AUTOFILTER , 触发BK后,只能触发SP,其它的BK 信号被忽略,每根K线触发一次信号。
        
      • Modelo de aumento y disminución de las existencias

        No se escribe en el modeloAUTOFILTERFunciones que permiten señales continuas de apertura o de liquidación de posiciones.

        Las instrucciones soportadas son: BK ((N) BP ((N) SK ((N) SP ((N) CLOSEOUT BPK ((N) SPK ((N) ), pero no soportan instrucciones de apertura sin números. (1) Apoya el agrupamiento de instrucciones. (2) Cuando se cumplen simultáneamente varias condiciones de la instrucción, se ejecuta la señal en el orden anterior y posterior escrito en la frase condicional. 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);
        

        UsoTRADE\_AGAINLa línea de comandos puede emitir varias señales seguidas.

        理解:
        以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。
        
      • Modelo de una señal de una línea K.

        El cálculo de la señal se realiza en tiempo real independientemente de si la línea K ha terminado o no, es decir, la orden se realiza antes de que la línea K haya terminado; la revisión al final de la línea K se sincroniza automáticamente 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.

        Por ejemplo:

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BPK;    // 5周期均线上穿10周期均线做多。
        CROSSDOWN(MA1,MA2),SPK;  // 5周期均线下穿10周期均线做空。
        AUTOFILTER;
        
      • Modelo de una línea K de múltiples señales

        Modelo por usomultsigPara controlar y hacer posible la salida de múltiples señales de una línea K.

        Si la línea k termina o no, el cálculo de la señal se realiza en tiempo real.

        La señal no se revisa, no hay pérdida de señal, y la dirección de la señal siempre coincide con la dirección de retención.

        Se puede ejecutar varias veces en una línea K si se cumplen varias condiciones de señal.

        例如:
        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);
        

        MULTSIGSe puede ejecutar varias veces diferentes líneas de instrucciones en una línea K. Una línea de instrucciones sólo emite una señal.

        O<C,BK;            // 这些条件在一个K线Bar内,可能都执行,但是每行只出一次信号
        10+O<C,BK;         // 策略加上TRADE_AGAIN(10);可以使每行出多次信号
        20+O<C,BK;
        40+O<C,BK;
        MULTSIG(1,1,10);
        

        ¿Qué es lo que está pasando? En el modelo 1, las dos maneras de enviar una señal de una línea k: la orden de cierre, la orden de pedido, son compatibles. 2, el modelo de reducción de almacenamiento, que también admite la transmisión de señales múltiples de una línea k. El modelo de aumento y disminución de almacenamiento, escritomultsigLa función, que se realiza en una línea k, se carga o se reduce varias veces.

    • Modelo de ejecución

      img

      • Modelo de precio de cierre

        El modelo de precio de cierre no se ejecuta hasta que el BAR actual termina y se ejecuta cuando comienza el BAR inferior.

      • Modelo de precios en tiempo real

        El modelo de precios en tiempo real se refiere a un modelo que se ejecuta una vez por cada cambio de precio y se negocia de inmediato si hay una señal. El modelo de precios en tiempo real ignora las señales del día anterior (las señales del día anterior se ejecutan inmediatamente en el día anterior) y los modelos de precios en tiempo real solo miran los datos actuales del mercado para determinar si se activaron las señales.

    • El gráfico muestra

      • Indicadores adicionales del gráfico

        Usar el operador^^, al mismo tiempo que se asigna una variable, el indicador de configuración se muestra en el diagrama principal.

        MA60^^MA(C, 60);  // 计算参数为60的均线指标
        

        img

      • Indicadores adicionales

        Usar el operador:, al mismo tiempo que se asigna una variable, el indicador de configuración se muestra en el subdiagrama.

        ATR:MA(MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26);    // 给ATR变量赋值,":"符号后为计算ATR的公式
        

        img

        Si no desea que se muestre en el diagrama o subdiagrama, utilice el operador ....

        MA60..MA(C, 60);  // 计算参数为60的均线指标
        

        img

        Se puede usarDOTCOLORREDLa configuración del tipo de línea, el color, etc., se ajusta a los hábitos de los usuarios que conocen el idioma Maé.

    • Preguntas frecuentes

      Introducción a los indicadores que se encuentran comúnmente en el proceso de redacciónEl problemaEn la mayoría de los casos, la complementación continua es un punto a tener en cuenta cuando se escribe.

      • Cuidado con los puntos.;El final.

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

      • Cuidado con el uso de la cadena.Las citasPor ejemplo:'开仓'Esta es la cadena.

      • Comentarios

        Notación

        • // 注释内容(Entradas en inglés permitidas) representa que el código no se compila durante la ejecución, es decir, no se ejecuta.//El contenido posterior, que normalmente se usa para marcar el significado del código, facilita la revisión del código y permite una rápida comprensión y recuerdo.

        • { 注释内容 }En la página de Facebook de la empresa, se puede leer:

          A:=MA(C,10);
          {上一行代码是计算均线。}
          
        • (* 注释内容 *)En la página de Facebook de la empresa, se puede leer:

          A:=MA(C,10);
          (*上一行代码是计算均线。*)
          
      • Ingresos

        Cuando se escribe el código, a menudo se producen errores de símbolo debido a la conmutación al inglés en el método de entrada.:El final;El punto.,Los paréntesis()Los caracteres de las letras en inglés y chino son diferentes y deben tenerse en cuenta.

        Si utilizas el sistema de búsqueda de perros, Baidu o Bing, puedes ingresar con un solo clic.shiftEl botón para cambiar rápidamente de chino a inglés.

      • La lógica del error

        1. Al menos, no menos, no menos que: el operador relacional correspondiente>=
        2. Máximo, máximo, no superior: el operador relacional correspondiente<=
      • Política para iniciar la sincronización

        En la estrategia de futuros, si hay posiciones mantenidas manualmente antes de que el robot de estrategia se inicie, cuando se inicie, el robot detecta la información de la posición y la sincroniza con el estado real de la posición. Se puede usar en estrategias.SPBPCLOSEOUTLa orden de liquidación.

        %%
        if (!scope.init) {
            var ticker = exchange.GetTicker();
            exchange.Buy(ticker.Sell+10, 1);
            scope.init = true;
        }
        %%
        C>0, CLOSEOUT;
        
      • No apoya la tenencia bidireccional

        El idioma Ma no admite el mismo contrato y tiene múltiples espacios libres.

  • Referencia de datos de la línea K

    • Se abre

      El precio de apertura para obtener el gráfico de K.

      Precio de apertura

      Función: OPEN, abreviado con O

      Parámetros: Ninguno

      Explicación: Volver al precio inicial de "el ciclo"

      Datos de la secuencia

      OPEN取得K线图的开盘价。
      
      注:
      1、可简写为O。
      
      例1:
      OO:=O;           //定义OO为开盘价;注意O与0的区别。
      例2:
      NN:=BARSLAST(DATE<>REF(DATE,1));
      OO:=REF(O,NN);   //取的当日的开盘价
      例3:
      MA5:=MA(O,5);    //定义开盘价的5周期均线(O为OPEN简写)。
      
    • - Es muy alto.

      Para obtener el precio más alto del gráfico de K.

      El precio más alto

      Función: HIGH, abreviado H

      Parámetros: Ninguno

      Explicación: Volver al precio más alto del ciclo

      Datos de la secuencia

      HIGH取得K线图的最高价。
      
      注:
      1、可简写为H。
      
      例1:
      HH:=H;         // 定义HH为最高价
      例2:
      HH:=HHV(H,5);  // 取的5个周期内最高价的最大值
      例3:
      REF(H,1);      // 取的前一根K线的最高价
      
    • Bajo

      Para obtener el precio más bajo del gráfico de K.

      Precio más bajo

      Función: LOW, abreviada con L

      Parámetros: Ninguno

      Explicación: Volver al precio más bajo del ciclo

      Datos de la secuencia

      LOW取得K线图的最低价。
      
      注:
      1、可简写为L。
      
      例1:
      LL:=L;            // 定义LL为最低价
      例2:
      LL:=LLV(L,5);     // 取得5个周期内最低价的最小值
      例3:
      REF(L,1);         // 取得前一根K线的最低价
      
    • - ¿ Por qué no?

      Para obtener el precio de cierre del gráfico K.

      Precio de cierre

      Función: CLOSE, abreviada con C

      Parámetros: Ninguno

      Explicación: Volver al precio de cierre del ciclo

      Datos de la secuencia

      CLOSE取得K线图的收盘价
      
      注:
      1、当盘中k线没有走完的时候,取得最新价。
      2、可简写为C。
      
      例1:
      A:=CLOSE;          //定义变量A为收盘价(盘中k线没有走完的时候A为最新价)
      例2:
      MA5:=MA(C,5);      //定义收盘价的5周期均线(C为CLOSE简写)
      例3:
      A:=REF(C,1);       //取得前一根k线的收盘价
      
    • VOL

      Se obtiene el volumen de transacciones de los gráficos de K.

      Las transacciones

      Función: VOL, abreviado como V

      Parámetros: Ninguno

      Explicación: devuelve el volumen de transacciones del ciclo

      Datos de la secuencia

      VOL取得K线图的成交量。
      
      注:
      可简写为V。
      该函数在当根TICK上的返回值为当天所有TICK成交量的累计值。
      
      例1:
      VV:=V;       // 定义VV为成交量
      例2:
      REF(V,1);    // 表示前一个周期的成交量
      例3:
      V>=REF(V,1); // 成交量大于前一个周期的成交量,表示成交量增加(V为VOL的简写)
      
    • OPI

      Tomar el volumen total de las tenencias en el mercado de futuros (contratos) actual.

      OpenInterest:OPI;
      
    • El REF

      En la página de Facebook de la organización, se puede leer:

      引用X在N个周期前的值。
      
      注:
      1、当N为有效值,但当前的k线数不足N根,返回空值;
      2、N为0时返回当前X值;
      3、N为空值时返回空值。
      4、N可以为变量
      
      例1:
      REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价
      例2:
      AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C);//取最近一次买开仓信号K线的收盘价
      // 1)发出BK信号的当根k线BARSBK返回空值,则发出BK信号的当根k线REF(C,BARSBK)返回
      空值;
      // 2)发出BK信号的当根k线BARSBK返回空值,不满足BARSBK>=1,则当根k线的收盘价。
      // 3)发出BK信号之后的k线BARSBK返回买开仓的K线距离当前K线的周期数,REF(C,BARSBK)
      返回开仓k线的收盘价。
      // 4)例:1、2、3 三根k线,1 K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3
      K线返回 1 K线的收盘价。
      
    • Unidad

      En el caso de los datos de las transacciones, los datos de las transacciones son los datos de las transacciones.

      取数据合约的交易单位。
      用法:
      UNIT 取加载数据合约的交易单位。
      

      Dinero digital en efectivo

      El valor de UNIT es 1⁄4.

      Los futuros de la moneda digital

      El valor de UNIT está relacionado con la moneda del contrato.

      OKEX期货币本位合约:BTC合约1张代表100美元,其它币种的1张合约代表10美元
      
    • Precio mínimo

      El precio mínimo de cambio de un contrato de datos.

      取数据合约的最小变动价位。
      用法:
      MINPRICE; 取加载数据合约的最小变动价位。
      
    • Precio mínimo1

      El precio mínimo de cambio del contrato de negociación.

      取交易合约的最小变动价位。
      用法:
      MINPRICE1; 取交易合约的最小变动价位。
      
  • Función de tiempo

    • Las barras

      La posición de la línea K.

      BARPOS,返回从第一根K线开始到当前的周期数。
      
      注:
      1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
      2、本机已有的第一根K线上返回值为1。
      
      例1:LLV(L,BARPOS);        // 求本地已有数据的最小值。
      
      例2:IFELSE(BARPOS=1,H,0); // 当前K线是本机已有的第一根K线取最高值,否则取0。
      
    • El día

      DAYBARPOS cuando la K-línea BAR es la K-línea BAR del día.

    • Periodo

      El valor del ciclo es el número de minutos.

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

      FechaLa función DATE, obtiene los días del año del ciclo desde 1900.

      例1:
      AA..DATE;                  // 测试时AA的值为220218,表示2022年2月18日
      
    • Tiempo

      El tiempo de la línea K.

      TIME,取K线时间。
      
      注:
      1、该函数在盘中实时返回,在K线走完后返回K线的起始时间。
      2、该函数返回的是交易所数据接收时间,也就是交易所时间。
      3、TIME函数在秒周期使用时返回六位数的形式,即:HHMMSS,在其他周期上显示为四位数的形式,即:HHMM.
      4、TIME函数只能加载在日周期以下的周期中,在日周期及日周期以上的周期中该函数返回值始终为1500。
      5、使用TIME函数进行尾盘平仓的操作需要注意
      (1)尾盘平仓设置的时间建议设置为K线返回值中实际可以取到的时间(如:螺纹指数 5分钟周期 最后一根K线返回时间为1455,尾盘平仓设置为TIME>=1458,CLOSEOUT;则效果测试中不能出现尾盘平仓的信号)
      (2)使用TIME函数作为尾盘平仓的条件的,建议开仓条件也要做相应的时间限制(如设置尾盘平仓条件为TIME>=1458,CLOSEOUT;则相应的开仓条件中需要添加条件TIME<1458;避免平仓后再次开仓的情况)
      
      例1:
      C>O&&TIME<1450,BK;
      C<O&&TIME<1450,SK;
      TIME>=1450,SP;
      TIME>=1450,BP;
      AUTOFILTER;
      // 在14:50后平仓。
      例2:
      ISLASTSK=0&&C>O&&TIME>=0915,SK;
      
    • Año

      El año.

      YEAR,取得年份。
      
      注:
      YEAR的取值范围为1970—2033。
      
      例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);                               // 取上一年的最高价,最低价,开盘价,收盘价
      例2:
      NN:=IFELSE(YEAR>=2000 AND MONTH>=1,0,1);
      
    • Mes de trabajo

      El año pasado, el número de personas infectadas con el virus aumentó a más de un millón.

      MONTH,返回某个周期的月份。
      
      注:
      MONTH的取值范围为1—12.
      
      例1:
      VALUEWHEN(MONTH=3&&DAY=1,C);                // 在K线日期为三月一日时取其收盘价
      例2:
      C>=VALUEWHEN(MONTH<REF(MONTH,1),O),SP;
      
    • DÍA

      Número de días de un ciclo

      DAY,返回某一周期的日数。
      
      注:
      DAY取值范围为1-31。
      
      例1:
      DAY=3&&TIME=0915,BK;                      // 当日起为3日,时间为9点15分时,买开
      例2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;
      CC:=IFELSE(DAY=1,VALUEWHEN(N=1,O),0);      // 当日期为1时,取开盘价,否则取值为0
      
    • Horario de trabajo

      Las horas.

      HOUR,返回某周期的小时数。
      
      注:
      HOUR的取值范围为0—23
      
      例1:
      HOUR=10;                                   // 在10:00的K线上返回值为1,其余K线上返回值为0
      
    • ¿Qué es esto?

      ¿Qué es lo que está pasando?

      MINUTE,返回某个周期的分钟数。
      
      注:
      1:MINUTE的取值范围为0—59
      2:该函数只能加载在分钟周期上,返回当根K线开始的分钟数。
      例1:
      MINUTE=0;                                 // 在整点时刻的分钟K线上返回值为1,其余K线返回值为0
      例2:
      TIME>1400&&MINUTE=50,SP;                   // 在14:50的时候卖平仓
      
    • DÍA de la semana

      El número de semanas obtenido.

      WEEKDAY,取得星期数。
      
      注:
      1:WEEKDAY的取值范围是0—6。(星期日 ~ 星期六)
      
      例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;                               // 每个月交割日尾盘自动平仓
      例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 la posición del ciclo actual.

      BARSTATUS 返回当前周期的位置状态。
      
      注:
      该函数返回1表示当前周期是第一个周期,返回2表示是最后一个周期,返回0表示当前周期处于中间位置。
      
      例:
      A:=IFELSE(BARSTATUS=1,H,0);              // 如果当前K线是第一个周期,变量A返回K线最高值,否则取0
      
    • En el medio

      ¿Qué es lo que está pasando?

      BETWEEN(X,Y,Z) 表示X是否处于Y和Z之间,成立返回1(Yes),否则返回0(No)。
      
      注:
      1、其中若X=Y、X=Z、或X=Y且Y=Z时函数返回值为1(Yse)。
      
      例1:
      BETWEEN(CLOSE,MA5,MA10);                // 表示收盘价介于5日均线与10日均线之间
      
    • El último conde.

      BARSLASTCOUNT (COND) Número de ciclos que cumplen continuamente con las condiciones, calculado a partir del ciclo actual.

      注:
      1、返回值为从当前周期计算COND连续不为0的周期数
      2、条件第一次成立的当根k线上BARSLASTCOUNT(COND)的返回值为1
      
      例:
      BARSLASTCOUNT(CLOSE>OPEN);
      //计算当根K线在内连续为阳线的周期数
      
    • Las demás

      Las funciones cruzadas.

      CROSS(A,B) 表示A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
      
      注:
      1、满足穿越的条件必须上根k线满足A<=B,当根k线满足A>B才被认定为穿越。
      
      例1:
      CROSS(CLOSE,MA(CLOSE,5));              // 表示收盘线从下方向上穿过5周期均线
      
    • En el caso de los productos

      Cruzar hacia abajo

      CROSSDOWN(A,B):表示当A从上方向下穿B,成立返回1(Yes),否则返回0(No)
      
      注:
      1、CROSSDOWN(A,B)等同于CROSS(B,A),CROSSDOWN(A,B)编写更利于理解
      
      例1:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      CROSSDOWN(MA5,MA10),SK;               // MA5下穿MA10卖开仓
      // CROSSDOWN(MA5,MA10),SK;与CROSSDOWN(MA5,MA10)=1,SK;表达同等意义
      
    • Las demás:

      La gente se está moviendo hacia arriba.

      CROSSUP(A,B)表当A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
      
      注:
      1、CROSSUP(A,B)等同于CROSS(A,B),CROSSUP(A,B)编写更利于理解。
      
      例1:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      CROSSUP(MA5,MA10),BK;                 // MA5上穿MA10,买开仓
      // CROSSUP(MA5,MA10),BK;与CROSSUP(MA5,MA10)=1,BK;表达同等意义
      
    • Todo el mundo

      El hecho de que los ciudadanos de las ciudades de la región tengan que enfrentarse a una crisis económica y económica es un hecho que no debe olvidarse.

      EVERY(COND,N),判断N周期内是否一直满足COND条件。若满足函数返回值为1,不满足函数返回值为0。
      
      注:
      1、N包含当前k线。
      2、若N是有效数值,但前面没有那么多K线,或者N为空值,代表条件不满足,函数返回值为0。
      3、N可以是变量。
      
      例1:
      EVERY(CLOSE>OPEN,5);                // 表示5个周期内一直是阳线
      例2:
      MA5:=MA(C,5);                       // 定义5周期均线
      MA10:=MA(C,10);                     // 定义10周期均线
      EVERY(MA5>MA10,4),BK;               // 4个周期内MA5都大于MA10,则买开仓
      // EVERY(MA5>MA10,4),BK;与EVERY(MA5>MA10,4)=1,BK;表达同等意义
      
    • Existen

      ¿Cómo se puede evaluar si existe satisfacción?.

      EXIST(COND,N)判断N个周期内是否有满足COND的条件。
      
      注:
      1、N包含当前k线。
      2、N可以是变量。
      3、若N是有效数值,但前面没有那么多K线,按实际周期数计算。
      
      例1:
      EXIST(CLOSE>REF(HIGH,1),10);     // 表示10个周期中是否存在收盘价大于前一个周期的最高价,存在返回1,不存在则返回0
      例2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;
      EXIST(C>MA(C,5),N);              // 表示当天是否有满足收盘价大于5周期均线的k线,存在返回1,不存在返回0
      
    • Si es

      Función condicional también.

      IF(COND,A,B)若COND条件成立,则返回A,否则返回B。
      
      注:
      1、COND是判断条件;A、B可以是条件,也可以是数值。
      2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y:IF(CON,X,REF(Y,1))。
      例1:
      IF(ISUP,H,L);                   // k线为阳线,取最高价,否则取最低价
      例2:
      A:=IF(MA5>MA10,CROSS(DIFF,DEA),IF(CROSS(D,K),2,0));     // 当MA5>MA10时,取是否满足DIFF上穿DEA,否则(MA5不大于MA10),当K,D死叉时,令A赋值为2,若上述条件都不满足,A赋值为0
      A=1,BPK;                                                // 当MA5>MA10,以DIFF上穿DEA作为开多仓条件
      A=2,SPK;                                                // 当MA5不大于MA10,以K、D死叉作为开空仓条件
      
    • - ¿Por qué no?

      Función condicional también.

      IFELSE(COND,A,B) 若COND条件成立,则返回A,否则返回B。
      
      注:
      1、COND是判断条件;A、B可以是条件,也可以是数值。
      2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y: IFELSE(CON,X,REF(Y,1));
      例1:
      IFELSE(ISUP,H,L);                                             // k线为阳线,取最高价,否则取最低价
      例2:
      A:=IFELSE(MA5>MA10,CROSS(DIFF,DEA),IFELSE(CROSS(D,K),2,0));   // 当MA5>MA10时,取是否满足DIFF上穿DEA,否则(MA5不大于MA10),当K,D死叉时,令A赋值为2,若上述条件都不满足,A赋值为0
      A=1,BPK;                                                      // 当MA5>MA10,以DIFF上穿DEA作为开多仓条件
      A=2,SPK;                                                      // 当MA5不大于MA10,以K、D死叉作为开空仓条件
      
    • Contrato

      ¿Se trata de un contrato en curso?

      ISCONTRACT(CODE)当前是否为指定的合约。
      
      用法:ISCONTRACT(CODE);是当前合约返回1,不是当前合约返回0。
      
      注:
      1、判断是否为指定合约时,CODE可以为合约的交易代码。
      
      例:
      ISCONTRACT('this_week');    // 数字货币OKEX期货合约
      ISCONTRACT('XBTUSD');       // 数字货币BITMEX期货合约
      

      Apoya las expresiones regulares.

      El juicio del contrato

      ISCONTRACT('this_week');                     // 判断当前合约是否为OKEX期货 this_week(当周)合约
      

      Decidir el nombre de la bolsa

      ISCONTRACT('@Futures_(Binance|FTX)');       // 判断当前交易所对象是否为Binance期货或者FTX期货
      ISCONTRACT('@(OKEX|Bitfinex)');             // 判断交易所,需要在开头加@字符
      
    • Descenso

      La vagina también.

      ISDOWN判断该周期是否收阴。
      
      注:
      1、ISDOWN等同于C<O
      
      例:
      ISDOWN=1&&C<REF(C,1),SK;                    // 当根k线收阴并且收盘价小于前一周期收盘价,则开空
      // ISDOWN=1&&C<REF(C,1),SK;与ISDOWN&&C<REF(C,1),SK; 表达同等意义
      
    • Se trata de:

      El plato.

      ISEQUAL判断该周期是否平盘。
      
      注:
      1、ISEQUAL等同于C=O
      
      例1:
      EVERY(ISEQUAL=1,2),CLOSEOUT;                // 持续2根k线都是平盘,则全平
      
    • La última barra

      Determina si el ciclo es la última línea K.

      ISLASTBAR判断该周期是否为最后一根k线。
      
      例1:
      VALUEWHEN(ISLASTBAR=1,REF(H,1));            // 当前k线是最后一根k线,则取前一周期的最高价
      
    • No está disponible.

      El valor del valor del espacio libre.

      ISNULL判断空值。
      
      用法:ISNULL(N);如果N为空值,函数返回1;如果N为非空值,函数返回0。
      
      例:MA5:=IFELSE(ISNULL(MA(C,5))=1,C,MA(C,5));   // 定义五周期均线,K线数量不足五根时,返回当根K线的收盘价
      
    • El ISUP

      La luz del sol.

      ISUP判断该周期是否收阳。
      
      注:
      1、ISUP等同于C>O。
      
      例:
      ISUP=1&&C>REF(C,1),BK;   // 若当根k线收阳并且收盘价大于前一周期收盘价,则开多
                               // ISUP=1&&C>REF(C,1),BK; 与 ISUP&&C>REF(C,1),BK
                               // 表达同等意义
      
    • Último

      La función de juicio.

      LAST(COND,N1,N2)判断过去N1到N2周期内,是否一直满足COND条件。
      
      注:
      1、若N1与N2只相差一个周期(如N1=3,N2=2),则函数判断距离当前K线最近的那个周期上是否满足条件(即判断过去N2个周期的那根K线上是否满足条件)。
      2、当N1/N2为有效值,但当前的k线数不足N1/N2根,或者N1/N2空值的情况下,代表不成立,该函数返回0。
      3、N1、N2不可以是变量。
      
      例1:
      LAST(CLOSE>OPEN,10,5);   // 表示从过去第10个周期到第5个周期内一直是阳线
      例2:
      MA5:=MA(C,5);
      LAST(C>MA5,4,3);         // 判断距离当前k线3个周期的那根k线上是否满足C大于MA5
      
    • Las demás especies

      Mantenga la función cruzada.

      LONGCROSS(A,B,N)表示A在N个周期内都小于B,本周期A从下向上穿越B。
      
      注:
      1、当N为有效值,但当前的k线数不足N根时,LONGCROSS函数返回空值。
      2、N不支持变量。
      
      例1:
      LONGCROSS(CLOSE,MA(CLOSE,10),20);   // 表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线
      
    • No es

      No lo es.

      NOT(X):取非。当X=0时返回1,否则返回0。
      例1:
      NOT(ISLASTBK);如果上一个信号不是BK信号,则NOT(ISLASTBK)返回值为1;上一个信号是BK信号,则NOT(ISLASTBK)返回值为0。
      例2:
      NOT(BARSBK>=1)=1;                  // BK信号发出的当根K线上满足条件
      // NOT(BARSBK>=1)=1与NOT(BARSBK>=1)表达同等意义
      
    • NULL

      Devuelve un valor en blanco.

      返回空值
      用法:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      A:=IFELSE(MA5>MA10,MA5,NULL),COLORRED;  // 当MA5>MA10时,画五日均线MA5,不满足MA5>MA10时,返回空值,不画线
      
    • Valor cuando

      El valor de las cosas.

      VALUEWHEN(COND,X)当COND条件成立时,取X的当前值。如COND条件不成立,则取上一次COND条件成立时X的值。
      
      注:
      X可以是数值也可以是条件。
      
      例1
      VALUEWHEN(HIGH>REF(HHV(HIGH,5),1),HIGH);  // 表示当前最高价大于前五个周期最高价的最大值时返回当前最高价
      例2:
      VALUEWHEN(DATE<>REF(DATE,1),O);           // 表示取当天第一根k线的开盘价(即当天开盘价)
      例3:
      VALUEWHEN(DATE<>REF(DATE,1),L>REF(H,1));  // 表示在当天第一根k线上判断当前最低价是否大于昨天最后一根K线的最高价。返回1,说明当天跳空高开。返回0,说明当天不满足跳空高开条件
      
  • Función de ejecución de ciclo

    • Loop2

      Función de condiciones de ciclo.

      LOOP2(COND,A,B);循环条件函数若COND条件成立,则返回A,否则返回B。
      
      注:
      1、COND是判断条件;A、B可以是条件,也可以是数值。
      2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y:=LOOP2(CON,X,REF(Y,1));
      
      例1:
      X:=LOOP2(ISUP,H,REF(X,1));                // k线为阳线,取当根K线的最高价,否则取上一次是阳线的K线的最高价;若之前未出现过阳线时,X返回为空值
      
      例2:
      BB:=LOOP2(BARSBK=1,LOOP2(L>LV(L,4),L,LV(L,4)),LOOP2(L>REF(BB,1),L,REF(BB,1))); // 持有多单时,开多单那根的前面4个周期内的最低价为起始止损点BB,后续K线最低价比前一个最低价高,取当前最低价为止损点,否则取前一个低点为止损点
      SS:=LOOP2(BARSSK=1,LOOP2(H<HV(H,4),H,HV(H,4)),LOOP2(H<REF(SS,1),H,REF(SS,1))); // 持有空单时,开空单那根的前面4个周期内的最高价为起始止损点SS,最高价比前一个最高价低,取当前最高价为止损点,否则取前一个高点为止损点
      H>HV(H,20),BK;
      L<LV(L,20),SK;
      C<BB,SP;
      C>SS,BP;
      AUTOFILTER;
      
  • Función de estadísticas financieras

    • Cuenta de bares

      El número de ciclos desde el primer ciclo vigente hasta el actual.

      BARSCOUNT(COND)第一个有效周期到当前的周期数。
      
      注:
      1、返回值为COND从第一个有效周期开始计算,到现在为止的周期数。
      2、条件第一次成立的当根k线上BARSCOUNT(COND)的返回值为0。
      
      例:
      BARSCOUNT(MA(C,4));                       // 计算MA(C,4)第一次有返回值到当前的周期数
      
    • Las demás:

      La última vez que se estableció la condición de ubicación.

      BARSLAST(COND),上一次条件COND成立到当前的周期数。
      
      注:
      1、条件成立的当根k线上BARSLAST(COND)的返回值为0。
      
      例1:
      BARSLAST(OPEN>CLOSE);                     // 上一根阴线到现在的周期数
      例2:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;         // 分钟周期,当日k线数
      // 由于条件成立的当根k线上BARSLAST(COND)的返回值为0,所以“+1”才是当日k线根数
      

      ExplicaciónBARSLASTFunción:

      • 1, si se cumplen las condiciones de la línea K actual, se devuelve 0.
      • 2, si no se establece, se retrocede continuamente hasta que se encuentra la línea K en la que se establece la condición y se devuelve un número de ciclos retrospectivos.
      • 3, si no se encuentra la línea K en la que se estableció la condición, se devuelve un valor nulo.
    • Las demás sustancias

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

      BARSSINCE(COND)第一个条件成立到当前的周期数。
      
      注:
      1、返回值为COND第一次成立到当前的周期数。
      2、条件第一次成立的当根k线上BARSSINCE(COND)的返回值为0。
      
      例:
      BARSSINCE(CLOSE>OPEN);                    // 统计第一次满足阳线这个条件的K线到现在的周期数
      
    • Las demás:

      La primera condición establecida en N ciclos estadísticos es el número actual de ciclos.

      BARSSINCEN(COND,N)统计N周期内第一次条件成立到当前的周期数。
      
      注:
      1、N包含当前k线。
      2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。
      3、若N为0返回无效值。
      4、N可以为变量。
      
      例:
      N:=BARSLAST(DATE<>REF(DATE,1))+1;        // 分钟周期,当日K线数
      BARSSINCEN(ISUP,N);                      // 统计N周期内第一次满足阳线到当前的周期数
      
    • Las condiciones de los productos

      Obtener el número de ciclos K entre líneas que satisfagan las condiciones A y B más recientemente.

      CONDBARS(A,B);取得最近的满足A、B条件的k线间周期数。
      
      注意:
      1、该函数返回周期数不包含最后满足条件的K线。
      2、距离当前K线最近的满足的条件为B条件,则该函数返回值为最后一次满足A条件的K线到满足B条件的K线的周期数(A条件满足后的第一次满足B条件的K线)。
      距离当前K线最近的满足的条件为A条件,则该函数返回值为最后一次满足B条件的K线到满足A条件的K线的周期数(B条件满足后的第一次满足A条件的K线)。
      
      例1:
      MA5:=MA(C,5);                                        // 5周期均线
      MA10:=MA(C,10);                                      // 10周期均线
      CONDBARS(CROSSUP(MA5,MA10),CROSSDOWN(MA5,MA10));     // 最近一次满足5周期均线上穿10周期均线与5周期均线下穿10周期均线之间的周期数
      
    • Cuenta

      El número total de estadísticas.

      COUNT(COND,N),统计N周期中满足COND条件的周期数。
      
      注:
      1、N包含当前k线。
      2、若N为0则从第一个有效值算起。
      3、当N为有效值,但当前的k线数不足N根,从第一根统计

Más.

Indicadores de negociación de alto nivel de la serie 98KEn la línea k pasa por la línea solar j1 y se detiene en la línea solar j1 y luego vuelve a presionar la j1 para abrirla, pero cuando se detecta, también se abre en la línea solar sin detenerse en la línea solar j1. D1:=if (jk < 0 && CROSS (close, j1) and CLOSE>OPEN and close>j1, j1,0); D1, BK; /upload/asset/2af6fee 82ea8bb3725687.png También puede leer:

Indicadores de negociación de alto nivel de la serie 98KLa plataforma de comercio de amor nacional tiene una base de datos de funciones en Ma, no se sabe si será compatible en el futuro, como las funciones en Compatible TradingView, así que la estrategia de indicadores de ambos lados se puede transferir directamente a los inventores y cuantificar.

Indicadores de negociación de alto nivel de la serie 98KisLast (x) Descripción de la función: determina si el dato actual es el último dato. ¿Tiene esta función alguna función en el inventor?

wanghehe711@qq.com¿Puede la lengua maya funcionar de una forma multicultural en un disco real?

Es crema.¿Se necesita Java o Python para colgar un MARK? ¿Puedes dar un ejemplo?

Las nubes¿La lengua Ma es compatible con el contrato OKEX? ¿Puedo acceder al API del contrato OKEX?

Un sueño pequeño.Bien, mira por aquí.

Un sueño pequeño.Actualmente no hay soporte para esta instrucción isLast.

Un sueño pequeño.La lengua maya es una estrategia de una sola variedad, una sola plataforma, que sólo puede operar una variedad, una cuenta.

Un sueño pequeño.Este tipo de diseño es más complejo, por lo que se recomienda escribir directamente las políticas de JS, PY si se trata de una política de lista de colgar.

Un sueño pequeño.El apoyo, que se puede utilizar para el contrato de OKEX.