[TOC]
MyLanguage는 MyLanguage와 호환되고 향상된 프로그래밍 트레이딩 언어입니다. FMZ Quant의 MyLanguage는 엄격한 문법 검사를 받게됩니다. 예를 들어 JavaScript 언어 코드를 임베드하기 위해 언어 향상을 사용할 때, 추가 공간 문자가%%
오퍼레이터가 오류를 보고하도록 합니다.
암호화폐 계약
암호화폐 계약
this_week cryptocurrency futures contract this week
next_week cryptocurrency futures contract next week
month cryptocurrency futures contract month
quarter cryptocurrency futures contract quarter
next_quarter cryptocurrency futures contract next quarter
third_quarter cryptocurrency futures contract third quarter
last_quarter contract last quarter
XBTUSD BITMEX perpetual contract
swap cryptocurrency futures perpetual contracts other than BITMEX exchange
For details, please refer to the exchange.SetContractType() function section of the JavaScript/Python/C++ documentation
변수는 데이터를 저장하기 위해 컴퓨터 메모리에서 열린 공간이다. 간단히 말해서, 데이터를 저장하는 데 사용됩니다.
첫 번째 변수를 열어
// assign 1 to variable a
a:=1;
들어와MyLanguage
, 그것은 쉽게 구별 할 수 있습니다data volume
:
0
, 1
, 'abc'
.Close
(폐기 가격)Close
마감값을 포함합니다.n
periods. [ 10.1 , 10.2 , 10.3 , 10.4 , 10.5 ...]
''
, 문자열 타입은 직접 사용할 수 없습니다, 그리고 그것은 함수와 함께 보기로 출력되어야 합니다.INFO(CLSOE>OPEN,'OK!');
// integer
int:=2;
// decimal
float:=3.1;
A:=1>0;
이 코드가 실행된 후,A
1입니다.// The closing price of the current period is greater than -999, you will find that the return value of each period is 1, which means true, because the closing price is almost impossible to be negative.
is_true:=Close>-999;
VARIABLE:VALUE1:10; // Declare a global variable, assign the value 10, and execute it only once.
백테스팅을 할 때 주목하세요.
VARIABLE:NX:0; // The initial global variable NX is 0
NX..NX+1; // Accumulate 1 each time
INFO(1,NX); // Print NX every time
초기에는INFO
진술 인쇄물101
어쩌면 그렇지 않을지도 몰라0
처음엔?
그 이유는 백테스트에서 100개의 초기 K-라인들이 있고, 100개의 K-라인들이 이미 실행되었기 때문에, 100번의 누적입니다.
실제 가격은 처음에 얼마나 많은 K 라인을 얻느냐에 달려 있습니다.
대부분의 시스템에서 변수 명칭은 시스템 Close
, C
또한 순수 또는 선수 숫자는 허용되지 않습니다. 마지막으로, 그것은 매우 길게 허용되지 않습니다, 다른 시스템에는 다른 길이 제한이 있습니다.
사실, 당신은 중국어 분석의 주류 시스템의 효율성에 대해 걱정할 필요가 없습니다. 나는
1. Chinese name
// elegant output
5-day moving average:=MA(C,5);
2. English + underline
// Output
move_avg_5:=MA(C,5);
만약 당신이 영어를 선호한다면, 가능한 한 변수의 의미를 이해하도록 노력하십시오.A1
, AAA
, BBB
.... 날 믿어 몇 일 후에 다시 표시 코드를 검토 할 때, 당신은 기억 상실으로 인해 매우 불행할 것입니다. 마찬가지로, 다른 사람들에게 코드를 수출 할 때, 독자는 파괴되어야합니다.
이제부터
MyLanguage 을 최대한 활용하세요! 분석과 의사결정에 강력한 도구가 되길 바랍니다.
데이터의 유형은 기본적인 개념입니다. 우리가 명확한 데이터를 변수에 서면으로 할당하면 변수는 또한 데이터의 유형이 됩니다.
1.2.3.1.1234.2.23456 ...
'1' .'2' .'3' ,String types must be wrapped with ''
A collection of data consisting of a series of single-valued data
사용1
나타냅니다.true
그리고0
에 대해false
.
예제
// declare a variable of value type
var_int := 1;
// Declare a variable for sequence data
var_arr := Close;
// The string type cannot be declared alone, it needs to be combined with the function
INFO(C>O, 'positive line');
지표 코드를 실행하는 데 사용되는 동작과 계산은 단순히 동작에 관련된 기호입니다.
변수에 값을 부여하기 위해
- 1. `:`
```:```, represents assignment and output to the graph (subgraph).
```
Close1:Close; // Assign Close to the variable Close1 and output to the figure
```
- 2. `:=`
```:=```, represents assignment, but is not output to the graph (main graph, sub graph...), nor is it displayed in the status bar table.
```
Close2:=Close; // Assign Close to the variable Close2
```
- 3. `^^`
```^^```, Two ```^``` symbols represent assignment, assign values to variables and output to the graph (main graph).
```
lastPrice^^C;
```
- 4. `..`
```..```, two ```.``` symbols represent assignment, assign values to variables and display variable names and values in the chart, but do not draw pictures to the chart (main picture, sub-picture...).
```
openPrice..O
```
관계 연산자는 두 데이터 사이의 관계를 결정하기 위해 조건 표현식에서 사용되는 이진 연산자입니다.
반환 값: 부올형, 또는true
(1) 또는false
(0).
- 1. more than```>```
```
// Assign the operation result of 2>1 to the rv1 variable, at this time rv1=1
rv1:=2>1;
```
- 2. less than```<```
```
// Returns false, which is 0, because 2 is greater than 1
rv3:=2<1;
```
- 3. more than or equal to```>=```
```
x:=Close;
// Assign the result of the operation that the closing price is more than or equal to 10 to the variable rv2
// Remark that since close is a sequence of data, when close>=10 is performed, the operation is performed in each period, so each period will have a return value of 1 and 0
rv2:=Close>=10;
```
- 4. less than or equal to```<=```
```
omitted here
```
- 5. equal to```=```
```
A:=O=C; // Determine whether the opening price is equal to the closing price.
```
- 6. Not equal to```<>```
```
1<>2 // To determine whether 1 is not equal to 2, the return value is 1 (true)
```
반환 값: 부올형, 또는true
(1) 또는false
(0).
1. The logical and ```&&```, can be replaced by ```and```, and the left and right sides of the and connection must be established at the same time.
// Determine whether cond_a, cond_b, cond_c are established at the same time
cond_a:=2>1;
cond_b:=4>3;
cond_c:=6>5;
cond_a && cond_b and cond_c; // The return value is 1, established
2. Logical or ```||```, you can use ```or``` to replace the left and right sides of the or link, one side is true (true), the whole is true (return value true).
cond_a:=1>2;
cond_b:=4>3;
cond_c:=5>6;
cond_a || cond_b or cond_c; // The return value is 1, established
3. ```()``` operator, the expression in parentheses will be evaluated first.
1>2 AND (2>3 OR 3<5) // The result of the operation is false
1>2 AND 2>3 OR 3<5 // The result of the operation is true
Return value: numeric type
수학적 연산자는 수학적 연산자이다. 기본 수학적 연산 (수학적 연산자) 를 완료하는 기호이며, 이는 네 가지 수학적 연산을 처리하는 기호이다.
- **plus +**
```
A:=1+1; // return 2
```
- **minus -**
```
A:=2-1; // return 1
```
- **multiply \**
```
A:=2*2; // return 4
```
- **divide /**
```
A:=4/2; // return 2
```
프로그래밍 세계에서
함수 은 특정 함수를 구현하는 코드 조각입니다. 다른 코드로 호출 될 수 있습니다. 일반적인 형태는 다음과 같습니다.
function(param1,param2,...)
- Composition:
Function name (parameter1, parameter2, ...), may have no parameters or have multiple parameters. For example, ```MA(x,n);``` means to return to the simple moving average of ```x``` within ```n``` periods. Among them, ```MA()``` is a function, ```x``` and ```n``` are the parameters of the function.
When using a function, we need to understand the basic definition of the function, that is, what data can be obtained by calling the function. Generally speaking, functions have parameters. When we pass in parameters, we need to ensure that the incoming data type is consistent. At this stage, the code hinting function of most IDEs is very imperfect. There is a data type of the parameter given, which brings some trouble to our use, and ```MA(x,n);``` is interpreted as:
```
Return to simple moving average
Usage:
AVG:=MA(X,N): N-day simple moving average of X, algorithm (X1+X2+X3+...+Xn)/N, N supports variables
```
This is very unfriendly to beginners, but next, we will dissect the function thoroughly, trying to find a quick way to learn and use the function.
함수를 빨리 배우기 위해서는 먼저 개념을 이해해야 합니다.반환
// Because it will be used in the following code, the variable return_value is used to receive and save the return value of function()
// retrun_value := function(param1,param2);
// For example:
AVG:=MA(C,10); // AVG is retrun_value, function is MA function, param1 parameter: C is the closing price sequence data, param2 parameter: 10.
둘째, 함수의 두 번째 중요한 개념은 매개 변수이며, 다른 매개 변수를 전달함으로써 다른 반환 값을 얻을 수 있습니다.
// The variable ma5 receives the 5-day moving average of closing prices
ma5:=MA(C,5);
// The variable ma10 receives the 10-day moving average of closing prices
ma10:=MA(C,10);
첫 번째 매개 변수X
위의 변수들ma5
, ma10
이C
(폐기 가격) 사실,C
또한 함수입니다 (개점부터 현재까지의 폐쇄 가격의 순서를 반환합니다), 그러나 매개 변수가 없습니다. 두 번째 매개 변수의 5 및 10은 매개 변수를 알려줍니다.MA()
이 함수는 매개 변수를 통해 보다 유연하게 사용할 수 있습니다.
MA(x,n)
, 만약 매개 변수의 데이터 타입을 모른다면x
, n
, 그것은 반환 값을 올바르게 얻을 수 없습니다.다음 기능 도입 및 사용에서 위의 세 가지 원칙을 따르십시오.
MyLanguage
그리고JavaScript
언어 혼합 프로그래밍 %%
// This can call any API quantified of FMZ
scope.TEST = function(obj) {
return obj.val * 100;
}
%%
Closing price: C;
Closing price magnified 100 times: TEST(C);
The last closing price is magnified by 100 times: TEST(REF(C, 1)); // When the mouse moves to the K-line of the backtest, the variable value will be prompted
- ```scope```object
The ```scope``` object can add attributes and assign anonymous functions to attributes, and the anonymous function referenced by this attribute can be called in the code part of MyLanguage.
- ```scope.getRefs(obj)```function
In ```JavaScript``` code block, call the ```scope.getRefs(obj)``` function to return the data of the passed in ```obj``` object.
The ```JavaScript``` code wrapped with the following ```%% %%``` will get the ```C``` passed in when the ```TEST(C)``` function in MyLanguage code is called Close price.
The ```scope.getRefs``` function will return all the closing prices of this K-line data. Because of the use of ```throw "stop"``` to interrupt the program, the variable ```arr``` contains the closing price of the first bar only. You can try to delete ```throw "stop"```, it will execute the ```return``` at the end of the ```JavaScript``` code, and return all closing price data.
```
%%
scope.TEST = function(obj){
var arr = scope.getRefs(obj)
Log("arr:", arr)
throw "stop"
return
}
%%
TEST(C);
```
- scope.bars
Access all K-line bars in the ``JavaScript`` code block.
The ```TEST``` function returns a value. 1 is a negative line and 0 is a positive line.
```
%%
scope.TEST = function(){
var bars = scope.bars
return bars[bars.length - 1].Open > bars[bars.length - 1].Close ? 1 : 0 // Only numeric values can be returned
}
%%
arr:TEST;
```
```
# Attention:
# An anonymous function received by TEST, the return value must be a numeric value.
# If the anonymous function has no parameters, it will result in an error when calling TEST, writing VAR:=TEST; and writing VAR:=TEST(); directly.
# TEST in scope.TEST must be uppercase.
```
- scope.bar
In the ```JavaScript``` code block, access the current bar.
Calculate the average of the high opening and low closing prices.
```
%%
scope.TEST = function(){
var bar = scope.bar
var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4
return ret
}
%%
avg^^TEST;
```
- scope.depth
Access to market depth data (order book).
```
%%
scope.TEST = function(){
Log(scope.depth)
throw "stop" // After printing the depth data once, throw an exception and pause
}
%%
TEST;
```
- scope.symbol
Get the name string of current trading pair.
```
%%
scope.TEST = function(){
Log(scope.symbol)
throw "stop"
}
%%
TEST;
```
- scope.barPos
Get the Bar position of the K-line.
```
%%
scope.TEST = function(){
Log(scope.barPos)
throw "stop"
}
%%
TEST;
```
- scope.get\_locals('name')
This function is used to get the variables in the code section of MyLanguage.
```
V:10;
%%
scope.TEST = function(obj){
return scope.get_locals('V')
}
%%
GET_V:TEST(C);
```
```
# Attention:
# If a variable cannot calculate the data due to insufficient periods, call the scope.get_locals function in the JavaScript code at this time
# When getting this variable, an error will be reported: line:XX - undefined locals A variable name is undefined
```
- scope.canTrade
The ```canTrade``` attribute marks whether the current bar can be traded (whether the current Bar is the last one)
For example, judging that the market data is printed when the strategy is in a state where the order can be traded
```
%%
scope.LOGTICKER = function() {
if(exchange.IO("status") && scope.canTrade){
var ticker = exchange.GetTicker();
if(ticker){
Log("ticker:", ticker);
return ticker.Last;
}
}
}
%%
LASTPRICE..LOGTICKER;
```
응용 예제:
%%
scope.TEST = function(a){
if (a.val) {
throw "stop"
}
}
%%
O>C,BK;
C>O,SP;
TEST(ISLASTSP);
한 번 포지션을 열고 닫은 후에 전략을 중지하십시오.
시스템은 적절한 기본 K-라인 기간을 자동으로 선택하고, 이러한 기본 K-라인 기간 데이터를 사용하여 데이터의 정확성을 보장하기 위해 참조된 모든 K-라인 데이터를 합성합니다.
#EXPORT formula_name ... #END
수식을 만들 수 있습니다. 수식이 다른 기간의 데이터를 얻기 위해 계산되지 않는다면, 빈 수식을 쓸 수도 있습니다.빈 공식은
#EXPORT TEST
NOP;
#END // end
#IMPORT [MIN,period,formula name] AS variable value
정해진 기간의 다양한 데이터를 얻으십시오 (변수 값으로 얻은 종료 가격, 시작 가격 등).이MIN
에IMPORT
명령어 의미분자 수준FMZ 퀀트 플랫폼의 MyLanguage,MIN
이 수준은IMPORT
명령어. 비표준 기간은 이제 지원됩니다. 예를 들어,#IMPORT [MIN, 240, TEST] AS VAR240
240분 기간 (4시간) K-라인 같은 데이터를 가져오기 위해
코드 예제:
// This code demonstrates how to reference formulas of different periods in the same code
// #EXPORT extended grammar, ending with #END marked as a formula, you can declare multiple
#EXPORT TEST
Mean value 1: EMA(C, 20);
Mean value 2: EMA(C, 10);
#END // end
#IMPORT [MIN,15,TEST] AS VAR15 // Quoting the formula, the K-line period takes 15 minutes
#IMPORT [MIN,30,TEST] AS VAR30 // Quoting the formula, the K-line period takes 30 minutes
CROSSUP(VAR15.Mean value is 1, VAR30.Mean value is 1),BPK;
CROSSDOWN(VAR15.Mean value is 2, VAR30.Mean value is 2),SPK;
The highest price in fifteen minutes:VAR15.HIGH;
The highest price in thirty minutes:VAR30.HIGH;
AUTOFILTER;
REF
, LLV
, HHV
그리고 여러 기간의 데이터를 참조할 때 데이터를 참조하는 다른 지침. (*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 // end
#IMPORT [MIN,5,TEST] AS MIN5
INFO(1, 'C:', C, 'MIN5.REF1C:', MIN5.REF1C, 'REF(MIN5.C, 1):', REF(MIN5.C, 1), 'Trigger BAR time:', BARTIME, '#FF0000');
INFO(1, 'L:', L, 'MIN5.REF1L:', MIN5.REF1L, 'REF(MIN5.L, 1):', REF(MIN5.L, 1), 'Trigger BAR time:', BARTIME, '#32CD32');
AUTOFILTER;
이 두 가지의 차이를 비교해 보면MIN5.REF1C
그리고REF(MIN5.C, 1)
우리는 찾을 수 있습니다:
```REF(MIN5.C, 1)``` is the K -line period of the current model (the above code backtest period is set to 1 minute, i.e. ```period: 1m``), the closing price of the 5-minute period where the penultimate BAR is located at the current moment.
These two definitions are differentiated, and they can be used as needed.
- ## Mode Description
- ### Signal filtering model of one opening and one leveling
In the model, the ```AUTOFILTER``` function is written to control and realize the signal filtering of one opening and one closing. When there are multiple opening signals that meet the conditions, the first signal is taken as the valid signal, and the same signal on the K-line will be filtered out.
Instructions supported by filtering model: BK, BP, BPK, SK, SP, SPK, CLOSEOUT, etc. Instructions with lot numbers such as BK(5) are not supported.
For example
MA1:MA(CLOSE,5); MA2:MA(CLOSE,10); CROSSUP ((C,MA1),BK; CROSSUP(MA1,MA2),BK; C>BKPRICE+10 더하기
이해:
위의 예시와 마찬가지로, AUTOFILTER가 설정되지 않은 경우, 세 번째 줄 BK, 네 번째 줄 BK 및 다섯 번째 줄 SP가 순차적으로 트리거되며, 각 K 라인은 신호를 한 번 트리거합니다. 위치를 열고 위치를 닫은 후 모델 상태가 다시 설정됩니다.
AUTOFILTER가 설정되면 BK가 트리거되면 SP만 트리거되고 다른 BK 신호는 무시되며 각 K 라인은 신호를 한 번 트리거합니다.
- ### Increase and decrease position model
The ```AUTOFILTER``` function is not written in the model, allowing continuous opening signals or continuous closing signals, which can increase and decrease positions.
Supported instructions: BK(N), BP(N), SK(N), SP(N), CLOSEOUT, BPK(N), SPK(N), open and close orders without lot size are not supported.
(1)Instruction grouping is supported.
(2)When multiple instruction conditions are satisfied at the same time, the signals are executed in the order in which the conditional statements are written.
For example:
MA1:MA(CLOSE,5); MA2:MA(CLOSE,10); CROSSUP ((C,MA1),BK ((1)); CROSSUP ((MA1,MA2),BK ((1)) C>BKPRICE+10 더하기
Use ```TRADE\_AGAIN```
It is possible to make the same command line, multiple signals in succession.
이해: 위 예제 는 하나씩 실행되며 실행 후 신호 는 더 이상 트리거 되지 않습니다. 포지션을 닫은 후 모델 상태를 다시 설정 합니다. K-라인 은 신호 를 한 번 트리거 합니다.
- ### Model with one K-line and one signal
Regardless of whether the K-line is finished, the signal is calculated in real-time orders, that is, the K-line is placed before the order is completed; the K-line is reviewed at the end. If the position direction does not match the signal direction at the end of the K-line, the position will be automatically synchronized.
For example:
MA1:MA(CLOSE,5); MA2:MA(CLOSE,10); CROSSUP(MA1,MA2),BPK; //5기준 이동평균은 상향으로 이동하고, 10기준 이동평균은 길게 이동합니다. CROSSDOWN ((MA1,MA2),SPK; //5기 이동 평균은 아래로 이동하고, 10기 이동 평균은 짧습니다. 오토필터
- ### A model of multiple signals on one K-line
The model uses ```multsig``` to control and implement multiple signals from one K-line.
Regardless of whether the K-line is finished, the signal is calculated in real-time.
The signal is not reviewed, there is no signal disappearance, and the direction of the signal is always consistent with the direction of the position.
If multiple signal conditions are met in one K-line, it can be executed repeatedly.
예를 들어: MA1:MA(CLOSE,5); MA2:MA(CLOSE,10); CROSSUP(MA1,MA2),BK; C>BKPRICE+10 더하기
```MULTSIG``` can execute multiple command lines within one K-line.
A command line is only signaled once.
O,BK; // 이 조건들은 모두 K-라인 바에서 실행될 수 있지만, 한 줄당 하나의 신호만 10+O,BK; // 전략 플러스 TRADE_AGAIN(10; 그것은 라인당 여러 신호를 만들 수 있습니다 20+O,BK 40+O,BK MULTSIG ((1,1,10);
Supplement:
1.The model of adding and reducing positions, two ways of one signal and one K-line: placing an order at the closing price and placing an order at the order price, are both supported.
2.The model of adding and reducing positions also supports ordering of multiple signals from one K-line.
The model of adding and reducing positions, write the ```multsig``` function to realize multiple additions or multiple reductions on one K-line.
- ## Execution mode
![MyLanguage Doc](/upload/asset/28d0c387f293478294600.png)
- ### Bar model
The Bar model refers to the model that is executed after the current BAR is completed, and the trading is executed when the next BAR starts.
- ### Tick model
The Tick model means that the model is executed once for each price movement and trades immediately when there is a signal.
The Tick model ignores the previous day's signal (the previous day's signal is executed immediately on the same day), and the Tick model focuses only on the current market data to determine whether the signal is triggered.
- ## Chart display
- ### Additional indicators for main chart
> Use operator ```^^```, set indicators are displayed on the main chart while assigning values to variables.
MA60^^MA(C, 60); // 60의 매개 변수로 평균 지표를 계산
![MyLanguage Doc](/upload/asset/168d6ee1bbb8c7c9be63.png)
- ### Additional Indicators for sub-chart
Use operator ```:```, set indicators are displayed on the sub-chart while assigning values to variables.
ATR:MA(MAX(MAX(((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26); // ATR 변수에 값을 부여,
![MyLanguage Doc](/upload/asset/7b032733df1539ff923b539b1dea72d0.png)
If you don't want it to be displayed on the main or subchart, use the "..." operator.
MA60..MA(C, 60); // 매개 변수 60로 평균 지표를 계산
You can use ```DOT``` and ```COLORRED``` to set the line type and color of the line, etc., in line with the habits of users familiar with the MyLanguage.
- ## Common problems
> Introduce the **problems** commonly encountered in the process of writing indicators, usually the points that need to be paid attention to when writing (continuously added).
- Remark the semicolon ```;``` at the end.
- Remark that system keywords cannot be declared as variables.
- Remark that the string uses **single quotes**, for example: the string ```'Open position'```.
- ### Remark
Annotation
- ```// The Remark content ``` (input method can be typed in both Chinese and English) means that the code is not compiled during the execution process, that is, the content after ```//``` is not executed. Usually we use it to mark the meaning of the code, when it is convenient for code review, it can be quickly understood and recalled.
- ```{ Remark content }```Block Remark.
```
A:=MA(C,10);
{The previous line of code is to calculate the moving average.}
```
- ```(* Remark content *)```Block Remark.
```
A:=MA(C,10);
(*The previous line of code is to calculate the moving average.*)
```
- ### Input
When writing code, because the input method is often switched between Chinese and English, resulting in symbol errors. The common errors are as follows: colon ```:```, terminator ```;```, comma ```, ```, brackets ```()```, etc. These characters in different states of Chinese and English need attention.
> If you use Sogou, Baidu, or Bing input methods, you can quickly switch between Chinese and English by pressing the ```shift``` key once.
- ### Error-prone logic
1. At least, not less than, not less than: the corresponding relational operator ```>=```.
2. Up to, at most, no more than: the corresponding relational operator ```<=```.
- ### Strategy launch synchronization
In the futures strategy, if there is a manually opened position before the strategy robot starts, when the robot starts, it will detect the position information and synchronize it to the actual position status.
In the strategy, you can use the ```SP```, ```BP```, ```CLOSEOUT``` commands to close the position.
%%
if (!scope.init) {
var ticker = exchange.GetTicker (();
교환.구입.판매+10, 1
scope.init = true;
}
%%
C>0, CLOSEOUT
MyLanguage는 같은 계약에 대해 긴 포지션과 짧은 포지션을 지원하지 않습니다.
K-라인 차트의 시작 가격을 얻으십시오.
개시 가격
기능: OPEN, O의 약자
매개 변수: 아무것도
설명:
이 기간의 개시 가격을 반환합니다 염기서열 데이터
OPEN gets the opening price of the K-line chart.
Remark:
1.It can be abbreviated as O.
Example 1:
OO:=O; //Define OO as the opening price; Remark that the difference between O and 0.
Example 2:
NN:=BARSLAST(DATE<>REF(DATE,1));
OO:=REF(O,NN); //Take the opening price of the day
Example 3:
MA5:=MA(O,5); //Define the 5-period moving average of the opening price (O is short for OPEN).
K-라인 차트에서 가장 높은 가격을 얻으십시오.
가장 높은 가격
기능: HIGH, 줄여서 H
매개 변수: 아무것도
설명: 이 기간의 가장 높은 가격을 반환합니다.
염기서열 데이터
HIGH achieved the highest price on the K-line chart.
Remark:
1.It can be abbreviated as H.
Example 1:
HH:=H; // Define HH as the highest price
Example 2:
HH:=HHV(H,5); // Take the maximum value of the highest price in 5 periods
Example 3:
REF(H,1); // Take the highest price of the previous K-line
K-라인 차트에서 가장 낮은 가격을 구하세요.
가장 낮은 가격
기능: LOW, 줄여서 L
매개 변수: 아무것도
설명: 이 기간 중 가장 낮은 가격을 반환합니다.
염기서열 데이터
LOW gets the lowest price on the K-line chart.
Remark:
1.It can be abbreviated as L.
Example 1:
LL:=L; // Define LL as the lowest price
Example 2:
LL:=LLV(L,5); // Get the minimum value of the lowest price in 5 periods
Example 3:
REF(L,1); // Get the lowest price of the previous K-line
K-라인 차트의 폐쇄 가격을 얻으십시오.
종료 가격
기능: CLOSE, C로 줄여서
매개 변수: 아무것도
설명:
이 기간의 종료 가격을 반환합니다 염기서열 데이터
CLOSE Get the closing price of the K-line chart
Remarks:
1.Obtain the latest price when the intraday K-line has not finished.
2.It can be abbreviated as C.
Example 1:
A:=CLOSE; //Define the variable A as the closing price (A is the latest price when the intraday K-line has not finished)
Example 2:
MA5:=MA(C,5); //Define the 5-period moving average of the closing price (C is short for CLOSE)
Example 3:
A:=REF(C,1); //Get the closing price of the previous K-line
K-line 차트의 거래 부피를 얻으십시오.
거래량
기능: VOL, 줄여서 V
매개 변수: 아무것도
설명: 이 기간의 거래량을 반환합니다.
염기서열 데이터
VOL obtains the trading volume of the K-line chart.
Remarks:
It can be abbreviated as V.
The return value of this function on the current TICK is the cumulative value of all TICK trading volume on that day.
Example 1:
VV:=V; // Define VV as the trading volume
Example 2:
REF(V,1); // Indicates the trading volume of the previous period
Example 3:
V>=REF(V,1); // The trading volume is greater than the trading volume of the previous period, indicating that the trading volume has increased (V is the abbreviation of VOL)
선물 (계약) 시장의 현재 총 지위를 취하십시오.
OpenInterest:OPI;
앞장서서 인용.
Reference the value of X before N periods.
Remarks:
1.When N is a valid value, but the current number of K-lines is less than N, returns null;
2.Return the current X value when N is 0;
3.Return a null value when N is null.
4.N can be a variable.
Example 1:
REF(CLOSE,5);Indicate the closing price of the 5th period before the current period is referenced
Example 2:
AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C);//Take the closing price of the K-line of the latest position opening signal
// 1)When the BK signal is sent, the bar BARSBK returns null, then the current K-line REF(C, BARSBK) that sends out the BK signal returns null;
// 2)When the BK signal is sent out, the K-line BARSBK returns null, and if BARSBK>=1 is not satisfied, it is the closing price of the K-line.
// 3)The K-line BARSBK after the BK signal is sent, returns the number of periods from the current K-line between the K-line for purchasing and opening a position, REF(C,BARSBK)
Return the closing price of the opening K-line.
// 4)Example: three K-lines: 1, 2, and 3, 1 K-line is the current K-line of the position opening signal, then returns the closing price of the current K-line, 2, 3
The K-line returns the closing price of the 1 K-line.
데이터 계약의 거래 단위를 가져와
Get the trading unit of the data contract.
Usage:
UNIT takes the trading unit of the loaded data contract.
암호화폐 현금 거래
UNIT 값은 1입니다
암호화폐 선물
UNIT 값은 계약 통화와 관련이 있습니다.
OKEX futures currency standard contracts: 1 contract for BTC represents $100, 1 contract for other currencies represents $10
데이터 계약의 최소 변동 가격
Take the minimum variation price of the data contract.
Usage:
MINPRICE; Take the minimum variation price of the loaded data contract.
거래 계약의 최소 변동 가격
Take the minimum variation price of a trading contract.
Usage:
MINPRICE1; Take the minimum variation price of a trading contract.
K-라인 위치를 잡아요.
BARPOS, Returns the number of periods from the first K-line to the current one.
Remarks:
1.BARPOS returns the number of locally available K-line, counting from the data that exists on the local machine.
2.The return value of the first K-line existing in this machine is 1.
Example 1:LLV(L,BARPOS); // Find the minimum value of locally available data.
Example 2:IFELSE(BARPOS=1,H,0); // The current K-line is the first K-line that already exists in this machine, and it takes the highest value, otherwise it takes 0.
DAYBARPOS 현재 K-라인 BAR는 K-라인 BAR입니다.
기간 값은 분 수입니다.
1, 3, 5, 15, 30, 60, 1440
날짜함수 DATE, 1 9 00 년 이후 기간의 해, 달 및 날을 얻으십시오.
Example 1:
AA..DATE; // The value of AA at the time of testing is 220218, which means February 18, 2022
K-라인을 하는 시간입니다.
TIME, the time of taking the K-line.
Remarks:
1.The function returns in real time in the intraday, and returns the starting time of the K-line after the K-line is completed.
2.This function returns the exchange data reception time, which is the exchange time.
3.The TIME function returns a six-digit form when used on a second period, namely: HHMMSS, and displays a four-digit form on other periods, namely: HHMM.
4.The TIME function can only be loaded in periods less than the daily period, and the return value of the function is always 1500 in the daily period and periods above the daily period.
5. It requires attention when use the TIME function to close a position at the end of the day
(1).It is recommended to set the time for closing positions at the end of the market to the time that can actually be obtained from the return value of the K-line (for example: the return time of the last K-line in the 5-minute period of the thread index is 1455, and the closing time at the end of the market is set to TIME>=1458, CLOSEOUT; the signal of closing the position at the end of the market cannot appear in the effect test)
(2).If the TIME function is used as the condition for closing the position at the end of the day, it is recommended that the opening conditions should also have a corresponding time limit (for example, if the condition for closing the position at the end of the day is set to TIME>=1458, CLOSEOUT; then the condition TIME needs to be added to the corresponding opening conditions. <1458; avoid re-opening after closing)
Example 1:
C>O&&TIME<1450,BK;
C<O&&TIME<1450,SK;
TIME>=1450,SP;
TIME>=1450,BP;
AUTOFILTER;
// Close the position after 14:50.
Example 2:
ISLASTSK=0&&C>O&&TIME>=0915,SK;
Year.
YEAR, year of acquisition.
Remark:
The value range of YEAR is 1970-2033.
Example 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); // Take the highest price, lowest price, opening price, and closing price of the previous year
Example 2:
NN:=IFELSE(YEAR>=2000 AND MONTH>=1,0,1);
한 달만 가져가
MONTH, returns the month of a period.
Remark:
The value range of MONTH is 1-12.
Example 1:
VALUEWHEN(MONTH=3&&DAY=1,C); // Take its closing price when the K-line date is March 1
Example 2:
C>=VALUEWHEN(MONTH<REF(MONTH,1),O),SP;
기간에 있는 날 수를 얻으세요
DAY, returns the number of days in a period.
Remark:
The value range of DAY is 1-31.
Example 1:
DAY=3&&TIME=0915,BK; // 3 days from the same day, at 9:15, buy it
Example 2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;
CC:=IFELSE(DAY=1,VALUEWHEN(N=1,O),0); // When the date is 1, the opening price is taken, otherwise the value is 0
Hour.
HOUR, returns the number of hours in a period.
Remark:
The value range of HOUR is 0-23
Example 1:
HOUR=10; // The return value is 1 on the K-line at 10:00, and the return value on the remaining K-lines is 0
Minute.
MINUTE, returns the number of minutes in a period.
Remarks:
1: The value range of MINUTE is 0-59
2: This function can only be loaded in the minute period, and returns the number of minutes when the K-line starts.
Example 1:
MINUTE=0; // The return value of the minute K-line at the hour is 1, and the return value of the other K-lines is 0
Example 2:
TIME>1400&&MINUTE=50,SP; // Sell and close the position at 14:50
이번 주 번호를 찾아봐
WEEKDAY, get the number of the week.
Remark:
1: The value range of WEEKDAY is 0-6. (Sunday ~ Saturday)
Example 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; // Automatically close positions at the end of the monthly delivery day
Example 2:
C>VALUEWHEN(WEEKDAY<REF(WEEKDAY,1),O)+10,BK;
AUTOFILTER;
현재 기간의 위치 상태를 반환합니다.
BARSTATUS returns the position status for the current period.
Remark:
The function returns 1 to indicate that the current period is the first period, returns 2 to indicate that it is the last period, and returns 0 to indicate that the current period is in the middle.
Example:
A:=IFELSE(BARSTATUS=1,H,0); // If the current K-line is the first period, variable A returns the highest value of the K-line, otherwise it takes 0
Between.
BETWEEN(X,Y,Z) indicates whether X is between Y and Z, returns 1 (Yes) if established, otherwise returns 0 (No).
Remark:
1.The function returns 1(Yse) if X=Y, X=Z, or X=Y and Y=Z.
Example 1:
BETWEEN(CLOSE,MA5,MA10); // It indicates that the closing price is between the 5-day moving average and the 10-day moving average
BARSLASTCOUNT(COND) 는 조건에 만족하는 연속 기간의 수를 계산합니다. 현재 기간부터 앞으로 계산합니다.
Remark:
1. The return value is the number of consecutive non zero periods calculated from the current period
2. the first time the condition is established when the return value of the current K-line BARSLASTCOUNT(COND) is 1
Example:
BARSLASTCOUNT(CLOSE>OPEN);
//Calculate the number of consecutive positive periods within the current K-line
크로스 기능
CROSS(A,B) means that A crosses B from bottom to top, and returns 1 (Yes) if established, otherwise returns 0 (No)
Remark:
1.To meet the conditions for crossing, the previous k-line must satisfy A<=B, and when the current K-line satisfies A>B, it is considered to be crossing.
Example 1:
CROSS(CLOSE,MA(CLOSE,5)); // Indicates that the closing line crosses the 5-period moving average from below
크로스다운
CROSSDOWN(A,B): indicates that when A passes through B from top to bottom, it returns 1 (Yes) if it is established, otherwise it returns 0 (No)
Remark:
1.CROSSDOWN(A,B) is equivalent to CROSS(B,A), and CROSSDOWN(A,B) is easier to understand
Example 1:
MA5:=MA(C,5);
MA10:=MA(C,10);
CROSSDOWN(MA5,MA10),SK; // MA5 crosses down MA10 to sell and open a position
// CROSSDOWN(MA5,MA10),SK; Same meaning as CROSSDOWN(MA5,MA10)=1,SK;
Crossup.
CROSSUP(A,B) means that when A crosses B from the bottom up, it returns 1 (Yes) if it is established, otherwise it returns 0 (No)
Remark:
1.CROSSUP(A,B) is equivalent to CROSS(A,B), and CROSSUP(A,B) is easier to understand.
Example 1:
MA5:=MA(C,5);
MA10:=MA(C,10);
CROSSUP(MA5,MA10),BK; // MA5 crosses MA10, buy open positions
// CROSSUP(MA5,MA10),BK;与CROSSUP(MA5,MA10)=1,BK; express the same meaning
계속 만족하는지 확인합니다.
EVERY(COND,N), Determine whether the COND condition is always satisfied within N periods. The return value of the function is 1 if it is satisfied, and 0 if it is not satisfied.
Remarks:
1.N contains the current K-line.
2.If N is a valid value, but there are not so many K-lines in front, or N is a null value, it means that the condition is not satisfied, and the function returns a value of 0.
3.N can be a variable.
Example 1:
EVERY(CLOSE>OPEN,5); // Indicates that it has been a positive line for 5 periods
Example 2:
MA5:=MA(C,5); // Define a 5-period moving average
MA10:=MA(C,10); // Define a 10-period moving average
EVERY(MA5>MA10,4),BK; // If MA5 is greater than MA10 within 4 periods, then buy the open position
// EVERY(MA5>MA10,4),BK; has the same meaning as EVERY(MA5>MA10,4)=1,BK;
만족 여부를 판단하세요.
EXIST(COND, N) judges whether there is a condition that satisfies COND within N periods.
Remarks:
1.N contains the current K-line.
2.N can be a variable.
3.If N is a valid value, but there are not so many K-lines in front, it is calculated according to the actual number of periods.
Example 1:
EXIST(CLOSE>REF(HIGH,1),10); // Indicates whether there is a closing price greater than the highest price of the previous period in 10 periods, returns 1 if it exists, and returns 0 if it does not exist
Example 2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;
EXIST(C>MA(C,5),N); // Indicates whether there is a K-line that satisfies the closing price greater than the 5-period moving average on the day, returns 1 if it exists, returns 0 if it does not exist
조건 함수
IF(COND,A,B)Returns A if the COND condition is true, otherwise returns B.
Remarks:
1.COND is a judgment condition; A and B can be conditions or values.
2.This function supports the variable circular reference to the previous period's own variable, that is, supports the following writing Y: IF(CON,X,REF(Y,1)).
Example 1:
IF(ISUP,H,L); // The K-line is the positive line, the highest price is taken, otherwise the lowest price is taken
Example 2:
A:=IF(MA5>MA10,CROSS(DIFF,DEA),IF(CROSS(D,K),2,0)); // When MA5>MA10, check whether it satisfies the DIFF and pass through DEA, otherwise (MA5 is not greater than MA10), when K and D are dead fork, let A be assigned a value of 2, if none of the above conditions are met, A is assigned a value of 0
A=1,BPK; // When MA5>MA10, the condition for opening a long position is to cross DEA above the DIFF
A=2,SPK; // When MA5 is not greater than MA10, use K and D dead forks as the conditions for opening short positions
조건 함수
언급:
1.COND는 판단 조건이고 A와 B는 조건 또는 값일 수 있습니다.
2.이 함수는 전기