Les ressources ont été chargées... Je charge...

Les inventeurs quantifient les documents My Language (Mylang)

Auteur:L'inventeur de la quantification - un petit rêve, Créé: 2018-11-30 13:29:33, Mis à jour: 2022-12-09 17:46:10

[TOC] Je vous en prie.

My est un langage de transaction programmatique compatible et amélioré avec Ma. FMZ quantifié My fait des contrôles de syntaxe rigoureux, par exemple lorsqu'il utilise un langage amélioré pour intégrer du code JavaScript.%%L'opérateur peut être remplacé par un autre caractère.

  • Les détails

    • Le contrat

      Contrats de monnaie numérique

      Contrats de monnaie numérique

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

      img

    • Variables

      Une variable est un espace ouvert dans la mémoire d'un ordinateur pour stocker des données.

      Ouvrir la première variable

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

      Dans麦语言Dans le数据量La différence est simple:

      1. Données à valeur unique: une seule valeur, par exemple01’abc’
      2. Données séquentielles: séquences de données constituées d'un tas de données à valeur unique, par exempleClose(Prix de clôture)CloseIl contientnPrix de clôture du cycle[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]

      Distinguer le type de soufre par la variable soufre

      1. Type de chaîne: doit être utilisé''Les types de paquets et de chaînes ne sont pas autorisés à être utilisés directement, et doivent être utilisés pour l'exportation de fonctions dans la vue.
      INFO(CLSOE>OPEN,'OK!');
      
      1. Les types de chiffres: incluent les nombres entiers, les nombres à virgule (composés de nombres fractionnés).
      // 整数
      int:=2;
      
      // 小数
      float:=3.1;
      
      1. Le type Boole, qui utilise 1 (pour représenter le vrai) ou 0 (pour représenter le faux): 1, 0, vrai ou faux; par exemple:A:=1>0;Il y a un problème avec le code, mais il y a un problème.ALa valeur est 1⁄4.
      // 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数
      is_true:=Close>-999;
      
      1. Variables mondiales
      VARIABLE:VALUE1:10;     // 声明一个全局变量,赋值为10,只执行一次。
      

      Il est important de noter:

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

      Au débutINFOLa phrase est imprimée:101Il y a peut-être des doutes sur le fait qu'il n'y ait pas eu d'initiation.0Je ne sais pas. La raison en est qu'au moment du retrait, il y avait 100 lignes K initiales, qui avaient été parcourues 100 fois et qui avaient été ajoutées 100 fois. Le disque réel est basé sur le nombre de lignes K obtenues au départ.

      • Règles de dénomination

        Dans la plupart des systèmes, les noms de variables ne permettent pas d'utiliser des mots réservés à la barre de système (nom de variable intégré, nom de fonction, etc.).CloseC❖ En outre, les nombres purs ou les débuts numériques ne sont pas autorisés. ❖ Les extrémités ne sont pas autorisées à être très longues, les limites de longueur des différents systèmes étant différentes. En fait, vous n'avez pas besoin de vous embêter avec l'efficacité de la résolution chinoise du système dominant, croyant que la langue de l'oignon est très amicale avec la langue chinoise.

        1. Nom chinois
        // 优雅的输出
        五日均线:=MA(C,5);
        
        1. Anglais + sous-ligne
        // 输出
        move_avg_5:=MA(C,5);
        

        Si vous préférez l'anglais, faites en sorte que vos variables soient comprises autant que possible.A1AAABBBJe suis sûr qu'un jour ou l'autre, quand vous revisez à nouveau votre code indicateur, vous serez très mal à l'aise à cause de la perte de mémoire. De même, lorsque vous exportez votre code à quelqu'un d'autre, l'humeur du lecteur doit être brisée.

        Alors, à partir de maintenant, embrassez la langue de l'oignon! Puisse-t-elle devenir un outil puissant pour vos analyses et vos décisions.

    • Types de données

      Le type de données est un concept de base, et lorsque nous donnons une valeur de données spécifique à une variable, cette variable devient le type de la donnée elle-même.

        1. Type de chiffres:
        1、2、3、1.1234、2.23456 ...
        
        1. Le type de chaîne (str):
        '1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
        
        1. Les données de séquence:
        一系列单值数据构成的数据集合
        
        1. Le type boolean:

        Utilisé1Les représentantstrue0Les représentantsfalse

        Exemples

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

      Les opérations utilisées pour exécuter le code d'indicateur, les calculs, en termes simples, sont les symboles impliqués dans les opérations.

      • Opérateur d'attribution

        C'est une variable à laquelle on attribue une valeur.

          1. :

          :, représente l'attribution et est exporté dans le diagramme (sous-diagramme).

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

          :=, représente l'attribution, mais n'est pas exporté dans le diagramme (diagramme principal, sous-diagramme...) et n'apparaît pas dans le tableau de bord d'état.

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

          ^^Deux, trois^Les symboles représentent des valeurs, donnent des valeurs aux variables et sont exportés dans le diagramme.

          lastPrice^^C;
          
          1. ..

          ..Deux, trois.Les symboles représentent des valeurs, donnent des valeurs aux variables et affichent les noms des variables, les valeurs dans le graphique, mais ne représentent pas le graphique (graphique principal, sous-graphique...).

          openPrice..O
          
      • Opérateur relationnel

        L'opérateur relationnel est un opérateur à double œil utilisé dans les expressions conditionnelles. Il est utilisé pour déterminer la relation entre deux données.

        Retourne la valeur: type Boole, nontrueC'est le premier.false(0)。

          1. plus grand que>
          // 将2>1的运算结果赋值给rv1变量,此时rv1=1
          rv1:=2>1;
          
          1. inférieure à<
          // 返回false,也就是0,因为2大于1
          rv3:=2<1;
          
          1. est égal à>=
          x:=Close;
          // 将收盘价大于等于10的运算的结果赋值给变量rv2
          // 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
          rv2:=Close>=10;
          
          1. C'est moins égal à<=
          此处省略
          
          1. est égal à=
          A:=O=C;     // 判断开盘价是不是等于收盘价。
          
          1. n'est pas égal à<>
          1<>2       // 判断1是否不等于2,返回值为1(true)
          
      • Opérateur logique

        Retourne la valeur: type Boole, nontrueC'est le premier.false(0)。

        1. La logique et&&Vous pouvez utiliserandL'alternative est que les deux côtés doivent être formés simultanément avec le côté gauche de la connexion.
        // 判断 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. logique ou||Vous pouvez utiliserorLes substitutions ou les liens à droite et à gauche sont validés (true) et l'ensemble est validé (true).
        cond_a:=1>2;
        cond_b:=4>3;
        cond_c:=5>6;
        cond_a || cond_b or cond_c;    // 返回值为1,成立
        
        1. ()L'opérateur calcule les expressions dans les parenthèses.
        1>2 AND (2>3 OR 3<5)    // 运算结果为假
        1>2 AND 2>3 OR 3<5      // 运算结果为真
        
      • Opérateur d'arithmétique

        返回值:数值类型
        

        Les opérateurs arithmétiques sont des symboles utilisés pour effectuer des opérations arithmétiques de base.

        • Plus +

          A:=1+1;      // 返回 2
          
        • Soit moins -

          A:=2-1;      // 返回 1
          
        • Il y a une différence.

          A:=2*2;      // 返回 4
          
        • À moins que /

          A:=4/2;      // 返回 2
          
    • Les fonctions

      • Les fonctions

        Dans le monde de la programmation, une fonctionnalité est un morceau de code qui implémente une fonction; elle peut être appelée pour d'autres codes, généralement sous la forme suivante:

        function(param1,param2,...)
        
        • Il s'agit de:

          Les noms de fonctions (paramètres 1, paramètres 2,...), peuvent ne pas avoir de paramètres ou avoir plusieurs paramètres; par exemple:MA(x,n);Retour des représentantsnAu cours du cyclexLa moyenne mobile simple est la moyenne mobile simple.MA()C'est une fonction.xetnC'est le paramètre de la fonction.

          Lorsque nous utilisons des fonctions, nous devons comprendre la définition de base des fonctions, c'est-à-dire quelles données peuvent être obtenues en appelant cette fonction. En général, les fonctions ont des paramètres, et nous devons nous assurer que le type de données transmis est conforme lorsque nous passons des paramètres.MA(x,n);L'explication est la suivante:

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

          C'est très hostile pour les débutants. Nous allons ensuite analyser les fonctions en profondeur, en essayant de trouver une façon rapide d'apprendre et d'utiliser les fonctions.

      • Retourne la valeur

        Pour apprendre rapidement les fonctions, nous devons d'abord comprendre un concept appelé "valeur de retour".RetourLa valeur est une valeur spécifique, donc la valeur retournée signifie: les données disponibles.

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

        Le deuxième concept important de la fonction secondaire est celui des paramètres, qui peuvent être transmis à différentes paramètres pour obtenir des valeurs de retour différentes.

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

        Les variables précédentesma5ma10Le premier paramètre deXTout le mondeC(Prix de clôture), en faitCC'est aussi une fonction (qui renvoie la séquence des prix de clôture jusqu'à aujourd'hui), mais il n'a pas de paramètres.MA()Les fonctions, nous voulons obtenir des moyennes mobiles de quelques jours de prix de clôture, par des paramètres, les fonctions sont plus flexibles à utiliser.

      • Comment apprendre

          1. Tout d'abord, nous devons comprendre le rôle de la fonction, c'est-à-dire ce que cette fonction peut nous donner.
          1. La dernière chose à faire est de comprendre le type de la valeur retournée, après tout, nous utilisons des fonctions pour obtenir la valeur retournée.
          1. Ensuite, nous avons besoin de connaître le type de données des paramètres.MA(x,n)Si vous ne connaissez pas les paramètres,xnLe type de données ne peut pas non plus être correctement retourné.

        Les fonctions suivantes sont présentées, utilisées et suivent les 3 principes ci-dessus.

    • Amélioration de la langue

      • 麦语言avecJavaScriptLa programmation mixte

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

          scopeLes objets peuvent ajouter des attributs et attribuer des fonctions anonymes aux attributs, et les fonctions anonymes auxquelles ces attributs sont référencés peuvent être appelées dans la partie du code de Mac.

        • scope.getRefs(obj)Les fonctions

          DansJavaScriptDans le bloc de code, appelerscope.getRefs(obj)Les fonctions renvoient des messages.objLes données de l'objet.

          Voici ce qui suit:%% %%Le symbole est enveloppéJavaScriptLe code est extrait du code de Mac.TEST(C)Les données transmises lors de l'appel de la fonctionCLe prix de clôture.scope.getRefsLa fonction renvoie tous les prix de clôture de cette ligne K.throw "stop"La procédure est interrompue.arrLe prix de clôture de la première barre est inclus.throw "stop"Je vais le faire.JavaScriptLe code finalreturnLes prix de vente sont les mêmes que pour les prix de vente.

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

          DansJavaScriptL'accès à toutes les barres de lignes K dans le bloc de code.

          TESTLa fonction renvoie une valeur. 1 est la ligne cinétique et 0 est la ligne solaire.

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

          DansJavaScriptDans le bloc de code, accédez à la barre courante.

          Le prix moyen est calculé en fonction du prix d'achat.

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

          L'expérience montre que le marché de l'électronique est en train de s'effondrer.

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

          Obtenez les chaînes de noms des transactions en cours.

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

          Obtenez la position de la ligne KBar.

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

          Cette fonction est utilisée pour obtenir des variables dans la partie du code de la langue Maï.

          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

          canTradeAttribut marque si le bar actuel est le dernier bar ou non

          Par exemple, pour déterminer si une stratégie est prête à être échangée, vous pouvez imprimer des données de marché.

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

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

        Une stratégie d'ouverture, d'arrêt après une mise à l'échelle.

    • Citation multi-cyclique

      Le système sélectionne automatiquement un cycle de ligne K de base approprié et synthétise les données de cycle de ligne K de base avec toutes les données de ligne K référencées pour assurer l'exactitude des données.

      • Utilisation:#EXPORT 公式名 ... #ENDCréer une formule. Si vous ne faites pas de calcul de formule pour obtenir des données de différentes périodes, vous pouvez également écrire une formule vide.

        La formule vide est:

        #EXPORT TEST 
        NOP;
        #END           // 结束
        
      • Utilisation:#IMPORT [MIN,周期,公式名] AS 变量值La formule de référence: obtenir les données pour les cycles définis (prix de clôture, prix d'ouverture, etc., obtenues par la valeur des variables).

        IMPORTDans les ordresMINJe veux dire:Les niveaux de minutesLe blogueur a écrit: "La langue Ma, une plateforme de quantification par les inventeurs.IMPORTSupports uniquement dans les commandesMINLes niveaux. Les cycles non standard sont désormais pris en charge, par exemple#IMPORT [MIN,240,TEST] AS VAR240Importer des données telles que des lignes K de cycles de 240 minutes ((4 heures)).

        Exemple de code:

        // 本代码演示如何引用不同周期的公式在同一代码里
        // #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;
        
      • Utilisé pour référencer des données multicycliquesREFLLVHHVIl faut faire attention aux références à l'instruction

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

        ComparaisonMIN5.REF1CetREF(MIN5.C, 1)La différence est évidente:MIN5.REF1Cest la valeur du prix de clôture de la deuxième inversion de la barre de 5 minutes de données sur la ligne K.REF(MIN5.C, 1)est le cycle de la ligne K du modèle actuel (c'est-à-dire que le cycle de répétition du code ci-dessus est réglé à 1 minute,period: 1mLe prix de clôture du cycle de 5 minutes où se trouve le deuxième BAR est le facteur décimale du moment présent. Les deux définitions sont distinctes et peuvent être utilisées selon les besoins.

    • Définition du modèle

      • Un modèle de filtrage des signaux

        En écrivant dans le modèleAUTOFILTERLes fonctions permettent de contrôler et de filtrer les signaux de manière homogène, en prenant le premier signal comme signal valide lorsque plusieurs signaux sont satisfaits. Le même signal sur la ligne k suivante sera filtré.

        Les instructions prises en charge par le modèle de filtrage: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, qui ne prennent pas en charge les instructions avec des chiffres comme BK ((5)).

        Par exemple:

        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线触发一次信号。
        
      • Modèle d'augmentation et de diminution

        Ne pas écrire dans le modèleAUTOFILTERLes fonctions permettant d'obtenir des signaux d'ouverture ou d'équilibrage successifs peuvent être augmentées ou diminuées.

        Les instructions prises en charge sont: BK ((N) BP ((N) SK ((N) SP ((N) CLOSEOUT BPK ((N) SPK ((N) ), mais pas les instructions d'ouverture sans numérotation. (1) Prise en charge du regroupement des instructions. (2) Lorsque plusieurs conditions d'instruction sont satisfaites simultanément, le signal est exécuté dans l'ordre précédent et suivant celui écrit dans la déclaration conditionnelle. Par exemple:

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

        UtilisationTRADE\_AGAINIl est possible d'envoyer plusieurs signaux consécutifs sur la même ligne d'instructions.

        理解:
        以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。
        
      • Modèle d'une ligne K à un signal

        Le calcul du signal est effectué en temps réel, que la ligne K soit terminée ou non, c'est-à-dire que la ligne K n'est pas terminée avant de passer une commande; la vérification à la fin de la ligne K est effectuée si la direction de possession ne correspond pas à la direction du signal à la fin de la ligne k.

        Par exemple:

        MA1:MA(CLOSE,5);
        MA2:MA(CLOSE,10);
        CROSSUP(MA1,MA2),BPK;    // 5周期均线上穿10周期均线做多。
        CROSSDOWN(MA1,MA2),SPK;  // 5周期均线下穿10周期均线做空。
        AUTOFILTER;
        
      • Modèle d'une ligne K de plusieurs signaux

        Le modèle est utilisémultsigIl est utilisé pour contrôler et réaliser plusieurs signaux d'une seule ligne K.

        Le calcul du signal est effectué en temps réel, que la ligne k soit terminée ou non.

        Le signal n'est pas revu, il n'y a pas de disparition de signal, la direction du signal est toujours la même que celle de l'emplacement.

        Une ligne K peut être exécutée plusieurs fois si plusieurs conditions de signal sont remplies.

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

        MULTSIGIl est possible d'exécuter plusieurs lignes d'instructions différentes sur une ligne K. Une ligne d'instruction ne peut pas envoyer de signal qu'une seule fois.

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

        Il a écrit: Dans le modèle 1, les deux modes de signal d'une ligne k: les ordres de clôture et les ordres d'ordre sont pris en charge. Le modèle de décomposition 2, qui prend également en charge la séquence de signalisation multiple d'une ligne k. Les modèles d'accumulation et de décomposition, écriremultsigUne fonction, qui implique de multiples ajouts ou de multiples diminutions sur une ligne k.

    • Mode d'exécution

      img

      • Modèle de prix de clôture

        Le modèle de prix de clôture n'exécute le modèle que lorsque la barre actuelle est terminée et exécute les transactions au début de la barre inférieure.

      • Modèle de prix en temps réel

        Le modèle de prix en temps réel est un modèle qui est exécuté une fois pour chaque variation de prix et qui se négocie instantanément en cas de signal. Le modèle de prix en temps réel ignore les signaux du jour précédent (les signaux du jour précédent sont exécutés immédiatement le jour précédent) et le modèle de prix en temps réel ne regarde que les données du marché actuel pour juger si un signal est déclenché.

    • Le graphique montre

      • Indicateurs supplémentaires

        Utiliser des opérateurs^^, le paramètre de réglage est affiché sur le schéma principal lors de l'attribution des variables.

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

        img

      • Indicateurs supplémentaires

        Utiliser des opérateurs:, en même temps que l'attribution de la variable, l'indicateur de réglage est affiché sur le sous-diagramme.

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

        img

        Si vous ne souhaitez pas qu'il apparaisse sur un thème ou un sous-thème, utilisez l'opérateur ....

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

        img

        Vous pouvez utiliserDOTCOLORREDLes utilisateurs qui connaissent la langue Maï sont habitués à définir le type, la couleur, etc. des lignes.

    • Questions fréquemment posées

      Introduction à ce qui est courant dans la rédaction des indicateursLe problèmeIl y a des points à ne pas négliger lors de la rédaction.

      • Attention au score.;La fin de la journée.

      • Notez que les mots clés du système ne peuvent pas être utilisés comme déclarations de variables.

      • Attention à l'utilisation des chaînesLes citationsIl y a aussi des articles sur les droits de l'homme.'开仓'Cette chaîne.

      • Les notes

        Les annotations

        • // 注释内容Le code n'est pas compilé pendant l'exécution, c'est-à-dire qu'il n'est pas exécuté.//Le contenu ci-dessous, généralement utilisé pour marquer le sens du code, permet une compréhension et une mémorisation rapides lors de la révision du code.

        • { 注释内容 }Il y a aussi des gens qui ont été tués.

          A:=MA(C,10);
          {上一行代码是计算均线。}
          
        • (* 注释内容 *)Il y a aussi des gens qui ont été tués.

          A:=MA(C,10);
          (*上一行代码是计算均线。*)
          
      • Les méthodes d'entrée

        Lors de l'écriture du code, des erreurs de symbole sont souvent causées par le changement d'anglais dans le mode d'entrée.:Le signe de la fin;Je ne sais pas.,Je ne sais pas.()Il est important de noter que ces caractères sont différents en anglais et en chinois.

        Si vous utilisez les méthodes de saisie de recherche par chien, Baudoin ou Bing, vous pouvez le faire en appuyant sur une seule touche.shiftLe bouton de commutation rapide entre le chinois et l'anglais.

      • La logique de l'erreur

        1. Au moins, au moins, au moins: l'opérateur relationnel correspondant>=
        2. Maximum, maximum, maximum: les opérateurs relationnels correspondants<=
      • Politique de synchronisation

        Dans la stratégie des contrats à terme, si une position est détenue manuellement avant le lancement du robot de stratégie, le robot détecte l'information de détention lors du lancement et la synchronise avec l'état de détention réel. Il est possible de l'utiliser dans les stratégies.SPBPCLOSEOUTLes commandes de l'établissement.

        %%
        if (!scope.init) {
            var ticker = exchange.GetTicker();
            exchange.Buy(ticker.Sell+10, 1);
            scope.init = true;
        }
        %%
        C>0, CLOSEOUT;
        
      • Ne pas soutenir les positions bidirectionnelles

        Le langage mac ne prend pas en charge le même contrat, avec plusieurs espaces à la fois.

  • Citation des données de la ligne K

    • Ouvre

      Le prix d'ouverture pour obtenir le graphique K.

      Le prix de vente

      Fonction: OPEN, abrégé en O

      Paramètres: Aucun

      Explanation: Revenir au prix d'ouverture du " cycle ".

      Données séquentielles

      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简写)。
      
    • - Très haut.

      Pour obtenir le prix le plus élevé sur le graphique K.

      Le prix le plus élevé

      Fonction: HIGH, abrégé en H

      Paramètres: Aucun

      Explanation: Retourner le prix le plus élevé du "cycle"

      Données séquentielles

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

      Pour obtenir le prix le plus bas du diagramme K.

      Le prix le plus bas

      Fonction: LOW, abrégé en L

      Paramètres: Aucun

      Explanation: Retourner le prix le plus bas du "cycle"

      Données séquentielles

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

      Le prix de clôture du graphique K.

      Prix de clôture

      Fonction: CLOSE, abrégé en C

      Paramètres: Aucun

      Explanation: Retourner au prix de clôture du cycle

      Données séquentielles

      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

      Le nombre de transactions obtenues sur le diagramme K.

      Le chiffre d'affaires

      Fonction: VOL, abrégé en V

      Paramètres: Aucun

      Explanation: Retourne le volume des transactions dans le cycle

      Données séquentielles

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

      Le montant total des avoirs sur le marché actuel des contrats à terme.

      OpenInterest:OPI;
      
    • REF

      Il y a aussi des gens qui ont été blessés.

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

      L'unité de négociation qui a obtenu le contrat de données.

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

      La monnaie numérique

      La valeur de UNIT est 1⁄4.

      Les contrats à terme sur la monnaie numérique

      La valeur de UNIT est liée à la monnaie du contrat.

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

      Le prix le plus bas du contrat de données.

      取数据合约的最小变动价位。
      用法:
      MINPRICE; 取加载数据合约的最小变动价位。
      
    • Le prix de l'appareil

      Le prix le plus bas du contrat de négociation.

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

    • Le BARPOS

      Prenez la position de la ligne K.

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

      DAYBARPOS prend la racine de la ligne K BAR comme étant la dixième ligne K BAR de la journée.

    • Période

      La valeur de la période est le nombre de minutes.

      1, 3, 5, 15, 30, 60, 1440
      
    • Date de mise en service

      La dateLa fonction DATE obtient les dates de l'année de ce cycle depuis 1900.

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

      Le temps de la ligne 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;
      
    • L'année

      L'année.

      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);
      
    • Le mois

      Il est temps de prendre le mois.

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

      Nombre de jours pour un cycle

      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
      
    • Temps de travail

      Les heures.

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

      Une minute.

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

      Le nombre de semaines obtenu.

      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;
      
  • Fonction de jugement logique

    • Les produits

      Retourne l'état de la position du cycle en cours.

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

      Il y a aussi des gens qui ont été tués.

      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日均线之间
      
    • Le dernier compte

      BARSLASTCOUNT (COND) Compte à partir du cycle en cours, statistiquement le nombre de cycles où les conditions sont satisfaites en continu.

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

      Les fonctions croisées.

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

      En bas

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

      Il y a des gens qui ont été tués.

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

      Il y a des gens qui se demandent s'ils sont toujours satisfaits.

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

      Il y a des gens qui ne sont pas satisfaits.

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

      Les fonctions conditionnelles.

      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死叉作为开空仓条件
      
    • Les États membres

      Les fonctions conditionnelles.

      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死叉作为开空仓条件
      
    • Contrat de travail

      Le contrat est-il en cours ou pas?

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

      Il y a aussi une autre fonctionnalité qui est utilisée pour les expressions régulières.

      Décider du contrat

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

      Déterminez le nom de l'échange

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

      Le vagin.

      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; 表达同等意义
      
    • Le montant de la taxe

      Je ne peux pas le faire.

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

      Déterminez si le cycle correspond à la dernière ligne K.

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

      Déterminez les valeurs vides.

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

      Les rayons du soleil.

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

      Déterminez les fonctions.

      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
      
    • Les espèces d'espèce

      La fonction de conservation de l'intersection

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

      Je ne sais pas.

      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

      Retourne une valeur nulle.

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

      Il est très important de savoir ce que vous faites.

      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,说明当天不满足跳空高开条件
      
  • Fonction d'exécution en boucle

    • Résultats de l'analyse

      La fonction de conditionnement cyclique.

      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;
      
  • Fonction de statistique financière

    • Le nombre de membres

      Le nombre de cycles entre le premier cycle valide et le nombre de cycles actuel.

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

      La dernière fois que les conditions ont été établies.

      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线根数
      

      ExpliquerBARSLASTFonction:

      • 1 {\displaystyle 1} retourne 0 {\displaystyle 0} si les conditions de la ligne K actuelle sont remplies.
      • 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 2 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠ 1 ≠
      • 3, si la ligne K sur laquelle la condition a été établie n'est pas trouvée jusqu'à la fin, elle renvoie une valeur nulle.
    • Les produits chimiques

      La première condition s'applique au nombre de cycles actuel.

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

      La première condition dans N cycles est établie jusqu'au nombre de cycles actuel.

      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周期内第一次满足阳线到当前的周期数
      
    • Le nombre de personnes concernées

      Obtenez le nombre de cycles interlignes K qui satisfont les conditions A et B les plus récentes.

      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周期均线之间的周期数
      
    • Compte

      Le nombre total de personnes atteintes de cette maladie.

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

Plus de

Indicateur de négociation haut de gamme de la série 98KLa ligne k passe par la ligne solaire j1 et se pose sur la ligne solaire j1 puis retourne sur la ligne j1 et ouvre la clé, mais quand on peut la détecter, elle est ouverte sur la ligne du pénis et non sur la ligne j1. D1: = si jk < 0 && CROSS close, j1) and CLOSE > OPEN and close > j1, j1, 0; D1, BK; /upload/asset/2af6fee 82ea8bb3725687.png Il s'agit d'un projet de loi qui vise à améliorer la qualité de la vie des personnes.

Indicateur de négociation haut de gamme de la série 98KLa plate-forme de trading domestique aime avoir une base de fonctions en Mac, qui peut être compatible plus tard, comme les fonctions compatibles sur Tradingview, de sorte que les stratégies d'indicateurs bilatéraux peuvent être directement transférées vers les inventeurs pour être quantifiées.

Indicateur de négociation haut de gamme de la série 98KisLast ((x) Description de la fonction: Déterminez si les données actuelles sont les dernières données. Cette fonction fonctionne-t-elle sur l'inventeur?

wanghehe711@qq.comEst-ce que la langue Ma peut fonctionner sur un disque multi-variétés?

C' est de la crème.Si vous souhaitez accrocher un MARK, avez-vous besoin d'intégrer Java ou Python?

Les nuagesEst-ce que le langage Mac prend en charge le contrat OKEX? Est-ce que l'API du contrat OKEX est accessible?

L'inventeur de la quantification - un petit rêveBien, regardez par ici.

L'inventeur de la quantification - un petit rêvePour le moment, il n'y a pas de support pour cette instruction isLast

L'inventeur de la quantification - un petit rêveLa langue Ma est une stratégie mono-variété multi-plateforme qui ne peut gérer qu'une seule variété, un seul compte.

L'inventeur de la quantification - un petit rêveLa conception est plus complexe, il est recommandé d'écrire une stratégie directement avec JS, PY si c'est une stratégie de liste d'accrochage.

L'inventeur de la quantification - un petit rêveLe projet de loi de 2010 sur les droits de l'homme a été adopté par le Conseil de l'Europe.