avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

Inventor Quantified Mylang 문서

만든 날짜: 2018-11-30 13:29:33, 업데이트 날짜: 2022-12-09 17:46:10
comments   24
hits   37709

[TOC]

My 언어는 맥 언어의 호환과 강화된 프로그래밍 거래 언어이다. FMZ 계량된 My 언어는 엄격한 문법 검사를 받는데, 예를 들어 JavaScript 언어 코드에 언어 강화를 임베디드할 때,%%연산자 뒤에 1개 이상의 빈 문자가 있으면 오류가 발생한다.

  • 기본 설명

    • ## 계약

    디지털 통화 계약

    디지털 통화 계약

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

    Inventor Quantified Mylang 문서

    • ## 변수

    변수 (variable) 는 컴퓨터의 메모리에서 데이터를 저장하기 위해 개방된 공간이다. 간단히 말해서 데이터를 저장하기 위한 공간이다.

    첫 번째 변수를 열기

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

    존재하다麦语言그 중,数据量간단한 차이점:

    1. 단일 값 데이터: 단 하나의 값, 예를 들어01’abc’
    2. 시퀀스 데이터: 단일 값 데이터의 집합으로 구성된 데이터 시퀀스, 예를 들어Close(폐쇄가격)Close포함된n1주기 종전 가격[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]

    변수 타입 에서 구분

    1. 문자열 타입: 필수''패키지, 문자열 유형은 직접 사용이 허용되지 않으며, 함수 출력이 필요 합니다.
    INFO(CLSOE>OPEN,'OK!');
    
    1. 숫자 유형: 정수, 플래잉 포인트 수 (?? 소수) 을 포함한다.
    // 整数
    int:=2;
    
    
    // 小数
    float:=3.1;
    
    1. 부르 타입, 1 ((진짜를 나타내는) 또는 0 ((거짓을 나타내는) 을 사용한다: 1, 0, 사실 또는 거짓. 예를 들어:A:=1>0;이 코드가 실행되면,A1 ≠ 1 입니다
    // 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数
    is_true:=Close>-999;
    
    1. 전역 변수
    VARIABLE:VALUE1:10;     // 声明一个全局变量,赋值为10,只执行一次。
    

    이 글은 “미국”에 관한 것입니다.

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

    처음INFO이 문장들은101이 모든 것은, 아마도,0그럼요? 그 이유는 재검토 시 초기 K선에는 100개의 뿌리가 있었고, 이미 100개의 K선을 달렸기 때문에 100번 겹쳐졌기 때문이다. 하드 디스크는 초기 K선 수에 따라 결정된다.

    • ### 명명 규칙

    대부분의 시스템에서, 변수 명칭은 시스템을 사용하여 문자을 보존하는 것을 허용하지 않습니다.CloseCᄒ 또한, 순수 숫자 또는 숫자 시작은 허용되지 않습니다. 긴 끝은 허용되지 않으며, 다른 시스템의 길이 제한은 다릅니다. 사실 중국어 분석의 효율성에 대해 주류 시스템과 얽매이지 않아도 됩니다. 麦语言 (麦语言) 는 중국어에 매우 친절합니다. 码 (码) 의 수많은 오래된 드라이버들은 다음과 같은 두 가지 명명 규격을 사용하는 것을 권장합니다.

     1. 중국어 이름
    
      // 优雅的输出
      五日均线:=MA(C,5);
    
     2. 영어 + 밑줄
    
      // 输出
      move_avg_5:=MA(C,5);
    

    만약 여러분이 영어를 좋아한다면, 가능한 한 여러분의 변수가 이해될 수 있도록 하세요.A1AAABBB…이런 이름 붙이는 방식 ᄒ 믿으세요, 며칠 후에 다시 코드를 검토하면 기억이 없어서 매우 고통받습니다 ᄒ 마찬가지로 코드를 다른 사람에게 내보낼 때 독자의 정신이 무너질 것입니다 ᄒ

    이제부터는 麦 (麦) 언어 (麦語) 를 적극적으로 받아들이세요!

    • ## 데이터 타입

    데이터 타입은 기본 개념으로, 프로그래밍에서 우리가 명확한 데이터 값을 변수에 부여할 때, 변수는 데이터 자체의 타입이 된다.

    • 1. 숫자 타입:
      1、2、3、1.1234、2.23456 ...
    
    • 2. 문자열 타입 ((str):
      '1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
    
    • 3. 일련의 데이터:
      一系列单值数据构成的数据集合
    
    • 4. 부울 타입 (boolean):

    사용1대표true0대표false

    예시

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

    지표 코드의 연산, 계산을 수행하는 데 사용되며, 간단히 말해서 연산에 참여하는 기호이다.

    • ### 부여 연산자

    어떤 변수에 값을 부여하는 데 사용됩니다.

     - 1. `:`
    
    
    `:`,는 함수를 나타내고, 도표 (~ 도표) 에 출력한다.
    
    
    ```
    Close1:Close;      // 将Close赋值给变量Close1,并且输出到图中
    ```
    
     - 2. `:=`
    
    
    `:=`,는 값을 부여하지만, 도표 (주도표, 부도표...) 에 내보내지 않으며, 상태 <unk> 표에도 표시되지 않는다.
    
    
    ```
    Close2:=Close;     // 将Close赋值给变量Close2
    ```
    
     - 3. `^^`
    
    
    `^^`두 개`^`기호는 값을 나타내며, 변수에 값을 부여하고, 도표에 출력된다.
    
    
    ```
    lastPrice^^C;
    ```
    
     - 4. `..`
    
    
    `..`두 개`.`기호는 값을 나타내며, 변수에 값을 부여하고 변수의 이름과 수치를 도표에 표시하지만 도표에 그림을 그리지 않습니다.
    
    
    ```
    openPrice..O
    ```
    
    • ### 관계 연산자

    관계 연산자는 쌍방향 연산자이며, 조건식에서 사용된다. 두 데이터 사이의 관계를 판단하기 위해 사용된다.

    반환 값: 부르 타입, 아닌true(1) 즉false(0)。

     - 1. 더 큰`>`
    
    
    ```
    // 将2>1的运算结果赋值给rv1变量,此时rv1=1
    rv1:=2>1;
    ```
    
     - 2. 미만`<`
    
    
    ```
    // 返回false,也就是0,因为2大于1
    rv3:=2<1;
    ```
    
     - 3. 더 크거나 같다는 것입니다.`>=`
    
    
    ```
    x:=Close;
    // 将收盘价大于等于10的运算的结果赋值给变量rv2
    // 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
    rv2:=Close>=10;
    ```
    
     - 4. 이보다 작은 것은`<=`
    
    
    ```
    此处省略
    ```
    
     - 5. 동일한`=`
    
    
    ```
    A:=O=C;     // 判断开盘价是不是等于收盘价。
    ```
    
     - 6. 이 값은`<>`
    
    
    ```
    1<>2       // 判断1是否不等于2,返回值为1(true)
    ```
    
    • ### 논리 연산자

    반환 값: 부르 타입, 아닌true(1) 즉false(0)。

     1. 논리적으로`&&`사용할 수 있습니다.`and`대안으로, 연결된 왼쪽과 오른쪽 양쪽이 동시에 만들어져야 한다.
    
      // 判断 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,成立
    
     2. 논리적으로`||`사용할 수 있습니다.`or`대안 또는 링크는 왼쪽과 오른쪽 양쪽에, 한쪽은 <true>로, 전체는 <true>로 설정된다.
    
      cond_a:=1>2;
      cond_b:=4>3;
      cond_c:=5>6;
      cond_a || cond_b or cond_c;    // 返回值为1,成立
    
     3. `()`연산자, 계산할 때 먼저 괄호 안에 있는 표현식을 계산한다.
    
      1>2 AND (2>3 OR 3<5)    // 运算结果为假
      1>2 AND 2>3 OR 3<5      // 运算结果为真
    
    • ### 계산기
      返回值:数值类型
    

    수학적 연산자 (arithmetic operator) 는 기본적인 수학적 연산 (arithmetic operator) 을 수행하는 기호이며, 네 가지 연산을 처리하는 기호이다.

     - **+**
    
    
    ```
    A:=1+1;      // 返回 2
    ```
    
     - **빼기**
    
    
    ```
    A:=2-1;      // 返回 1
    ```
    
     - **곱하기***
    
    
    ```
    A:=2*2;      // 返回 4
    ```
    
     - **제외 /**
    
    
    ```
    A:=4/2;      // 返回 2
    ```
    
    • 기능

      • ### 기능

    프로그래밍의 세계에서, 함수은 실제로 어떤 기능을 구현한 코드이다. 그리고 다른 코드 호출을 위해 사용할 수 있다. 일반적인 형태는 다음과 같다:

      function(param1,param2,...)
    
     - 구성:
    
    
    함수 이름 ((변수 1, 변수 2,...), 변수가 없거나 여러 개의 변수가 있을 수 있다. 예를 들어`MA(x,n);`대의원의 귀환`n`주기의 내부`x`△A의 간단한 이동 평균`MA()`함수입니다.`x`그리고`n`함수의 arguments 입니다.
    
    
    함수를 사용할 때 우리는 함수의 기본 정의를 알아야 합니다. 즉, 함수를 호출하면 어떤 데이터를 얻을 수 있는지 알아야 합니다. 일반적으로 함수는 모두 변수를 가지고 있으며, 변수를 입력할 때 입력된 데이터 타입이 일치하는지 확인해야 합니다. 현재 대부분의 IDE의 코드提示 기능은 매우 미완성입니다.`MA(x,n);`설명은 다음과 같습니다.
    
    
    ```
    返回简单移动平均
    用法:
    AVG:=MA(X,N): X的N日简单移动平均,算法(X1+X2+X3+...+Xn)/N,N支持变量
    ```
    
    
    이것은 초보자에게 매우 불친절합니다. 다음으로 우리는 함수를 철저히 해부하고, 함수를 빠르게 배우고, 사용하는 방법을 찾으려고 합니다.
    
    • ### 값을 반환합니다.

    함수를 빨리 배우기 위해서는 먼저 ‘돌아오는 값’이라는 개념을 이해해야 합니다.다시 돌아왔어요이름의 의미와 상관없이, “돌아오기”이다. 값은 “특정적인 수치”를 의미하며, 반환 값은: 얻을 수 있는 데이터이다.

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

    2차 함수의 두 번째 중요한 개념은 변수이며, 다른 변수를 입력하면 다른 반환 값을 얻을 수 있다.

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

    위의 변수ma5ma10첫 번째 변수X둘 다C(폐쇄가격), 사실C또한 함수 ((返回開盘至今的收盘价序列) 라고도 할 수 있지만, 이 함수는 arguments를 가지고 있지 않습니다.MA()함수, 우리는 몇 일간의 이동 평균을 얻을 수 있습니다.

    • 어떻게 배울 수 있을까요?

      • 1. 먼저, 함수의 역할, 즉 함수가 우리에게 어떤 데이터를 반환하는지 이해해야 합니다.
      • 2. 그리고 마지막으로, 반환값의 종류를 알아봅시다. 왜냐하면, 우리가 함수를 사용하는 이유는 반환값을 얻기 위해서이기 때문입니다.
      • 3. 두 번째, 우리는 변수의 데이터 타입을 알아야 합니다.MA(x,n)만약 변수를 모르면,xn이 데이터 타입은 제대로 반환할 수 없습니다.

    다음의 함수 소개와 사용은 위의 3가지 원칙을 따릅니다.

    • 언어 강화

      • 麦语言그리고JavaScript언어 혼합 프로그래밍
      %%
      // 这里面可以调用发明者量化的任何API 
      scope.TEST = function(obj) {
          return obj.val * 100;
      }
      %%
      收盘价:C;
      收盘价放大100倍:TEST(C);
      上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值
    
     - `scope`대상
    
    
    `scope`객체는 속성을 추가하고 그 속성에 익명 함수를 부여할 수 있으며, 맥 언어 코드 부분에서 이 속성을 참조하는 익명 함수를 호출할 수 있다.
    
     - `scope.getRefs(obj)`기능
    
    
    존재하다`JavaScript`코드 블록에서 호출`scope.getRefs(obj)`함수는 입력된 것을 반환합니다.`obj`대상의 데이터
    
    
    아래로`%%  %%`상징으로 포장된`JavaScript`이 코드는 Mac 언어 코드에 의해`TEST(C)`함수 호출에 입력된`C`종결 가격.
    `scope.getRefs`이 함수는 이 K선 데이터의 모든 마감값을 반환합니다.`throw "stop"`중단 절차. 그래서 변수`arr`첫 번째 바의 종료값만 포함됩니다. 삭제하려고 시도할 수 있습니다.`throw "stop"`실행할 것입니다.`JavaScript`코드의 마지막`return`모든 매출액 데이터를 반환합니다.
    
    
    ```
    %%
    scope.TEST = function(obj){
        var arr = scope.getRefs(obj)
        Log("arr:", arr)
        throw "stop"
        return
    }
    %%
    TEST(C);
    ```
    
     - scope.bars
    
    
    존재하다`JavaScript`모든 K선bar들을 볼 수 있습니다.
    
    
    `TEST`함수는 1이 음선이고 0이 양선이라는 값을 반환한다.
    
    
    ```
    %%
    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
    
    
    존재하다`JavaScript`이 코드 블록에서, 현재 bar에 접속하세요.
    
    
    평균적으로 높은 가격과 낮은 가격의 수를 계산한다.
    
    
    ```
    %%
    scope.TEST = function(){
        var bar = scope.bar
        var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4
        return ret
    }
    %%
    avg^^TEST;
    ```
    
     - scope.depth
    
    
    시장의 깊이 데이터에 액세스하십시오.
    
    
    ```
    %%
    scope.TEST = function(){
        Log(scope.depth)
        throw "stop"             // 打印一次深度数据后就抛出异常,暂停
    }
    %%
    TEST;
    ```
    
     - scope.symbol
    
    
    현재 거래하는 쌍의 이름 문자열을 가져옵니다.
    
    
    ```
    %%
    scope.TEST = function(){
        Log(scope.symbol)
        throw "stop"
    }
    %%
    TEST;
    ```
    
     - scope.barPos
    
    
    K선 Bar의 위치를 얻는다.
    
    
    ```
    %%
    scope.TEST = function(){
        Log(scope.barPos)
        throw "stop"
    }
    %%
    TEST;
    ```
    
     - scope.get_locals('name')
    
    
    이 함수는 맥 언어 코드 부분에서 변수를 가져옵니다.
    
    
    ```
    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
    
    
    `canTrade`속성 표시 현재 거래 가능한지 (현재의 Bar가 마지막 라이트인지)
    
    
    예를 들어, 전략이 거래할 수 있는 상태에서 시장을 인쇄할 때
    
    
    ```
    %%
    scope.LOGTICKER = function() {
        if(exchange.IO("status") && scope.canTrade){
            var ticker = exchange.GetTicker();
            if(ticker){
                Log("ticker:", ticker);
                return ticker.Last;
            }
        }
    }
    %%
    LASTPRICE..LOGTICKER;
    ```
    
    • 응용 사례:
      %%
      scope.TEST = function(a){
          if (a.val) {
              throw "stop"
          }    
      }
      %%
      O>C,BK;
      C>O,SP;
      TEST(ISLASTSP);
    

    포지션을 열고, 포지션을 풀고, 전략을 멈춘다.

    • ## 다주기 참조

    시스템은 자동으로 적절한 하위 K선 주기를 선택하고, 이 하위 K선 주기 데이터를 사용하여 모든 참조된 K선 데이터를 합성하여 데이터의 정확성을 보장한다.

    • 사용:#EXPORT 公式名 ... #END공식을 생성한다. 단지 다른 주기 데이터를 얻기 위해 공식을 계산하지 않으면 공식을 쓸 수 있다.

    공허 공식은:

      #EXPORT TEST 
      NOP;
      #END           // 结束
    
    • 사용:#IMPORT [MIN,周期,公式名] AS 变量值참조 공식 ᅳ 설정된 주기별 각종 데이터를 얻는다 (계시 가격, 개시 가격 등, 변수 값으로 얻는다) ᅳ

    IMPORT명령에서MIN그 의미는분수ᄋ 발명자의 양적 플랫폼인 맥 언어,IMPORT명령에서만 지원MIN레벨: 이제 비표준 주기를 지원합니다. 예를 들어 사용할 수 있습니다.#IMPORT [MIN,240,TEST] AS VAR240240분 주기 ((4시간) K선 등의 데이터를 가져옵니다.

    코드 예제:

      // 本代码演示如何引用不同周期的公式在同一代码里
      // #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;
    
    • 다중주기 데이터를 참조할 때 사용REFLLVHHV예를 들어, 명령어가 데이터를 참조하는 경우
      (*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;
    

    비교MIN5.REF1C그리고REF(MIN5.C, 1)다른 나라들은 다음과 같은 차이를 볼 수 있습니다: MIN5.REF1C5분 K선 데이터 현재 시점의 역수 제2 BAR의 클로즈값이다. REF(MIN5.C, 1)현재 모델의 K선 주기 ((( 위의 코드 회귀 주기가 1분으로 설정되어 있습니다.period: 1m), 현재 순간의 역수 제2 BAR가 있는 5분 주기 종전 가격. 이 두 가지 정의는 다른데, 필요에 따라 사용할 수 있다.

    • 패턴 설명

      • ### 한평평 신호 필터링 모델

    이 모델은AUTOFILTER함수는 제어하고 일평평한 신호 필터링을 구현하기 위해, 여러 개의 저장소 신호가 모두 조건을 충족하면, 첫 번째 신호를 유효 신호로 가져다가, 후의 k 선의 동일한 신호는 필터링됩니다.

    필터 모델 지원 명령어: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, 지원하지 않는 BK ((5) 등 시계 번호를 가진 명령어

    예를 들어:

      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线触发一次信号。
    
    • ### 부수적 모형

    모델에 쓰이지 않음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);
    

    사용TRADE\_AGAIN 같은 명령으로 여러 개의 신호를 연속적으로 발산할 수 있다.

      理解:
      以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。
    
    • ### 하나의 K선 하나의 신호의 모델

    K선 종료 여부와 상관없이, 신호를 계산하여 실시간으로 주문을 진행한다. K선 종료 시 K선 종료 시의 신호 방향이 k선 종료 시의 신호 방향과 일치하지 않는 경우 자동으로 동시적으로 포지션을 유지한다.

    예를 들어:

      MA1:MA(CLOSE,5);
      MA2:MA(CLOSE,10);
      CROSSUP(MA1,MA2),BPK;    // 5周期均线上穿10周期均线做多。
      CROSSDOWN(MA1,MA2),SPK;  // 5周期均线下穿10周期均线做空。
      AUTOFILTER;
    
    • ### 하나의 K선에서 여러 신호를 가진 모델

    모델 사용multsigK 선의 여러 신호를 제어하고 구현하기 위해

    k 라인이 다 떨어지더라도, 신호를 계산하여 실시간으로 주문한다.

    신호는 점검되지 않으며, 신호가 사라지는 경우가 없으며, 신호 방향은 포지션 방향과 항상 일치한다.

    한 K선에서 여러 개의 신호 조건이 충족되면 반복적으로 여러 번 실행할 수 있다.

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

    MULTSIG하나의 K선 내에서 여러 개의 명령줄을 실행할 수 있다. 명령줄은 한 번만 신호를 냅니다.

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

    그는 덧붙였습니다. 1 , 플러스 하락 포지션 모델, k 라인 한 신호의 두 가지 방법: 종식 가격 주문, 지시 가격 주문, 모두 지원 ᄂ 2 , 더하기 저축 모형, 또한 k 라인을 여러 번 신호 주문을 지원한다. 이 모델은,multsig함수, k 선에 여러 번 가저를 추가하거나, 여러 번 가저를 줄이는 것을 구현한다.

    • ## 실행 모드

    Inventor Quantified Mylang 문서

    • ### 종가 모델

    클로즈 가격 모델은 현재 BAR가 끝나기 전에 모델을 실행하고, 하위 BAR가 시작될 때 거래를 실행한다.

    • ### 실시간 가격 모델

    실시간 가격 모델은 가격 변화마다 한 번씩 모델을 실행하고, 신호가 있을 때 즉시 거래하는 것을 의미한다. 실시간 가격 모델은 전날의 신호를 무시한다 (전날의 신호는 전날에 즉시 실행된다), 실시간 가격 모델은 현재 상황 데이터를 보고 신호를 유발하는지 판단한다.

    • 그래프로 보여

      • ### 메인 그래프 부가 지표

    연산자 사용^^, 매개 변수에 값이 부여되는 동시에, 설정 지표가 메인 그래프에 표시된다.

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

    Inventor Quantified Mylang 문서

    • ### 부그라프 부가 지표

    연산자 사용:, 변수에 값을 부여하는 동시에, 설정 지표는 부그라마에 나타납니다.

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

    Inventor Quantified Mylang 문서

    메인그램이나 서브그램에 표시되지 않으려면 “..” 연산자를 사용하십시오.

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

    Inventor Quantified Mylang 문서

    사용할 수 있습니다DOTCOLORREDMac 언어에 익숙한 사용자들의 습관에 맞는 라인 타입, 색상 등으로 설정한다.

    • ## 자주 묻는 질문

    지표 작성 과정에서 일반적으로 발견되는 것을 소개합니다질문, 글쓰기 과정에서 주의해야 할 점들 ((지속적인 보완) )

    • 점수 주의;결론:

    • 주의: 시스템 키워드는 변수 선언으로 사용할 수 없습니다.

    • 문자열 사용에 주의하세요단 기호,예를 들어:'开仓'이 문자열은

    • 참고

    코멘트

     - `// 注释内容`(입입법에서 영어로 입력할 수 있다) 는 코드가 실행 중에 컴파일되지 않는 것을 의미한다. 즉 실행되지 않는다.`//`다음의 내용은 보통 우리가 코드의 의미를 표기하는 데 사용되며, 코드가 재검토될 때, 빠르게 이해, 기억할 수 있다.
    
     - `{ 注释内容 }`이 글은 <unk>에 대한 것입니다.
    
    
    ```
    A:=MA(C,10);
    {上一行代码是计算均线。}
    ```
    
     - `(* 注释内容 *)`이 글은 <unk>에 대한 것입니다.
    
    
    ```
    A:=MA(C,10);
    (*上一行代码是计算均线。*)
    ```
    
    • ### 입력 방법

    코드 작성 시, 입력법 중 영어로 전환하기 때문에 종종 기호 오류가 발생한다. 일반적인 기호는 다음과 같다::끝자락;코마,괄호()이 문자는 중국어와 영어의 다른 문자로 되어있기 때문에 주의해야 합니다.

    Google, Baidu, Bing을 이용하면 한 번 클릭하면shift중국어, 영어, 중국어, 중국어, 중국어

    • 논리 오류

      1. 최소, 최소, 최소의 관계 연산자>=
      2. 최대, 최대, 미치지 않는: 관계 연산자<=
    • 정책 시작 동기화

    선물 전략에서, 전략 로봇이 시작되기 전에 수동으로 포지션이 열렸다면, 로봇이 시작될 때 포지션 정보를 검출하여 실제 포지션 상태와 동기화한다. 그리고 우리는 이것을 우리의 전략에 사용할 수 있습니다.SPBPCLOSEOUT이명박 대통령

      %%
      if (!scope.init) {
          var ticker = exchange.GetTicker();
          exchange.Buy(ticker.Sell+10, 1);
          scope.init = true;
      }
      %%
      C>0, CLOSEOUT;
    
    • ### 양방향 포지션을 지지하지 않는다.

    맥 언어는 동일한 계약을 지원하지 않으며 동시에 여러 개의 빈 포지션을 보유하고 있습니다.

  • K선 데이터 참조

    • ## OPEN

    K선 도표의 오프닝 가격.

    오픈 가격

    함수:OPEN, 줄여서 O

    변수: 없음

    설명: “그 사이클”의 개시 가격으로 돌아갑니다.

    일련의 데이터

    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简写)。
    
    • ## HIGH

    K 라인 지도를 얻을 수 있는 최고 가격.

    최고 가격

    함수:HIGH, 약칭 H

    변수: 없음

    설명: “주기”의 최고 가격으로 돌아갑니다.

    일련의 데이터

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

    K 라인 지도를 얻을 수 있는 최저 가격.

    가장 낮은 가격

    함수: LOW, 줄여서 L

    변수: 없음

    설명: “주기”의 최저값으로 돌아갑니다.

    일련의 데이터

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

    K선 도표의 매각 가격.

    마감 가격

    함수: CLOSE, 약자 C

    변수: 없음

    설명: “주기” 종점 가격으로 돌아갑니다.

    일련의 데이터

    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

    K 라인 그래프의 트랜잭션 수

    거래량

    함수: VOL, 줄여서 V

    변수: 없음

    설명: “그 주기”의 거래량으로 돌아갑니다.

    일련의 데이터

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

    현재 미래에셋 (계약) 시장의 총 보유량을 다.

    OpenInterest:OPI;
    
    • ## REF

    다음 문서를 참조하십시오.

    引用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线的收盘价。
    
    • ## UNIT

    데이터 계약의 거래 단위

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

    디지털 화폐 현금

    UNIT 값은 1 .

    암호화폐 선물

    UNIT 값은 계약 통화와 관련이 있습니다.

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

    데이터 계약의 최소 변동 가격.

    取数据合约的最小变动价位。
    用法:
    MINPRICE; 取加载数据合约的最小变动价位。
    
    • ## MINPRICE1

    거래 계약의 최소 변동 가격.

    取交易合约的最小变动价位。
    用法:
    MINPRICE1; 取交易合约的最小变动价位。
    
  • 시간 함수

    • ## BARPOS

    K 선의 위치를

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

    DAYBARPOS는 K선 BAR이 그날의 K선 BAR이다.

    • ## PERIOD

    주기값은 분수입니다.

    1, 3, 5, 15, 30, 60, 1440
    
    • ## DATE

    날짜함수 DATE, 이 주기에서 1900년 이후의 연월일을 얻는다.

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

    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;
    
    • ## YEAR

    연도

    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);
    
    • ## MONTH

    달을 습니다.

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

    어떤 주기의 일수를 얻는다.

    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
    
    • ## HOUR

    시간

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

    1분

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

    몇 주가 걸렸는지

    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;
    
  • 논리 판단 함수

    • ## BARSTATUS

    현재 주기의 위치 상태로 돌아갑니다.

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

    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日均线之间
    
    • ## BARSLASTCOUNT

    BARSLASTCOUNT(COND) 현재 주기에서 앞으로 계산하여, 통계적으로 연속적으로 조건을 만족하는 주기 수를 다.

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

    크로스 함수

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

    아래로

    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;表达同等意义
    
    • ## CROSSUP

    위를 가로질러

    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;表达同等意义
    
    • ## EVERY

    계속 만족하는지 판단하는 것.

    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;表达同等意义
    
    • ## EXIST

    만족 여부를 판단하십시오.

    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
    
    • ## IF

    조건 함수

    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死叉作为开空仓条件
    
    • ## IFELSE

    조건 함수

    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死叉作为开空仓条件
    
    • ## ISCONTRACT

    현재 지정된 계약인지.

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

    정규 표현식을 지원한다.

    계약에 대한 판단

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

    거래소 이름을 판단하는 방법

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

    음영.

    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; 表达同等意义
    
    • ## ISEQUAL

    평판.

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

    마지막 K선인지 판단하라.

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

    공평한 판단.

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

    태양빛

    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
                             // 表达同等意义
    
    • ## LAST

    판단 함수

    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
    
    • ## LONGCROSS

    크로스 함수를 유지한다.

    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日均线
    
    • ## NOT

    아니죠.

    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

    null을 반환한다.

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

    가치 평가

    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,说明当天不满足跳空高开条件
    
  • 순환 실행 함수

    • ## LOOP2

    순환 조건 함수

    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;
    
  • 금융 통계 함수

    • ## BARSCOUNT

    첫 번째 유효주기부터 현재의 주기 수까지

    ”` BARSCOUNT(COND)第一个有效周期到当前的周期数。

    注: 1、返回值为COND从第一个有效周期开始计算,到现在为止的周期数。 2、条件第一次成立的当根k线上BARSCOUNT(COND)的返回值为0。

    例: BARSCOUNT(MA(C,