Erfinder quantifizieren My Language (Mylang) Dokumentation

Schriftsteller:Kleine Träume, Erstellt: 2018-11-30 13:29:33, Aktualisiert: 2022-12-09 17:46:10

[TOC]

Die My-Sprache ist eine programmatisierte Transaktionssprache, die kompatibel und erweitert mit der Ma-Sprache ist. Die FMZ-Quantifizierung der My-Sprache führt zu strengen Syntaxprüfungen, z. B. bei der Verwendung von Sprache-Verstärkung in eingebetteten JavaScript-Sprachcodes.%%Wenn Sie mehr als ein Leerzeichen nach dem Operator verwenden, wird ein Fehler ausgelöst.

  • Grundlegende Informationen

    • Der Vertrag

      Vertrag über digitale Währungen

      Vertrag über digitale Währungen

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

      img

    • Variablen

      Eine Variable ist ein geöffneter Raum im Speicher des Computers, der für die Speicherung von Daten verwendet wird.

      Eröffnen der ersten Variable

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

      In der麦语言Innerlich, aus数据量Die Unterscheidung ist einfach:

      1. Einwertige Daten: Nur ein Wert, z.B.01’abc’
      2. Sequenzdaten: Eine Datenreihe, die aus einem Haufen von Einwertdaten besteht, z. B.Close(Abschlusspreis)CloseEinbeziehennEndpreis für den Zyklus[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]

      Unterscheidung von der Variante Typ-Hydrogen

      1. String-Typ: muss verwendet werden''Pakete, Stringtypen sind nicht direkt erlaubt und müssen mit der Funktion in die Ansicht ausgeführt werden.
      INFO(CLSOE>OPEN,'OK!');
      
      1. Zahlenarten: Inbegriffen von ganzen Zahlen, Schwebungszahlen (Teilzahlen).
      // 整数
      int:=2;
      
      // 小数
      float:=3.1;
      
      1. Ein Boole-Typ, der 1 (für wahr) oder 0 (für falsch) verwendet: 1, 0, wahr oder falsch; zum Beispiel:A:=1>0;Das bedeutet, dass wir uns in der Lage fühlen müssen, unsere eigenen Ideen zu verwirklichen.ADas ist 1⁄4.
      // 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数
      is_true:=Close>-999;
      
      1. Globale Variablen
      VARIABLE:VALUE1:10;     // 声明一个全局变量,赋值为10,只执行一次。
      

      Bei der Wiederholung sollten Sie beachten:

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

      AnfangsINFODas Wort ist gedruckt.101Es gibt Zweifel, dass es ursprünglich nicht war.0Was ist? Der Grund dafür ist, dass die anfängliche K-Leitung bei der Rückprüfung 100 Wege hat, 100 K-Leitung durchlaufen hat und 100 Mal addiert wurde. Die Festplatte hängt davon ab, wie viele K-Streifen anfänglich gewonnen wurden.

      • Benennungsregeln

        In den meisten Systemen ist es nicht erlaubt, Variablen zu benennen, indem man System-Reservations-Wörter (eingebettete Variablen- oder Funktionsnamen) verwendet.CloseCAußerdem sind reine Zahlen oder Zahlenanfängen nicht erlaubt. Sie müssen sich nicht mit der Effizienz der Hauptsystemlösung für chinesische Sprache auseinandersetzen, weil Sie glauben, dass Omeletype sehr freundlich zu chinesischer Sprache ist.

        1. Chinesische Bezeichnung
        // 优雅的输出
        五日均线:=MA(C,5);
        
        1. Englisch + Unterstreichung
        // 输出
        move_avg_5:=MA(C,5);
        

        Wenn Sie Englisch bevorzugen, lassen Sie Ihre Variablen möglichst verständlich sein.A1AAABBBIch bin mir sicher, dass du dich wegen des Gedächtnisverlustes sehr verletzen wirst, wenn du deine Kennzeichen-Code in der Zukunft noch einmal überprüfst.

        Wenn du es nicht kannst, dann lass dich von jetzt an von der Omelette befreien.

    • Datentypen

      Ein Datentyp ist ein grundlegendes Konzept, das in der Schreibweise, wenn wir einer Variablen einen eindeutigen Datenwert zuweisen, auch zum Typ der Daten selbst wird.

        1. Zahlenart:
        1、2、3、1.1234、2.23456 ...
        
        1. String-Typ (str):
        '1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
        
        1. Siehe auch:
        一系列单值数据构成的数据集合
        
        1. Der Boolean-Typ:

        Verwenden1Vertretertrue0Vertreterfalse

        Beispiele

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

      Die Operationen, mit denen der Indikatorcode ausgeführt wird, sind, einfach gesagt, Symbole, die an den Operationen teilnehmen.

      • Zuordnungsoperator

        Es wird verwendet, um eine Variable zu bezeichnen.

          1. :

          :, die einen Wert darstellt und in die Abbildung ausgeführt wird.

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

          :=, die einen Wert darstellt, der jedoch nicht in einem Diagramm (Hauptdiagramm, Nebendiagramm...) oder in einer Status-Tabelle angezeigt wird.

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

          ^^Zwei.^Die Symbole repräsentieren eine Bezeichnung, die den Variablen eine Bezeichnung gibt und in ein Diagramm ausgeführt wird.

          lastPrice^^C;
          
          1. ..

          ..Zwei..Die Symbole stehen für Bezeichnungen, geben Variablen Bezeichnungen und zeigen Variablennamen, Zahlen in einem Diagramm an, aber nicht in einem Diagramm (Hauptdiagramm, Nebendiagramm).

          openPrice..O
          
      • Beziehungsoperatoren

        Beziehungsoperatoren sind doppelte Operatoren, die in bedingten Ausdrücken verwendet werden. Sie werden verwendet, um die Beziehung zwischen zwei Daten zu bestimmen.

        Der Wert wird zurückgegeben: Boole, nichttrueDas ist 1.false(0)。

          1. Größer als>
          // 将2>1的运算结果赋值给rv1变量,此时rv1=1
          rv1:=2>1;
          
          1. Weniger als<
          // 返回false,也就是0,因为2大于1
          rv3:=2<1;
          
          1. Größer als gleich>=
          x:=Close;
          // 将收盘价大于等于10的运算的结果赋值给变量rv2
          // 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
          rv2:=Close>=10;
          
          1. Weniger ist gleich<=
          此处省略
          
          1. Das ist gleich=
          A:=O=C;     // 判断开盘价是不是等于收盘价。
          
          1. Ist nicht gleich<>
          1<>2       // 判断1是否不等于2,返回值为1(true)
          
      • Logische Operatoren

        Der Wert wird zurückgegeben: Boole, nichttrueDas ist 1.false(0)。

        1. Logik und&&Sie können es benutzenandAlternativ müssen beide Seiten gleichzeitig entstehen.
        // 判断 cond_a,cond_b,cond_c 是否同时成立
        cond_a:=2>1;
        cond_b:=4>3;
        cond_c:=6>5;
        cond_a && cond_b and cond_c;    // 返回值为1,成立
        
        1. Logik oder||Sie können es benutzenorAlternative oder Links auf beiden Seiten, eine Seite ist gegründet (true) und die gesamte Seite ist gegründet (returns true).
        cond_a:=1>2;
        cond_b:=4>3;
        cond_c:=5>6;
        cond_a || cond_b or cond_c;    // 返回值为1,成立
        
        1. ()Operator, der beim Berechnen die Ausdrücke in den Klammern berechnet.
        1>2 AND (2>3 OR 3<5)    // 运算结果为假
        1>2 AND 2>3 OR 3<5      // 运算结果为真
        
      • Arithmetische Operatoren

        返回值:数值类型
        

        Arithmetische Operatoren sind Symbole, mit denen man die grundlegenden Arithmetischen Operationen abschließt.

        • Plus +

          A:=1+1;      // 返回 2
          
        • Abzüglich -

          A:=2-1;      // 返回 1
          
        • Mal *

          A:=2*2;      // 返回 4
          
        • Außer /

          A:=4/2;      // 返回 2
          
    • Funktionen

      • Funktionen

        In der Programmierwelt ist die Funktion "Call" ein Stück Code, das eine Funktion umsetzt.

        function(param1,param2,...)
        
        • Sie besteht aus:

          Funktionsnamen (Parameter 1, Parameter 2,...) können keine Parameter haben oder mehrere Parameter enthalten.MA(x,n);Die Repräsentanten kehren zurücknIm ZyklusxDie einfachen gleitenden Mittelwerte vonMA()Das ist eine Funktion.xundnDas sind die Parameter der Funktion.

          Bei der Verwendung von Funktionen müssen wir die grundlegende Funktionsdefinition verstehen, also welche Daten von der Funktion aufgerufen werden können. Normalerweise haben Funktionen Parameter, und wenn wir Parameter übermitteln, müssen wir sicherstellen, dass die übermittelten Datentypen konform sind. Die Codeempfehlungen der meisten IDE in dieser Phase sind sehr unvollständig.MA(x,n);Die Erklärung lautet:

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

          Das ist für Anfänger sehr unfreundlich. Als nächstes machen wir eine gründliche Analyse der Funktion und versuchen, eine schnelle Art zu finden, die Funktionen zu lernen und zu verwenden.

      • Rückgabe von Werten

        Um Funktionen schnell zu lernen, müssen wir zuerst ein Konzept verstehen.ZurückDer Name bedeutet "zurück". Wenn ein Wert für einen bestimmten Wert steht, bedeutet ein Rückgabewert: Daten, die man bekommen kann.

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

        Die zweite wichtige Konzeption der Funktion ist die Parameter, bei denen verschiedene Parameter verschiedene Rückgabewerte erhalten.

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

        Diese Variablenma5ma10Die erste ParameterXDas ist alles.C(Abschlusspreis)CEs ist auch eine Funktion, die (zurückkehrend auf die Eröffnungs- bis zum Abschluss-Preis-Serie), aber er hat keine Parameter. Der zweite Parameter 5, 10MA()Die Funktion, bei der wir die gleitenden Durchschnittswerte für die Schlusskurse für mehrere Tage erhalten wollen, wird durch Parameter flexibler verwendet.

      • Wie man lernt

          1. Zunächst einmal müssen wir verstehen, was eine Funktion ist, und welche Daten diese Funktion zurückgeben kann.
          1. Das letzte, was wir wissen müssen, ist der Typ des zurückgegebenen Werts, denn wir verwenden Funktionen, um den zurückgegebenen Wert zu erhalten.
          1. Dann müssen wir wissen, welche Art von Daten die Parameter sind.MA(x,n)Wenn Sie die Parameter nicht kennen,xnDie Daten des Datentyps werden nicht korrekt zurückgegeben.

        Die folgenden Funktionen werden in den folgenden drei Grundsätzen beschrieben und verwendet:

    • Sprachverstärkung

      • 麦语言undJavaScriptMischsprachenprogrammierung

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

          scopeObjekte können Eigenschaften hinzufügen und Anonymfunktionen zu Eigenschaften zuordnen. In der Mailsprache kann die Anonymfunktion, auf die sich diese Eigenschaft bezieht, aufgerufen werden.

        • scope.getRefs(obj)Funktionen

          In derJavaScriptIn den Codeblöcken, rufenscope.getRefs(obj)Die Funktion wird zurückgegeben.objDie Daten des Objekts.

          Die folgenden%% %%Das Symbol ist umhüllt.JavaScriptDer Code wird in der Ma-Sprache abgerufen.TEST(C)FunktionsanrufeCDer Verkauf wird geschlossen.scope.getRefsDie Funktion gibt alle Schlusskosten für diese K-Strangdaten zurück.throw "stop"Unterbrechungsverfahren.arrEs enthält nur den Verkaufspreis für den ersten Bar.throw "stop"Wir werden es tun.JavaScriptDer letzte CodereturnDie Daten werden von den Verkäufern zurückgegeben.

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

          In derJavaScriptZugriff auf alle K-Linienbalken im Codeblock.

          TESTDie Funktion gibt einen Zahlenwert zurück. 1 ist die Tinnituslinie und 0 die Sonnenscheinlinie.

          %%
          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

          In derJavaScriptIm Codeblock geht es zu der aktuellen Bar.

          Die durchschnittlichen Preise werden berechnet.

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

          Der Markt wird von den meisten Unternehmen in der Welt verwaltet.

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

          Erhalten Sie die String-Namen der aktuellen Transaktionen.

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

          Erhalten Sie die Position der K-LineBar.

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

          Diese Funktion wird verwendet, um Variablen aus dem Code-Teil der Sprache Ma zu erhalten.

          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

          canTradeEigenschaften markieren, ob der aktuelle Bar der letzte ist

          Beurteilen Sie zum Beispiel, ob die Strategie in einem handelbaren Zustand ist, um Marktdaten zu drucken

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

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

        Die Strategie ist es, eine Position zu eröffnen, nach einer Ausgleichsposition zu stoppen.

    • Mehrzyklische Referenzen

      Das System wählt automatisch eine geeignete K-Linien-Periode aus, um alle referenzierten K-Linien-Daten mit diesen Daten zu synthetisieren, um die Genauigkeit der Daten zu gewährleisten.

      • Verwenden:#EXPORT 公式名 ... #ENDErstellen Sie eine Formel. Wenn Sie keine Formelrechnung machen, um nur Daten für verschiedene Perioden zu erhalten, können Sie auch leere Formeln schreiben.

        Die leere Formel lautet:

        #EXPORT TEST 
        NOP;
        #END           // 结束
        
      • Verwenden:#IMPORT [MIN,周期,公式名] AS 变量值Referenzformeln. Die Daten für die gesetzten Perioden (Schließpreis, Eröffnungspreis usw. durch Variablenwerte) werden erhalten.

        IMPORTIn der AnweisungMINDas bedeutet:MinutenebeneIn den letzten Jahren haben sich die Entwickler der Quantifizierungsplattform für die Ma-Sprache bemüht.IMPORTNur in Befehlen unterstütztMINDie Stufe. Es werden jetzt nicht-standardmäßige Zyklen unterstützt, z.B.#IMPORT [MIN,240,TEST] AS VAR240Daten wie 240-Minuten-Zyklen (siehe 4 Stunden) und K-Linien werden importiert.

        Codebeispiel:

        // 本代码演示如何引用不同周期的公式在同一代码里
        // #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;
        
      • Mehrzyklische DatenreferenzenREFLLVHHVEs ist notwendig, dass die Anweisungen auf die Daten bezogen werden.

        (*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;
        

        VergleichMIN5.REF1CundREF(MIN5.C, 1)Die Unterschiede lassen sich erkennen:MIN5.REF1Cist der Wert des Schlusskurses der zweiten Bar, die dem Gegenwert der aktuellen Zeit der 5-minütigen K-Liniendaten entspricht.REF(MIN5.C, 1)ist die K-Linien-Periode des aktuellen Modells (siehe Code oben) und die Wiederholungsphase ist auf 1 Minute gesetzt, d.h.period: 1mDer zweite BAR ist der Gegenwert des aktuellen Zeitpunkts und liegt am Schlusskurs des 5-minütigen Zyklus. Die beiden Definitionen unterscheiden sich und können je nach Bedarf verwendet werden.

    • Musterbeschreibung

      • Ein einheitliches Signalfiltermodell

        Das Modell wird durchAUTOFILTERDie Funktion steuert und realisiert ein einheitliches Signalfiltern, wobei das erste Signal als gültig angesehen wird, wenn mehrere Offenstellungssignale erfüllt sind.

        Die Filtermodelle unterstützen die folgenden Anweisungen: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, nicht unterstützen angezeigte Anweisungen wie BK ((5)).

        Zum Beispiel:

        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线触发一次信号。
        
      • Modell für die Verringerung der Lagerbestände

        Nicht im Modell geschriebenAUTOFILTERFunktionen, die es ermöglichen, fortlaufend zu starten oder fortlaufend zu platzieren, können erhöht oder verringert werden.

        Unterstützte Anweisungen: BK (N) BP (N) SK (N) SP (N) CLOSEOUT BPK (N) SPK (N) Ununterstützte Anweisungen ohne Handzahlen. (1) Unterstützung von Kommando-Gruppierung. (2) Wenn mehrere Anweisungsbedingungen gleichzeitig erfüllt sind, wird das Signal in der nachfolgenden Reihenfolge ausgeführt, die nach den Konditionssätzen geschrieben ist. Zum Beispiel:

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

        NutzungTRADE\_AGAINSie können mehrere Signale in Folge mit derselben Anweisungszeile senden.

        理解:
        以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。
        
      • Ein Modell einer K-Leitung, ein Signal

        Ob die K-Leitung abgelaufen ist, wird in Echtzeit berechnet, d.h. bevor die K-Leitung abgelaufen ist. Am Ende der K-Leitung wird überprüft, ob die Haltegerichtung mit der Signalrichtung am Ende der K-Leitung nicht übereinstimmt.

        Zum Beispiel:

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BPK;    // 5周期均线上穿10周期均线做多。
        CROSSDOWN(MA1,MA2),SPK;  // 5周期均线下穿10周期均线做空。
        AUTOFILTER;
        
      • Modell einer K-Leitung mit mehreren Signalen

        Modelle werden durch die VerwendungmultsigEs wird verwendet, um mehrere Signale aus einer K-Leitung zu steuern und zu realisieren.

        Das Signal wird berechnet, um in Echtzeit zu bestellen, egal ob die K-Leitung abläuft oder nicht.

        Das Signal wird nicht überprüft, es gibt keine Verschwinden der Signale, die Signalrichtung stimmt stets mit der Haltegerichtung überein.

        Eine K-Leitung kann mehrmals ausgeführt werden, wenn mehrere Signalbedingungen erfüllt sind.

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

        MULTSIGSie können verschiedene Befehlszeilen mehrmals in einer K-Leitung ausführen. Eine Befehlszeile gibt nur einmal ein Signal.

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

        Siehe auch: In dem Modell mit dem Plus-Leverage-Modell werden zwei Signale für eine K-Linie unterstützt: Schlussprozess und Anweisungsprozess. 2. Das Plus-Reduktionsmodell unterstützt auch die mehrfache Signalübertragung einer k-Leitung. Das Modell der Zunahme und Verringerung der Lagerbestände.multsigEine Funktion, die mehrere Auflagen oder mehrere Ablagerungen in einer k-Leitung umsetzt.

    • Ausführungsmodell

      img

      • Modell für die Abschlusspreise

        Das Modell wird nur ausgeführt, wenn die aktuelle BAR abläuft, und die Transaktionen werden ausgeführt, wenn die Basis BAR beginnt.

      • Echtzeit-Preismodell

        Bei einem Modell wird bei jeder Preisänderung ein Modell ausgeführt, bei dem ein Signal sofort gehandelt wird. Das Modell ignoriert die Signale des vorherigen Tages (die Signale des vorherigen Tages werden sofort am vorherigen Tag ausgeführt) und betrachtet nur aktuelle Marktdaten, um zu beurteilen, ob ein Signal ausgelöst wird.

    • Die Grafik zeigt

      • Darüber hinaus gibt es weitere Indikatoren.

        Benutzung von Operatoren^^, während die Variablen zugeteilt werden, werden die Indizes angezeigt, die auf dem Grundriss angezeigt werden.

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

        img

      • Zusätzliche Indikatoren

        Benutzung von Operatoren:, während die Variablen zugeteilt werden, werden die Einstellungsindikatoren auf dem Nebendiagramm angezeigt.

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

        img

        Verwenden Sie die Operatoren ..., wenn Sie nicht möchten, dass sie in einem Grund- oder Nebendiagramm angezeigt werden.

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

        img

        Kann verwendet werdenDOTCOLORREDDie Linienform, die Farbe usw. werden von Benutzern, die mit der Sprache vertraut sind, angepasst.

    • Häufige Fragen

      Einführung in allgemeine Probleme bei der Erstellung von IndikatorenDas ProblemDas ist ein Punkt, auf den man beim Schreiben oft achten muss (kontinuierliche Ergänzung).

      • Achten Sie auf die Punkte.;Das Ende.

      • Beachten Sie, dass System-Keywords nicht als Variablenerklärungen dienen können.

      • Vorsicht bei der Verwendung von ZeichenfolgenEinzeichenSie haben sich in den USA niedergelassen.'开仓'Diese Zeichenfolge.

      • Kommentare

        Kommentarzeichen

        • // 注释内容(Englische Eingabe ist möglich) bedeutet, dass der Code während der Ausführung nicht kompiliert wird, also nicht ausgeführt wird//Die folgenden Inhalte, die wir normalerweise verwenden, um die Bedeutung des Codes zu markieren, können bei der Überprüfung des Codes schnell verstanden und erinnert werden.

        • { 注释内容 }Ich bin ein großer Freund von ihnen.

          A:=MA(C,10);
          {上一行代码是计算均线。}
          
        • (* 注释内容 *)Ich bin ein großer Freund von ihnen.

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

        Bei der Schreibweise des Codes wird häufig ein Symbolfehler verursacht, weil der Eingabeprozess in Englisch geschaltet wird.:Das Ende.;Komma.,Das ist ein großes Problem.()Es gibt viele andere Charaktere, die in der englischsprachigen Sprache verwendet werden.

        Wenn Sie die Eingabemethoden von Search Dog, Baidu oder Bing verwenden, können Sie dies tun, indem Sie nur einmal klicken.shiftSchaltfläche, Schnellwechsel zwischen Englisch und Chinesisch.

      • Fehlverständnis

        1. Mindestens, nicht weniger als, nicht weniger als: entsprechende Beziehungsoperatoren>=
        2. Maximal, maximal, maximal: entsprechende Relationsoperatoren<=
      • Synchronisieren starten

        In der Futures-Strategie wird die Position beim Start des Roboters, wenn eine Position manuell geöffnet und gehalten wurde, mit der tatsächlichen Position synchronisiert. Sie können es in der Strategie verwenden.SPBPCLOSEOUTDie Anweisung zum Ausgleich.

        %%
        if (!scope.init) {
            var ticker = exchange.GetTicker();
            exchange.Buy(ticker.Sell+10, 1);
            scope.init = true;
        }
        %%
        C>0, CLOSEOUT;
        
      • Nicht unterstützt

        Die Sprache unterstützt nicht den gleichen Vertrag, sondern mehrere Leerstände.

  • K-Linien-Datenreferenzen

    • Öffnen

      Erhalten Sie den Startpreis für das K-Strang-Diagramm.

      Eröffnungspreis

      Funktion: OPEN, kurz O

      Parameter: keine

      Erläuterung: Zurück zum Startpreis des "Zyklus"

      Sequenzdaten

      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

      Erhalten Sie den höchsten Preis für die K-Strang-Grafik.

      Der höchste Preis

      Funktion: HIGH, kurz H

      Parameter: keine

      Erläuterung: Höchstpreis des "Zyklus" zurück

      Sequenzdaten

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

      Der niedrigste Preis für die K-Stringkarte.

      Die niedrigsten Preise

      Funktion: LOW, kurz L

      Parameter: keine

      Erläuterung: Rückgabe des Mindestpreises für den "Zyklus"

      Sequenzdaten

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

      Das ist der Preis, an dem die K-Stringkarte geschlossen wurde.

      Abschlusspreis

      Funktion: CLOSE, kurz C

      Parameter: keine

      Erklärung: Zurück zum Abschlusspreis des "Zyklus".

      Sequenzdaten

      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

      Die Transaktionsmenge der K-String-Grafik wird erreicht.

      Umsatz

      Funktion: VOL, kurz V

      Parameter: keine

      Erläuterung: Rückgabe der Transaktionsmenge in diesem Zyklus

      Sequenzdaten

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

      Die Gesamtbestände der aktuellen Futures-Kontrakte werden abgeleitet.

      OpenInterest:OPI;
      
    • Referenzbericht

      Ich habe mich nicht gefreut.

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

      Die Transaktionseinheit, die den Datenvertrag abholt.

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

      Bargeld für digitale Währungen

      Der Wert von UNIT beträgt 1⁄2.

      Futures für digitale Währungen

      Der UNIT-Wert ist mit der Währung des Vertrags verknüpft.

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

      Der geringste Preiswechsel eines Datenvertrags.

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

      Der Mindestwechsel des Handelsvertrags.

      取交易合约的最小变动价位。
      用法:
      MINPRICE1; 取交易合约的最小变动价位。
      
  • Zeitfunktion

    • BARPOS

      Die Position der K-Linien.

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

      DAYBARPOS ist der Tag, an dem die K-Linie BAR die erste K-Linie BAR ist.

    • Zeit

      Der Wert der Periode ist die Anzahl der Minuten.

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

      DatumDie DATE-Funktion erhält die Jahrestage des Zyklus seit 1900.

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

      Die Zeit der K-Linie.

      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;
      
    • Jahr

      Das Jahr.

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

      Ich habe den Monat gewählt.

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

      Die Anzahl der Tage, an denen ein Zyklus erreicht wird

      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
      
    • Uhrzeit

      Die Stunde.

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

      Das ist ein Moment.

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

      Die Zahl der Wochen wird erreicht.

      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;
      
  • Logische Beurteilungsfunktionen

    • BARSTATUS

      Die Position des aktuellen Zyklus wird zurückgegeben.

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

      Ich bin nicht derjenige, der das tut.

      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日均线之间
      
    • - Das ist nicht wahr.

      BARSLASTCOUNT (COND) Die Anzahl der Perioden, in denen die Bedingungen kontinuierlich erfüllt werden.

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

      Die Kreuzfunktion.

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

      Überqueren

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

      Ich bin nicht derjenige, der die Tür zu öffnen sucht.

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

      Die Frage ist, ob sie nachhaltig zufrieden sind.

      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;表达同等意义
      
    • BESTÄNDEN

      Die Frage ist, ob es Zufriedenheit gibt.

      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
      
    • Wenn

      Die bedingte Funktion.

      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

      Die bedingte Funktion.

      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死叉作为开空仓条件
      
    • Innerhalb des Vertrages

      Sie sind in der Lage, sich zu informieren, ob sie einen Vertrag haben.

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

      Es gibt eine Reihe von Problemen, die wir in diesem Artikel behandeln werden.

      Das Urteil über den Vertrag

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

      Beurteilen Sie den Namen der Börse

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

      Ich habe eine Frau.

      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

      Die Platte.

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

      Beurteilen, ob es sich um die letzte K-Linie handelt.

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

      Beurteilen Sie den Leerwert.

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

      Die Sonnenstrahlen.

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

      Die Funktion wird beurteilt.

      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
      
    • Längenkreuz

      Die Kreuzfunktion wird beibehalten.

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

      Nicht.

      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

      Es wird ein Nullwert zurückgegeben.

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

      Es ist ein sehr schwieriges Thema.

      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,说明当天不满足跳空高开条件
      
  • Kreislauf-Funktion

    • Schleife 2

      Die Kreislaufbedingungsfunktion.

      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;
      
  • Finanzstatistikfunktionen

    • Bar-Count

      Die erste gültige Periode bis zur aktuellen Periodenanzahl.

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

      Das letzte Mal wurde die Position festgelegt.

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

      ErläuterungBARSLASTDie Funktion:

      • 1 gibt 0 zurück, wenn die Bedingungen für die aktuelle Linie K erfüllt sind.
      • 2. Wenn nicht, geht es immer weiter, bis man die Linie K findet, auf der die Bedingung besteht, und gibt eine zurückgehende Periodenzahl zurück.
      • 3. Wenn die K-Zeile, für die die Bedingungen festgelegt wurden, nicht gefunden wurde, wird ein null Wert zurückgegeben.
    • Barsine

      Die erste Bedingung setzt sich bis zur aktuellen Periodenzahl fort.

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

      Die erste Bedingung in N-Zyklen wird bis zur aktuellen Periodenanzahl festgelegt.

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

      Die Zahl der Perioden zwischen den K-Linien, die die Bedingungen A und B am letzten Mal erfüllen, wird ermittelt.

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

      Die Gesamtzahl der Statistiken.

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

Mehr

98K-Serie hochwertige HandelsindikatorenWenn man die Linie k durch die Sonnenlinie j1 geht und die Sonnenlinie an die Station j1 kommt, dann geht man zurück auf die Linie j1 und schaltet die Linie wieder ein, aber es ist in der Linie Sinus und nicht an der Stelle j1 und die Linie ist auch geöffnet. D1:=if ((jk<0 && CROSS ((close,j1) and CLOSE>OPEN and close>j1,j1,0); D1, BK; /upload/asset/2af6fee 82ea8bb3725687.png

98K-Serie hochwertige HandelsindikatorenInländische Liebeshandelsplattformen verfügen über eine Funktionsbank in der Ma-Sprache, die später kompatibel sein wird, wie die Funktionen in der Compatible TradingView, so dass die beidseitige Indikatorstrategie direkt an die Erfinder weitergeleitet und quantifiziert werden kann.

98K-Serie hochwertige HandelsindikatorenistLast ((x) Funktionsbeschreibung: Beurteilen, ob aktuelle Daten für die letzten Daten sind. Ist diese Funktion für die Erfinder verfügbar?

wanghehe711@qq.comKann die Sprache auf einem realen Plattform mehrfach funktionieren?

Es ist Creme.Kannst du mir ein Beispiel geben, wenn man die MARK-Karte mit Java oder Python einbinden will?

WolkenKann man die OKEX-API nutzen?

Kleine TräumeSieh dir das mal an.

Kleine TräumeDie istLast-Anweisung wird derzeit nicht unterstützt.

Kleine TräumeDie Mailsprache ist eine ein-Sorte-Plattform-Strategie, die nur eine Sorte und einen Account betreibt.

Kleine TräumeEs wird empfohlen, wenn es sich um eine Aufhängungspolitik handelt, direkt mit JS, PY zu schreiben.

Kleine TräumeSie werden von der Website von OKEX unterstützt und können für OKEX-Verträge verwendet werden.