Le langage My est un langage de transaction programmatique qui est compatible et amélioré avec le langage Mac. Le langage My quantifié par FMZ est soumis à des vérifications grammaticales rigoureuses, par exemple lors de l'utilisation d'une augmentation de langage pour intégrer le code du langage JavaScript, dans%%Plus d'un caractère vierge après l'opérateur entraîne une erreur ▽.
-
Détails
-
contracter
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()函数部分 -
Les variables
Une variable est un espace ouvert dans la mémoire de l'ordinateur pour stocker des données.
Découvrez la première variable
// 将1赋值给变量a a:=1;exister
麦语言Dans, depuis数据量La distinction est simple:- Données à valeur unique: une seule valeur, par exemple
0、1、’abc’。 - Données de séquence: séquence de données composée d'une pile de données à valeur unique, par exemple
Close(Prix de clôture), iciCloseElle contient:nPrix de clôture du cycle[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]
Distinction avec les variants de type
- Type de chaîne de caractères: obligatoire
''Les paquets, les types de chaînes de caractères ne sont pas autorisés à être utilisés directement, mais doivent être exportés dans la vue avec la fonction.
INFO(CLSOE>OPEN,'OK!');- Les types de valeurs sont les nombres entiers, les nombres à points flottants et les nombres décimaux.
// 整数 int:=2; // 小数 float:=3.1;- Le type Boolean, qui utilise 1 (pour vrai) ou 0 (pour faux): 1, 0, vrai ou faux. Par exemple:
A:=1>0;Il y a des gens qui ne sont pas d'accord avec moi.ALa valeur est 1.
// 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数 is_true:=Close>-999;- Variables globales
VARIABLE:VALUE1:10; // 声明一个全局变量,赋值为10,只执行一次。Les réponses sont les suivantes:
VARIABLE:NX:0; // 初始一个全局变量NX为0 NX..NX+1; // 每次累加1 INFO(1,NX); // 每次打印NXAu début
INFOLa phrase est imprimée101Il y a peut-être des doutes sur le fait qu'il n'y ait pas eu d'initiation.0Alors ?
La raison en est que la ligne K initiale a 100 racines au moment de la régression et a été traversée 100 fois.
Le disque dur dépend du nombre de lignes K obtenues initialement.-
Règles de nommage
Dans la plupart des systèmes, la dénomination des variables ne permet pas l'utilisation d'une colonne système pour conserver les caractères (noms de variables intégrées, noms de fonctions). Par exemple, les noms de variables connus
Close、CEn outre, il est interdit de commencer par un nombre pur ou un nombre. Il est interdit de terminer par un nombre très long, car les limites de longueur varient selon les systèmes.
En fait, vous n'avez pas besoin de vous inquiéter de l'efficacité du système traditionnel pour le traitement de la langue chinoise, car le langage de l'argousier est très convivial pour la langue chinoise.- Nom chinois
// 优雅的输出 五日均线:=MA(C,5);- Anglais + souligné
// 输出 move_avg_5:=MA(C,5);Si vous préférez l'anglais, faites en sorte que les gens comprennent la signification de vos variantes autant que possible.
A1,AAA,BBB...cette façon de nommer les choses. Je suis sûr que lorsque vous revisez votre code de référence après un certain temps, vous serez très malheureux à cause de la perte de mémoire. De même, lorsque vous exportez le code à quelqu'un d'autre, l'esprit du lecteur doit s'effondrer.Alors, à partir de maintenant, embrassez le langage de l'argousier avec amour et laissez-le devenir un outil puissant pour votre analyse et votre prise de décision.
- Données à valeur unique: une seule valeur, par exemple
-
Type de données
Le type de données est une notion fondamentale dans la programmation: lorsque nous attribuons une valeur de données spécifique à une variable, cette variable devient le type de la donnée elle-même.
-
- Type de valeur:
1、2、3、1.1234、2.23456 ... -
- Type de chaîne de caractères
'1' 、'2' 、'3' ,字符串类型必须用 '' 包裹 -
- Données séquentielles:
一系列单值数据构成的数据集合 -
- Boolean: le type Boolean de l'expression
Utilisation
1Le représentanttrue,0Le représentantfalse。Exemple
// 声明一个数值类型的变量 var_int := 1; // 声明一个序列数据的变量 var_arr := Close; // 字符串类型不能单独声明,需要结合函数 INFO(C>O, '阳线');
-
-
Outil de calcul
Les symboles utilisés pour effectuer les opérations et les calculs du code de l'indicateur sont, en termes simples, les symboles qui participent aux opérations.
-
Opérateur d'attribution
Utilisé pour attribuer une valeur à une variable
-
:
:, représente l'attribution et est exporté dans le graphique (en sous-graphique).Close1:Close; // 将Close赋值给变量Close1,并且输出到图中 -
:=
:=, représente une attribution, mais n'est pas exportée dans le diagramme (groupe, sous-groupe...) et n'apparaît pas dans le tableau de bord.Close2:=Close; // 将Close赋值给变量Close2 -
^^
^^Deux et trois.^Le symbole représente l'attribution d'une valeur à une variable et est exporté dans le diagramme (le diagramme principal).lastPrice^^C; -
..
..Deux et trois..Les symboles représentent l'attribution d'une valeur à une variable et affichent le nom et la valeur de la variable dans le graphique, mais ne sont pas représentés dans le graphique (graphique principal, graphique secondaire, etc.).openPrice..O
-
-
Opérateur relationnel
L'opérateur de relation est un opérateur binaire utilisé dans les expressions conditionnelles. Il permet de déterminer la relation entre deux données.
Retourne une valeur de type Boole, non
true(1) Ce qui signifiefalse(0)。-
- Plus que
>
// 将2>1的运算结果赋值给rv1变量,此时rv1=1 rv1:=2>1; - Plus que
-
- inférieure à
<
// 返回false,也就是0,因为2大于1 rv3:=2<1; - inférieure à
-
- Plus est égal à
>=
x:=Close; // 将收盘价大于等于10的运算的结果赋值给变量rv2 // 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值 rv2:=Close>=10; - Plus est égal à
-
- inférieur à égal à
<=
此处省略 - inférieur à égal à
-
- égal
=
A:=O=C; // 判断开盘价是不是等于收盘价。 - égal
-
- Ce n'est pas
<>
1<>2 // 判断1是否不等于2,返回值为1(true) - Ce n'est pas
-
-
Opérateur logique
Retourne une valeur de type Boole, non
true(1) Ce qui signifiefalse(0)。- La logique et
&&Elle est disponible.andIl faut que les deux côtés de la connexion soient créés simultanément.
// 判断 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,成立- La logique ou
||Elle est disponible.orLe remplacement ou le lien se fait à droite et à gauche, le côté est établi comme étant "true" et l'ensemble est établi comme étant "true".
cond_a:=1>2; cond_b:=4>3; cond_c:=5>6; cond_a || cond_b or cond_c; // 返回值为1,成立()L'opérateur calcule d'abord l'expression dans les parenthèses.
1>2 AND (2>3 OR 3<5) // 运算结果为假 1>2 AND 2>3 OR 3<5 // 运算结果为真 - La logique et
-
Opérateur arithmétique
返回值:数值类型Les opérateurs arithmétiques sont les symboles utilisés pour effectuer les opérations arithmétiques de base, c'est-à-dire les symboles utilisés pour traiter quatre opérations.
-
Plus ou moins
A:=1+1; // 返回 2 -
Réduction
A:=2-1; // 返回 1 -
On multiplie.*
A:=2*2; // 返回 4 -
À part
A:=4/2; // 返回 2
-
-
-
fonction
-
fonction
Dans le monde de la programmation, une colonne de fonction est un morceau de code qui implémente une certaine fonction. Elle peut également être appelée par d'autres codes, de la manière suivante:
function(param1,param2,...)-
Composé de:
Le nom de la fonction ((paramètre 1, paramètre 2, ...), peut ne pas avoir de paramètre ou avoir plusieurs paramètres. Par exemple:
MA(x,n);Retour des déléguésnAu cours du cyclexLes moyennes mobiles simples sont:MA()C'est une fonction.xetnC'est le paramètre de la fonction.En utilisant une fonction, nous avons besoin de connaître la définition de base de la fonction, c'est-à-dire quelles données peuvent être obtenues en l'appelant. En général, les fonctions ont des paramètres, et lorsque nous transmettons des paramètres, nous devons nous assurer que le type de données transmis est conforme.
MA(x,n);L'explication est la suivante:返回简单移动平均 用法: AVG:=MA(X,N): X的N日简单移动平均,算法(X1+X2+X3+...+Xn)/N,N支持变量Ce n'est pas très convivial pour les débutants. Ensuite, nous faisons une analyse complète des fonctions et essayons de trouver une façon de les apprendre rapidement et de les utiliser.
-
-
Retourne une valeur
Pour apprendre rapidement les fonctions, nous devons d'abord comprendre un concept appelé "valeur de retour".**Le retour.**En dépit de son nom, il s'agit de "retour". La valeur signifie "valeur numérique spécifique", donc la valeur de retour signifie: les données pouvant être obtenues.
// 因为后面的代码中会用到,所以用变量 return_value 接收、保存 function()的返回值 // retrun_value := function(param1,param2); // 例如: AVG:=MA(C,10); // AVG即retrun_value,function函数即:MA函数,param1参数:C即收盘价序列数据,param2参数:10。 -
paramètre
Le deuxième concept important de la fonction secondaire est celui des paramètres, qui peuvent être transmis à des valeurs différentes.
// 变量ma5接收5日收盘价移动平均值 ma5:=MA(C,5); // 变量ma10接收10日收盘价移动平均值 ma10:=MA(C,10);Les variables ci-dessus
ma5、ma10Le premier argument deXLes deuxC(Prix de clôture), en faitCOn peut aussi utiliser une fonction ((pour retourner la séquence de prix d'ouverture et de fermeture jusqu'à présent), mais sans paramètre. Le deuxième paramètre est 5, 10 qui est utilisé pour indiquerMA()La fonction, nous allons obtenir une moyenne mobile de quelques jours de prix de clôture, avec les paramètres, la fonction devient plus flexible. -
Comment apprendre
-
- Tout d'abord, nous devons comprendre le rôle de la fonction, c'est-à-dire quelles données cette fonction peut nous renvoyer.
-
- Enfin, nous avons besoin de connaître le type de la valeur de retour, car nous utilisons des fonctions pour obtenir la valeur de retour.
-
- Deuxièmement, nous avons besoin de connaître le type de données de ces paramètres.
MA(x,n)Si vous ne connaissez pas les paramètresx、nLe type de données de la base de données de la base de données de la base de données de la base de données de la base de données de la base de données de la base de données.
- Deuxièmement, nous avons besoin de connaître le type de données de ces paramètres.
La présentation et l'utilisation des fonctions suivantes suivent les trois principes ci-dessus.
-
-
-
Renforcement de la langue
-
麦语言etJavaScriptLa programmation mixte%% // 这里面可以调用发明者量化的任何API scope.TEST = function(obj) { return obj.val * 100; } %% 收盘价:C; 收盘价放大100倍:TEST(C); 上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值-
scopeObjetsscopeLes objets peuvent ajouter des attributs et attribuer une fonction d'anonymisation à ces attributs, appelant la fonction d'anonymisation qui fait référence à cet attribut dans la section de code du langage Mac. -
scope.getRefs(obj)fonctionexister
JavaScriptDans le bloc de code, appelscope.getRefs(obj)La fonction renvoie l'entréeobjDonnées de l'objet.Ci-après
%% %%Enveloppé dans des symbolesJavaScriptLe code de l'application est un code de langue Mac.TEST(C)Le nombre de fois que la fonction est appeléeCPrix de clôture
scope.getRefsLa fonction renvoie toutes les valeurs de clôture de cette ligne K.throw "stop"La procédure d'interruption.arrIl contient seulement le prix de clôture de la première barre.throw "stop"Je vais le faire.JavaScriptLe code est terminé.returnLes prix de cession ont été reportés à la fin de l'année, mais les prix de cession ont été reportés.%% scope.TEST = function(obj){ var arr = scope.getRefs(obj) Log("arr:", arr) throw "stop" return } %% TEST(C); -
scope.bars
exister
JavaScriptAccédez à toutes les lignes K dans le bloc de code.TESTLa fonction renvoie une valeur: 1 pour le négatif et 0 pour le positif.%% 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
exister
JavaScriptDans le bloc de code, accédez à la barre actuelle.Calculer la moyenne des prix des récoltes élevées et basses.
%% scope.TEST = function(){ var bar = scope.bar var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4 return ret } %% avg^^TEST; -
scope.depth
Accédez aux données de profondeur du marché ((les commandes sont faibles))
%% scope.TEST = function(){ Log(scope.depth) throw "stop" // 打印一次深度数据后就抛出异常,暂停 } %% TEST; -
scope.symbol
Obtenir une chaîne de noms de paires en cours de négociation.
%% scope.TEST = function(){ Log(scope.symbol) throw "stop" } %% TEST; -
scope.barPos
Obtenir la position de la ligne K Bar.
%% scope.TEST = function(){ Log(scope.barPos) throw "stop" } %% TEST; -
scope.get_locals('name')
Cette fonction est utilisée pour extraire les variables de la section de code de la langue Mac.
V:10; %% scope.TEST = function(obj){ return scope.get_locals('V') } %% GET_V:TEST(C);# 注意: # 如果某个变量,由于周期不足的时候计算不出数据,这个时候在JavaScript代码中调用scope.get_locals函数 # 获取这个变量时,会报错:line:XX - undefined locals某个变量名undefined -
scope.canTrade
canTradeAttributs indiquant si la barre actuelle est la dernière racine.Par exemple, pour déterminer si la stratégie est prête à passer une commande, imprimer des données de situation
%% scope.LOGTICKER = function() { if(exchange.IO("status") && scope.canTrade){ var ticker = exchange.GetTicker(); if(ticker){ Log("ticker:", ticker); return ticker.Last; } } } %% LASTPRICE..LOGTICKER;
-
-
Exemple d'utilisation:
%% scope.TEST = function(a){ if (a.val) { throw "stop" } } %% O>C,BK; C>O,SP; TEST(ISLASTSP);La stratégie est interrompue après avoir ouvert ou vidé une position.
-
-
Citation à cycles multiples
Le système choisit automatiquement une période de ligne K sous-jacente appropriée et utilise cette période de ligne K sous-jacente pour synthétiser toutes les données de ligne K citées, assurant ainsi l'exactitude des données.
-
Utilisation:
#EXPORT 公式名 ... #ENDCréer une formule. Si vous ne faites pas de calculs de formule pour obtenir des données de différentes périodes, vous pouvez également écrire une formule vide.La formule vide est la suivante:
#EXPORT TEST NOP; #END // 结束 -
Utilisation:
#IMPORT [MIN,周期,公式名] AS 变量值Citez la formule <unk> pour obtenir les données de la période définie <unk> (prix de clôture, prix d'ouverture, etc., obtenu par les valeurs des variables) <unk>IMPORTDans l'ordreMINÇa veut dire:Nombre de minutes◦ La plateforme de quantification de l'inventeur, le langage Mac,IMPORTCommandes uniquementMINLe cycle non standard est désormais pris en charge, par exemple#IMPORT [MIN,240,TEST] AS VAR240Importez des données telles que la ligne K avec une période de 240 minutes (environ 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 la référence de données à cycles multiples
REF、LLV、HHVAttention aux instructions qui citent des données(*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;Comparaison
MIN5.REF1CetREF(MIN5.C, 1)Les différences sont les suivantes:
MIN5.REF1Cest la valeur de clôture de la seconde BAR inversée du moment actuel de la ligne K de 5 minutes.
REF(MIN5.C, 1)est la période de la ligne K du modèle actuel ((le code ci-dessus a une période de rétroaction de 1 minute, soitperiod: 1m), le prix de clôture d'un cycle de 5 minutes où BAR est le second inverse de l'instant présent.
Les deux définitions sont différentes et peuvent être utilisées selon les besoins.
-
-
Détails du modèle
-
Modèle de filtrage des signaux à l'envers
En écrivant dans le modèle
AUTOFILTERPour contrôler et réaliser un filtrage uniforme des signaux, lorsque plusieurs signaux d'ouverture de stock sont satisfaits, le premier signal est pris comme signal valide et le même signal sur la ligne k suivante est filtré.Les instructions prises en charge par le modèle de filtrage sont les suivantes: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, BK ((5) n'est pas pris en charge.
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'accumulation et de réduction
Pas écrit dans le modèle
AUTOFILTERFonction permettant de générer des signaux d'ouverture ou de clôture de position en continu.Les directives prises en charge sont: BK (N), BP (N), SK (N), SP (N), CLOSEOUT (BPK (N), SP (N), et ne prennent pas en charge les directives d'ouverture de position sans le numéro de série.
(1) Prise en charge du regroupement des instructions.
(2) Lorsque plusieurs conditions de l'instruction sont remplies simultanément, le signal est exécuté dans l'ordre précédent écrit dans l'instruction 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);utiliser
TRADE\_AGAIN
Il est possible d'utiliser la même commande pour envoyer plusieurs signaux.理解: 以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。 -
Modèle d'un signal sur une ligne K
Le signal est calculé en temps réel, indépendamment de la fin de la ligne K, c'est-à-dire que la ligne K n'a pas terminé l'ordre précédent; la ligne K est vérifiée à la fin de la ligne K. Si la direction de la position est différente de la direction du signal à la fin de la ligne k, la position est automatiquement synchronisée.
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 de plusieurs signaux sur une ligne K
Modèle par utilisation
multsigPour le contrôle et la réalisation d'un K-thread, plusieurs signaux sont émis.Les commandes sont effectuées en temps réel, indépendamment de la fin de la ligne k.
Le signal n'est pas vérifié, il n'y a pas de cas de disparition du signal, la direction du signal est toujours la même que la direction de la position.
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);MULTSIGOn peut exécuter plusieurs lignes de commande sur une seule ligne K.
Une ligne de commande ne donne qu'un seul 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);Il ajoute:
Les deux types de signaux d'une ligne k, soit un ordre de clôture et un ordre d'ordre, sont supportés.
Le modèle d'accumulation et de réduction de stockage, qui prend en charge une ligne k avec plusieurs commandes de signaux.
Le modèle d'addition et de déduction.multsigLa fonction, qui implique plusieurs fois d'augmenter ou de diminuer le poids sur une ligne k.
-
-
Mode de réalisation
-
Modèle de prix de clôture
Le modèle de prix de clôture implique que le modèle est exécuté à la fin du BAR actuel et que la transaction est exécutée au début du BAR sous-jacent.
-
Modèle de prix en temps réel
Les modèles de prix en temps réel sont des modèles qui sont exécutés une fois pour chaque variation de prix, et qui sont négociés immédiatement après le signal.
Les modèles de prix en temps réel ignorent les signaux de la journée précédente (les signaux de la journée précédente sont exécutés immédiatement la veille), les modèles de prix en temps réel ne regardent que les données actuelles pour déterminer si le signal a été déclenché ou non.
-
-
Le graphique montre
-
Indicateur complémentaire du graphique principal
Utilisation des opérateurs
^^, les paramètres sont affichés sur le graphique principal tout en donnant une valeur à la variable.MA60^^MA(C, 60); // 计算参数为60的均线指标 -
Indicateurs complémentaires du sous-groupe
Utilisation des opérateurs
:Les paramètres sont affichés dans le sous-diagramme, en même temps que l'attribution des valeurs aux variables.ATR:MA(MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26); // 给ATR变量赋值,":"符号后为计算ATR的公式Si vous ne souhaitez pas qu'il soit affiché sur le graphique principal ou le graphique secondaire, utilisez l'opérateur ".."
MA60..MA(C, 60); // 计算参数为60的均线指标À utiliser
DOT、COLORREDLe type de ligne, la couleur, etc. de la ligne est adapté aux habitudes des utilisateurs familiers avec le Mac.
-
-
Questions fréquemment posées
Découvrez ce qui est communément rencontré lors de la rédaction d'indicateursQuestions à se poser, généralement un point à prendre en compte lors de la rédaction ((continuer à compléter) <unk>).
-
Attention à la ponctuation
;La fin du film. -
Attention: les mots-clés du système ne peuvent pas être déclarés comme variables.
-
Attention à l'utilisation de chaînesUne seule citation,Par exemple:
'开仓'Cette chaîne de caractères: -
Notes de rédaction
Le commentaire
-
// 注释内容La compilation de code (ou non-compilation) est l'exécution de code qui n'est pas compilé.//Le contenu de ce qui suit est généralement utilisé pour marquer le sens du code, afin de faciliter la compréhension et la mémorisation lors de la révision du code. -
{ 注释内容 }Les notes.A:=MA(C,10); {上一行代码是计算均线。} -
(* 注释内容 *)Les notes.A:=MA(C,10); (*上一行代码是计算均线。*)
-
-
Mode de saisie
Lors de l'écriture du code, il est fréquent que des erreurs de symboles soient causées par la commutation entre l'anglais et l'anglais. Les types les plus courants sont les suivants:
:Le point final;Une virgule,Dans les parenthèses()Et ainsi de suite. Attention aux différents caractères dans l'état chinois-anglais.Si vous utilisez Google+, Baidu ou Bing, vous pouvez le faire en appuyant une fois sur le bouton de commande.
shiftTouchez pour passer rapidement de l'anglais au chinois. -
Une logique fallacieuse
- Au moins, pas moins, pas moins que: l'opérateur relationnel correspondant
>=。 - Maximum, maximum, pas plus: l'opérateur relationnel correspondant
<=。
- Au moins, pas moins, pas moins que: l'opérateur relationnel correspondant
-
Début de synchronisation stratégique
Dans une stratégie à terme, si une position détenue a été ouverte manuellement avant le démarrage du robot de stratégie, l'information sur la position détenue sera détectée lors du démarrage du robot et synchronisée avec l'état réel de la position.
Il est possible de les utiliser dans des stratégies.SP,BP,CLOSEOUTLe siège est à l'arrêt.%% if (!scope.init) { var ticker = exchange.GetTicker(); exchange.Buy(ticker.Sell+10, 1); scope.init = true; } %% C>0, CLOSEOUT; -
Ne pas soutenir une position bidirectionnelle
Les langues Mac ne prennent pas en charge les mêmes contrats et les mêmes dépôts.
-
-
-
Références de données de ligne K
-
OPEN
Le prix d'ouverture de la carte K.
Prix de départ
Fonction: OPEN, écrite O
Paramètre: Aucun
Explication: Retour sur le 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简写)。 -
HIGH
Le prix le plus élevé pour obtenir une carte K.
Prix le plus élevé
Fonction: HIGH, écrite H
Paramètre: Aucun
Expliquer: Retour sur 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线的最高价 -
LOW
Le prix le plus bas pour obtenir une carte K.
Prix le plus bas
Fonction: LOW, abréviation L
Paramètre: Aucun
Explication: Retour au 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线的最低价 -
CLOSE
Le prix de clôture de la carte K.
Prix de clôture
Fonction: CLOSE, abréviation de C
Paramètre: Aucun
Explication: Retour au cours 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
Obtenir le nombre de transactions sur une carte K.
Nombre de transactions réalisées
Fonction: VOL, abrégé V
Paramètre: Aucun
Explication: Retour sur le chiffre d'affaires de ce 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
Prenez le total des positions sur le marché des contrats à terme actuel.
OpenInterest:OPI; -
REF
Citations précédentes
引用X在N个周期前的值。 注: 1、当N为有效值,但当前的k线数不足N根,返回空值; 2、N为0时返回当前X值; 3、N为空值时返回空值。 4、N可以为变量 例1: REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价 例2: AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C);//取最近一次买开仓信号K线的收盘价 // 1)发出BK信号的当根k线BARSBK返回空值,则发出BK信号的当根k线REF(C,BARSBK)返回 空值; // 2)发出BK信号的当根k线BARSBK返回空值,不满足BARSBK>=1,则当根k线的收盘价。 // 3)发出BK信号之后的k线BARSBK返回买开仓的K线距离当前K线的周期数,REF(C,BARSBK) 返回开仓k线的收盘价。 // 4)例:1、2、3 三根k线,1 K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3 K线返回 1 K线的收盘价。 -
UNIT
Unité de transaction pour laquelle le contrat de données a été conclu.
取数据合约的交易单位。 用法: UNIT 取加载数据合约的交易单位。La monnaie numérique en espèces
La valeur UNIT est 1.
Contrats à terme sur crypto-monnaies
La valeur de l'UNIT est liée à la monnaie du contrat.
OKEX期货币本位合约:BTC合约1张代表100美元,其它币种的1张合约代表10美元 -
MINPRICE
Le prix minimum du contrat de données.
取数据合约的最小变动价位。 用法: MINPRICE; 取加载数据合约的最小变动价位。 -
MINPRICE1
Le prix minimum de variation du contrat de négociation
取交易合约的最小变动价位。 用法: MINPRICE1; 取交易合约的最小变动价位。
-
-
Fonction de temps
-
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。 -
DAYBARPOS
DAYBARPOS comme racine K BAR est la racine K de la journée BAR。
-
PERIOD
La valeur de la période est le nombre de minutes.
1, 3, 5, 15, 30, 60, 1440 -
DATE
Date et lieuLa fonction DATE, qui obtient la date du mois de l'année depuis 1900 pour cette période.
例1: AA..DATE; // 测试时AA的值为220218,表示2022年2月18日 -
TIME
Le temps de prendre 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; -
YEAR
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); -
MONTH
Prenez le mois
MONTH,返回某个周期的月份。 注: MONTH的取值范围为1—12. 例1: VALUEWHEN(MONTH=3&&DAY=1,C); // 在K线日期为三月一日时取其收盘价 例2: C>=VALUEWHEN(MONTH<REF(MONTH,1),O),SP; -
DAY
Le nombre de jours d'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 -
HOUR
Une heure.
HOUR,返回某周期的小时数。 注: HOUR的取值范围为0—23 例1: HOUR=10; // 在10:00的K线上返回值为1,其余K线上返回值为0 -
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的时候卖平仓 -
WEEKDAY
Nombre de semaines
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
-
BARSTATUS
Retourner à l'état de la position du cycle en cours.
BARSTATUS 返回当前周期的位置状态。 注: 该函数返回1表示当前周期是第一个周期,返回2表示是最后一个周期,返回0表示当前周期处于中间位置。 例: A:=IFELSE(BARSTATUS=1,H,0); // 如果当前K线是第一个周期,变量A返回K线最高值,否则取0 -
BETWEEN
Les médias.
BETWEEN(X,Y,Z) 表示X是否处于Y和Z之间,成立返回1(Yes),否则返回0(No)。 注: 1、其中若X=Y、X=Z、或X=Y且Y=Z时函数返回值为1(Yse)。 例1: BETWEEN(CLOSE,MA5,MA10); // 表示收盘价介于5日均线与10日均线之间 -
BARSLASTCOUNT
BARSLASTCOUNT ((COND) Compte à l'avance à partir du cycle actuel, en calculant le nombre de cycles qui satisfont à la condition de manière continue.
注: 1、返回值为从当前周期计算COND连续不为0的周期数 2、条件第一次成立的当根k线上BARSLASTCOUNT(COND)的返回值为1 例: BARSLASTCOUNT(CLOSE>OPEN); //计算当根K线在内连续为阳线的周期数 -
CROSS
Fonction de croix
CROSS(A,B) 表示A从下方向上穿过B,成立返回1(Yes),否则返回0(No) 注: 1、满足穿越的条件必须上根k线满足A<=B,当根k线满足A>B才被认定为穿越。 例1: CROSS(CLOSE,MA(CLOSE,5)); // 表示收盘线从下方向上穿过5周期均线 -
CROSSDOWN
Traversée vers le 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;表达同等意义 -
CROSSUP
En haut, en travers.
CROSSUP(A,B)表当A从下方向上穿过B,成立返回1(Yes),否则返回0(No) 注: 1、CROSSUP(A,B)等同于CROSS(A,B),CROSSUP(A,B)编写更利于理解。 例1: MA5:=MA(C,5); MA10:=MA(C,10); CROSSUP(MA5,MA10),BK; // MA5上穿MA10,买开仓 // CROSSUP(MA5,MA10),BK;与CROSSUP(MA5,MA10)=1,BK;表达同等意义 -
EVERY
La satisfaction est-elle maintenue ?
EVERY(COND,N),判断N周期内是否一直满足COND条件。若满足函数返回值为1,不满足函数返回值为0。 注: 1、N包含当前k线。 2、若N是有效数值,但前面没有那么多K线,或者N为空值,代表条件不满足,函数返回值为0。 3、N可以是变量。 例1: EVERY(CLOSE>OPEN,5); // 表示5个周期内一直是阳线 例2: MA5:=MA(C,5); // 定义5周期均线 MA10:=MA(C,10); // 定义10周期均线 EVERY(MA5>MA10,4),BK; // 4个周期内MA5都大于MA10,则买开仓 // EVERY(MA5>MA10,4),BK;与EVERY(MA5>MA10,4)=1,BK;表达同等意义 -
EXIST
Déterminez si vous êtes satisfait.
EXIST(COND,N)判断N个周期内是否有满足COND的条件。 注: 1、N包含当前k线。 2、N可以是变量。 3、若N是有效数值,但前面没有那么多K线,按实际周期数计算。 例1: EXIST(CLOSE>REF(HIGH,1),10); // 表示10个周期中是否存在收盘价大于前一个周期的最高价,存在返回1,不存在则返回0 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; EXIST(C>MA(C,5),N); // 表示当天是否有满足收盘价大于5周期均线的k线,存在返回1,不存在返回0 -
IF
Fonction conditionnelle
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
Fonction conditionnelle
IFELSE(COND,A,B) 若COND条件成立,则返回A,否则返回B。 注: 1、COND是判断条件;A、B可以是条件,也可以是数值。 2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y: IFELSE(CON,X,REF(Y,1)); 例1: IFELSE(ISUP,H,L); // k线为阳线,取最高价,否则取最低价 例2: A:=IFELSE(MA5>MA10,CROSS(DIFF,DEA),IFELSE(CROSS(D,K),2,0)); // 当MA5>MA10时,取是否满足DIFF上穿DEA,否则(MA5不大于MA10),当K,D死叉时,令A赋值为2,若上述条件都不满足,A赋值为0 A=1,BPK; // 当MA5>MA10,以DIFF上穿DEA作为开多仓条件 A=2,SPK; // 当MA5不大于MA10,以K、D死叉作为开空仓条件 -
ISCONTRACT
Si le contrat est en cours de désignation
ISCONTRACT(CODE)当前是否为指定的合约。 用法:ISCONTRACT(CODE);是当前合约返回1,不是当前合约返回0。 注: 1、判断是否为指定合约时,CODE可以为合约的交易代码。 例: ISCONTRACT('this_week'); // 数字货币OKEX期货合约 ISCONTRACT('XBTUSD'); // 数字货币BITMEX期货合约Les expressions régulières sont prises en charge.
Comment juger un contrat
ISCONTRACT('this_week'); // 判断当前合约是否为OKEX期货 this_week(当周)合约Déterminer le nom de l'échange
ISCONTRACT('@Futures_(Binance|FTX)'); // 判断当前交易所对象是否为Binance期货或者FTX期货 ISCONTRACT('@(OKEX|Bitfinex)'); // 判断交易所,需要在开头加@字符 -
ISDOWN
Le mystère.
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
Le plateau
ISEQUAL判断该周期是否平盘。 注: 1、ISEQUAL等同于C=O 例1: EVERY(ISEQUAL=1,2),CLOSEOUT; // 持续2根k线都是平盘,则全平 -
ISLASTBAR
Détermine si le cycle correspond à la dernière ligne K.
ISLASTBAR判断该周期是否为最后一根k线。 例1: VALUEWHEN(ISLASTBAR=1,REF(H,1)); // 当前k线是最后一根k线,则取前一周期的最高价 -
ISNULL
Jugez la valeur zéro.
ISNULL判断空值。 用法:ISNULL(N);如果N为空值,函数返回1;如果N为非空值,函数返回0。 例:MA5:=IFELSE(ISNULL(MA(C,5))=1,C,MA(C,5)); // 定义五周期均线,K线数量不足五根时,返回当根K线的收盘价 -
ISUP
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 // 表达同等意义 -
LAST
Fonction de jugement
LAST(COND,N1,N2)判断过去N1到N2周期内,是否一直满足COND条件。 注: 1、若N1与N2只相差一个周期(如N1=3,N2=2),则函数判断距离当前K线最近的那个周期上是否满足条件(即判断过去N2个周期的那根K线上是否满足条件)。 2、当N1/N2为有效值,但当前的k线数不足N1/N2根,或者N1/N2空值的情况下,代表不成立,该函数返回0。 3、N1、N2不可以是变量。 例1: LAST(CLOSE>OPEN,10,5); // 表示从过去第10个周期到第5个周期内一直是阳线 例2: MA5:=MA(C,5); LAST(C>MA5,4,3); // 判断距离当前k线3个周期的那根k线上是否满足C大于MA5 -
LONGCROSS
Maintenance de la fonction de croix
LONGCROSS(A,B,N)表示A在N个周期内都小于B,本周期A从下向上穿越B。 注: 1、当N为有效值,但当前的k线数不足N根时,LONGCROSS函数返回空值。 2、N不支持变量。 例1: LONGCROSS(CLOSE,MA(CLOSE,10),20); // 表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线 -
NOT
Pas du tout.
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
Retour à zéro.
返回空值 用法: MA5:=MA(C,5); MA10:=MA(C,10); A:=IFELSE(MA5>MA10,MA5,NULL),COLORRED; // 当MA5>MA10时,画五日均线MA5,不满足MA5>MA10时,返回空值,不画线 -
VALUEWHEN
La mise en valeur
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
-
LOOP2
Fonction de condition de cycle ≠
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;
-
-
Fonctions statistiques financières
-
BARSCOUNT
Le premier cycle valide jusqu'au nombre de cycles actuels.
BARSCOUNT(COND)第一个有效周期到当前的周期数。 注: 1、返回值为COND从第一个有效周期开始计算,到现在为止的周期数。 2、条件第一次成立的当根k线上BARSCOUNT(COND)的返回值为0。 例: BARSCOUNT(MA(C,4)); // 计算MA(C,4)第一次有返回值到当前的周期数 -
BARSLAST
La dernière condition est la position.
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线根数illustrer
BARSLASTfonction:- 1 si la condition de la ligne K actuelle est vraie.
-
- Si elle n'est pas validée, elle se déplace en arrière jusqu'à ce qu'elle trouve la ligne K où la condition est validée. Elle renvoie un nombre de cycles de rétroaction.
- 3 Si, en remontant jusqu'à la fin, on ne trouve aucune ligne K où la condition est remplie, on renvoie une valeur nulle.
-
BARSSINCE
La première condition est établie jusqu'au nombre de cycles actuels.
BARSSINCE(COND)第一个条件成立到当前的周期数。 注: 1、返回值为COND第一次成立到当前的周期数。 2、条件第一次成立的当根k线上BARSSINCE(COND)的返回值为0。 例: BARSSINCE(CLOSE>OPEN); // 统计第一次满足阳线这个条件的K线到现在的周期数 -
BARSSINCEN
La première condition est établie pour le nombre de cycles actuels de la statistique N.
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周期内第一次满足阳线到当前的周期数 -
CONDBARS
Obtenir le nombre de cycles interlinéaires K qui ont récemment satisfait aux conditions A et B.
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周期均线之间的周期数 -
COUNT
Nombre total de personnes interrogées
COUNT(COND,N),统计N周期中满足COND条件的周期数。 注: 1、N包含当前k线。 2、若N为0则从第一个有效值算起。 3、当N为有效值,但当前的k线数不足N根,从第一根统计到当前周期。 4、N 为空值时返回值为空值 。 5、N可以为变量。 例1: N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,当日k线数 M:=COUNT(ISUP,N); // 统计分钟周期上开盘以来阳线的根数 例2: MA5:=MA(C,5); // 定义5周期均线 MA10:=MA(C,10); // 定义10周期均线 M:=COUNT(CROSSUP(MA5,MA10),0); // 统计从申请到的行情数据以来到当前这段时间内,5周期均线上穿10周期均线的次数 -
DMA
La moyenne mobile
DMA(X,A):求X的动态移动平均,其中A必须小于1大于0。 注: 1、A可以为变量。 2、如果A<=0或者A>=1,返回无效值。 计算公式:DMA(X,A)=REF(DMA(X,A),1)*(1-A)+X*A 例1: DMA3:=DMA(C,0.3); // 计算结果为REF(DMA3,1)*(1-0.3)+C*0.3 -
EMA
Une moyenne mobile pondérée.
EMA(X,N):求N周期X值的指数加权移动平均(平滑移动平均)。 注: 1、N包含当前k线。 2、对距离当前较近的k线赋予了较大的权重。 3、当N为有效值,但当前的k线数不足N根,按实际根数计算。 4、N为0或空值时返回值为空值。 5、N可以为变量。 EMA(X,N)=2*X/(N+1)+(N-1)*REF(EMA(X,N),1)/(N+1) 例1: EMA10:=EMA(C,10); // 求收盘价10周期指数加权移动平均值 -
EMA2
Moyenne mobile linéaire pondérée.
EMA2(X,N); // 求N周期X值的线性加权移动平均(也称WMA) EMA2(X,N)=[N*X0+(N-1)*X1+(N-2)*X2+...+1*X(N-1)]/[N+(N-1)+(N-2)+...+1],X0表示本周期值,X1表示上一周期值 注: 1、N包含当前k线。 2、当N为有效值,但当前的k线数不足N根,返回值为空值。 3、N为0或空值时返回值为空值。 4、N可以为变量。 例1: EMA2(H,5); // 求最高价在5个周期的线性加权移动平均值 -
EMAWH
Une moyenne mobile pondérée.
EMAWH(C,N),指数加权移动平均,也叫平滑移动平均,采用指数加权方法,对距离当前较近的K线赋予了较大的权重。 注: 1、当N为有效值,当前的k线数不足N根时,或者前面周期的取值仍作用于当前周期时,EMAWH返回值为空值。 因为EMAWH计算公式中着重考虑了当周期的权重,所以当周期较长,前面的周期取值对当前的影响越小,EMAWH从前面数据对当前周期不再影响时的取值开始显示,所以即使选择的数据起始时间不同,当前已经显示的K线的EMAWH的取值也不会发生变化。 2、当N为0或空值时返回值均为空值。 3、N不能为变量。 EMAWH(C,N)=2*C/(N+1)+(N-1)*REF(EMAWH(C,N),1)/(N+1) 注: EMAWH用法同EMA(C,N) -
HARMEAN
Modifier la moyenne.
HARMEAN(X,N),求X在N个周期内的调和平均值。 算法举例:HARMEAN(X,5)=1/[(1/X1+1/X2+1/X3+1/X4+1/X5)/5] 注: 1、N包含当前k线。 2、调和平均值与倒数的简单平均值互为倒数。 3、当N为有效值,但当前的k线数不足N根,函数返回空值。 4、N为0或空值的情况下,函数返回空值。 5、X为0或空值的情况下,函数返回空值。 6、N可以为变量。 例: HM5:=HARMEAN(C,5); // 求5周期收盘价的调和平均值 -
HHV
La valeur maximale
HHV(X,N):求X在N个周期内的最高值。 注: 1、N包含当前k线。 2、若N为0则从第一个有效值开始算起。 3、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。 4、N为空值时,返回空值。 5、N可以是变量。 例1: HH:=HHV(H,4); // 求4个周期最高价的最大值,即4周期高点(包含当前k线) 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,日内k线根数 HH1:=HHV(H,N); // 在分钟周期上,日内高点 -
HV
La valeur la plus élevée hors ligne K actuelle.
HV(X,N),求X在N个周期内(不包含当前k线)的最高值。 注: 1、若N为0则从第一个有效值开始算起(不包含当前K线)。 2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值。 3、N为空值时,返回空值。 4、N可以是变量。 例1: HH:=HV(H,10); // 求前10根k线的最高点 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; NN:=REF(N,N); ZH:=VALUEWHEN(DATE<>REF(DATE,1),HV(H,NN)); // 在分钟周期上,求昨天最高价 例3: HV(H,5)和REF(HHV(H,5),1)的结果是一样的,用HV编写更加方便。 -
HHVBARS
Le point le plus élevé de la région.
HHVBARS(X,N),求N周期内X最高值到当前周期数。 注: 1、若N为0则从第一个有效值开始算起(不包含当前K线)。 2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值。 3、N为空值时,返回空值。 4、N可以是变量。 例1: HHVBARS(VOL,0); // 求历史成交量最大的周期到当前的周期数(最大值那根k线上HHVBARS(VOL,0);的返回值为0,最大值后的第一根k线返回值为1,依次类推) 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,日内k线根数 ZHBARS:=REF(HHVBARS(H,N),N)+N; // 在分钟周期上,求昨天最高价所在的k线到当前k线之间的周期数 -
LLV
La valeur minimale
LLV(X,N),求X在N个周期内的最小值。 注: 1、N包含当前k线。 2、若N为0则从第一个有效值开始算起。 3、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。 4、N为空值时,返回空值。 5、N可以是变量。 例1: LL:=LLV(L,5); // 求5根k线最低点(包含当前k线) 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,日内k线根数 LL1:=LLV(L,N); // 在分钟周期上,求当天第一根k线到当前周期内所有k线最低价的最小值 -
LV
La valeur la plus basse en dehors de la ligne K actuelle.
LV(X,N),求X在N个周期内的最小值(不包含当前k线)。 注: 1、若N为0则从第一个有效值开始算起。 2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。 3、N为空值时,返回空值。 4、N可以是变量。 例1: LL:=LV(L,10); // 求前面10根k线的最低点(不包含当前k线) 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,日内k线根数 NN:=REF(N,N); ZL:=VALUEWHEN(DATE<>REF(DATE,1),LV(L,NN)); // 在分钟周期上,求昨天最低价 例3: LV(L,5)和REF(LLV(L,5),1)的结果是一样的,用LV编写更加方便。 -
LLVBARS
La position du point le plus bas précédent.
LLVBARS(X,N),求N周期内X最低值到当前周期数。 注: 1、若N为0则从第一个有效值开始算起(不包含当前K线)。 2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值。 3、N为空值时,返回空值。 4、N可以是变量。 例1: LLVBARS(VOL,0); // 求历史成交量最小的周期到当前的周期数(最小值那根k线上LLVBARS(VOL,0);的返回值为0,最小值后的第一根k线返回值为1,依次类推) 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,日内k线根数 ZLBARS:=REF(LLVBARS(L,N),N)+N; // 在分钟周期上,求昨天最低价所在的k线到当前k线之间的周期数 -
MA
La moyenne mobile arithmétique
MA(X,N),求X在N个周期内的简单移动平均。 算法:MA(X,5)=(X1+X2+X3+X4+X5)/5 注: 1、N包含当前k线。 2、简单移动平均线沿用最简单的统计学方式,将过去某特定时间内的价格取其平均值。 3、当N为有效值,但当前的k线数不足N根,函数返回空值。 4、N为0或空值的情况下,函数返回空值。 5、N可以为变量。 例1: MA5:=MA(C,5); // 求5周期收盘价的简单移动平均 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,日内k线根数 M:=IFELSE(N>10,10,N); // k线超过10根,M取10,否则M取实际根数 MA10:=MA(C,M); // 在分钟周期上,当天k线不足10根,按照实际根数计算MA10,超过10根按照10周期计算MA10 -
MV
Prenez la moyenne.
MV(A,...P),取A到P的均值。 注: 1、支持取2-16个数值的均值。 2、A...P可以为数字也可以为变量。 例1: MV(CLOSE,OPEN); // 取收盘价和开盘价的平均值 -
NUMPOW
Le carré des nombres naturels
NUMPOW(X,N,M),自然数幂方和。 算法: NUMPOW(x,n,m)=n^m*x+(n-1)^m*ref(x,1)+(n-2)^m*ref(x,2)+...+2^m*ref(x,n-2)+1^m*ref(x,n-1) 注意: 1、N为自然数,M为实数;且N与M不能为变量。 2、X为基础变量。 例: JZ:=NUMPOW(C,5,2); -
SAR
Une parabole tournée.
SAR(N,STEP,MAX),返回抛物转向值。 根据公式SAR(n)=SAR(n-1)+AF*(EP(n-1)-SAR(n-1))计算。 其中: SAR(n-1):上根K线SAR的绝对值。 AF:加速因子,当AF小于MAX时,逐根的通过AF+STEP累加,涨跌发生转换时,AF重新计算。 EP:一个涨跌内的极值,在上涨行情中为上根K线的最高价;下跌行情中为上根K线的最低价。 注: 1、参数N,Step,Max均不支持变量。 例1: SAR(17,0.03,0.3); // 表示计算17个周期抛物转向,步长为3%,极限值为30% -
SMA
L'indice élargi est une moyenne mobile pondérée.
SMA(X,N,M) 求X的N个周期内的扩展指数加权移动平均,M为权重。 计算公式:SMA(X,N,M)=REF(SMA(X,N,M),1)*(N-M)/N+X(N)*M/N 注: 1、当N为有效值,但当前的k线数不足N根,按实际根数计算。 2、 N为0或空值的情况下,函数返回空值。 例1: SMA10:=SMA(C,10,3); // 求的10周期收盘价的扩展指数加权移动平均,权重为3 -
SMMA
La moyenne mobile est la moyenne de l'année.
SMMA(X,N),X为变量,N为周期,SMMA(X,N)表示当前K线上X在N个周期的通畅移动平均线 算法:SMMA(X,N)=(SUM1-MMA+X)/N 其中SUM1=X1+X2+.....+XN MMA=SUM1/N 例1: SMMA(C,5); // 收盘价的5周期通畅移动平均线 -
SORT
Sortez les valeurs de la position correspondante.
SORT(Type,POS,N1,N2,...,N16);按升(降)序排列,取第POS个参数对应的值。 注: 1、当Type为0按升序排列,当Type为1按降序排列。 2、TYPE,POS,不支持变量。 3、N1,...,N16为参数,支持常量、变量,最多支持16个参数。 例: SORT(0,3,2,1,5,3); // 2、1、5、3按升序排列,取排列第三的数字3 -
SUM
Je suis désolée.
SUM(X,N),求X在N个周期内的总和。 注: 1、N包含当前k线。 2、若N为0则从第一个有效值开始算起。 3、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。 4、N为空值时,返回空值。 5、N可以为变量。 例1: SUM(VOL,25);表示统计25周期内的成交量总和。 例2: N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,日内k线根数 SUM(VOL,N); // 分钟周期上,取当天成交量总和 -
SUMBARS
Le nombre de cycles à ajouter à la valeur spécifiée.
SUMBARS(X,A),求累加到指定值的周期数。 注: 参数A支持变量。 例1: SUMBARS(VOL,20000);将成交量向前累加直到大于等于20000,返回这个区间的周期数。 -
TRMA
La moyenne mobile du triangle
TRMA(X,N),求X在N个周期的三角移动平均值。 算法:三角移动平均线公式,是采用算数移动平均,并且对第一个移动平均线再一次应用算数移动平均。 TRMA(X,N)算法如下: ma_half= MA(X,N/2) trma=MA(ma_half,N/2) 注: 1、N包含当前k线。 2、当N为有效值,但当前的k线数不足N根,函数返回空值。 3、N为0或空值的情况下,函数返回空值。 4、N支持使用变量。 例1: TRMA5:=TRMA(CLOSE,5); // 计算5个周期内收盘价的三角移动平均。(N不能被2整除) // TRMA(CLOSE,5)=MA(MA(CLOSE,(5+1)/2)),(5+1)/2); 例2: TRMA10:=TRMA(CLOSE,10); // 计算10个周期内收盘价的三角移动平均。(N能被2整除) // TRMA(CLOSE,10)=MA(MA(CLOSE,10/2),(10/2)+1)); -
TSMA
Les séquences temporelles sont des moyennes mobiles.
TSMA(X,N),求X在N个周期内的时间序列三角移动平均。 TSMA(a,n) 算法如下: ysum=a[i]+a[i-1]+...+a[i-n+1] xsum=i+i-1+..+i-n+1 xxsum=i*i+(i-1)*(i-1)+...+(i-n+1)*(i-n+1) xysum=i*a[i]+(i-1)*a[i-1]+...+(i-n+1)*a[i-n+1] k=(xysum -(ysum/n)*xsum)/(xxsum- xsum/n * xsum) // 斜率 b= ysum/n - k*xsum/n forcast[i]=k*i+b // 线性回归 tsma[i] = forcast[i]+k // 线性回归+斜率 注: 1、当N为有效值,但当前的k线数不足N根,函数返回空值。 2、N为0或空值的情况下,函数返回空值。 3、N支持使用变量。 例1: TSMA5:=TSMA(CLOSE,5); // 计算5个周期内收盘价的序列三角移动平均
-
-
Fonctions mathématiques et statistiques
-
AVEDEV
Le décalage absolu moyen.
AVEDEV(X,N),返回X在N周期内的平均绝对偏差。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N不能为变量。 算法举例:计算AVEDEV(C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: (ABS(C-(C+REF(C,1)+REF(C,2))/3)+ABS(REF(C,1)-(C+REF(C,1)+REF(C,2))/3)+ABS(REF(C,2)-(C+REF(C,1)+REF(C,2))/3))/3; 例: AVEDEV(C,5); // 返回收盘价在5周期内的平均绝对偏差 // 表示5个周期内每个周期的收盘价与5周期收盘价的平均值的差的绝对值的平均值,判断收盘价与其均值的偏离程度 -
COEFFICIENTR
Coefficient de cohésion de Pearson.
COEFFICIENTR(X,Y,N),求X、Y在N个周期内的皮尔森相关系数。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以为变量。 算法举例:计算COEFFICIENTR(O,C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: (((O-MA(O,3))*(C-MA(C,3))+(REF(O,1)-MA(O,3))*(REF(C,1)-MA(C,3))+(REF(O,2)-MA(O,3))*(REF(C,2)-MA(C,3))) /(STD(O,3)*STD(C,3)))/(3-1); 例: COEFFICIENTR(C,O,10); //求在10个周期内的皮尔森相关系数 //皮尔森相关系数是衡量两个随机变量之间的相关程度的指标 -
CORRELATION
Coefficients relatifs
CORRELATION(X,Y,N),求X、Y在N个周期内的相关系数。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以为变量。 算法举例:计算CORRELATION(O,C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: (((O-MA(O,3))*(C-MA(C,3))+(REF(O,1)-MA(O,3))*(REF(C,1)-MA(C,3))+(REF(O,2)-MA(O,3))*(REF(C,2)-MA(C,3))))/SQRT((SQUARE(O-MA(O,3))+SQUARE(REF(O,1)-MA(O,3))+SQUARE(REF(O,2)-MA(O,3)))*(SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))); 例: CORRELATION(C,O,10); // 求在10个周期内的相关系数 // 相关系数是衡量两个随机变量之间的相关程度的指标 -
COVAR
Les différences de couches
COVAR(X,Y,N) 求X、Y在N个周期内的协方差。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以为变量。 算法举例:计算COVAR(O,C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: (((O-MA(O,3))*(C-MA(C,3))+(REF(O,1)-MA(O,3))*(REF(C,1)-MA(C,3))+(REF(O,2)-MA(O,3))*(REF(C,2)-MA(C,3))) )/3; 例: COVAR(C,O,10); // 求在10个周期内的协方差 // 两个不同变量之间的方差就是协方差,如果两个变量的变化趋势一致,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,那么两个变量之间的协方差就是负值 -
DEVSQ
On obtient le carré de la déviance des données et ≠
DEVSQ(X,N):计算数据X的N个周期的数据偏差平方和。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N不支持为变量。 算法举例:计算DEVSQ(C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: SQUARE(C-(C+REF(C,1)+REF(C,2))/3)+SQUARE(REF(C,1)-(C+REF(C,1)+REF(C,2))/3)+SQUARE(REF(C,2)-(C+REF(C,1)+REF(C,2))/3); 例: DEVSQ(C,5); // 计算数据收盘价5个周期的数据偏差平方和 // 表示收盘价与收盘价均值偏差分别平方之后求和,DEVSQ(C,5)表示5个周期的收盘价与收盘价均值偏差分别平方之后求和 -
FORCAST
Rétrogradation linéaire
FORCAST(X,N),为X的N周期线性回归预测值。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以是变量。 算法举例:用最小平方法计算FORCAST(C,3)在最近一根K线上的值。 1、建立一元线性方程:y=a+b*i+m 2、y的估计值:y(i)^=a+b*i 3、求残差:m^=y(i)-y(i)^=y(i)-a-b*i 4、误差平方和: Q=m(1)*m(1)+...+m(3)*m(3)=[y(1)-a-b*1]*[y(1)-a-b*1]+...+[y(3)-a-b*3]*[y(3)-a-b*3] 5、对线性方程中的参数a,b求一阶偏导: 2*{[y(1)-a-b*1]+...+[y(3)-a-b*3]}*(-1)=0 2*[y(1)-a-b*1]*(-1)+...+[y(3)-a-b*3]*(-3)=0 6、联立以上两个公式,解出a,b的值: a=(y(1)+y(2)+y(3))/3-b(i(1)+i(2)+i(3))/3 b=(y(1)*i(1)+y(2)*i(2)+y(3)*i(3)-(3*((i(1)+i(2)+i(3))/3)*((y(1)+y(2)+y(3))/3))/((i(1)^2+i(2)^2+i(3)^2)-3*((i(1)+i(2)+i(3))/3)^2) 7、将a,b,i值带入1,求出y值。 以上公式用麦语言函数可以表示如下: BB:=(3*C+2*REF(C,1)+REF(C,2)-(3*((1+2+3)/3)*MA(C,3)))/((SQUARE(1)+SQUARE(2)+SQUARE(3))-3*SQUARE((1+2+3)/3)); AA:=MA(C,3)-BB*(1+2+3)/3; YY:=AA+BB*3; 例: FORCAST(CLOSE,5); // 表示求5周期线性回归预测值 -
KURTOSIS
Coefficient de pointe
KURTOSIS(X,N),求X在N个周期内的峰度系数。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以为变量。 6、N至少为4,少于4返回空值。 算法举例:计算KURTOSIS(C,4);在最近一根K线上的值。 用麦语言函数可以表示如下: ((POW(C-MA(C,4),4)+POW(REF(C,1)-MA(C,4),4)+POW(REF(C,2)-MA(C,4),4)+POW(REF(C,3)-MA(C,4),4)) /POW(STD(C,4),4))*(4*(4+1)/((4-1)*(4-2)*(4-3)))-3*SQUARE(4-1)/((4-2)*(4-3)); 例: KURTOSIS(C,10); // 表示收盘价的10周期峰值。峰值反映与正态分布相比某一分布的尖锐度或平坦度。正峰值表示相对尖锐的分布。负峰值表示相对平坦的分布 -
NORMPDF
La densité de probabilité de la distribution normale
NORMPDF(X,MU,SIGMA),返回参数为MU和SIGMA的正态分布密度函数在X处的值。 注: 1、MU或SIGMA为空值,该函数返回空值。 2、MU和SIGMA支持变量。 算法举例:随机变量X服从一个位置参数为MU、尺度参数为SIGMA的概率分布,其概率密度为NORMPDF(X,MU,SIGMA)。 用麦语言函数可以近似的表示如下: (1/(SQRT(2*3.14)*SIGMA))*EXP((-SQUARE(X-MU))/(2*SQUARE(SIGMA))); 例: TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)); ATR:=MA(TR,26); // 求26个周期内的TR的简单移动平均 ZZ..NORMPDF(ATR,0,1); // 定义变量ZZ,返回ATR服从标准正态分布的概率密度 -
SKEWNESS
Le coefficient d'inclinaison
SKEWNESS(X,N),求X在N个周期内的偏度系数。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以为变量。 6、N至少为3,少于3返回空值。 算法举例:计算SKEWNESS(C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: ((POW(C-MA(C,3),3)+POW(REF(C,1)-MA(C,3),3)+POW(REF(C,2)-MA(C,3),3)) /POW(STD(C,3),3))*3/((3-1)*(3-2)); 例: SKEWNESS(C,10); // 表示收盘价的10周期偏度,偏度反映分布的不对称度,不对称度反映以平均值为中心的分布的不对称程度。正不对称度表示不对称部分的分布更趋向正值,负不对称度表示不对称部分的分布更趋向负值 -
SLOPE
La déclinaison de la régression linéaire.
SLOPE(X,N),得到X的N周期的线型回归的斜率。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以为变量。 举例: 用最小平方法计算SLOPE(CLOSE,5)在最近一根K线上的的值: 1、建立一元线性方程:close=a+slope*i+m 2、close的估计值:close(i)^=a+slope*i 3、求残差:m^=close(i)-close(i)^=close(i)-a-slope*i 4、误差平方和: Q=m(1)*m(1)+...+m(5)*m(5)=[close(1)-a-slope*1]*[close(1)-a-slope*1]+...+[close(5)-a-slope*5]*[close(5)-a-slope*5] 5、对线性方程中的参数a,slope求一阶偏导: 2*{[close(1)-a-slope*1]+...+[close(5)-a-slope*5]}*(-1)=0 2*{[close(1)-a-slope*1]+...+[close(5)-a-slope*5]}*(-5)=0 6、联立以上两个公式,反解出slope的值: slope={[5*close(1))+...+1*close(5)]-[close(1)+...+close(5)]*(1+2+3+4+5)/5}/[(1*1+...+5*5)-(1+...+5)(1+...+5)/5] 以上公式用麦语言函数可以表示如下: ((5*C+4*REF(C,1)+3*REF(C,2)+2*REF(C,3)+1*REF(C,4))-SUM(C,5)*(1+2+3+4+5)/5)/((SQUARE(1)+SQUARE(2)+SQUARE(3)+SQUARE(4)+SQUARE(5))-SQUARE(1+2+3+4+5)/5); 例: SLOPE(CLOSE,5); // 表示求收盘价5个周期线性回归线的斜率 -
STD
La qualité des échantillons est médiocre.
STD(X,N),求X在N个周期内的样本标准差。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以为变量。 算法举例:计算STD(C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: SQRT((SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))/2); 例: STD(C,10); // 求收盘价在10个周期内的样本标准差 // 标准差表示总体各单位标准值与其平均数离差平方的算术平均数的平方根,它反映一个数据集的离散程度。STD(C,10)表示收盘价与收盘价的10周期均线之差的平方和的平均数的算术平方根。样本标准差是样本方差的平方根 -
STDP
La norme générale est faible.
STDP(X,N),为X的N周期总体标准差。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N可以为变量。 算法举例:计算STDP(C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: SQRT((SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))/3); 例: STDP(C,10); // 为收盘价的10周期总体标准差 // 总体标准差是反映研究总体内个体之间差异程度的一种统计指标,总体方差是一组资料中各数值与其算术平均数离差平方和的平均数,总体标准差则是总体方差的平方根 -
VAR
Les échantillons sont différents.
VAR(X,N),求X在N周期内的样本方差。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N支持使用变量。 算法举例:计算VAR(C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: (SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))/(3-1); 例: VAR(C,5); // 求收盘价在5周期内的样本方差 // 表示总体方差的N/(N-1)倍,VAR(C,5)表示收盘价的5周期总体样本方差的5/4倍 -
VARP
La différence générale
VARP(X,N),为X的N周期总体方差。 注: 1、N包含当前k线。 2、N为有效值,但当前的k线数不足N根,该函数返回空值。 3、N为0时,该函数返回空值。 4、N为空值,该函数返回空值。 5、N支持使用变量。 算法举例:计算VARP(C,3);在最近一根K线上的值。 用麦语言函数可以表示如下: (SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))/3; 例: VARP(C,5); // 为收盘价的5周期总体方差 // 表示数据偏差平方和除以总周期数N,VARP(C,5)表示收盘价5个周期的数据偏差平方和除以5
-
-
Fonctions mathématiques
-
ABS
Valeur absolue
ABS(X),取的X的绝对值。 注: 1、正数的绝对值是它本身。 2、负数的绝对值是它的相反数。 3、0的绝对值还是0。 例1: ABS(-10); // 返回10 例2: ABS(CLOSE-10); // 返回收盘价和的10价差的绝对值 例3: ABS(C-O); // 当前K线实体长度 -
ACOS
La résonance inverse
ACOS(X),返回X的反余弦值。 注: 1、X取值范围[-1,1]。 2、若X不在取值范围,返回值为空值。 例1: ACOS(-1); // 求-1的反余弦值 例2: ACOS(1); // 求1的反余弦值 -
ASIN
La résonance inverse.
ASIN(X),返回X的反正弦值。 注: 1、X取值范围[-1,1]。 2、若X不在取值范围,返回值为空值。 例1: ASIN(-1); // 求-1的反正弦值 例2: ASIN(1); // 求1的反正弦值 -
ATAN
C'est une erreur.
ATAN(X),返回X的反正切值。 注:X的取值为R(实数集)。 例1: ATAN(-1.75); // 求-1.75的反正切值 例2: ATAN(1.75); // 求1.75的反正切值 -
CEILING
Il y a un peu de dénivelé.
CEILING(X,Y),返回指定实数(X)在沿绝对值增大的方向上第一个能整除基数(Y)的值。 注: 1、如果X和Y符号相同,则对值按远离0的方向进行舍入。 2、X和Y符号不同的情况下: (1)如果X为负,Y为正,则对值按朝向0的方向进行向上舍入。 (2)如果X为正,Y为负,CEILING返回无效值。 3、X、Y均可以为变量。 4、若X、Y中任意一个为空值,则该函数返回空值。 例1: CEILING(2.1,1); // 求得3 例2: CEILING(-8.8,-2); // 求得-10 例3: CEILING(CLOSE*1.01,1); // 求收盘价的1.01倍向上取整 例4: CEILING(-7,2); // 求得-6 例5: CEILING(8,-2); // 返回无效值 -
COS
Les cordes de laine
COS(X),返回X的余弦值。 注: 1、X的取值为R(实数集)。 2、值域为[-1,1]。 例1: COS(-1.57); // 返回-1.57的余弦值 例2: COS(1.57); // 返回1.57的余弦值 -
CUBE
La fonction cubique.
CUBE(X),返回X的三次方。 例1: CUBE(4); // 求4的立方 -
EXP
Indicateur
EXP(X),求e的X次幂。 例1: C*EXP(0.01); // 求收盘价乘以e的0.01次幂 -
FLOOR
Il est en train de se faire engueuler.
FLOOR(A),向数值减小方向舍入。 注: FLOOR(A)返回沿A数值减小方向最接近的整数,若A为整数,则返回值为A。 例1: FLOOR(2.1); // 返回值为2 例2: FLOOR(-8.8); // 返回值为-9 例3: FLOOR(5); // 返回值为5 例4: IFELSE(C-INTPART(C)>=0.5,CEILING(C),FLOOR(C)); // 对收盘价四舍五入后取整数部分 -
INTPART
Je suis désolée.
INTPART(X),取X的整数部分。 例1: INTPART(12.3); // 返回值为12 例2: INTPART(-3.5); // 返回值为-3 例3: INTPART(10); // 返回值为10 例4: INTPART(C); // 求收盘价的整数部分 -
LN
Numéros naturels
LN(X),求X的自然对数。 注: 1、X取值范围为非0自然数,即1、2、3、4、5 ... 2、若X取值为0或负数,返回值为空值。 例: LN(OPEN); // 求开盘价的对数 -
LOG
Arguments couramment utilisés:
LOG(X),求X的常用对数值。 注: 1、该函数中X的取值范围为X>0。 2、0和负数没有对数,X为0或负数时返回值为空值。 例1: LOG(100); // 返回2 例2: LOG(0); // 返回空值 -
MAX
La valeur maximale
MAX(A,B),取最大值。取A,B中较大者。 注: 若A=B,返回值为A或者B的值。 例1: MAX(CLOSE,OPEN); // 表示取开盘价和收盘价中较大者 例2: MAX(CLOSE-OPEN,0); // 表示若收盘价大于开盘价返回它们的差值,否则返回0 例3: MAX(A,MAX(B,MAX(C,D))); // 求 A、B、C、D四者中的最大值 -
MAX1
Pour en tirer le meilleur parti.
MAX1(A...P),在A到P中取最大值。 注: 1、支持2-16个数值进行比较。 2、A...P可以为数字也可以为变量。 例1: MAX1(CLOSE,OPEN); // 表示取开盘价和收盘价中较大者 例2: MAX1(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); // 表示取数字1-16中的最大值 -
MEDIAN
Le nombre médian.
MEDIAN(X,N) 求X在N个周期内居于中间的数值。 注: 1、N个周期内所有X排序后,若N为奇数,则选择第(N+1)/2个为中位数,若N为偶数,则中位数是(N/2以及N/2+1)的平均数。 2、N可以为变量。 例1: 豆粕1509最近3日的收盘价为2727、2754、2748,那么当前MEDIAN(C,3)的返回值是2748。 例2: 豆粕1509最近4日的开盘价为2752、2743、2730、2728,那么当前MEDIAN(O,4)的返回值是2736.5。 -
MEDIAN1
Le nombre médian.
MEDIAN1(A,...,P),求A到P内居于中间的数值。 注: 1、支持最多16个参数进行计算。 2、A...P可以为数值也可以为变量。 3、若参数个数为N,对N个参数排序后,N为奇数,则选择第(N+1)/2个为中位数,若N为偶数,则中位数是(N/2以及N/2+1)的平均数。 例1: AA:=MEDIAN1(O,C,H); // 开盘价、收盘价、最高价按数值排序,取居中的数值 例2: BB:=MEDIAN1(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); // 表示取数字1-16的中位数,BB返回8.5 -
MIN
La valeur minimale
MIN(A,B),取最小值。取A,B中较小者。 注: 若A=B,返回值为A或者B的值。 例1: MIN(OPEN,CLOSE); // 表示取开盘价和收盘价中的较小者 例2: MIN(C,MIN(O,REF(C,1))); // 求当前周期的开盘价,收盘价,以及上周期的收盘价间最小的数值 -
MIN1
Prenez une valeur minimale.
MIN1(A...P),在A到P中取最小值。 注: 1、支持2-16个数值进行比较。 2、A...P可以为数字也可以为变量。 例1: MIN1(CLOSE,OPEN); // 表示取开盘价和收盘价中较小者 例2: MIN1(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); // 表示取数字1-16中的最小值 -
MOD
Je suis un modèle.
MOD(A,B),取模。返回A对B求模。 例1: MOD(26,10); // 返回6,26除以10所得余数为6,即26对10的模为6 例2: MOD(A,2)=0; // 判断A为偶数 -
MODE
Le nombre de personnes interrogées.
MODE(X,N),求X在N个周期内最常出现的值。 注: 1、如果N个周期内不含有重复的数值,则函数返回空值。 2、N可以为变量。 -
POW
Je suis désolé.
POW(X,Y),求X的Y次幂。 注: 1、当X为负数时,Y必须为整数,因为底数为负时,不能进行开方运算,返回值为空值。 2、X,Y可以为数值,也可以为变量。 例1: POW(CLOSE,2); // 求得收盘价的2次方 例2: POW(10,2); // 返回值为100 例3: POW(1/2,-2); // 返回值为4 例4: POW(100,O-C); // 返回100的O-C次方 -
RAND
Une fonction aléatoire produisant un nombre aléatoire ≠
RAND(X,Y),产生随机数的随机函数,返回范围在X到Y之间的随机数。 注: 1、X、Y参数均支持设置为变量。 2、该函数仅支持返回整数。 3、当X>Y时,函数返回空值。 4、当X与Y的范围小于1时,函数返回无效值。 例1: RAND(1,60); // 返回1到60之间的随机数值 例2: RAND(C,O); // 返回收盘价到开盘价之间的随机数值 -
RANGE
La portée
RANGE(X,Y,Z):介于某个范围之内。表示X大于Y同时小于Z时返回1,否则返回0 例1: RANGE(5,4,6); // 返回值为1 例2: RANGE(8,3,6); // 返回值为0 例3: MA5:=MA(C,5); MA10:=MA(C,10); MA20:=MA(C,20); RANGE(MA10,MA20,MA5),BK; // 10周期均线在5周期均线与20周期均线之间买开仓 // RANGE(MA10,MA20,MA5)=1,BK;与RANGE(MA10,MA20,MA5),BK;表达同等意义 -
REVERSE
Prenez le contraire.
REVERSE(X),取相反值。返回-X。 例1: REVERSE(LOW); // 返回-LOW 例2: REVERSE(-55); // 返回值为55 例3: REVERSE(0); // 返回值为0 -
ROUND
Indiquez le nombre de chiffres.
ROUND(N,M),对数字N进行位数为M的四舍五入。 注: 1、N支持写为变量和参数;M不支持写为变量,可以写为参数。 2、M>0,则对数字N小数点后M位小数进行四舍五入。 3、M=0,则将数字N四舍五入为整数。 4、M<0,则在数字N小数点左侧前M位进行四舍五入。 例1: ROUND(125.345,2); // 返回125.35 例2: ROUND(125.345,0); // 返回125 例3: ROUND(125.345,-1); // 返回130 -
SGN
Prenez le symbole.
SGN(X),取符号。若X>0返回1,若X<0返回-1,否则返回0。 例1: SGN(5); // 返回值为1 例2: SGN(-5); // 返回值为-1 例3: SGN(0); // 返回值为0 -
SIN
Pour les cordes.
SIN(X),求X的正弦值。 注: 1、X的取值为R(实数集)。 2、值域为(-1,1)。 例1: SIN(-1.57); // 返回-1.57的正弦值 例2: SIN(1.57); // 返回1.57的正弦值 -
SQRT
La racine carrée.
SQRT(X),求X的平方根。 注: X的取值为正数,X为负数时返回空值。 例1: SQRT(CLOSE); // 收盘价的平方根 -
SQUARE
Le carré.
SQUARE(X)求X的平方。 例1: SQUARE(C); // 收盘价的平方 例2: SQUARE(2); // 2的平方 -
TAN
Elle est exacte.
TAN(X),返回X的正切值。 例1: TAN(0); // 返回0的正切值 例2: TAN(-3.14); // 返回-3.14的正切值
-
-
Instructions de négociation
-
BK
BKIl a acheté un magasin. -
BP
BPJe suis désolée. -
SK
SKElle a vendu ses positions. -
SP
SPIl a vendu ses positions à zéro. -
BPK
BPKIl a acheté un nouveau magasin après avoir payé. -
SPK
SPKIl a été vendu au prix d'aujourd'hui. -
CLOSEOUT
CLOSEOUTLe gouvernement a ordonné la liquidation de tous les dépôts de la banque dans toutes les directions. -
SELECT
SELECTIdentifier un motif sur la ligne K admissible, généralement utilisé pour la reconnaissance de formes. -
TRADE_AGAIN
TRADE_AGAIN(N)Dans un modèle d'addition et de réduction de la fonction, la même ligne d'instructions peut produire N signaux consécutifs. -
AUTOFILTER
AUTOFILTERLe système de filtrage des signaux est activé. -
MULTSIG
MULTSIG(Sec1, Sec2, N)Le prix d'instruction de plusieurs signaux sur une ligne k est défini comme suit:开仓信号出信号Sec1秒下单,不复核。 平仓信号出信号Sec2秒下单,不复核。
-
-
Calcul de la fonction de contrôle
-
FILTER
FILTER ((COND,N), filtre les signaux qui se produisent en série.
Lorsque la condition COND est remplie, les données des N cycles suivants retournent 0.Par exemple:
a:=FILTER(CLOSE>OPEN, 3) // 查找阳线,3个周期内再次出现的阳线不被记录在内Attention: ne doit pas être utilisé avec BKPRICE, BARSBK, SKPRICE, BARSSK.
-
AUTOFILTER
Le système de filtrage des signaux est activé.
AUTOFILTER启用一开一平信号过滤机制。 用法: 模型中含有AUTOFILTER函数,则启用一开一平信号过滤机制。 模型中不写入该函数,则每个指令都有效,支持加减仓。 模型的过滤规则: 1、连续的同方向指令只有第一个有效,其他的将被过滤; 2、交易指令必须先开仓后平仓,一开一平配对出现: 出现BK指令,下一个指令只允许出现SP\SPK指令; 出现SK指令,下一个指令只允许出现BP\BPK指令; 出现SP/BP/CLOSEOUT等平仓指令,下一个可以是BK/SK/SPK/BPK指令任一个; 反手指令SPK和BPK交叉出现。 例: CLOSE>OPEN,BK; CLOSE<OPEN,SP; AUTOFILTER; // 启用一开一平信号过滤机制 -
TRADE_AGAIN
Fonction de limitation du signal
TRADE_AGAIN(N),同一指令行可以连续出N个信号。 用法: TRADE_AGAIN(N)含有该函数的加减仓模型中,同一指令行可以连续出N个信号。 注: 1、该函数只适用于加减仓模型。 2、模型中写入该函数,一根K线只支持一个信号。不可以和 MULTSIG 函数同时使用。 3、N个信号必须连续执行,如果期间出现其他信号,则N从新计算。 4、N不可以写为变量。 例: C>O,BK(1); // K线为阳线,买开1手 C<O,SP(BKVOL); // K线为阴线,卖平多头持仓 TRADE_AGAIN(3); // 同一指令行可以连续执行3次(如果连续三根阳线,则连续三次买开仓)
-
-
Fonction d'enregistrement du signal
-
BKPRICE
Retour au prix du dernier achat du signal pour le contrat de données.
BKPRICE返回数据合约最近一次买开信号价位。 用法: BKPRICE返回数据合约最近一次买开信号发出时的行情的最新价。 注: 1、当数据合约和交易合约相同时BKPRICE值和BKPRICE1值相等。 2、当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最近一次开仓信号的价格,而不是开仓均价。 3、不同信号执行方式,其返回值分别为: (1)信号执行方式为不进行信号复核 历史回测:BKPRICE返回信号发出时的数据合约行情最新价。 (2)信号执行方式选择K线走完确认信号下单 历史回测:BKPRICE返回信号发出时数据合约当根K线的收盘价。 (3)信号执行方式设置为K线走完进行信号复核 历史回测:BKPRICE返回信号发出时数据合约当根K线的收盘价。 例: BKPRICE-CLOSE>60 && BKPRICE>0 && BKVOL>0, SP; // 如果买开价位比当前价位高出60,且多头持仓存在,卖平仓 -
BKPRICEAV
Le prix moyen des contrats de retour de données.
BKPRICEAV返回数据合约多头开仓均价。 用法: BKPRICEAV返回数据合约多头开仓均价。 注: 1、一开一平信号过滤模型: (1)开仓信号后,未出平仓信号时:BKPRICEAV取值和BKPRICE取值相同。 (2)平仓信号后:BKPRICEAV返回值为0。 2、加减仓模型: (1)持仓不为0时:BKPRICEAV返回数据合约持仓的开仓均价。 (2)加减仓模型持仓为0时:BKPRICEAV返回值为0。 注: 该函数的计算考虑滑点。 例: CLOSE-BKPRICEAV>60,SP(BKVOL); // 当前价位比多头开仓均价高出60,平掉所有多头持仓 -
BKVOL
Il est possible d'acheter un téléphone portable.
买开信号手数。 用法: BKVOL返回模型当前的多头持仓。 1、加载运行: (1)回测系统运行中,BKVOL不受资金情况的限制,按照信号显示开仓手数。 2、回测运行中: (1)如果资金不够开仓,开仓手数为0,BKVOL返回值为0。 (2)BK(BPK)信号出现并且确认固定后,BKVOL的取值增加开仓手数的数值;SP(SPK)信号出现并且确认固定后,BKVOL的取值减少平仓手数的数值。 例: BKVOL=0&&C>O,BK(1); // 多头持仓为0并且收盘价大于开盘价时,买开一手 BKVOL>=1&&H>HV(H,5),BK(2); // 多头持仓大于等于1,并且当根K线的最高价大于前面5个周期中最高价中最大值时,加仓2手 BKVOL>0&&L<REF(L,5),SP(BKVOL); // 多头持仓大于0,并且当根K线的最低价小于5个周期前K线的最低价时,卖平所有多头持仓 -
BKHIGH
Le prix de ces contrats de retour de données est le plus élevé depuis l'ouverture de la position.
返回数据合约买开仓以来的最高价。 用法: BKHIGH返回数据合约最近一次模型买开位置到当前的最高价。 1、不同信号执行方式,其返回值分别为: (1)信号执行方式为K线走完确认信号下单。 a.历史信号计算中,BK(BPK)信号之后的K线返回委托以来的数据合约行情的最高价。 b.加载运行过程中,BK(BPK)信号当根K线返回的为信号发出时数据合约行情的最新价,BK之后的K线返回委托以来的数据合约行情最高价。 从BK(BPK)信号发出时开始统计数据合约行情的最高价;信号消失,返回上次买开以来的数据合约行情的最高价,信号确认存在,返回当根K线记录的数据合约行情的最高价。 注:BK信号发出后,中间出了信号消失,从最后一次信号出现开始统计数据合约最高价。 (3)信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG)。 BK(BPK)信号的当根K线返回从信号发出到K线走完时数据合约行情的最高价;BK(BPK)信号之后的K线返回信号发出以来数据合约行情的最高价。 例: C>O,BK; C>BKPRICE&&C<BKHIGH-5,SP; AUTOFILTER; // 最新价低于买开仓以来的数据合约最高价5个点,止盈平仓 -
BKLOW
Le prix du contrat de retour de données est le plus bas depuis l'ouverture de la position.
返回数据合约买开仓以来的最低价。 用法: BKLOW返回数据合约最近一次模型买开位置到当前的最低价。 1、不同信号执行方式,其返回值分别为: (1)K线走完确认信号下单 a.历史信号计算中,BK(BPK)信号之后的K线返回委托以来的数据合约行情的最低价。 b.加载运行过程中,BK(BPK)信号当根K线返回的为信号发出时数据合约行情的最新价,BK之后的K线返回委托以来的数据合约行情最低价。 从BK(BPK)信号发出时行情时开始统计数据合约行情的最低价;信号消失,返回上次买开以来的数据合约行情的最低价,信号确认存在,返回当根K线记录的数据合约行情的最低价。 注:BK信号发出后,中间出了信号消失,从最后一次信号出现开始统计数据合约最低价。 (3)信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG) BK(BPK)信号的当根K线返回的从信号发出到K线走完时数据合约行情的最低价;BK(BPK)信号之后的K线返回信号发出以来数据合约行情的最低价。 例: C>O,BK; C>BKLOW+5,SP; AUTOFILTER; // 最新价高于买开仓以来数据合约的最低价5个点,平仓 -
SKPRICE
Retour au prix de la dernière vente du signal du contrat de données.
SKPRICE 返回数据合约最近一次卖开信号价位。 用法: SKPRICE 返回数据合约最近一次卖开信号发出时的行情的最新价。 注: 1、当数据合约和交易合约相同时SKPRICE值和SKPRICE1值相等。 2、当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最近一次开仓信号的价格,而不是开仓均价。 3、不同信号执行方式,其返回值分别为: (1)信号执行方式为不进行信号复核 a.历史回测:SKPRICE返回信号发出时的数据合约行情最新价。 (2)信号执行方式选择K线走完确认信号下单 a.历史回测:SKPRICE返回信号发出时数据合约当根K线的收盘价。 (3)信号执行方式设置为K线走完进行信号复核 a.历史回测:SKPRICE返回信号发出时数据合约当根K线的收盘价。 例: CLOSE-SKPRICE>60 && SKPRICE>0 && SKVOL>0, BP; // 如果卖开价位比当前价位低出60,且空头持仓存在,买平仓 -
SKPRICEAV
Le retour de données est le prix moyen du contrat à vide.
SKPRICEAV 返回数据合约空头开仓均价。 用法: SKPRICEAV 返回返回数据合约空头开仓均价。 注: 1、一开一平信号过滤模型: (1)开仓信号后,未出平仓信号时:SKPRICEAV取值和SKPRICE取值相同。 (2)平仓信号后:SKPRICEAV返回值为0。 2、加减仓模型: (1)持仓不为0时:SKPRICEAV返回数据合约持仓的开仓均价。 (2)加减仓模型持仓为0时:SKPRICEAV返回值为0。 注: 该函数的计算考虑滑点。 例: SKPRICEAV-CLOSE>60,BP(SKVOL); // 当前价位比空头开仓均价低出60,平掉所有空头持仓 -
SKVOL
Le nombre de signaux a été vendu.
卖开信号手数 用法: SKVOL返回模型当前的空头持仓。 1、加载运行: (1)回测系统运行中,SKVOL不受资金情况的限制,按照信号显示开仓手数。 2、回测运行中: (1)如果资金不够开仓,开仓手数为0,SKVOL返回值为0。 (2)SK(SPK)信号出现并且确认固定后,SKVOL的取值增加开仓手数的数值;BP(BPK)信号出现并且确认固定后,SKVOL的取值减少平仓手数的数值。 例: SKVOL=0&&C<O,SK(1); // 空头持仓为0并且收盘价小于开盘价时,卖开一手 SKVOL>=1&&L<LV(L,5),SK(2); // 空头持仓大于等于1,并且当根K线的最低价小于前面5个周期中最低价中最小值时,加仓2手 SKVOL>0&&H>REF(H,5),BP(SKVOL); // 空头持仓大于0,并且当根K线的最高价大于5个周期前K线的最高价时,买平所有空头持仓 -
SKHIGH
Le prix le plus élevé depuis l'ouverture de la vente des contrats de données.
返回数据合约卖开仓以来的最高价。 用法: SKHIGH返回数据合约最近一次模型卖开位置到当前的最高价。 1、不同信号执行方式,其返回值分别为: (1)K线走完确认信号下单 a.历史信号计算中,SK(SPK)信号之后的K线返回委托以来的数据合约行情的最高价。 b.加载运行过程中,SK(SPK)信号当根K线返回的为信号发出时数据合约行情的最新价,SK之后的K线返回委托以来的数据合约行情最高价。 从SK(SPK)信号发出时开始统计数据合约行情的最高价;信号消失,返回上次卖开以来的数据合约行情的最高价,信号确认存在,返回当根K线记录的数据合约行情的最高价。 注:SK信号发出后,中间出了信号消失,从最后一次信号出现开始统计数据合约最高价。 (3)信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG) SK(SPK)信号的当根K线返回的从信号发出到K线走完时数据合约行情的最高价;SK(SPK)信号之后的K线返回信号发出以来数据合约行情的最高价。 例: C<O,SK; C<SKHIGH-5,BP; AUTOFILTER; // 最新价低于卖开仓以来数据合约的最高价5个点,平仓 -
SKLOW
Le prix le plus bas depuis la vente des contrats de données.
返回数据合约卖开仓以来的最低价。 用法: SKLOW返回数据合约最近一次模型卖开位置到当前的最低价。 1、不同信号执行方式,其返回值分别为: (1)K线走完确认信号下单 a.历史信号计算中,SK(SPK)信号之后的K线返回委托以来的数据合约行情的最低价。 b.加载运行过程中,SK(SPK)信号当根K线返回的为信号发出时数据合约行情的最新价,SK之后的K线返回委托以来的数据合约行情最低价。 信号发出时行情时开始统计数据合约行情的最低价;信号消失,返回上次卖开以来的数据合约行情的最低价,信号确认存在,返回当根K线记录的数据合约行情的最低价。 注:SK信号发出后,中间出了信号消失,从最后一次信号出现开始统计数据合约最低价。 (3)信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG) SK(SPK)信号的当根K线返回的从信号发出到K线走完时数据合约行情的最低价;SK(SPK)信号之后的K线返回信号发出以来数据合约行情的最低价。 例: C<O,SK; C<SKPRICE&&C>SKLOW+5,BP; AUTOFILTER; // 最新价高于卖开仓以来数据合约的最低价5个点,止盈平仓 -
ISLASTBK
Jugez si le dernier signal est BK.
ISLASTBK判断上一个交易信号是否是BK。 用法: ISLASTBK上一个交易信号是BK则返回1(Yes),否则返回0(No)。 BK信号未确认时,ISLASTBK返回值0。 BK信号确认后,ISLASTBK返回1。 b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),BK信号当根ISLASTBK返回值为1。 注:模型中含有BPK条件,且上一个信号为平仓信号时,由BPK指令产生的BK信号,ISLASTBK返回0,ISLASTBPK返回1。 例: C>O,BK; ISLASTBK&&C>BKPRICE,SP; AUTOFILTER; // 上一个信号是BK信号,且最新价大于开仓价格,卖平仓 -
ISLASTSK
Jugez si le dernier signal est SK.
ISLASTSK判断上一个交易信号是否是SK。 用法: ISLASTSK上一个交易信号是SK则返回1(Yes),否则返回0(No)。 SK信号未确认时,ISLASTSK返回值0。 SK信号确认后,ISLASTSK返回1。 b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),SK信号当根ISLASTSK返回值为1。 注:模型中含有SPK条件,且上一个信号为平仓信号时,由SPK指令产生的SK信号,ISLASTSK返回0,ISLASTSPK返回1。 例: C<O,SK; ISLASTSK&&C<SKPRICE,BP; AUTOFILTER; // 上一个信号是SK信号,且最新价小于开仓价格,买平仓 -
ISLASTBP
Pour déterminer si le dernier signal est BP.
ISLASTBP判断上一个交易信号是否是BP。 用法: ISLASTBP上一个交易信号是BP则返回1(Yes),否则返回0(No)。 BP信号未确认时,ISLASTBP返回值0。 BP信号确认后,ISLASTBP返回1。 b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),BP信号当根ISLASTBP返回值为1。 例: C<O,SK(2); C>O,BP(1); ISLASTBP,BP(1); // 上一个信号是买平仓信号,则减仓一手 -
ISLASTSP
Pour déterminer si le dernier signal est un SP.
ISLASTSP判断上一个交易信号是否是SP。 用法: ISLASTSP,上一个交易信号是SP则返回1(Yes),否则返回0(No)。 SP信号未确认时,ISLASTSP返回值0。 SP信号确认后,ISLASTSP返回1。 b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),SP信号当根ISLASTSP返回值为1。 例: C>O,BK(2); C<O,SP(1); ISLASTSP,SP(1); // 上一个信号是卖平仓信号,则减仓一手 -
ISLASTBPK
Pour déterminer si le dernier signal est BPK.
ISLASTBPK判断上一个交易信号是否是BPK。 用法: ISLASTBPK上一个交易信号是BPK则返回1(Yes),否则返回0(No)。 BPK信号未确认时,ISLASTBPK返回值0。 BPK信号确认后,ISLASTBPK返回1。 b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),BPK信号当根ISLASTBPK返回值为1。 注:模型中含有BPK条件,且上一个信号为平仓信号时,由BPK指令产生的BK信号,ISLASTBK返回0,ISLASTBPK返回1。 例: C>O,BPK; ISLASTBPK&&C<O,SPK; AUTOFILTER; // 上一个信号是BPK信号,则反手SPK -
ISLASTSPK
Jugez si le dernier signal est un SPK.
ISLASTSPK判断上一个交易信号是否是SPK。 用法: ISLASTSPK上一个交易信号是SPK则返回1(Yes),否则返回0(No)。 SPK信号未确认时,ISLASTSPK返回值0。 SPK信号确认后,ISLASTSPK返回1。 b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),SPK信号当根ISLASTSPK返回值为1。 注:模型中含有SPK条件,且上一个信号为平仓信号时,由SPK指令产生的SK信号,ISLASTSK返回0,ISLASTSPK返回1。 例: C<O,SPK; ISLASTSPK&&C>O,BPK; AUTOFILTER; // 上一个信号是SPK信号,则反手BPK -
ISLASTSTOP
Jugez si le dernier signal est STOP.
ISLASTSTOP判断上一个交易信号是否是STOP。 用法: ISLASTSTOP上一个交易信号是STOP则返回1(Yes),否则返回0(No)。 注:收盘价模型STOP信号下根K线ISLASTSTOP返回值为1;指令价模型STOP信号当根K线ISLASTSTOP返回值为1。 例: CROSS(C,MA(C,5)),BK(2); STOP(0,5); ISLASTSTOP&&CROSS(C,MA(C,10)),BK(1); // 上一个信号是STOP信号,且价格上穿10周期均线,开仓一手 -
ISLASTCLOSEOUT
Il est important de déterminer si le dernier signal est un CLOSEOUT.
ISLASTCLOSEOUT判断上一个信号是否CLOSEOUT。 用法: ISLASTCLOSEOUT上一个交易信号是CLOSEOUT返回1(Yes),否则返回0(No)。 CLOSEOUT信号未确认时,ISLASTCLOSEOUT返回值0。 CLOSEOUT信号确认后,ISLASTCLOSEOUT返回1。 b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),CLOSEOUT信号当根ISLASTCLOSEOUT返回值为1。 例: ISLASTCLOSEOUT&&C>O,BK(1); // 上一个信号是清仓信号,并且当根K线是阳线,则买开一手 -
BARSBK
La dernière fois, j'ai acheté la position du signal.
BARSBK上一次买开信号位置。 用法: BARSBK返回上一次买开仓的K线距离当前K线的周期数(不包含出现BK信号的那根K线)。 取包含BK信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSBK+1;由于发出BK信号的当根k线BARSBK返回空值,则BARSBK+1在发出BK信号当根k线返回空值。 注: 1、若当前K线之前无BK信号,则函数返回值为空值。 2、BK信号固定后BARSBK返回为空值。 (1)设置信号执行方式为K线走完确认信号下单。 BARSBK返回值为上一个BK信号距离当前的K线根数(包含当前K线) (2)设置信号执行方式为出信号立即下单,不复核(例如:在模型中写入MULTSIG) a.历史信号计算中,出现BK信号的当根K线,BARSBK返回空值。 b.加载运行过程中,信号固定后BARSBK返回空值。 BARSBK返回值为上一个BK信号距离当前的K线根数(包含当前K线)。 例: 1、BARSBK>10,SP; // 上一次买开仓(不包含出现买开信号的那根K线)距离当前K线的周期数大于10,卖平 2、HHV(H,BARSBK+1); // 上一次买开仓(包含开仓信号出现的当根k线)到当前的最高价的最大值 当根K线出现BK信号,AA返回为空值,需要返回当根K线上最高价,模型需要修改为: AA:=IFELSE(BARSBK>=1,HHV(H,BARSBK+1),H); (1)当根K线出现BK信号,BARSBK返回为空值,不满足BARSBK>=1的条件,则取值为当根K线的最高价H。 (2)发出BK信号之后K线BARSBK返回买开仓的K线距离当前K线的周期数,满足BARSBK>=1的条件,则取值为HHV(H,BARSBK+1),即买开仓(包含开仓信号出现的当根k线)到当前的最高价的最大值。 修改后如果平仓条件中用到了AA的值,当根K线满足了平仓条件,可以出现平仓信号。 3、AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C); // 取最近一次买开仓K线的收盘价 (1)发出BK信号的当根k线BARSBK返回空值,则当根K线不满足BARSBK>=1的条件,AA返回当根k线的收盘价。 (2)发出BK信号之后的k线BARSBK返回买开仓的K线距离当前K线的周期数,则AA返回REF(C,BARSBK),即开仓k线的收盘价。 (3)例:1、2、3三根k线,1中的K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3中的K线AA返回值为1中的K线的收盘价。 -
BARSSK
La dernière fois que j'ai vendu la position du signal.
BARSSK上一次卖开信号位置。 用法: BARSSK返回上一次卖开仓的K线距离当前K线的周期数(不包含出现SK信号的那根K线)。 取包含SK信号出现的那根K线到当前K线的周期数,需要在此函数后+1,即BARSSK+1;由于发出SK信号的当根k线BARSSK返回空值,则BARSSK+1在发出SK信号当根k线返回空值。 注: 1、若当前K线之前无SK信号,则函数返回值为空值。 2、SK信号固定后BARSSK返回为空值。 (1)设置信号执行方式为K线走完确认信号下单。 BARSSK返回值为上一个SK信号距离当前的K线根数(包含当前K线) (2)设置信号执行方式为出信号立即下单,不复核(例如:在模型中写入MULTSIG) a.历史信号计算中,出现SK信号当根K线,BARSSK返回空值。 b.加载运行过程中,SK信号当根K线,信号固定后BARSSK返回空值。 BARSSK返回值为上一个SK信号距离当前的K线根数(包含当前K线)。 例: 1、BARSSK>10,BP; // 上一次卖开仓(不包含出现买开信号的那根K线)距离当前K线的周期数大于10,买平 2、LLV(L,BARSSK+1); // 上一次卖开仓(包含开仓信号出现的当根k线)到当前的最低价的最小值 当根K线出现SK信号,AA返回为空值,如果需要返回当根K线上最低价,模型需要修改为: AA:=IFELSE(BARSSK>=1,LLV(L,BARSSK+1),L); (1)当根K线出现SK信号,BARSSK返回为空值,不满足BARSSK>=1的条件,则取值为当根K线的最低价L。 (2)发出SK信号之后K线SARSBK返回卖开仓的K线距离当前K线的周期数,满足BARSSK>=1的条件,则取值为LLV(L,BARSSK+1),即卖开仓(包含开仓信号出现的当根k线)到当前的最低价的最小值。 修改后如果平仓条件中用到了AA的值,当根K线满足了平仓条件,可以出现平仓信号。 3、AA:=IFELSE(BARSSK>=1,REF(C,BARSSK),C); // 取最近一次卖开仓K线的收盘价 (1)发出SK信号的当根k线BARSSK返回空值,则当根K线不满足BARSSK>=1的条件,AA返回当根k线的收盘价。 (2)发出SK信号之后的k线BARSSK返回卖开仓的K线距离当前K线的周期数,则AA返回REF(C,BARSSK),即开仓k线的收盘价。 (3)例:1、2、3三根k线,1K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3K线AA返回值为1K线的收盘价。 -
BARSSP
La position de la dernière marque de fléchissement.
BARSSP上一次卖平信号位置。 用法: BARSSP返回上一次卖平仓的K线距离当前K线的周期数(不包含出现SP信号的那根K线)。 取包含SP信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSSP+1。由于发出SP信号的当根k线BARSSP返回空值,则BARSSP+1在发出SP信号当根k线返回空值。 注: 1、若当前K线之前无SP信号,则函数返回值为空值。 2、SP信号固定后BARSSP返回为空值。 (1)设置信号执行方式为K线走完确认信号下单。 BARSBP返回值为上一个BP信号距离当前的K线根数(包含当前K线)。 (2)设置信号执行方式为出信号立即下单,不复核(例如:在模型中写入MULTSIG) a.历史信号计算中,出现SP信号当根K线,BARSSP返回空值。 b.加载运行过程中,SP信号当根K线,信号固定后BARSSP返回空值。 BARSSP返回值为上一个SP信号距离当前的K线根数(包含当前K线)。 例: 1、BARSSP>10,BK; // 上一次卖平仓(不包含出现卖平信号的那根K线)距离当前K线的周期数大于10,买开 2、AA:=HHV(H,BARSSP+1); // 上一次,卖平仓(包含平仓信号出现的当根k线)到当前的最高价的最大值 当根K线出现SP信号,AA返回为空值,如果需要返回当根K线上最高价,模型需要修改为: AA:=IFELSE(BARSSP>=1,HHV(H,BARSSP+1),H); (1)当根K线出现SP信号,BARSSP返回为空值,不满足BARSSP>=1的条件,则取值为当根K线的最高价H。 (2)发出SP信号之后K线BARSSP返回买平仓的K线距离当前K线的周期数,满足BARSSP>=1的条件,则取值为HHV(H,BARSSP+1),即卖平仓(包含平仓信号出现的当根k线)到当前的最高价的最大值。 3、AA:=IFELSE(BARSSP>=1,REF(C,BARSSP),C); // 取最近一次卖平仓K线的收盘价 (1)发出SP信号的当根k线BARSSP返回空值,则当根K线不满足BARSSP>=1的条件,AA返回当根k线的收盘价。 (2)发出SP信号之后的k线BARSSP返回卖平仓的K线距离当前K线的周期数,则AA返回REF(C,BARSSP),即平仓k线的收盘价。 (3)1、2、3三根k线,1中的K线为平仓信号的当根k线,则返回当根k线的收盘价,2、3中的K线AA返回值为1中的K线的收盘价。 -
BARSBP
La dernière fois que j'ai acheté une position de signal nulle.
BARSBP上一次买平信号位置。 用法: BARSBP返回上一次买平仓的K线距离当前K线的周期数(不包含出现BP信号的那根K线)。 取包含BP信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSBP+1。由于发出BP信号的当根k线BARSBP返回空值,则BARSBP+1在发出BP信号当根k线返回空值。 注: 1、若当前K线之前无BP信号,则函数返回值为空值。 2、BP信号固定后BARSBP返回为空值。 (1)设置信号执行方式为K线走完确认信号下单。 BARSBP返回值为上一个BP信号距离当前的K线根数(包含当前K线) (2)设置信号执行方式为出信号立即下单,不复核(例如:在模型中写入MULTSIG) a.历史信号计算中,出现BP信号当根K线,BARSBP返回空值。 b.加载运行过程中,BP信号当根K线,信号固定后BARSBP返回空值。 BARSBP返回值为上一个BP信号距离当前的K线根数(包含当前K线)。 例: 1、BARSBP>10,BK; // 上一次买平仓(不包含出现买平信号的那根K线)距离当前K线的周期数大于10,买开 2、AA:=HHV(H,BARSBP+1); // 上一次买平仓(包含平仓信号出现的当根k线)到当前的最高价的最大值 当根K线出现BP信号,AA返回为空值,如果需要返回当根K线上最高价,模型需要修改为: AA:=IFELSE(BARSBP>=1,HHV(H,BARSBP+1),H); (1)当根K线出现BP信号,BARSBP返回为空值,不满足BARSBP>=1的条件,则取值为当根K线的最高价H。 (2)发出BP信号之后K线BARSBP返回买平仓的K线距离当前K线的周期数,满足BARSBP>=1的条件,则取值为HHV(H,BARSBP+1),即买平仓(包含平仓信号出现的当根k线)到当前的最高价的最大值。 3、AA:=IFELSE(BARSBP>=1,REF(C,BARSBP),C);//取最近一次买平仓K线的收盘价: (1)发出BP信号的当根k线BARSBP返回空值,则当根K线不满足BARSBP>=1的条件,AA返回当根k线的收盘价。 (2)发出BP信号之后的k线BARSBP返回买平仓的K线距离当前K线的周期数,则AA返回REF(C,BARSBP),即平仓k线的收盘价。 (3)例:1、2、3三根k线,1中的K线为平仓信号的当根k线,则返回当根k线的收盘价,2、3中的K线AA返回值为1中的K线的收盘价。 -
REFSIG_VOL
Retourne le nombre de signaux de N signaux de Sig fixes à partir de la racine K en arrière-compte (le nombre de signaux de N signaux de Sig fixes à partir de la racine K en arrière-compte est le nombre de signaux de N signaux de Sig fixes à partir de la racine K en arrière-compte).
Comment utiliser:
REFSIG_VOL(Sig,N);, détermine le nombre de fois que le N° de signaux de Sig est fixe à partir de la racine K. Si le signal de Sig n'existe pas, ou s'il n'existe pas de signaux de Sig fixes, la fonction renvoie 0.Remarque:
1 Signaux de prise en charge de la position:BK,SK,BP,SP,BPK,SPK,CLOSEOUT,STOP。
2, si le N° de signaux Sig fixes de l'inverse est sur la racine K, alors la fonction renvoie le nombre de signaux actuels.
4 La fonction renvoie 0 lorsque N est égal à 0 ou vide.
5, le paramètre N prend en charge les variables ≠Par exemple:
// 如果从当根K线开始倒数第3个固定的BK信号所在的距离当前K线有5根K线,并且信号手数大于2,平掉所有持仓 REFSIG_PLACE(BK,3)=5&&REFSIG_VOL(BK,3)>2,SP(BKVOL); -
REFSIG_PRICE
Retourne le prix du signal du n° de Sig fixe à partir de la racine K.
Comment utiliser:
REFSIG_PRICE(Sig,N);, détermine la valeur du signal pour le n° de signaux fixes de Sig à partir de la racine K. Si le signal de Sig n'existe pas ou s'il n'y a pas de signaux fixes de Sig, la fonction renvoie une valeur nulle.Remarque:
1 Signaux de prise en charge de la position:BK,SK,BP,SP,BPK,SPK,CLOSEOUT,STOP。
2. Si la racine K a un signal Sig fixe, alors la fonction calcule le signal en incluant celui de la racine K.
3, la fonction renvoie une valeur nulle lorsque N est égal à 0 ou nul.
4, le paramètre N prend en charge la variable ≠Par exemple:
// 如果从当根K线开始倒数第3个固定的BK信号的开仓价位为3000,并且多头持仓大于0,卖平仓 REFSIG_PRICE(BK,3)=3000&&BKVOL>0,SP; -
COUNTSIG
Le nombre de signaux X au cours de N cycles de statistiques.
Comment utiliser:
COUNTSIG(X,N);Le nombre de signaux X au cours de N cycles de statistiques.
X peut êtreBK,SK,SP,BP,SPK,BPK,CLOSEOUT,STOP。Remarque:
1 - Le cycle de la statistique
(1) contient la ligne k actuelle.
(2) Si N est égal à 0, on commence à partir de la première valeur valide.
(3) Lorsque N est une valeur valide, mais que le nombre de lignes k actuelles est inférieur à la racine N, calculer à partir de la première racine jusqu'à la période actuelle.
(4) La valeur de retour est nulle si N est une valeur nulle.
(5) N est une variable
2/ Les signaux statistiques:
(1) Le mode d'exécution du signal est choisi pour le signal de confirmation après la ligne K ou le signal de vérification après la ligne K (par exemple: écrire CHECKSIG ((SIG,'A',0,'D',0,0);) dans le modèle), sans inclure le signal non fixé sur la ligne K de la racine, c'est-à-dire en renvoyant le nombre de signaux déjà fixés.
(2) Le mode d'exécution du signal est sélectionné pour ne pas effectuer de vérification du signal (par exemple: écrire MULTSIG ou MULTSIG_MIN; dans le modèle), contenant le signal émis et fixé sur la ligne K de la racine.
3, le signal BK produit par l'instruction BPK est traité par le signal BPK, le signal SK produit par l'instruction SPK est traité de la même manière.Par exemple:
N:=BARSLAST(DATE<>REF(DATE,1))+1; BKN:=COUNTSIG(BK,N); MA5:=MA(C,5); BKN=0&&C>MA5,BK; // 当日内日未出现过BK信号并且最新价大于5周期均线,则买开仓 -
ENTRYSIG_PLACE
Prenez la position de la ligne K du signal d'ouverture de la réserve.
Comment utiliser:
ENTRYSIG_PLACE(N);, prend la position de la ligne K où se trouve le Nème signal d'ouverture de position d'une transaction complète. Si aucun signal d'ouverture de position n'a été donné, la fonction renvoie une valeur nulle.Remarque:
1° Le signal d'ouverture est:BK,SK,BPK,SPK。
2/ Une transaction complète est considérée comme une transaction complète de la position ouverte à la position tenue à 0.
3, la fonction renvoie une valeur nulle si le nombre de signaux d'ouverture de position est inférieur à N dans une transaction complète.
4 La position de la ligne K est la racine de la ligne K actuelle jusqu'à la ligne K où le signal d'ouverture est indiqué.
5, la fonction renvoie une valeur nulle lorsque N est égal à 0 ou nul.
6, le paramètre N n'est pas pris en charge en tant que variable.Par exemple:
ENTRYSIG_PLACE(3)=5&&BKVOL>0,SP; // 如果第3个开仓信号所在K线距离当前K线有5根K线,并且多头持仓大于0,卖平仓 -
ENTRYSIG_PRICE
Récupérer le prix du signal d'ouverture spécifié.
Comment utiliser:
ENTRYSIG_PRICE(N);, prend le prix du Nème signal d'ouverture de position d'une transaction complète. Si aucun signal d'ouverture de position n'est donné, la fonction renvoie une valeur nulle.Remarque:
1° Le signal d'ouverture est:BK,SK,BPK,SPK。
2/ Une transaction complète est considérée comme une transaction complète de la position ouverte à la position tenue à 0.
3, la fonction renvoie une valeur nulle si le nombre de signaux d'ouverture de position est inférieur à N dans une transaction complète.
4 La fonction renvoie une valeur nulle lorsque N est égal à 0 ou nul.
5, le paramètre N n'est pas pris en charge en tant que variable.
6, le calcul de cette fonction contient des points de glissement ≠
7 Le modèle de prix de clôture: la valeur de la fonction de la ligne K à la racine de la chaîne donnée ne change pas.
Modèle de prix d'instruction: la racine K d'un signal donné renvoie le prix du Nème signal d'ouverture de position lors de la transaction.Par exemple:
ENTRYSIG_PRICE(3)=3000&&BKVOL>0,SP; // 如果第3个固定的开仓信号的开仓价位为3000,并且多头持仓大于0,卖平仓 -
ENTRYSIG_VOL
Prenez le nombre d'heures de signaux pour le signal d'ouverture du magasin.
Comment utiliser:
ENTRYSIG_VOL(N);, le nombre d'heures de signaux pour le Nème signal d'ouverture de position d'une transaction complète. Si aucun signal d'ouverture de position n'a été donné, la fonction renvoie une valeur nulle.Remarque:
1° Le signal d'ouverture est:BK,SK,BPK,SPK。
2/ Une transaction complète est considérée comme une transaction complète de la position ouverte à la position tenue à 0.
3, la fonction renvoie une valeur nulle si le nombre de signaux d'ouverture de position est inférieur à N dans une transaction complète.
4 La fonction renvoie une valeur nulle lorsque N est égal à 0 ou nul.
5, le paramètre N n'est pas pris en charge en tant que variable.
6, modèle de prix de clôture: la valeur de la fonction de la ligne K à la racine du signal spécifié ne change pas.
Modèle de prix d'instruction: le nombre d'heures de signaux de retour de la première ligne K du signal indiqué lors de la négociation du Nème signal d'ouverture.Par exemple:
ENTRYSIG_PRICE(3)=3000&&ENTRYSIG_VOL(3)>2,SP; // 如果第3个固定的开仓信号的开仓价位为3000,并且第3个固定的开仓信号的信号手数大于2,卖平仓 -
EXITSIG_PLACE
Prendre la position de la ligne K du signal d'équilibre spécifié.
Comment utiliser:
EXITSIG_PLACE(N);, prend la position de la ligne K où se trouve le Nème signal de placement d'une transaction complète. Si aucun signal de placement n'est présent, la fonction renvoie une valeur nulle.Remarque:
1° Les signaux d'austérité sont:BP,SP,CLOSEOUT,STOP。
2/ Une transaction complète est considérée comme une transaction complète de la position ouverte à la position tenue à 0.
3 Lorsque le nombre de signaux de plafonnement est inférieur à N, la fonction renvoie une valeur nulle.
4 La position de la ligne K est le nombre de racines de la ligne K actuelle jusqu'à la ligne K où le signal de placement est indiqué.
5, la fonction renvoie une valeur nulle lorsque N est égal à 0 ou nul.
6, le paramètre N n'est pas pris en charge en tant que variable.Par exemple:
EXITSIG_PLACE(3)=5&&BKVOL<=0,BK; // 如果第3个平仓信号所在K线距离当前K线有5根K线,并且没有多头持仓,买开仓 -
EXITSIG_PRICE
Le prix d'un signal d'équilibre spécifié.
Comment utiliser:
EXITSIG_PRICE(N);, prend le prix du Nème signal de placement d'une transaction complète. Si aucun signal de placement n'est donné, la fonction renvoie une valeur nulle.Remarque:
1° Les signaux d'austérité sont:BP,SP,CLOSEOUT,STOP。
2/ Une transaction complète est considérée comme une transaction complète de la position ouverte à la position tenue à 0.
3, la fonction renvoie une valeur nulle si le nombre de signaux de placement est inférieur à N dans une transaction complète.
4 La fonction renvoie 0 lorsque N est égal à 0 ou vide.
5, le paramètre N n'est pas pris en charge en tant que variable.
6, le calcul de cette fonction contient des points de glissement
7 Le modèle de prix de clôture: la valeur de la fonction de la ligne K à la racine de la chaîne donnée ne change pas.
Modèle de prix d'instruction: la racine K du signal spécifié renvoie le prix du signal de placement N de la transaction.Par exemple:
EXITSIG_PRICE(3)=3000&&BKVOL>0,SP; // 如果第3个固定的平仓信号的平仓价位为3000,并且多头持仓大于0,卖平仓 -
EXITSIG_VOL
Prenez le nombre d'heures de signal pour le signal de péréquation spécifié.
Comment utiliser:
EXITSIG_VOL(N)Le nombre d'heures de signaux pour le Nème signal d'équilibre d'une transaction complète. Si aucun signal d'équilibre n'est donné, la fonction renvoie une valeur nulle.Remarque:
1° Les signaux d'austérité sont:BP,SP,CLOSEOUT,STOP。
2/ Une transaction complète est considérée comme une transaction complète de la position ouverte à la position tenue à 0.
3, la fonction renvoie une valeur nulle si le nombre de signaux de placement est inférieur à N dans une transaction complète.
4 La fonction renvoie 0 lorsque N est égal à 0 ou vide.
5, le paramètre N n'est pas pris en charge en tant que variable.
6, modèle de prix de clôture: la valeur de la fonction de la ligne K à la racine du signal spécifié ne change pas.
Modèle de prix d'instruction: le nombre d'heures de signaux de retour du signal de placement N de la transaction sur la racine K du signal spécifié.Par exemple:
EXITSIG_PRICE(3)=3000&&EXITSIG_VOL(3)>2,BK; // 如果第3个固定的平仓信号的平仓价位为3000,并且第3个固定的平仓信号的信号手数大于2,买开仓
-
-
Fonction de position
-
MYVOL
Prenez le numéro de téléphone.
MYVOL取下单手数。 用法:取下单手数,多用于在加减仓模型加载多个合约的时候的手数计算。 注: 回测:返回回测参数中设置的手数。 例: // 加载参数中下单手数设置为3时,下面编写BK的下单手数为6 C>O,BK(2*MYVOL); C<O,SP(BKVOL); -
MONEY
Les fonds disponibles sur le compte
MONEY账户可用资金。 用法:MONEY返回账户可用资金,用于仓位、手数等计算。 计算方法: 1、账户中MONEY的初始值为保证金参数中设置的起始资金。 2、历史回测中MONEY的初始值为回测参数中设置的初始资金。 3、开仓信号当根k线的MONEY值:开仓前可用资金-持仓保证金-手续费,其中持仓保证金=开仓价格*保证金比例*交易单位*手数。 4、开仓后未平仓的k线的MONEY值=开仓信号前k线的MONEY值+浮动盈亏PROFIT。 5、平仓信号当根k线的MONEY值:平仓前可用资金+平仓盈亏+平仓释放的保证金-手续费,其中平仓释放的保证金=开仓价格*保证金比例*交易单位*手数。 注: 1、信号执行方式为,‘K线走完确认下单’或‘XX下单,K线走完复核’: a.开仓信号当根K线,MONEY返回值为上根K线的可用资金-开仓保证金-手续费。 b.平仓信号当根K线,MONEY返回值为上根K线的可用资金+平仓盈亏+持仓释放的保证金-手续费。 2、信号执行方式选择,‘出信号下单,不进行复核’: a.开仓信号当根K线,MONEY返回值为当根k线开仓之前的可用资金-开仓保证金-手续费。 b.平仓信号当根K线,MONEY返回值为当根K线平仓之前的可用资金+平仓盈亏+平仓释放的保证金-手续费。 3、信号执行方式为‘K线走完确认信号下单’时,平仓盈亏=(平仓信号当根K线的收盘价-开仓价格)*手数*交易单位-手续费。 4、信号执行方式为‘出信号立即下单,不复核’时,平仓盈亏=(平仓信号的指令价-开仓价格)*手数*交易单位-手续费。 5、账户初始化后,MONEY返回值为初始化框中可用资金。 例: K:=MONEY*0.2/(C*MARGIN*UNIT+FEE); // 账户可用资金的20%可以开仓的手数(此写法适用于按固定手数收取手续费的合约),FEE自定义,或者计算 -
MONEYTOT
Droits et intérêts des comptes
MONEYTOT账户权益。 用法:MONEYTOT返回当前账户权益,模型进行仓位控制、下单手数等资金管理时使用。 计算方法:MONEYTOT=账户可用资金+持仓保证金。 注: 1、账户中MONEYTOT的初始值为保证金参数中设置的起始资金。 2、历史回测中MONEYTOT的初始值为回测参数中设置的初始资金。 3、账户初始化时: a.当前信号为开仓信号,MONEYTOT返回值为初始化框中账户可用资金。 b.当前信号为平仓信号,则MONEYTOT返回初始化框中账户可用资金+持仓保证金。 4、开仓信号当根k线:MONEYTOT=账户可用资金+持仓保证金。 5、开仓后平仓前:MONEYTOT返回当前账户可用资金+持仓保证金。 6、平仓信号当根k线:持仓为0时,MONEYTOT=可用资金;持仓不为0时,MONEYTOT=可用资金+持仓占用的保证金。 注: 持仓列表可用资金为包含了浮动盈亏的可用资金(= 当前权益 - 持仓占用的保证金)。 例: K:=MONEYTOT*0.2/(C*MARGIN*UNIT+FEE); // 账户权益的20%可以开仓的手数(此写法适用于按固定手数收取手续费的合约),FEE自定义,或者计算。 -
ACCOUNTMONEY
Le retour des fonds disponibles dans le compte de négociation, équivalent à
MONEY。Comment utiliser:
ACCOUNTMONEYRetourner les fonds disponibles dans le compte de trading -
ACCOUNTMONEYTOT
Le retour des droits et intérêts dans le compte de négociation, équivalent à
MONEYTOT。Comment utiliser:
ACCOUNTMONEYTOTRetour des droits et intérêts dans le compte de négociation. -
COINS
Nombre de pièces disponibles dans un compte numérique.
1、用于数字货币现货,获取当前可用币数。 -
MARGIN
Le taux de levier.
La monnaie numérique en espèces
a := MARGIN; // 固定为值1Contrats à terme sur crypto-monnaies
Les futures monnaies numériques mettent en place des leviers.
a := MARGIN; // 声明变量a,给a赋值当前合约杠杆率
-
-
Fonction de données TICK
-
ASK1
Résultats
TICKLe prix de vente -
ASK2
Résultats
TICKLe prix de la vente -
ASK3
Résultats
TICKLe prix de vente est de 3 $. -
ASK4
Résultats
TICKLe prix de vente est de 4 $. -
ASK5
Résultats
TICKLe prix de vente est de 5 $. -
ASK1VOL
Résultats
TICKIl y en a beaucoup. -
ASK2VOL
Résultats
TICKIl y en a deux qui ont été vendus. -
ASK3VOL
Résultats
TICKIl y en a trois. -
ASK4VOL
Résultats
TICKIl y en a quatre. -
ASK5VOL
Résultats
TICKIl a vendu cinq volumes. -
BID1
Résultats
TICKLe prix d'achat est de: -
BID2
Résultats
TICKLe prix de l'acquisition. -
BID3
Résultats
TICKLe prix de l'achat est de 3 $. -
BID4
Résultats
TICKLe prix de l'achat est de 4 $. -
BID5
Résultats
TICKLe prix de vente est de 5€. -
BID1VOL
Résultats
TICKJe ne sais pas si j'ai bien compris. -
BID2VOL
Résultats
TICKJe ne suis pas d'accord avec toi. -
BID3VOL
Résultats
TICKIl y a trois tonnes. -
BID4VOL
Résultats
TICKJe ne suis pas d'accord avec toi. -
BID5VOL
Résultats
TICKIl y en a cinq. -
NEW
Résultats
TICKLe prix actuel
-
-
Système
-
EXIT
Le programme est abandonné en cas d'erreur.
EXIT('msg'); // 需要传入参数,字符串参数需要使用''包裹,抛出一个错误,错误文本为字符串msg -
INFO
Sortie du journal
INFO(cond, param, ...); 1、cond 为条件变量,为真输出日志。 2、条件变量后可跟多个可变参数。 例子: INFO(1, C, '<-收盘价'); -
CONTRACT
Le code de contrat de l'échange qui utilise CONTRACT pour obtenir la carte des contrats actuellement configurée.
INFO(1, CONTRACT); -
DATA
L'instruction DATA est utilisée pour charger les données.
(*backtest start: 2020-01-21 00:00:00 end: 2020-02-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Binance","currency":"BTC_USDT"}] *) A:DATA('https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json'); INFO(1, CONTRACT, A); C>HV(H, 10),SPK; C<LV(L, 15),BPK; AUTOFILTER;utiliser
['属性名称']Il y a un problème avec le fait que les données sont en fait des valeurs de données.https://www.fmz.com/upload/asset/1ef31d778467ed9dd00.jsonPour les liens vers des données externes, il peut s'agir de liens vers des données fournies par d'autres programmes de services, ou de données fournies par le centre de données de la plateforme de trading quantitatif de l'inventeur, comme la partie commentée dans l'exemple(*消费指数:DATA('CPI')['城市'];*)Utilisation du codeCPIObtenir les données (les données ne sont pas encore toutes ouvertes) <unk>(*backtest start: 2018-01-21 00:00:00 end: 2020-02-12 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Binance","currency":"BTC_USDT"}] *) 消费指数:DATA('https://www.fmz.com/upload/asset/1ef31d778467ed9dd00.json')['城市']; (*消费指数:DATA('CPI')['城市'];*) 消费指数>HV(消费指数, 90),BPK; 消费指数<LV(消费指数, 90),SPK; AUTOFILTER;
-
-
autre
-
Paramètres de la base de données de Mac
-
Le nombre minimum de points de prix
Sur le marché à terme BITMEX, le point le plus bas est de 0,5 <unk>.
Le prix le plus bas sur le marché à terme OKEX est de 0.01 <unk>.Lorsque le prix d'un contrat est relativement bas, il est nécessaire de faire attention à la précision de la devise de prix, à la précision de la variété de transaction et à la configuration de ces paramètres.
-
Nombre maximal de cycles variables
Le nombre de lignes KBAR du graphique d'impact, avecjavascriptAppel dans la stratégieSetMaxBarLenLes fonctions sont les mêmes. -
Le nombre de positions affichées sur le tableau de bord de la stratégie et de l'état du langage Mac.
Le nombre réel de positions est égal au nombre réel de positions.
-
Conditionnel (ce n'est pas recommandé).
IF H > C THEN BEGIN X:=10; END
-
-
Par exemple:
-
Le modèle de prix en temps réel détecte:
VARIABLE:N:0; IF N <> BARPOS AND ISLASTBAR = 1 THEN BEGIN N:=BARPOS; INFO(1, '123'); END
-
-
国内的爱交易平台 有麦语言的函数库 ,不知以后可否兼容下,像兼容tradingview上的函数一样,这样两边的指标策略,直接就可以平移到发明者上来量化了
- 1













