Документ MyLanguage

Автор:Доброта, Создано: 2018-12-14 17:33:09, Обновлено: 2019-04-10 09:11:27

[TOC]

  • Основное описание

    • Контракт

      Фьючерсный контракт на сырьевые товары, контракт на криптовалюты

      Контракт на товарные фьючерсы/криптовалюты

      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

      При установке контракта вы можете выбрать rb1901/rb1905 Рыночные данные - rb1901, контракт на торговлю ордерами - rb1905

    • Переменные

      Переменная - это пространство, открытое в памяти компьютера для хранения данных.

      Заявить первую переменную

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

      В M Language простые различия с data volume:

      1. Однозначные данные: только одно значение, например 0, 1, 'abc
      2. Последовательность данных: последовательность данных, состоящая из одного набора данных с одной ценностью, например Close (цена закрытия), где Close содержит цену закрытия n циклов [ 10.1, 10.2, 10.3, 10.4, 10.5... ]

      Отличить от типа переменной

      1. Тип строки: должен использовать пакет, тип строки не разрешается использовать непосредственно, вам нужно сопоставить выход функции с видом
      INFO(CLSOE>OPEN,'OK!');
      
      1. Тип значения: включая целые числа, числа с плавающей запятой (децимальная запятая)
      // integer
      int:=2;
      
      // decimal
      float:=3.1;
      
      1. Булевой тип, использующий 1 (на истинный) или 0 (на ложный): 1, 0, истинный или ложный, например: A:=1>0; после выполнения этого кода значение A равняется 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:VALUE1:10;     // Declare a global variable with a value of 10 and execute only once.
      
      • Правила наименования

        В большинстве систем, переменное наименование не позволяет использовать систему резервированные слова (встроенные имена переменных, имена функций), такие как хорошо известные Close, C. Кроме того, чистые числа не разрешены, или числа начинаются с, и не могут быть слишком длинными, различные системы, и различные ограничения длины различны. На самом деле, вам не нужно путать эффективность основной системы для анализа английского языка. Я считаю, что M Language очень дружелюбен к носителям английского языка. Я рекомендую вам использовать следующую конвенцию наименования:

        Английский + подчеркнуть

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

        Если вы предпочитаете английский язык, пожалуйста, дайте людям понять значение ваших переменных как можно больше. Не используйте методы именования, такие как: A1, AAA, BBB... Поверьте мне, через несколько дней, когда вы снова пересмотрите свой индикаторный код, вы будете очень болезненны из-за отсутствия памяти. Точно так же, когда вы экспортируете код другим, мышление читателя должно быть рухнуло.

        Тогда, начиная с сегодняшнего дня, используйте M Language как можно больше!

    • Вид данных

      В программировании, когда мы присваиваем явные данные переменной, переменная становится типом самих данных.

        1. Тип значения:
        1、2、3、1.1234、2.23456 ……
        
        1. Тип строки (str):
        '1' 、'2' 、'3' ,string type must be wrapped with ''
        
        1. Данные последовательности:
        a collection of data consisting of a series of single-valued data
        
        1. Булевой тип (булевой):

        Используйте 1 для истинного и 0 для ложного

        Пример

        // 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');
        
    • Оператор

      Операция и расчет, используемые для выполнения кода показателя, который является символом операции по участию.

      • Оператор назначения

        Используется для присвоения значения переменной

          1. :

          двойник, представляющий назначение и выход на диаграмму (заместительная диаграмма)

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

          Колонка равна , представляющая задание, но не выводится на диаграмму (основная диаграмма, субграфа...) и не отображается в таблице строки состояния.

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

          ^, два ^ символа представляют собой задания, присваивают значения переменным и выводят их на диаграмму (основная диаграмма).

          lastPrice^^C;
          
          1. ..

          ...,две точки, Символ представляет назначение, присваивает значение переменной и отображает его в таблице строки состояния, но не выводит его на диаграмму (основная диаграмма, суб-диаграмма...).

          openPrice..O
          
      • Относительный оператор

        Реляционные операторы - бинокулярные операторы, которые используются в условных выражениях.

        Возвращается значение: Булево, не верно (1), должно быть ложно (0)

          1. Более >
          // Assign the result of 2 > 1 to the rv1 variable, at this time rv1=1
          Rv1:=2>1;
          
          1. Меньше <
          // returns false, which is 0, because 2 is greater than 1. :-)
          rv3:=2<1;
          
          1. Больший или равный >=
          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. меньше или равно <=
          Omitted here
          
          1. Равно =
          A:=O=C;     // Determine if the opening price is equal to the closing price.
          
          1. Не равна <>
          1<>2       // Judgment weather 1 is equal to 2 or not, the return value is 1 (true)
          
      • Логические операторы

        Return value: Boolean type, not true (1), must be false (0)
        
        1. Логика и &&, могут использовать вместо этого and, и левая и правая стороны соединения должны быть истинными одновременно.
        // 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. В логике, вместо этого можно использовать or, or связывают левую и правую стороны, пока одна сторона истинна, все верно (возврат истинный)
        cond_a:=1>2;
        cond_b:=4>3;
        cond_c:=5>6;
        cond_a || cond_b or cond_c;    // return value 1, true
        
      • Арифметический оператор

        Return value: numeric type
        

        Это завершение символа основных арифметических операторов, который является символом, используемым для обработки четырех арифметических операций.

        • Плюс +

          A:=1+1;      // return 2
          
        • Вычитаем -

          A:=2-1;      // return 1
          
        • Умножить *

          A:=2*2;      // return 4
          
        • Раздели на /

          A:=4/2;      // return 2
          
    • Функция

      • Функция

        В мире программирования функция - это на самом деле кусок кода, который реализует определенную функцию и может быть вызван другим кодом.

        function(param1,param2,……)
        
        • Состав:

          Название функции (параметр 1, параметр 2,...), может не иметь параметров, может быть несколько параметров, таких как MA ((x, n); представляет собой простую скользящую среднюю величину внутреннего х, возвращающего n циклов, где MA ((() является функцией, x и n являются параметрами функции.

          При использовании функции мы должны понимать основное определение функции, то есть какие данные можно получить, вызвав функцию. В целом, функции имеют параметры. Когда мы передаем параметры, мы должны убедиться, что передаваемый тип данных соответствует требованиям. На текущем этапе функция подсказки кода большинства IDE очень несовершенна. Они не показывают определенные типы данных для данных параметров, что дает нам некоторые проблемы.

          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
          

          Далее мы тщательно анализируем функцию и пытаемся найти способ быстро выучить и использовать функцию.

      • Возвратная стоимость

        Для того, чтобы быстро выучить функцию, нам сначала нужно понять понятие, называемое return value.

        // 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.
        
      • Параметр

        Во-вторых, второе важное понятие функции - это параметр, передавая разные параметры, вы можете получить разные значения возврата.

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

        Первый параметр X из вышеперечисленных переменных ma5, ma10 - это C (цена закрытия), на самом деле C также является функцией (возвращение последовательности цен закрытия с момента открытия), но он не имеет параметров.

      • Как учиться

          1. Во-первых, вам нужно понять функцию функции, которая является данными, которые эта функция может дать нам.
          1. Понимая тип возвращаемого значения, в конце концов, мы используем функцию, чтобы получить возвращаемое значение.
          1. Нам нужно понять тип данных параметра, MA (x, n), если вы не знаете тип данных параметров x, n, вы не можете получить возвращенное значение правильно.

        В следующем введении функции, используйте, следуйте вышеперечисленным трем принципам.

    • Улучшение языка

      • Смешанное программирование между языком M и языком JavaScript

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

      Цена закрытия: C; Цена закрытия увеличивается в 100 раз: TEST©; Предыдущая цена закрытия увеличивается в 100 раз: TEST(REF(C, 1)); // Мышь перемещается к линии backtest K и отображается значение переменной.

      
      - 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
        ```
      
      
    • Ссылка на несколько циклов

      • Используйте: #EXPORT Formula Name... #END для создания формулы. Если вы хотите получить данные только для разных периодов, вы также можете написать пустую формулу без расчета формулы.

        Пустая формула:

        #EXPORT TEST 
        NOP;
        #END           // End
        
      • Использование: #IMPORT [MIN, период, название формулы] AS значение переменной, эталонная формула, получать данные установленного периода (цена закрытия, цена открытия и т.д., полученные по значению переменной).

        Пример кода:

        // 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;
        
    • Описание режима

      • Модель фильтрации сигнала с одной позицией открытия и одной позицией закрытия

        В модели, записывая функцию AUTOFILTER для управления и реализации фильтрации сигнала одного открытия и одного закрытия. Когда несколько сигналов позиции открытия удовлетворяют условию, первый сигнал принимается как эффективный сигнал, и тот же сигнал на последующей k линии будет отфильтрован.

        Поддерживаемые команды модели фильтрации: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, не поддерживает BK (5) и другие команды с партиями

        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;
        
      • 2, добавление или вычитание модели положения

        Функция AUTOFILTER не записана в модели, что позволяет непрерывно открывать сигнал положения или непрерывно закрывать сигнал положения, который может быть использован для увеличения или уменьшения положения.

        Поддерживаемые команды: BK(N), BP(N), SK(N), SP(N), CLOSEOUT, BPK(N), SPK(N, не поддерживают открытое и закрытое положение без лота. (1)Группировка инструкций поддержки. (2) Когда одновременно выполняются несколько условий инструкции, сигналы выполняются в том же порядке, в котором записываются условные инструкции. Например:

        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, одна K-линия с одной моделью сигнала

        Одна K-линия с одной моделью сигнала может быть разделена на модель ценовой оценки закрытия и модель ценовой оценки инструкции.

        1)Модель ценообразования

        Линия K проходит через сигнал расчета для размещения заказа (расчет также выполняется во время формирования линии K. В это время сигнал будет неопределенным, и сигнал, который появляется, когда линия k не закончена, будет проигнорирован, и не будет размещен заказ)

        Направление сигнала соответствует направлению позиции ожидания, и отсутствует условие исчезновения сигнала.

        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)Модель ценообразования

        Независимо от того, завершена ли линия K или нет, сигнал рассчитывается и заказ размещается в режиме реального времени, то есть заказ размещается до завершения линии K;

        Если направление позиции не совпадает с направлением сигнала в конце линии k, позиция автоматически синхронизируется.

        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、Одна K-линия с несколькими моделями сигналов

        Модель использует multsig или multsig_min для управления и реализации нескольких сигналов от одной K-линии.

        Независимо от того, закончена ли линия k, вычислите сигнал и разместите заказ в реальном времени.

        Сигнал не будет пересматриваться, не существует условий исчезновения сигнала, а направление сигнала соответствует направлению положения.

        Повторяющиеся многократные выполнения в K-линии, если выполнены несколько условий сигнала

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

        Дополнение: 1, Модель сложения и вычитания позиций, два метода одного сигнала k-линии: ордер на размещение цены закрытия и ордер на размещение цены инструктажа все поддерживаются.

        2、Модель сложения и вычитания позиций также поддерживает один сигнал k-линии для размещения заказов.

        Добавление и вычитание модели позиции, написание функции multsig или multsig_min, реализация многократного добавления и вычитания позиции на одной k-строке, или уменьшение позиции несколько раз.

    • Дисплей диаграммы

      • Основная схема дополнительный показатель

        Используйте оператор ^^ для настройки показателя, который должен отображаться на главном изображении при присвоении значений переменной.

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

        img

      • Дополнительный показатель на субдиаграмме

        Используйте оператор : для установки показателя, который должен отображаться на вторичной диаграмме при присвоении значений переменной.

        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
        

        Если вы не хотите отображать на главной или суб-диаграммы Используйте оператор ...

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

        Вы можете использовать DOT и COLORRED для настройки типа строки, цвета и т. д. в соответствии с привычками пользователей, которые знакомы с языком M.

    • Общая проблема

      Ввести проблемы, обычно встречающиеся при подготовке показателей, как правило, те моменты, которые требуют внимания при написании показателей.

      • Обратите внимание на конец ;.

      • Обратите внимание, что системные ключевые слова не могут быть объявлены как переменные.

      • Обратите внимание, что строка использует однократные котировки, например: opening только одна котировка.

      • Комментарий

        Аннотация

        • // The content of the comment(метод ввода может быть введен как на английском, так и на китайском языках), что означает, что код не компилируется во время процесса выполнения, то есть он не выполняет // содержимое за ним.

        • { Comment content }Блокируйте комментарии.

          A:=MA(C,10);
          {The previous line of code is the calculation of the moving average.}
          
        • (* Comment content *)Блокируйте комментарии.

          A:=MA(C,10);
          (*The previous line of code is the calculation of the moving average.*)
          
      • Способ ввода

        При написании кода это часто вызывает ошибку символа, потому что метод ввода переключается между китайским и английским языками.

      • Логика с вероятностью ошибок

        1. Не менее чем не менее чем: Соответствующий реляционный оператор>=
        2. Не более: Соответствующий оператор отношений<=
  • Ссылка на данные строки K

    • Открытый

      Получите открывающую цену на графике K-линии

      Начальная цена

      Функция: OPEN, сокращенная как O

      Параметры: Никакие

      Объяснение: Возврат начальной цены цикла

      Данные последовательности

      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).
      
    • Высокий

      Получить самую высокую цену на графике K-линии

      Самая высокая цена

      Функция: HIGH, сокращение H

      Параметры: Никакие

      Объяснение: возвращает самую высокую цену цикла

      Данные последовательности

      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
      
    • Низкий

      Получите самую низкую цену на графике K-линии

      Самая низкая цена

      Функция: Низкий, сокращенный как L

      Параметры: Никакие

      Объяснение: возвращается самая низкая цена цикла.

      Данные последовательности

      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
      
    • КРАСНО

      Получить цену закрытия K-линейного графика

      Заключительная цена

      Функция: CLOSE, сокращение от C

      Параметры: Никакие

      Объяснение: возвращает цену закрытия цикла

      Данные последовательности

      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

      Получить объем K-линейной диаграммы

      Объем торговли

      Функция: VOL, сокращенно как V

      Параметры: Никакие

      Объяснение: верните объем этого цикла.

      Данные последовательности

      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).
      
    • РЭФ

      Ссылки на будущее

      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.
      
    • ЕДИНСТВО

      Возьмем транзакционную единицу контракта данных

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

      Фьючерсные товары

      Значение единиц связано с контрактом

      rb contract - 1 hand, 10 (tons)
      

      Криптовалютный спот

      Значение единицы 1

      Фьючерсы на криптовалюты Стоимость единиц связана с валютой контракта

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

      Минимальное изменение цены для контрактов на предоставление данных

      Take the minimum price change of the data contract.
      usage:
      MINPRICE; Take the minimum price change for loading data contracts.
      
    • MINPRICE1

      Минимальное изменение торгового договора

      Take the minimum price change of the trading contract.
      usage:
      MINPRICE1; Take the minimum price change of the trading contract.
      
  • Функция времени

    • BARPOS

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

      Значение периода - это количество минут.

      1, 3, 5, 15, 30, 60, 1440
      
    • Дата

      Дата

      Функция: Дата

      Параметры: Никакие

      Пояснение: Получить дату цикла с 1900 года

      Данные последовательности

    • Время

      Не отвлекайся на К-линию

      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;
      
    • Год

      Годы

      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);
      
    • Месяц

      Возвращает месяц цикла

      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;
      
    • ДЕНЬ

      Получить число дней в цикле

      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.
      
    • Час

      Час

      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.
      
    • Минута

      Минута

      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.
      
    • ДЕНЬ недели

      Получить количество недель

      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;
      
  • Функция логического суждения

    • Барстатус

      Возвращает статус положения текущего цикла

      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.
      
    • Между ними

      Между

      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.
      
    • КРОСС

      Кросс-функция

      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
      
    • КРАССДОWN

      Пересекаю

      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
      
    • КРОССУП

      Пересекаем

      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
      
    • Все.

      Определить, продолжает ли он соответствовать требованиям

      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
      
    • Существует

      Определить, есть ли удовлетворение

      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.
      
    • Если

      Условная функция

      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
      
    • ИФЕЛС

      Условная функция

      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
      
    • СОГЛАСОВАНИЕ

      Погода текущий контракт назначенный контракт

      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
      

      Поддержка регулярных выражений

      Определить договор

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

      Судить по названию биржи

      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
      
    • Вниз

      Падающая линия К

      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;
      
    • ИСЕКУАЛ

      Цена открытия равна цене закрытия

      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
      

, затем закрыть все позиции.

```
  • Последняя строка

    Определить, является ли цикл последней линией 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.
    
  • ИННУЛЛ

    Определить нуль

    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.
    
  • ИСУП

    Восходящая линия

    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
    
  • Последнее

    Определить функцию

    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”.
    
  • Длинный крест

    Сохранить перекрестную функцию

    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.
    
  • Нет.

    не-

    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

    Возврат нуля

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

    Стоимость

    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.
    
  • Функция выполнения петли

    • LOOP2

      Функция состояния петли

      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;
      
      
  • Функция финансовой статистики

    • BARSCOUNT

      Количество циклов, от первого действительного периода к текущему

      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.
      
    • БАРСЛАСТ

      Последнее условие подтверждено

      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.
      
    • БАРСИНС

      Первое условие устанавливается на текущее количество циклов

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

      Статистика Первое условие периода N - установление


Больше