(2)Nachdem das BP-Signal gesendet wurde, gibt das K-Line BARSBP die Anzahl der Perioden von der K-Line für Kauf- und Schlusspositionen auf die aktuelle K-Line zurück. Ist die Bedingung BARSBP>=1 erfüllt, beträgt der Wert HHV(H, BARSBP+1), d. h. der maximale Wert der Kauf- und Schlusspositionen (einschließlich der aktuellen K-Line, wenn das Schlusssignal angezeigt wird) zum aktuellen höchsten Preis. 3.AA:=IFELSE(BARSBP>=1,REF(C,BARSBP),C);//Nimm den Schlusskurs der letzten K-Linie, um die Position zu kaufen und zu schließen: (1)Wenn der BARSBP der aktuellen K-Linie, die das BP-Signal sendet, null zurückgibt, dann, wenn die K-Linie nicht die Bedingung BARSBP>=1 erfüllt, kehrt AA zum Schlusskurs der aktuellen K-Linie zurück. (2) Nach dem Absenden des BP-Signals kehrt die K-Linien-BARSBP zur Periodennummer der K-Linien zurück, um die Position von der aktuellen K-Line zu kaufen und zu schließen, dann kehrt AA zu REF ((C, BARSBP) zurück, der der Schlusskurs der schließenden K-Line ist. (3)Zum Beispiel: drei K-Linien: 1, 2 und 3, die K-Line in 1 ist die aktuelle K-Line des Schlusssignals, dann kehrt sie zum Schlusskurs der aktuellen K-Line zurück, und die K-Line AA in 2 und 3 kehrt zum Schlusskurs der K-Line in 1. - Ich weiß nicht.
Gibt die Anzahl der Signallots für das n-te feste Sig-Signal zurück, die von der aktuellen K-Linie abgerechnet wird (Rückwärtsbestellungen nehmen die Anzahl der offenen Positionslots).
Verwendung:REFSIG_VOL(Sig,N);
, bestimmt die Losgröße des nth festen Sig-Signals aus der aktuellen K-Linie. Wenn es kein Sig-Signal gibt, oder wenn es kein festes Sig-Signal gibt, gibt die Funktion 0 zurück.
Anmerkungen:
1.Die Signale, die von der Sig-Position unterstützt werden, sind:BK
, SK
, BP
, SP
, BPK
, SPK
,CLOSEOUT
,STOP
- Ich weiß.
2.Wenn sich der Countdown zum n-ten festen Sig-Signal auf der aktuellen K-Linie befindet, kehrt die Funktion zum aktuellen Signallot zurück.
4.Wenn N 0 oder Null ist, gibt die Funktion 0.
5.Der Parameter N unterstützt Variablen.
Beispiele:
// 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);
Gibt den Signalpreis des nth festen Sig-Signals vom Anfang der aktuellen K-Linie zurück.
Verwendung:REFSIG_PRICE(Sig,N);
, ermittelt den Signalpreis des nth festen Sig-Signals aus der aktuellen K-Linie. Wenn kein Sig-Signal vorhanden ist, oder wenn kein fester Sig-Signal vorhanden ist, gibt die Funktion 0 zurück.
Anmerkungen:
1.Die Signale, die von der Sig-Position unterstützt werden, sind:BK
, SK
, BP
, SP
, BPK
, SPK
,CLOSEOUT
,STOP
- Ich weiß.
2.Wenn ein festes Sig-Signal auf der aktuellen K-Linie vorhanden ist, wird das Signal der aktuellen K-Linie mit eingeschlossen, wenn die Funktion das Signal berechnet.
3.Wenn N 0 oder null ist, gibt die Funktion null zurück.
4.Der Parameter N unterstützt Variablen.
Beispiele:
// 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;
Zählen Sie die Anzahl der X-Signale in N Perioden.
Verwendung:COUNTSIG(X,N);
Zählen Sie die Anzahl der X-Signale in N Perioden.
X kann seinBK
, SK
, SP
, BP
, SPK
, BPK
,CLOSEOUT
,STOP
.
Anmerkungen:
1.Im statistischen Zeitraum
(1)Enthält die aktuelle K-Linie.
(2) Wenn N 0 ist, wird ab dem ersten gültigen Wert gezählt.
(3) Wenn N ein gültiger Wert ist, aber die aktuelle Anzahl von K-Linien kleiner als N ist, wird von der ersten bis zur aktuellen Periode gezählt.
(4)Der zurückgegebene Wert ist null, wenn N null ist.
(5) N kann eine Variable sein.
2.Beim Zählen von Signalen:
(1)Die Signaldurchführungsmethode wird als Bestätigungssignal ausgewählt, nachdem die K-Linie abgeschlossen ist, oder als Überprüfung, nachdem die K-Linie abgeschlossen ist (z. B. schreiben Sie CHECKSIG(SIG,
Beispiele:
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
Nehmen Sie die K-Linienposition des angegebenen Öffnungs-Positionssignals ein.
Verwendung:ENTRYSIG_PLACE(N);
, nimmt die Position der K-Linie an, wo sich das N-te Positionöffnungssignal in einem vollständigen Handel befindet.
Anmerkungen:
1.Die Signale für die Eröffnung von Positionen sind:BK
, SK
, BPK
, SPK
- Ich weiß.
2.Eine Position gilt als vollständig abgewickelt ab dem Zeitpunkt ihrer Eröffnung, bis sie bei 0 gehalten wird.
3.Wenn die Anzahl der offenen Signale in einem vollständigen Handel kleiner als N ist, gibt die Funktion null zurück.
4.Die K-Linienposition ist die Zahl von der aktuellen K-Line bis zur K-Line, an der sich das angegebene Öffnungssignal befindet.
5.Wenn N 0 oder null ist, gibt die Funktion null zurück.
6.Der Parameter N wird nicht als Variable unterstützt.
Beispiele:
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
Nehmen Sie den Preis des angegebenen Signals für eine offene Position.
Verwendung:ENTRYSIG_PRICE(N);
Wenn kein Signal zur Eröffnung einer Position vorliegt, gibt die Funktion null zurück.
Anmerkungen:
1.Die Signale für die Eröffnung von Positionen sind:BK
, SK
, BPK
, SPK
- Ich weiß.
2.Eine Position gilt als vollständig abgewickelt ab dem Zeitpunkt ihrer Eröffnung, bis sie bei 0 gehalten wird.
3.Wenn die Anzahl der offenen Signale in einem vollständigen Handel kleiner als N ist, gibt die Funktion null zurück.
4.Wenn N 0 oder null ist, gibt die Funktion null zurück.
5.Der Parameter N wird nicht als Variable unterstützt.
6.Die Berechnung dieser Funktion umfaßt den Schlupf.
7.Schließpreismodell: Der Wert der aktuellen K-Linienfunktion des angegebenen Signals ändert sich nicht.
Bestellpreismodell: Rückgabe des N-ten Eröffnungssignals des aktuellen Handels an der aktuellen K-Linie des angegebenen Signals.
Beispiele:
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
Nehmen Sie das Signal-Lot des angegebenen Positionsöffnungssignals.
Verwendung:ENTRYSIG_VOL(N);
Wenn kein Signal zur Eröffnung einer Position vorliegt, gibt die Funktion null zurück.
Anmerkungen:
1.Die Signale für die Eröffnung von Positionen sind:BK
, SK
, BPK
, SPK
- Ich weiß.
2.Eine Position gilt als vollständig abgewickelt, von dem Zeitpunkt an, an dem sie eröffnet wird, bis zu dem Zeitpunkt, an dem sie bei 0 gehalten wird.
3.Wenn die Anzahl der offenen Signale in einem vollständigen Handel kleiner als N ist, gibt die Funktion null zurück.
4.Wenn N 0 oder null ist, gibt die Funktion null zurück.
5.Der Parameter N wird nicht als Variable unterstützt.
6.Schließpreismodell: Der Wert der aktuellen K-Linienfunktion des angegebenen Signals ändert sich nicht.
Befehlspreismodell: Bei der aktuellen K-Linie des angegebenen Signals kehrt es zur Signalpartiennummer des n-ten Eröffnungssignals des aktuellen Handels zurück.
Beispiele:
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
Nehmen Sie die K-Linienposition des angegebenen Schlusssignals ein.
Verwendung:EXITSIG_PLACE(N);
, nimmt die Position der K-Linie des n-ten Schlusssignals in einem kompletten Handel ein. Wenn kein Schlusssignal vorhanden ist, gibt die Funktion null zurück.
Anmerkungen:
1.Die Signale zum Schließen von Positionen sind:BP
, SP
, CLOSEOUT
, STOP
- Ich weiß.
2.Eine Position gilt als vollständig abgewickelt ab dem Zeitpunkt ihrer Eröffnung, bis sie bei 0 gehalten wird.
3.Wenn die Zahl der Schließsignale kleiner als N ist, gibt die Funktion null zurück.
4.Die K-Linienposition bezieht sich auf die Anzahl der K-Linien von der aktuellen K-Line bis zum vorgesehenen Schlussignal.
5.Wenn N 0 oder null ist, gibt die Funktion null zurück.
6.Der Parameter N wird nicht als Variable unterstützt.
Beispiele:
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
Nehmen Sie den Preis des angegebenen Schlusspositionssignals.
Verwendung:EXITSIG_PRICE(N);
Wenn es kein Schlusssignal gibt, gibt die Funktion null zurück.
Anmerkungen:
1.Die Signale zum Schließen von Positionen sind:BP
, SP
, CLOSEOUT
, STOP
- Ich weiß.
2.Eine Position gilt als vollständig abgewickelt ab dem Zeitpunkt ihrer Eröffnung, bis sie bei 0 gehalten wird.
3.Wenn die Zahl der Schlusssignale in einem kompletten Handel kleiner als N ist, gibt die Funktion null zurück.
4.Wenn N 0 oder null ist, gibt die Funktion null zurück.
5.Der Parameter N wird nicht als Variable unterstützt.
6.Die Berechnung dieser Funktion umfaßt den Schlupf.
7.Schließpreismodell: Der Wert der aktuellen K-Linienfunktion des angegebenen Signals ändert sich nicht.
Bestellpreismodell: Rückgabe des N-ten Eröffnungssignals des aktuellen Handels an der aktuellen K-Linie des angegebenen Signals.
Beispiele:
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
Nehmen Sie das Signal der angegebenen Schlussposition.
Verwendung:EXITSIG_VOL(N)
Nehmen Sie die Signal-Lot-Größe des n-ten Schlusssignals in einem vollständigen Handel.
Anmerkungen:
1.Die Signale zum Schließen von Positionen sind:BP
, SP
, CLOSEOUT
, STOP
- Ich weiß.
2.Eine Position gilt als vollständig abgewickelt ab dem Zeitpunkt ihrer Eröffnung, bis sie bei 0 gehalten wird.
3.Wenn die Zahl der Schlusssignale in einem kompletten Handel kleiner als N ist, gibt die Funktion null zurück.
4.Wenn N 0 oder null ist, gibt die Funktion null zurück.
5.Der Parameter N wird nicht als Variable unterstützt.
6.Schließpreismodell: Der Wert der aktuellen K-Linienfunktion des angegebenen Signals ändert sich nicht.
Befehlspreismodell: Bei der aktuellen K-Linie des angegebenen Signals kehrt es zur Signalpartiennummer des n-ten Schlusssignals des aktuellen Handels zurück.
Beispiele:
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
Nehmen Sie die Anzahl der Bestellungen.
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);
Auf dem Konto verfügbare Mittel.
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
Eigenkapital des Kontos.
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.
Rückzahlungen auf die verfügbaren Mittel auf dem HandelskontoMONEY
.
Verwendung:ACCOUNTMONEY
Rückzahlungen auf die verfügbaren Mittel auf dem Handelskonto.
Rückkehr auf das Eigenkapital auf dem HandelskontoMONEYTOT
.
Verwendung:ACCOUNTMONEYTOT
Rückkehr zum Eigenkapital auf dem Handelskonto.
Die Anzahl der verfügbaren Münzen auf dem Spotkonto der digitalen Währung.
1.It is used for digital currency spot to obtain the current number of available coins.
Leverage.
Devisenmarkt
a := MARGIN; // Fixed as value 1
Futures für digitale Währungen
Futures für digitale Währungen setzen Hebelwirkung.
a := MARGIN; // Declare the variable a and assign the current contract leverage to a
Erhalten Sie den Verkaufspreis vonTICK
Zum einen.
Erhalten Sie den Verkaufspreis vonTICK
Für zwei.
Erhalten Sie den Verkaufspreis vonTICK
Für drei.
Erhalten Sie den Verkaufspreis vonTICK
Für vier.
Erhalten Sie den Verkaufspreis vonTICK
Für fünf.
Erhalten Sie das Verkaufsvolumen vonTICK
Zum einen.
Erhalten Sie das Verkaufsvolumen vonTICK
Für zwei.
Erhalten Sie das Verkaufsvolumen vonTICK
Für drei.
Erhalten Sie das Verkaufsvolumen vonTICK
Für vier.
Erhalten Sie das Verkaufsvolumen vonTICK
Für fünf.
Erhalten Sie den Gebotspreis vonTICK
Zum einen.
Erhalten Sie den Gebotspreis vonTICK
Für zwei.
Erhalten Sie den Gebotspreis vonTICK
Für drei.
Erhalten Sie den Gebotspreis vonTICK
Für vier.
Erhalten Sie den Gebotspreis vonTICK
Für fünf.
Erhalten Sie das Gebotsvolumen vonTICK
Zum einen.
Erhalten Sie das Gebotsvolumen vonTICK
Für zwei.
Erhalten Sie das Gebotsvolumen vonTICK
Für drei.
Erhalten Sie das Gebotsvolumen vonTICK
Für vier.
Erhalten Sie das Gebotsvolumen vonTICK
Für fünf.
Erhalten Sie den neuesten Preis vonTICK
.
Ein Fehlertext wird gesendet und das Programm wird beendet.
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
Ausgabe des Protokolls
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');
Verwenden Sie CONTRACT, um den Austauschvertragscode der aktuell eingestellten Vertragskartierung zu erhalten.
INFO(1, CONTRACT);
Verwenden Sie den Befehl DATA zum Laden von Daten.
(*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;
Verwendung['attribute name']
um den Wert eines Attributs in den Daten zu nehmen.https://www.fmz.com/upload/asset/1ef31d778467ed9dd00.json
ist die externen Datenverbindungen, es kann ein Link zu Daten sein, die von anderen Dienstprogrammen bereitgestellt werden, oder es kann Daten sein, die vom Rechenzentrum der FMZ Quant-Handelsplattform bereitgestellt werden, wie der Teil der Kommentare im Beispiel(*Consumption Index: DATA('CPI')[ 'city'];*)
, den Code verwendenCPI
um Daten zu erhalten (die Daten sind noch nicht alle geöffnet).
(*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;
Mindestpreise
Auf der BITMEX-Futuresbörse beträgt der Mindestpreis 0,5 Punkte. Auf der OKEX-Futures-Börse beträgt der Mindestpreispunkt 0,01.
Wenn der Preis einiger Verträge relativ niedrig ist, muss darauf geachtet werden, ob die Festlegung von Parametern, wie Preispräzision in der Währung, Präzision der Handelsvielfalt, angemessen ist.
Höchstzahl der Perioden der Variablen
Es beeinflusst die Anzahl der Diagramm K-Linie BARs in der gleichen Weise, dass die Anrufung derSetMaxBarLen
Funktion imjavascript
Die Strategie tut es.
MyLanguage-Strategie, die Anzahl der Positionen, die in der Tabelle in der Statusspalte angezeigt werden.
Alle sind die tatsächliche Anzahl der gehaltenen Positionen.
Bedingtes Urteil (auf diese Weise zu schreiben wird nicht empfohlen).
IF H > C THEN
BEGIN
X:=10;
END
Beispiel:
Wenn das Echtzeit-Preismodell verwendet wird, wird die neue K-Line Bar erkannt:
VARIABLE:N:0;
IF N <> BARPOS AND ISLASTBAR = 1 THEN
BEGIN
N:=BARPOS;
INFO(1, '123');
END