Inventor Quantified Mylang ドキュメント

作成日:: 2018-11-30 13:29:33, 更新日:: 2022-12-09 17:46:10
comments   24
hits   35602

[TOC]

My言語は,Mac言語との互換性および強化されたプログラム取引言語である.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 ドキュメント

    • ## 変数について

    変数は,コンピュータのメモリで開かれたデータ保存スペース,つまり,データを保存する場所である.

    最初の変数を開きます.

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

    存在する麦语言中から数据量シンプルな区分:

    1. 単数データ:ただ一つの値,例えば01’abc’
    2. 序列データ:単数値データからなるデータ列,例えばClose価格が下がったのでClose含んでいるnサイクル終了価格[ 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, true または false を使う.例えば:A:=1>0;このコードを実行すると,Aこれは 1 ≠ 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根で,すでに100K線を走らせて,100回積み重ねているからです. 初期取得したK線数によって決定される.

    • ### 命名ルール

    ほとんどのシステムでは,変数名付けは,システムキーを使って文字を保持することを許さない.例えば,よく知られているCloseC┃ さらに,純数字や数字の始めは許されない。最後に長いものは許されない,異なるシステムの長さの制限は異なる。 実際,中国語解析の効率について,主流のシステムに迷惑をかける必要はほとんどありません. 麦言語は,中国語に対して非常に友好的なものであることを信じてください.

     1. 中国語名称
    
      // 优雅的输出
      五日均线:=MA(C,5);
    
     2. 英語+下線
    
      // 输出
      move_avg_5:=MA(C,5);
    

    英語を好む場合は,できるだけ,あなたの変数の意味を理解できるようにしてください.A1AAABBB…この種の命名方法。私は,あなたが何日か経って,あなたの指標コードを再び見直すと,記憶の欠如のためにあなたは非常に苦しいだろう。同様に,あなたがコードを他人に輸出すると,読者の心態は崩れ落ちるだろう。

    麦の言語は,あなたの分析や意思決定の強力なツールになるように願います.

    • ## データの種類

    データ型は基本的な概念で,プログラミングでは,明確なデータ値を変数に代入すると,その変数もデータ自体の型になります.

    • 1. 数値タイプ:
      1、2、3、1.1234、2.23456 ...
    
    • 2. 文字列の種類は
      '1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
    
    • 3. シーケンスのデータ:
      一系列单值数据构成的数据集合
    
    • 4. ブール型 (boolean):

    使用する1代表するtrue0代表するfalse

    例として

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

    指数コードの操作,計算を行うために用いられる.簡単に言えば,操作に参加する符号である。

    • ### 代入演算子

    変数に値を代入する

     - 1. `:`
    
    
    `:`,は付加値を表し,図 (副図) に出力する.
    
    
    ```
    Close1:Close;      // 将Close赋值给变量Close1,并且输出到图中
    ```
    
     - 2. `:=`
    
    
    `:=`, は,値が与えられているが,図 (主図,副図...) に輸出されず,ステータス欄の表に表示されない.
    
    
    ```
    Close2:=Close;     // 将Close赋值给变量Close2
    ```
    
     - 3. `^^`
    
    
    `^^`2つ目`^`符号は,変数に付加された値を表し,グラフ (メイングラフ) に出力されます.
    
    
    ```
    lastPrice^^C;
    ```
    
     - 4. `..`
    
    
    `..`2つ目`.`記号は,変数に付加された値を表し,変数名,数値をグラフに表示するが,グラフに描かれない (メイングラフ,副グラフ...).
    
    
    ```
    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の2乗です.`>=`
    
    
    ```
    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 operators) を完了する記号であり,四則演算を処理する記号である.

     - **プラス**
    
    
    ```
    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`単純移動平均は`MA()`これは,関数です.`x`そして`n`これは,関数のパラメータです.
    
    
    函数を使うとき,関数の基本的定義,つまりその関数を呼び出すとどんなデータを得ることができるかを理解する必要がある.通常,関数はパラメータを持ち,パラメータを入力するときに入力されたデータタイプが合っていることを確認する必要があります.現段階のほとんどの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。
    
    • ### パラメータ

    二次関数の第二の重要な概念は,パラメータであり,異なるパラメータを入力すると,異なる返値が得られる.

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

    上記の変数ma5ma10任意の1番目のパラメータX両方C実際にはCまた,関数 ((返される開盤から今日までの閉盤価格の順序),ただし,その関数はありません. 2番目の関数である5、10は,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')
    
    
    この関数は,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`属性マークが現在取引可能かどうか (現在の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線データ現在の瞬間の逆数第二BARの閉算値である。 REF(MIN5.C, 1)現在のモデルのK線周期 ((上記コードの反省周期は1分に設定されている.period: 1m),現在の瞬間の逆数第2BARの5分周期の閉盘価格。 この2つの定義は異なるもので,必要に応じて使用できます.

    • パターンの説明

      • ### 信号のフィルタリングモデル

    モデルに書き込むことで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),SP (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 行の中で何回か実行させることができます. コマンドラインは1回しか信号を出さない.

      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線1信号の2つの方法:閉じる価格下令,指示価格下令,どちらも支持である。 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 ドキュメント

    使用可能DOTCOLORRED線の型,色など,マック語に精通しているユーザーの習慣に合わせて設定する.

    • ## よくある質問

    インデケーターの作成過程でよく見られるもの問題記事の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方など.

    • 注意点数;終わり

    • システムキーワードは変数声明として使用できません.

    • 文字列の使用に注意してください単引数、例えば:'开仓'この文字列は

    • コメント

    コメント符

     - `// 注释内容`コードが実行中にコンパイルされず,つまり実行されないことを意味します.`//`代码の意味をマークして 簡単に調べる時に 素早く理解し 思い出せるようにします
    
     - `{ 注释内容 }`コメント欄
    
    
    ```
    A:=MA(C,10);
    {上一行代码是计算均线。}
    ```
    
     - `(* 注释内容 *)`コメント欄
    
    
    ```
    A:=MA(C,10);
    (*上一行代码是计算均线。*)
    ```
    
    • ### 入力方法

    コードを書くとき,入力法と英語の切り替えにより,しばしば符号エラーが発生する.以下のようなものがあります.:終わり符号;コミック,括弧に()漢字の違いには注意してください。

    キーワードを”回クリックすると, キーワードを”回クリックすると,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

    分鐘

    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

    ゼロに戻る

    返回空值
    用法:
    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从第一