4
tập trung vào
1076
Người theo dõi

Tài liệu về Mylang Quantified của Inventor

Được tạo ra trong: 2018-11-30 13:29:33, cập nhật trên: 2022-12-09 17:46:10
comments   24
hits   35602

[TOC]

Ngôn ngữ My là một ngôn ngữ giao dịch lập trình tương thích và tăng cường với ngôn ngữ Mac. Ngôn ngữ My được định lượng FMZ sẽ được kiểm tra ngữ pháp nghiêm ngặt, ví dụ khi sử dụng ngôn ngữ tăng cường để nhúng mã ngôn ngữ JavaScript, trong%%Nếu có nhiều hơn một ký tự trống sau khi thực hiện thao tác sẽ gây ra lỗi.

  • Hướng dẫn cơ bản

    • ## hợp đồng

    Hợp đồng tiền kỹ thuật số

    Hợp đồng tiền kỹ thuật số

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

    Tài liệu về Mylang Quantified của Inventor

    • ## Biến số

    Một biến là một phần trong bộ nhớ của máy tính được mở ra để lưu trữ dữ liệu, đơn giản là để lưu trữ dữ liệu.

    Khởi động biến số đầu tiên

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

    hiện hữu麦语言Trong, từ数据量Một sự phân biệt đơn giản:

    1. Dữ liệu đơn giá trị: chỉ có một giá trị, ví dụ01’abc’
    2. Dữ liệu chuỗi: một chuỗi dữ liệu bao gồm một loạt dữ liệu đơn giá trị, chẳng hạn nhưClose(Giá đóng cửa), ở đâyCloseBao gồm:nGiá đóng cửa của một chu kỳ[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]

    Phân biệt từ phấn thay đổi loại phấn

    1. Loại chuỗi: bắt buộc''Gói, loại chuỗi không được phép sử dụng trực tiếp, cần phải xuất hàm phối hợp vào dạng xem.
    INFO(CLSOE>OPEN,'OK!');
    
    1. Loại số: bao gồm cả số nguyên, số điểm nổi và số nhỏ.
    // 整数
    int:=2;
    
    
    // 小数
    float:=3.1;
    
    1. Loại Boolean, sử dụng 1 (true) hoặc 0 (false): 1, 0, true hoặc false. Ví dụ:A:=1>0;Sau khi thực hiện mã này, chúng ta sẽ thấy rằng:AGiá trị của 1 ≠ 1
    // 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数
    is_true:=Close>-999;
    
    1. Biến toàn cục
    VARIABLE:VALUE1:10;     // 声明一个全局变量,赋值为10,只执行一次。
    

    Hãy chú ý khi phản hồi:

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

    Ban đầuINFOCâu nói được in là:101Có thể có nghi ngờ, không phải là ban đầu.0Vậy sao? Nguyên nhân là khi kiểm tra lại, đường K ban đầu có 100 đường, đã chạy qua 100 đường K, tích lũy 100 lần. Đĩa cứng được xác định dựa trên số lượng dây K ban đầu.

    • ### Quy tắc đặt tên

    Trong hầu hết các hệ thống, thay đổi tên không cho phép sử dụng các phím hệ thống để giữ các ký tự (như tên biến tích hợp, tên hàm).CloseCNgoài ra, không cho phép số nguyên hoặc số bắt đầu. Cuối không cho phép dài, giới hạn độ dài khác nhau trong các hệ thống khác nhau. Thực tế, bạn không cần phải băn khoăn về hiệu quả phân tích của tiếng Trung của hệ thống chính thống, tin rằng ngôn ngữ Quế Quế rất thân thiện với tiếng Trung.

     1. Tên tiếng Trung Quốc
    
      // 优雅的输出
      五日均线:=MA(C,5);
    
     2. Tiếng Anh + gạch dưới
    
      // 输出
      move_avg_5:=MA(C,5);
    

    Nếu bạn là người nói tiếng Anh, hãy cố gắng làm cho người khác hiểu được ý nghĩa của bạn.A1AAABBB… cách đặt tên như thế này. Tôi tin rằng một ngày nào đó bạn sẽ phải đau khổ vì mất trí nhớ khi bạn xem lại mã chỉ số của mình. Tương tự như vậy, tâm lý của người đọc chắc chắn sẽ sụp đổ khi bạn xuất mã cho người khác.

    Từ bây giờ, hãy nắm lấy ngôn ngữ này một cách đầy yêu thương và hy vọng rằng nó sẽ trở thành một công cụ mạnh mẽ để bạn phân tích và đưa ra quyết định.

    • ## Loại dữ liệu

    Loại dữ liệu là một khái niệm cơ bản, trong lập trình khi chúng ta gán một giá trị dữ liệu rõ ràng cho một biến, biến này cũng trở thành loại của chính dữ liệu.

    • 1. Loại giá trị:
      1、2、3、1.1234、2.23456 ...
    
    • 2. Loại chuỗi ((str):
      '1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
    
    • 3. Dữ liệu chuỗi:
      一系列单值数据构成的数据集合
    
    • 4. Loại Boolean:

    Sử dụng1Đại diệntrue0Đại diệnfalse

    Ví dụ

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

    Nó được sử dụng để thực hiện các hoạt động, tính toán của mã chỉ số, đơn giản là ký hiệu tham gia vào hoạt động.

    • ### Điều toán định giá

    Nó được sử dụng để gán giá trị cho một biến

     - 1. `:`
    
    
    `:`, đại diện cho định giá và xuất ra trong đồ thị (hình phụ).
    
    
    ```
    Close1:Close;      // 将Close赋值给变量Close1,并且输出到图中
    ```
    
     - 2. `:=`
    
    
    `:=`, đại diện cho định giá, nhưng không được xuất vào đồ họa (bảng chính, đồ họa phụ ...) và không được hiển thị trong bảng trạng thái.
    
    
    ```
    Close2:=Close;     // 将Close赋值给变量Close2
    ```
    
     - 3. `^^`
    
    
    `^^`Hai.`^`Biểu tượng đại diện cho định giá, định giá cho các biến và xuất ra trong biểu đồ (bản đồ chính).
    
    
    ```
    lastPrice^^C;
    ```
    
     - 4. `..`
    
    
    `..`Hai.`.`Biểu tượng đại diện cho định giá, định giá cho biến và hiển thị tên, giá trị của biến trong biểu đồ, nhưng không vẽ biểu đồ vào biểu đồ (bản đồ chính, biểu đồ phụ ...)
    
    
    ```
    openPrice..O
    ```
    
    • ### Tính toán tử quan hệ

    Các toán tử quan hệ là các toán tử nhị phân, được sử dụng trong các biểu thức điều kiện. Nó được sử dụng để đánh giá mối quan hệ giữa hai dữ liệu.

    Trả giá trị: kiểu Boolean, không phảitrue(1)false(0)。

     - 1. Hơn`>`
    
    
    ```
    // 将2>1的运算结果赋值给rv1变量,此时rv1=1
    rv1:=2>1;
    ```
    
     - 2. Ít hơn`<`
    
    
    ```
    // 返回false,也就是0,因为2大于1
    rv3:=2<1;
    ```
    
     - 3. Lớn hơn bằng`>=`
    
    
    ```
    x:=Close;
    // 将收盘价大于等于10的运算的结果赋值给变量rv2
    // 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
    rv2:=Close>=10;
    ```
    
     - 4. nhỏ hơn bằng`<=`
    
    
    ```
    此处省略
    ```
    
     - 5. bình đẳng`=`
    
    
    ```
    A:=O=C;     // 判断开盘价是不是等于收盘价。
    ```
    
     - 6. Không bằng`<>`
    
    
    ```
    1<>2       // 判断1是否不等于2,返回值为1(true)
    ```
    
    • ### Các toán tử logic

    Trả giá trị: kiểu Boolean, không phảitrue(1)false(0)。

     1. logic và`&&`có thể sử dụng`and`Thay vào đó, nó phải được tạo ra đồng thời với cả hai bên trái và trái của kết nối.
    
      // 判断 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. logic hay`||`có thể sử dụng`or`Thay thế hoặc liên kết ở cả hai bên, một bên được thành lập ((true) và toàn bộ được thành lập ((true))
    
      cond_a:=1>2;
      cond_b:=4>3;
      cond_c:=5>6;
      cond_a || cond_b or cond_c;    // 返回值为1,成立
    
     3. `()`Điều toán viên, tính toán trước biểu thức trong vòng tròn.
    
      1>2 AND (2>3 OR 3<5)    // 运算结果为假
      1>2 AND 2>3 OR 3<5      // 运算结果为真
    
    • ### Máy tính toán số
      返回值:数值类型
    

    Các toán tử số học là các ký hiệu hoạt động số học. Đây là các ký hiệu để thực hiện các hoạt động số học cơ bản, tức là các ký hiệu được sử dụng để xử lý bốn hoạt động.

     - **+**
    
    
    ```
    A:=1+1;      // 返回 2
    ```
    
     - **Giảm**
    
    
    ```
    A:=2-1;      // 返回 1
    ```
    
     - **Tăng***
    
    
    ```
    A:=2*2;      // 返回 4
    ```
    
     - **Trừ /**
    
    
    ```
    A:=4/2;      // 返回 2
    ```
    
    • chức năng

      • ### chức năng

    Trong thế giới lập trình, hàm thực sự là một đoạn mã thực hiện một chức năng nhất định. Và có thể được gọi cho các mã khác, dạng chung như sau:

      function(param1,param2,...)
    
     - Thành phần:
    
    
    Tên hàm ((cơ số 1, cơ số 2,...), có thể không có tham số hoặc có nhiều tham số. Ví dụ:`MA(x,n);`Đại diện trở về`n`Trong chu kỳ`x`Trong đó, trung bình di chuyển đơn giản`MA()`Đó là một hàm.`x`Và`n`Đó là tham số của hàm.
    
    
    Khi sử dụng hàm, chúng ta cần phải hiểu về định nghĩa cơ bản của hàm, tức là dữ liệu nào có thể được lấy khi gọi hàm đó. Thông thường, hàm đều có tham số, và khi chúng ta truyền tham số, chúng ta cần đảm bảo loại dữ liệu được truyền phù hợp.`MA(x,n);`Nó được giải thích là:
    
    
    ```
    返回简单移动平均
    用法:
    AVG:=MA(X,N): X的N日简单移动平均,算法(X1+X2+X3+...+Xn)/N,N支持变量
    ```
    
    
    Điều này không thân thiện với người mới bắt đầu. Tiếp theo, chúng ta phân tích các hàm một cách kỹ lưỡng, và cố gắng tìm ra một cách để học và sử dụng các hàm một cách nhanh chóng.
    
    • ### Trả giá trị

    Để học các hàm một cách nhanh chóng, trước tiên chúng ta cần hiểu một khái niệm gọi là “giá trị trả về”.Trở lạiNếu giá trị là “giá trị cụ thể”, thì giá trị trả về có nghĩa là: dữ liệu có thể lấy được.

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

    Khái niệm quan trọng thứ hai của hàm thứ hai là các tham số, truyền vào các tham số khác nhau có thể nhận được các giá trị trả về khác nhau.

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

    Các biến trênma5ma10Các tham số đầu tiên củaXCả haiC(Giá đóng cửa), thực tếCMột hàm ((trả về chuỗi giá đóng cửa từ ngày mở cửa đến nay), nhưng nó không có tham số. Các tham số thứ hai là 5, 10 được sử dụng để nói rằngMA()Chức năng, chúng ta sẽ lấy trung bình di chuyển của vài ngày giá đóng cửa, thông qua tham số, chức năng được sử dụng linh hoạt hơn.

    • Làm thế nào để học

      • 1. Trước tiên, chúng ta cần hiểu được chức năng là gì, nghĩa là chúng ta có thể nhận được dữ liệu nào từ chức năng đó.
      • 2. Và cuối cùng, chúng ta sẽ tìm hiểu về kiểu trả về, bởi vì chúng ta sử dụng hàm để trả về các giá trị.
      • 3. Tiếp theo, chúng ta cần biết loại dữ liệu của tham số.MA(x,n)Nếu bạn không biết tham số ,xnCác loại dữ liệu không thể trả về giá trị chính xác.

    Các hàm sau đây được giới thiệu và sử dụng theo 3 nguyên tắc trên.

    • Tăng cường ngôn ngữ

      • 麦语言JavaScriptLập trình hỗn hợp ngôn ngữ
      %%
      // 这里面可以调用发明者量化的任何API 
      scope.TEST = function(obj) {
          return obj.val * 100;
      }
      %%
      收盘价:C;
      收盘价放大100倍:TEST(C);
      上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值
    
     - `scope`Đối tượng
    
    
    `scope`Đối tượng có thể thêm thuộc tính và gán hàm ẩn danh cho thuộc tính, trong phần mã của ngôn ngữ Mac có thể gọi hàm ẩn danh được trích dẫn thuộc tính này.
    
     - `scope.getRefs(obj)`chức năng
    
    
    hiện hữu`JavaScript`Trong khối mã, gọi`scope.getRefs(obj)`Chức năng trả về nhập`obj`Dữ liệu đối tượng.
    
    
    Dưới đây`%%  %%`Gói biểu tượng`JavaScript`Có thể lấy từ mã của Mac.`TEST(C)`Các hàm được gọi là`C`Giá đóng cửa.
    `scope.getRefs`Chức năng này sẽ trả về tất cả các giá trị đóng cửa của dữ liệu K.`throw "stop"`Quá trình ngưng. Vì vậy biến`arr`Chỉ bao gồm giá đóng cửa của Bar đầu tiên. Bạn có thể thử xóa`throw "stop"`sẽ thực hiện.`JavaScript`Mã cuối cùng`return`, trả về tất cả các dữ liệu về giá bán tháo.
    
    
    ```
    %%
    scope.TEST = function(obj){
        var arr = scope.getRefs(obj)
        Log("arr:", arr)
        throw "stop"
        return
    }
    %%
    TEST(C);
    ```
    
     - scope.bars
    
    
    hiện hữu`JavaScript`Truy cập tất cả các dòng Kbar trong khối mã.
    
    
    `TEST`Hàm trả về một giá trị: 1 là âm và 0 là dương.
    
    
    ```
    %%
    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
    
    
    hiện hữu`JavaScript`Trong khối mã, truy cập vào bar hiện tại.
    
    
    Tính trung bình của giá cao và giá thấp.
    
    
    ```
    %%
    scope.TEST = function(){
        var bar = scope.bar
        var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4
        return ret
    }
    %%
    avg^^TEST;
    ```
    
     - scope.depth
    
    
    Truy cập dữ liệu về chiều sâu thị trường ((đơn đặt hàng thưa thớt) <unk>
    
    
    ```
    %%
    scope.TEST = function(){
        Log(scope.depth)
        throw "stop"             // 打印一次深度数据后就抛出异常,暂停
    }
    %%
    TEST;
    ```
    
     - scope.symbol
    
    
    Lấy chuỗi tên cặp giao dịch hiện tại.
    
    
    ```
    %%
    scope.TEST = function(){
        Log(scope.symbol)
        throw "stop"
    }
    %%
    TEST;
    ```
    
     - scope.barPos
    
    
    Lấy vị trí K-line Bar.
    
    
    ```
    %%
    scope.TEST = function(){
        Log(scope.barPos)
        throw "stop"
    }
    %%
    TEST;
    ```
    
     - scope.get_locals('name')
    
    
    Chức năng này được sử dụng để lấy các biến trong phần mã của ngôn ngữ Mac.
    
    
    ```
    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`Các thuộc tính đánh dấu hiện tại có thể giao dịch được hay không ((Bar hiện tại có phải là gốc cuối cùng không))
    
    
    Ví dụ như đánh giá khi chiến lược ở trạng thái có thể giao dịch đặt hàng in dữ liệu thị trường
    
    
    ```
    %%
    scope.LOGTICKER = function() {
        if(exchange.IO("status") && scope.canTrade){
            var ticker = exchange.GetTicker();
            if(ticker){
                Log("ticker:", ticker);
                return ticker.Last;
            }
        }
    }
    %%
    LASTPRICE..LOGTICKER;
    ```
    
    • Ví dụ:
      %%
      scope.TEST = function(a){
          if (a.val) {
              throw "stop"
          }    
      }
      %%
      O>C,BK;
      C>O,SP;
      TEST(ISLASTSP);
    

    Bắt đầu một vị thế, sau đó dừng lại.

    • ## Ghi chú đa chu kỳ

    Hệ thống sẽ tự động chọn một chu kỳ K-line phù hợp và sử dụng dữ liệu chu kỳ K-line dưới này để tổng hợp tất cả dữ liệu K-line được tham chiếu, đảm bảo độ chính xác của dữ liệu.

    • Sử dụng:#EXPORT 公式名 ... #ENDTạo một công thức. Nếu bạn không tính toán công thức chỉ để có được dữ liệu của các chu kỳ khác nhau, bạn cũng có thể viết công thức trống.

    Công thức không là:

      #EXPORT TEST 
      NOP;
      #END           // 结束
    
    • Sử dụng:#IMPORT [MIN,周期,公式名] AS 变量值Hướng dẫn công thức. Lấy các dữ liệu của chu kỳ đã đặt ((giá đóng cửa, giá mở cửa, v.v., lấy thông qua giá trị biến)

    IMPORTTrong lệnhMINNghĩa làTiêu chuẩn phútCác nhà phát minh của nền tảng số lượng hóa Mac,IMPORTChỉ hỗ trợ trong lệnhMINCấp độ ◦ Bây giờ hỗ trợ chu kỳ không chuẩn, ví dụ như có thể sử dụng#IMPORT [MIN,240,TEST] AS VAR240Nhập dữ liệu như K-line trong chu kỳ 240 phút (((4 giờ)).

    Ví dụ mã:

      // 本代码演示如何引用不同周期的公式在同一代码里
      // #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;
    
    • Sử dụng khi tham chiếu dữ liệu đa chu kỳREFLLVHHVCần chú ý đến các lệnh tham chiếu dữ liệu
      (*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;
    

    So sánhMIN5.REF1CREF(MIN5.C, 1)Những sự khác biệt được tìm thấy ở: MIN5.REF1Clà giá trị đóng cửa của BAR thứ hai tính ngược thời điểm hiện tại của dữ liệu đường K 5 phút. REF(MIN5.C, 1)là chu kỳ K-đường của mô hình hiện tại ((chỉ định chu kỳ phản hồi của mã số trên là 1 phút, tức làperiod: 1m), giá đóng cửa của chu kỳ 5 phút, nơi BAR thứ hai tính ngược thời điểm hiện tại. Hai định nghĩa này khác nhau và có thể được sử dụng tùy theo nhu cầu.

    • Mô hình

      • ### Mô hình lọc tín hiệu phẳng

    Mô hình này được viết bằngAUTOFILTERChức năng này được sử dụng để kiểm soát và thực hiện lọc tín hiệu một cách phẳng, khi có nhiều tín hiệu mở kho đều đáp ứng điều kiện, lấy tín hiệu đầu tiên làm tín hiệu có hiệu lực, tín hiệu tương tự trên đường k sau đó sẽ được lọc.

    Các lệnh được hỗ trợ bởi mô hình lọc: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, không hỗ trợ BK ((5) và các lệnh có số đồng hồ khác.

    Ví dụ:

      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线触发一次信号。
    
    • ### Mô hình tăng giảm

    Không được ghi trong mô hìnhAUTOFILTERChức năng, cho phép liên tục ra tín hiệu mở kho hoặc liên tục ra tín hiệu đóng kho, có thể thực hiện tăng kho, giảm kho.

    Chỉ thị được hỗ trợ: BK ((N), BP ((N), SK ((N), SP ((N), CLOSEOUT ((BPK ((N)), SPK ((N), không hỗ trợ chỉ thị mở kho không có số ván. (1) Hỗ trợ phân nhóm chỉ thị. (2) Khi nhiều điều kiện chỉ thị được đáp ứng cùng một lúc, tín hiệu được thực hiện theo thứ tự trước sau được viết theo câu điều kiện. Ví dụ:

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

    sử dụngTRADE\_AGAIN Một lệnh có thể phát ra nhiều tín hiệu liên tiếp.

      理解:
      以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。
    
    • ### Mô hình của một tín hiệu trên một dây K

    Bất kể dòng K đã hết hay không, tín hiệu được tính toán để đặt hàng trong thời gian thực, tức là dòng K chưa hoàn thành lệnh trước; Kiểm tra khi kết thúc dòng K, nếu hướng giữ vị trí không phù hợp với hướng tín hiệu khi kết thúc dòng K sẽ tự động đồng bộ giữ vị trí.

    Ví dụ:

      MA1:MA(CLOSE,5);
      MA2:MA(CLOSE,10);
      CROSSUP(MA1,MA2),BPK;    // 5周期均线上穿10周期均线做多。
      CROSSDOWN(MA1,MA2),SPK;  // 5周期均线下穿10周期均线做空。
      AUTOFILTER;
    
    • ### Mô hình của nhiều tín hiệu trên một dây K

    Mô hình sử dụngmultsigĐể kiểm soát và thực hiện một K-thay ra nhiều tín hiệu.

    Cho dù có k đường hay không, hãy tính toán tín hiệu để đặt hàng trực tiếp.

    Tín hiệu không được kiểm tra, không có tín hiệu biến mất, hướng tín hiệu luôn phù hợp với hướng nắm giữ.

    Một K-line có thể được thực hiện nhiều lần nếu đáp ứng nhiều điều kiện tín hiệu.

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

    MULTSIGCó thể thực hiện nhiều dòng lệnh khác nhau trong một dòng K. Một dòng lệnh chỉ phát ra một tín hiệu.

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

    Ông nói thêm: 1 , mô hình gia tăng giảm giá, một k-đường một tín hiệu hai cách: giá đóng cửa đặt hàng, giá chỉ thị đặt hàng, đều được hỗ trợ. Mô hình gia tăng và giảm kho, cũng hỗ trợ một k-line nhiều tín hiệu đặt hàng. Mô hình tăng giảm giá, viết lên.multsigChức năng này có thể được thực hiện trên một dòng k nhiều lần tăng hoặc giảm trọng lượng.

    • ## Chế độ thực hiện

    Tài liệu về Mylang Quantified của Inventor

    • ### Mô hình giá đóng cửa

    Mô hình giá đóng cửa chỉ thực hiện mô hình khi BAR hiện tại kết thúc và thực hiện giao dịch khi BAR gốc bắt đầu.

    • ### Mô hình giá thời gian thực

    Mô hình giá thực tế là mô hình được thực hiện một lần mỗi khi giá thay đổi, giao dịch ngay khi có tín hiệu. Mô hình giá thời gian thực bỏ qua tín hiệu của ngày hôm trước (các tín hiệu của ngày hôm trước được thực hiện ngay trong ngày trước), mô hình giá thời gian thực chỉ xem dữ liệu hiện tại để xác định xem có kích hoạt tín hiệu hay không.

    • Biểu đồ hiển thị

      • ### Biểu đồ chính

    Sử dụng điều khiển^^Các chỉ số thiết lập được hiển thị trên biểu đồ chính khi bạn gán giá trị cho biến.

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

    Tài liệu về Mylang Quantified của Inventor

    • ### Biểu đồ phụ

    Sử dụng điều khiển:Các chỉ số thiết lập được hiển thị trên hình phụ khi định giá cho các biến.

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

    Tài liệu về Mylang Quantified của Inventor

    Nếu bạn không muốn nó xuất hiện trên bản đồ chính hoặc bản đồ phụ, hãy sử dụng điều khiển “..”

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

    Tài liệu về Mylang Quantified của Inventor

    Có thể sử dụngDOTCOLORREDThiết lập kiểu dòng, màu sắc, v.v., phù hợp với thói quen của người dùng quen thuộc với Mac.

    • ## Những câu hỏi thường gặp

    Giới thiệu các vấn đề thường gặp trong quá trình soạn thảo chỉ sốVấn đềCác điểm cần lưu ý khi viết thường là: ((tiếp tục bổ sung))

    • Chú ý đến dấu chấm.;Kết thúc.

    • Lưu ý rằng từ khóa hệ thống không thể được sử dụng như một tuyên bố biến.

    • Cẩn thận sử dụng chuỗiMột dấu ngoặc kép,Ví dụ:'开仓'Dãy chữ này.

    • Ghi chú

    Ghi chú

     - `// 注释内容`(input type in English is allowed), nghĩa là code không được biên dịch trong quá trình thực thi, nghĩa là không được thực thi`//`Sau đây là những gì chúng ta thường sử dụng để đánh dấu ý nghĩa của mã, có thể dễ dàng hiểu và nhớ khi duyệt lại mã.
    
     - `{ 注释内容 }`Ghi chú:
    
    
    ```
    A:=MA(C,10);
    {上一行代码是计算均线。}
    ```
    
     - `(* 注释内容 *)`Ghi chú:
    
    
    ```
    A:=MA(C,10);
    (*上一行代码是计算均线。*)
    ```
    
    • ### Phương thức nhập

    Khi viết mã, thường xuyên do chuyển đổi tiếng Anh trong cách nhập, gây ra lỗi ký hiệu.:Kết thúc.;Chữ ký hiệu,()Các ký tự khác nhau trong trạng thái tiếng Trung và tiếng Anh cần lưu ý.

    Nếu bạn sử dụng Search, Baidu, Bing, bạn có thể nhập thông qua một cú nhấp chuột.shiftNhấp chuột, chuyển đổi nhanh từ tiếng Trung sang tiếng Anh.

    • Logic dễ bị lỗi

      1. At least, not less than, not less than: là hàm tương ứng của hàm quan hệ>=
      2. Maximum, Maximum, Not Over: Các toán tử quan hệ tương ứng<=
    • Chiến lược khởi động đồng bộ

    Trong chiến lược tương lai, nếu trước khi bắt đầu robot chiến lược, có vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ vị trí nắm giữ Nó có thể được sử dụng trong chiến lược.SPBPCLOSEOUTLệnh thanh toán.

      %%
      if (!scope.init) {
          var ticker = exchange.GetTicker();
          exchange.Buy(ticker.Sell+10, 1);
          scope.init = true;
      }
      %%
      C>0, CLOSEOUT;
    
    • ### Không hỗ trợ hai chiều

    Mac không hỗ trợ cùng một hợp đồng và có nhiều vị trí trống.

  • Dữ liệu tham khảo K-line

    • ## OPEN

    Giá mở cửa để có được bản đồ K.

    Giá mở cửa

    Hàm: OPEN, viết tắt là O

    Không có

    Giải thích: Trở lại giá mở cửa của chu kỳ

    Dữ liệu chuỗi

    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

    Giá cao nhất để có được bản đồ đường K.

    Giá cao nhất

    Chức năng: HIGH, viết tắt là H

    Không có

    Giải thích: Trở lại mức giá cao nhất của chu kỳ

    Dữ liệu chuỗi

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

    Giá thấp nhất để có được bản đồ đường K.

    Giá thấp nhất

    Hàm: LOW, viết tắt là L

    Không có

    Giải thích: Trở lại mức giá thấp nhất của chu kỳ

    Dữ liệu chuỗi

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

    Giá đóng cửa của K-Line.

    Giá đóng cửa

    Chức năng: CLOSE, viết tắt của C

    Không có

    Giải thích: Quay trở lại giá đóng cửa của chu kỳ

    Dữ liệu chuỗi

    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

    Có được số lượng giao dịch của K-Line.

    Số lượng giao dịch

    Hàm: VOL, viết tắt là V

    Không có

    Giải thích: Quay trở lại khối lượng giao dịch của chu kỳ

    Dữ liệu chuỗi

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

    Lấy tổng số lượng nắm giữ tại thị trường hợp đồng tương lai hiện tại.

    OpenInterest:OPI;
    
    • ## REF

    Trích dẫn tiếp theo

    引用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

    Đơn vị giao dịch lấy hợp đồng dữ liệu.

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

    Tiền kỹ thuật số

    Giá trị UNIT là 1.

    Hợp đồng tương lai tiền điện tử

    Giá trị UNIT liên quan đến đồng tiền hợp đồng.

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

    Giá thay đổi tối thiểu của hợp đồng dữ liệu.

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

    Giá thay đổi tối thiểu của hợp đồng giao dịch.

    取交易合约的最小变动价位。
    用法:
    MINPRICE1; 取交易合约的最小变动价位。
    
  • Chức năng thời gian

    • ## BARPOS

    Lấy vị trí của đường K

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

    DAYBARPOS là căn K và BAR là số căn K của ngày.

    • ## PERIOD

    Tính chu kỳ là số phút.

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

    NgàyChức năng DATE, lấy ngày tháng năm của chu kỳ này từ năm 1900

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

    Thời gian để lấy đường 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

    Năm.

    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

    Lấy tháng.

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

    Số ngày của một chu kỳ

    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

    Giờ.

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

    Một phút.

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

    Số tuần.

    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;
    
  • Hàm phán đoán logic

    • ## BARSTATUS

    Trở về trạng thái vị trí của chu kỳ hiện tại

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

    Giữa.

    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) Tính toán từ chu kỳ hiện tại về phía trước, số lần thống kê liên tục đáp ứng điều kiện.

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

    Hàm chéo.

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

    Bước xuống

    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

    Tiến lên.

    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

    Đánh giá sự hài lòng liên tục.

    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

    Đánh giá sự thỏa mã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
    
    • ## IF

    Chức năng điều kiệ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死叉作为开空仓条件
    
    • ## IFELSE

    Chức năng điều kiệ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死叉作为开空仓条件
    
    • ## ISCONTRACT

    Có hợp đồng được chỉ định hay không?

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

    Hình thức chính thức được hỗ trợ

    Xác định hợp đồng

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

    Xác định tên của sàn giao dịch

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

    Hình ảnh:

    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

    Bàn phẳng.

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

    Xác định liệu chu kỳ này có phải là đường K cuối cùng hay không.

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

    Đánh giá không có giá trị.

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

    Mặt trời.

    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

    Chức năng phán đoán.

    ”` LAST(COND,N1,N2)判断过去N1到N2周期内,是否一直满足COND条件。

    注: 1、若N1与N2只相差一个周期(如N1=3,N2=2),则函数判断距离当前K线最近的那个周期上是否满足条件(即判断过去N2个周期的那根K线上是否满足条件)。 2、当N1/N2为有效值,但当前的k线数不足N1/N2根,或