(2)Après l'envoi du signal BP, le BARSBP de la ligne K renvoie au nombre de périodes allant de la ligne K pour les positions d'achat et de clôture à la ligne K courante.Si la condition de BARSBP>=1 est satisfaite, la valeur est HHV(H, BARSBP+1), c'est-à-dire la valeur maximale des positions d'achat et de clôture (y compris la ligne K courante lorsque le signal de clôture apparaît) au prix le plus élevé actuel. 3.AA:=IFELSE(BARSBP>=1,REF(C,BARSBP),C);//Prenez le prix de clôture de la dernière ligne K pour acheter et fermer la position: (1) Lorsque le BARSBP de la ligne K courante qui envoie le signal BP renvoie nul, alors lorsque la ligne K ne répond pas à la condition de BARSBP>=1, AA renvoie au prix de clôture de la ligne K courante. (2) La ligne K BARSBP, après l'envoi du signal BP, renvoie au numéro de période de la ligne K pour acheter et fermer la position à partir de la ligne K en cours, puis AA renvoie à REF ((C, BARSBP), qui est le prix de clôture de la ligne K de clôture. (3)Par exemple: trois lignes K: 1, 2 et 3, la ligne K dans 1 est la ligne K actuelle du signal de clôture, puis revient au prix de clôture de la ligne K actuelle, et la ligne AA dans 2 et 3 revient au prix de clôture de la ligne K dans 1. Je ne sais pas.
Retourne le nombre de lots de signal pour le N° signal Sig fixe compté à partir de la ligne K courante (les ordres inversés prennent le nombre de lots de positions ouvertes).
Utilisation:REFSIG_VOL(Sig,N);
, détermine la taille du lot du chiffre de la N° signale fixe à partir de la ligne actuelle K. S'il n'y a pas de signal sig, ou s'il n'y a pas de signal sig fixe, la fonction retourne 0.
Commentaires:
1.Les signaux supportés par la position Sig sont:BK
, SK
, BP
, SP
, BPK
, SPK
,CLOSEOUT
,STOP
Je suis désolée.
2.Si le compte à rebours jusqu'au n° signal Sig fixe est sur la ligne K courante, la fonction revient au lot de signal courant.
4.Lorsque N est égal à 0 ou nul, la fonction renvoie 0.
5.Le paramètre N prend en charge les variables.
Exemples:
// If there are 5 K-lines from the current K-line where the third fixed BK signal is located from the bottom of the current K-line, and the number of signal lots is greater than 2, close all positions
REFSIG_PLACE(BK,3)=5&&REFSIG_VOL(BK,3)>2,SP(BKVOL);
Retourne au prix du signal du n° signal Sig fixe depuis le début de la ligne K courante.
Utilisation:REFSIG_PRICE(Sig,N);
, détermine le prix du signal du n° signal Sig fixe à partir de la ligne K actuelle.
Commentaires:
1.Les signaux supportés par la position Sig sont:BK
, SK
, BP
, SP
, BPK
, SPK
,CLOSEOUT
,STOP
Je suis désolée.
2.S'il y a un signal Sig fixe sur la ligne K courante, alors, lorsque la fonction calcule le signal, le signal de la ligne K courante est inclus.
3.Lorsque N est égal à 0 ou nul, la fonction renvoie nul.
4.Le paramètre N prend en charge les variables.
Exemples:
// If the opening price of the 3rd last fixed BK signal from the current K-line is 3000, and the long position is greater than 0, sell and close the position
REFSIG_PRICE(BK,3)=3000&&BKVOL>0,SP;
Comptez le nombre de signaux X en N périodes.
Utilisation:COUNTSIG(X,N);
Comptez le nombre de signaux X en N périodes.
X peut êtreBK
, SK
, SP
, BP
, SPK
, BPK
,CLOSEOUT
,STOP
.
Commentaires:
1.Au cours de la période statistique,
(1) Contient la ligne K actuelle.
(2) Si N est égal à 0, alors compter à partir de la première valeur valide.
(3) Lorsque N est une valeur valide, mais que le nombre actuel de lignes K est inférieur à N, compter de la première à la période en cours.
(4)La valeur de retour est nulle lorsque N est nul.
(5) N peut être une variable.
2.Lors du comptage des signaux:
(1)La méthode d'exécution du signal est sélectionnée comme signal de confirmation après l'achèvement de la ligne K ou l'examen après l'achèvement de la ligne K (par exemple: écrire CHECKSIG(SIG,
Exemples:
N:=BARSLAST(DATE<>REF(DATE,1))+1;
BKN:=COUNTSIG(BK,N);
MA5:=MA(C,5);
BKN=0&&C>MA5,BK; // There is no BK signal in the day and the latest price is greater than the 5-period moving average, then buy and open a position
Prendre la position de la ligne K du signal de position d'ouverture spécifié.
Utilisation:ENTRYSIG_PLACE(N);
, prenez la position de la ligne K où le signal d'ouverture de la position nth est situé dans une transaction complète.
Commentaires:
1.Les signaux pour l'ouverture de positions sont les suivants:BK
, SK
, BPK
, SPK
Je suis désolée.
2.Une position est considérée comme une transaction complète à partir du moment où elle est ouverte jusqu'à ce qu'elle soit maintenue à 0.
3.Si le nombre de signaux ouverts dans une transaction complète est inférieur à N, la fonction renvoie zéro.
4.La position de la ligne K est le nombre entre la ligne K courante et la ligne K où se trouve le signal d'ouverture spécifié.
5.Lorsque N est égal à 0 ou nul, la fonction renvoie nul.
6.Le paramètre N n'est pas pris en charge comme variable.
Exemples:
ENTRYSIG_PLACE(3)=5&&BKVOL>0,SP; // If the K-line of the third position opening signal is 5 K-lines away from the current K-line, and the long position is greater than 0, sell and close the position
Prenez le prix du signal de position ouverte spécifié.
Utilisation:ENTRYSIG_PRICE(N);
Si aucun signal n'est donné pour ouvrir une position, la fonction renvoie null.
Commentaires:
1.Les signaux pour l'ouverture de positions sont les suivants:BK
, SK
, BPK
, SPK
Je suis désolée.
2.Une position est considérée comme une transaction complète à partir du moment où elle est ouverte jusqu'à ce qu'elle soit maintenue à 0.
3.Si le nombre de signaux ouverts dans une transaction complète est inférieur à N, la fonction renvoie zéro.
4.Lorsque N est égal à 0 ou nul, la fonction renvoie nul.
5.Le paramètre N n'est pas pris en charge comme variable.
6.Le calcul de cette fonction inclut le glissement.
7.Modèle de prix de clôture: la valeur de la fonction de ligne K actuelle du signal spécifié ne changera pas.
Modèle de prix de commande: Retour sur le prix du n° signal d'ouverture de la transaction en cours à la ligne K actuelle du signal spécifié.
Exemples:
ENTRYSIG_PRICE(3)=3000&&BKVOL>0,SP; // If the opening price of the 3rd fixed opening signal is 3000, and the long position is greater than 0, sell and close the position
Prenez le lot de signal du signal d'ouverture de position spécifié.
Utilisation:ENTRYSIG_VOL(N);
Si la fonction n'a pas de signal pour ouvrir une position, elle renvoie null.
Commentaires:
1.Les signaux pour l'ouverture de positions sont les suivants:BK
, SK
, BPK
, SPK
Je suis désolée.
2.Une position est considérée comme une transaction complète à partir du moment où elle est ouverte jusqu'à ce qu'elle soit maintenue à 0.
3.Si le nombre de signaux ouverts dans une transaction complète est inférieur à N, la fonction renvoie zéro.
4.Lorsque N est égal à 0 ou nul, la fonction renvoie nul.
5.Le paramètre N n'est pas pris en charge comme variable.
6.Modèle de prix de clôture: la valeur de la fonction de ligne K actuelle du signal spécifié ne changera pas.
Modèle de prix de commande: à la ligne K actuelle du signal spécifié, il revient au numéro de lot du signal du n° signal d'ouverture de la transaction en cours.
Exemples:
ENTRYSIG_PRICE(3)=3000&&ENTRYSIG_VOL(3)>2,SP; // If the opening price of the 3rd fixed opening signal is 3000, and the signal lot number of the 3rd fixed opening signal is greater than 2, sell and close the position
Prendre la position de la ligne K du signal de fermeture spécifié.
Utilisation:EXITSIG_PLACE(N);
, prenez la position de la ligne K du signal de clôture du N° dans une transaction complète.
Commentaires:
1.Les signaux de clôture des positions sont les suivants:BP
, SP
, CLOSEOUT
, STOP
Je suis désolée.
2.Une position est considérée comme une transaction complète à partir du moment où elle est ouverte jusqu'à ce qu'elle soit maintenue à 0.
3.Lorsque le nombre de signaux de fermeture est inférieur à N, la fonction renvoie null.
4.La position de la ligne K fait référence au nombre de lignes K entre la ligne K actuelle et le signal de fermeture désigné.
5.Lorsque N est égal à 0 ou nul, la fonction renvoie nul.
6.Le paramètre N n'est pas pris en charge comme variable.
Exemples:
EXITSIG_PLACE(3)=5&&BKVOL<=0,BK; // If the K-line of the third closing signal is 5 K-lines away from the current K-line, and there is no long position, buy to open a position
Prenez le prix du signal de position de clôture spécifié.
Utilisation:EXITSIG_PRICE(N);
, prenez le prix du n° signal de clôture dans une transaction complète.
Commentaires:
1.Les signaux de clôture des positions sont les suivants:BP
, SP
, CLOSEOUT
, STOP
Je suis désolée.
2.Une position est considérée comme une transaction complète à partir du moment où elle est ouverte jusqu'à ce qu'elle soit maintenue à 0.
3.Lorsque le nombre de signaux de clôture d'une transaction complète est inférieur à N, la fonction renvoie zéro.
4.Lorsque N est égal à 0 ou nul, la fonction renvoie nul.
5.Le paramètre N n'est pas pris en charge comme variable.
6.Le calcul de cette fonction inclut le glissement.
7.Modèle de prix de clôture: la valeur de la fonction de ligne K actuelle du signal spécifié ne changera pas.
Modèle de prix de commande: Retour sur le prix du n° signal d'ouverture de la transaction en cours à la ligne K actuelle du signal spécifié.
Exemples:
EXITSIG_PRICE(3)=3000&&BKVOL>0,SP; // If the closing price of the 3rd fixed closing signal is 3000, and the long position is greater than 0, sell and close the position
Prenez le lot de signal du signal de position de fermeture spécifié.
Utilisation:EXITSIG_VOL(N)
Prenez la taille du lot de signal du n° signal de clôture d'une transaction complète.
Commentaires:
1.Les signaux de clôture des positions sont les suivants:BP
, SP
, CLOSEOUT
, STOP
Je suis désolée.
2.Une position est considérée comme une transaction complète à partir du moment où elle est ouverte jusqu'à ce qu'elle soit maintenue à 0.
3.Lorsque le nombre de signaux de clôture d'une transaction complète est inférieur à N, la fonction renvoie zéro.
4.Lorsque N est égal à 0 ou nul, la fonction renvoie nul.
5.Le paramètre N n'est pas pris en charge comme variable.
6.Modèle de prix de clôture: la valeur de la fonction de ligne K actuelle du signal spécifié ne changera pas.
Modèle de prix de commande: à la ligne K actuelle du signal spécifié, il revient au numéro de lot du signal du n° signal de clôture de la transaction en cours.
Exemples:
EXITSIG_PRICE(3)=3000&&EXITSIG_VOL(3)>2,BK; // If the closing price of the 3rd fixed closing signal is 3000, and the signal lot number of the 3rd fixed closing signal is greater than 2, buy to open the position
Prenez le numéro de lot de commandes.
MYVOL take the lot number of orders.
Usage: Take the lot number of orders, it is mostly used for lot calculation when multiple contracts are loaded in the scale in/dump model.
Remark:
Backtesting: Return to the lot size set in the backtesting parameters.
Examples:
// When the order lot size in the loading parameter is set to 3, the order lot size of BK written following is 6
C>O,BK(2*MYVOL);
C<O,SP(BKVOL);
Les fonds disponibles sur le compte.
MONEY funds available in the account.
Usage: MONEY returns to the available funds in the account for calculation of positions, lot sizes, etc.
Calculation methods:
1.The initial value of MONEY in the account is the starting capital set in the margin parameters.
2.The initial value of MONEY in the historical backtesting is the initial capital set in the backtesting parameters.
3.The MONEY value of the current K-line of the position opening signal: available funds before opening a position - margin for holding positions - handling fee, where margin for holding positions = opening price * margin ratio * trading unit * lot size.
4.Money value of K-line not closed after opening = money value of K-line before opening signal + floating profit and loss profit.
5.The MONEY value of the current K-line of the closing signal: available funds before closing the position + profit and loss of closing the position + margin released by closing the position - handling fee, where the margin released by closing the position = opening price * margin ratio * trading unit * lot size.
Remarks:
1.The signal execution method is 'confirm the order after the K-line is completed' or 'XX order and review after the K-line is completed':
a.When the signal to open a position is a K-line, the return value of MONEY is the available funds of the previous K-line - margin for opening a position - handling fee.
b.When the closing signal is a K-line, the return value of MONEY is the available funds of the previous K-line + closing profit and loss + margin released by the position - handling fee.
2.Select the signal execution method as 'send a signal to place an order without reviewing':
a.When the signal to open a position is a K-line, the return value of MONEY is the available funds of the previous K-line - margin for opening a position - handling fee.
b.When the closing signal is a K-line, the return value of MONEY is the available funds of the previous K-line + closing profit and loss + margin released by the position - handling fee.
3.The signal execution method is 'When the K-line is completed to confirm the signal to place an order', the closing profit and loss = (the closing price of the K-line of the closing signal - the opening price) * lot size * trading unit - handling fee.
4.When the signal execution method is 'the signal is placed immediately without review', the closing profit and loss = (the order price of the closing signal - the opening price) * lot size * trading unit - handling fee.
5.After the account is initialized, the return value of MONEY is the funds available in the initialization box.
Examples:
K:=MONEY*0.2/(C*MARGIN*UNIT+FEE); // The number of lots that can be opened with 20% of the account's available funds (this writing method is applicable to contracts that charge a fee based on a fixed number of lots), FEE custom, or calculated
Le capital de compte.
MONEYTOT account Equity.
Usage: MONEYTOT returns to the current account equity, and the model performs position control. It is used for fund management such as order lot size.
Calculation method: MONEYTOT=Account available funds + position margin.
Remarks:
1.The initial value of MONEYTOT in the account is the initial capital set in the margin parameters.
2.The initial value of MONEYTOT in the historical backtesting is the initial capital set in the backtesting parameters.
3.When the account is initialized:
a.The current signal is the opening signal, and the return value of MONEYTOT is the available funds of the account in the initialization box.
b.The current signal is the closing signal, then MONEYTOT returns to the available funds of the account + margin in the initialization box.
4.The signal to open a position is the K-line: MONEYTOT = available funds in the account + margin for holding positions.
5.After opening a position and before closing a position: MONEYTOT returns to the available funds in the current account + margin for holding positions.
6.The current k-line of the closing signal: when the position is 0, MONEYTOT = available funds; when the position is not 0, MONEYTOT = available funds + margin occupied by the position.
Remark:
The available funds in the position list are the available funds including floating profit and loss (= current equity - margin occupied by positions).
Examples:
K:=MONEYTOT*0.2/(C*MARGIN*UNIT+FEE); // The number of lots that can be opened with 20% of the account equity(this writing method is applicable to contracts that charge a fixed lot size), FEE customization, or calculation.
Retours sur les fonds disponibles sur le compte de négociation, équivalent àMONEY
.
Utilisation:ACCOUNTMONEY
Retour sur les fonds disponibles sur le compte de négociation.
Retours sur les fonds propres du compte de négociation, équivalent àMONEYTOT
.
Utilisation:ACCOUNTMONEYTOT
Retour sur les fonds propres du compte de négociation.
Le nombre de pièces disponibles sur le compte au comptant de la monnaie numérique.
1.It is used for digital currency spot to obtain the current number of available coins.
Leverage.
Spots de monnaie numérique
a := MARGIN; // Fixed as value 1
Futures sur devises numériques
Les contrats à terme sur devises numériques sont réglés par le levier.
a := MARGIN; // Declare the variable a and assign the current contract leverage to a
Obtenir le prix de vente deTICK
Pour commencer.
Obtenir le prix de vente deTICK
Pour deux.
Obtenir le prix de vente deTICK
Pour trois.
Obtenir le prix de vente deTICK
Pour quatre.
Obtenir le prix de vente deTICK
Pour cinq.
Obtenir le volume de ventes deTICK
Pour commencer.
Obtenir le volume de ventes deTICK
Pour deux.
Obtenir le volume de ventes deTICK
Pour trois.
Obtenir le volume de ventes deTICK
Pour quatre.
Obtenir le volume de ventes deTICK
Pour cinq.
Obtenir le prix d'offre deTICK
Pour commencer.
Obtenir le prix d'offre deTICK
Pour deux.
Obtenir le prix d'offre deTICK
Pour trois.
Obtenir le prix d'offre deTICK
Pour quatre.
Obtenir le prix d'offre deTICK
Pour cinq.
Obtenir le volume des offres deTICK
Pour commencer.
Obtenir le volume des offres deTICK
Pour deux.
Obtenir le volume des offres deTICK
Pour trois.
Obtenir le volume des offres deTICK
Pour quatre.
Obtenir le volume des offres deTICK
Pour cinq.
Obtenez le dernier prix deTICK
.
Un message d'erreur est lancé et le programme s'éteint.
EXIT('msg'); // Parameters need to be passed in, string parameters need to be wrapped with '', an error is thrown, the error text is string msg
Sortie du journal
INFO(cond, param, ...);
1.cond is a condition variable, output log if true.
2.A condition variable can be followed by multiple variadic parameters.
Example:
INFO(1, C, '<-closing price');
Utilisez CONTRACT pour obtenir le code du contrat d'échange du mappage du contrat actuellement défini.
INFO(1, CONTRACT);
Utilisez la commande DATA 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;
Utilisation['attribute name']
pour prendre la valeur d'un attribut dans les données.https://www.fmz.com/upload/asset/1ef31d778467ed9dd00.json
est les liens de données externes, il peut être un lien vers les données fournies par d'autres programmes de service, ou il peut être des données fournies par le centre de données de la plate-forme de trading FMZ Quant, comme la partie des commentaires dans l'exemple(*Consumption Index: DATA('CPI')[ 'city'];*)
, utilisez le codeCPI
pour obtenir des données (les données ne sont pas encore toutes ouvertes).
(*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"}]
*)
Consumption index: DATA('https://www.fmz.com/upload/asset/1ef31d778467ed9dd00.json')['city'];
(*Consumption index: DATA('CPI')['city'];*)
Consumption index > HV(Consumption index, 90),BPK;
Consumption index < LV(Consumption index, 90),SPK;
AUTOFILTER;
Points de prix minimaux
Sur le marché des contrats à terme BITMEX, le prix minimum est de 0,5. Sur l'échange de contrats à terme OKEX, le prix minimum est de 0,01.
Lorsque le prix de certains contrats est relativement bas, il est nécessaire de se pencher sur l'adéquation de la définition de paramètres tels que la précision de la devise de prix, la précision de la variété de négociation.
Nombre maximal de périodes de la variable
Il affecte le nombre de cartes K-line BARs de la même manière que l'appel de laSetMaxBarLen
fonction dans lejavascript
La stratégie l'est.
stratégie MyLanguage, le nombre de positions affichées sur le tableau dans la colonne d'état.
Toutes sont le nombre réel de postes détenus.
Juge conditionnel (il n'est pas recommandé d'écrire de cette façon).
IF H > C THEN
BEGIN
X:=10;
END
Exemple:
Lorsque le modèle de prix en temps réel est utilisé, la nouvelle barre de ligne K est détectée:
VARIABLE:N:0;
IF N <> BARPOS AND ISLASTBAR = 1 THEN
BEGIN
N:=BARPOS;
INFO(1, '123');
END