[TOC]
MyLanguage - это программируемый язык торговли, совместимый и улучшенный с MyLanguage. MyLanguage FMZ Quant будет подвергаться строгой проверке синтаксиса. Например, при использовании улучшения языка для встраивания языкового кода 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 раз.
Фактическая цена зависит от количества первоначально полученных К-линий.
В большинстве систем, переменное наименование не позволяет использовать систему Close
, C
Кроме того, чистые числа или ведущие числа не разрешены. Наконец, не разрешается быть очень длинным, и разные системы имеют различные ограничения длины.
На самом деле, вам не нужно беспокоиться об эффективности анализа китайского языка в основной системе. Я считаю, что
// elegant output
5-day moving average:=MA(C,5);
// 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');
Операция и расчет, используемые для выполнения кода показателя, являются просто символами, участвующими в операции.
присвоить значение переменной
:
:
, представляет собой назначение и выход на график (подграфа).
Close1:Close; // Assign Close to the variable Close1 and output to the figure
:=
:=
, представляет собой назначение, но не выводится на график (главный график, суб-график...), и не отображается в таблице строки состояния.
Close2:=Close; // Assign Close to the variable Close2
^^
^^
Два.^
символы представляют собой назначение, присваивают значения переменным и вывод на график (главный график).
lastPrice^^C;
..
..
, два.
символы представляют собой назначение, присваивают значения переменным и отображают названия и значения переменных в диаграмме, но не рисуют картинки на диаграмме (основная картина, подкартина...).
openPrice..O
Относительные операторы - это двоичные операторы, которые используются в условных выражениях для определения отношения между двумя данными.
Возвращается значение: булевой тип, либоtrue
(1) илиfalse
(0).
>
// Assign the operation result of 2>1 to the rv1 variable, at this time rv1=1
rv1:=2>1;
<
// Returns false, which is 0, because 2 is greater than 1
rv3:=2<1;
>=
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;
<=
omitted here
=
A:=O=C; // Determine whether the opening price is equal to the closing price.
<>
1<>2 // To determine whether 1 is not equal to 2, the return value is 1 (true)
Возвращается значение: булевой тип, либоtrue
(1) илиfalse
(0).
&&
, может быть замененаand
, и левая и правая стороны и соединения должны быть установлены одновременно.// 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
||
, вы можете использоватьor
для замены левой и правой сторон или ссылки, одна сторона является истинной (правда), весь является истинным (возвращается значение истинное).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
()
Оператор, выражение в скобках будет оцениваться первым.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
Арифметические операторы - это символ для выполнения базовых арифметических операций (арифметических операторов), который является символом, используемым для обработки четырех арифметических операций.
плюс +
A:=1+1; // return 2
минус -
A:=2-1; // return 1
*умножить *
A:=2*2; // return 4
разделить /
A:=4/2; // return 2
В мире программирования
function - это кусок кода, который реализует определенную функцию.
function(param1,param2,...)
Состав:
Название функции (параметр1, параметр2,...), может не иметь параметров или иметь несколько параметров.MA(x,n);
означает возвращение к простой скользящей среднейx
в пределахn
Среди них:MA()
является функцией,x
иn
параметры функции.
При использовании функции нам необходимо понять основное определение функции, то есть какие данные можно получить, вызвав функцию. В общем, функции имеют параметры. Когда мы передаем параметры, мы должны убедиться, что входящий тип данных является последовательным. На этом этапе функция подсказки кода большинства IDE очень несовершенна.MA(x,n);
толковывается как:
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
Это очень неприятно для новичков, но дальше мы рассмотрим эту функцию тщательно, пытаясь найти быстрый способ изучения и использования функции.
Чтобы быстро выучить функции, нам нужно сначала понять понятие, оно называется
// 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
является также функцией (возвращает последовательность цен закрытия от открытия до настоящего), но он не имеет параметров.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
объект
Вscope
object может добавлять атрибуты и присваивать анонимные функции атрибутам, а анонимную функцию, на которую ссылается этот атрибут, можно вызвать в кодовой части MyLanguage.
scope.getRefs(obj)
Функция
Внутри.JavaScript
Кодный блок, позвонитеscope.getRefs(obj)
Функция для возвращения данных прошедшего вobj
object.
ВJavaScript
код, оболоченный следующим:%% %%
получатC
Прошел в, когдаTEST(C)
Функция в коде MyLanguage называется Close price.
Вscope.getRefs
Функция вернет все цены закрытия данных K-линии.throw "stop"
чтобы прервать программу, переменнаяarr
содержит цену закрытия только первой панели.throw "stop"
, он будет выполнятьreturn
в концеJavaScript
код, и возвращает все данные о цене закрытия.
%%
scope.TEST = function(obj){
var arr = scope.getRefs(obj)
Log("arr:", arr)
throw "stop"
return
}
%%
TEST(C);
scope.bars
Доступ ко всем K-линейным строкам вJavaScript
Кодный блок.
ВTEST
Функция возвращает значение. 1 - отрицательная прямая, 0 - положительная.
%%
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.
ВJavaScript
Кодный блок, доступ к текущей строке.
Вычислить среднее значение высокой и низкой цены открытия и закрытия.
%%
scope.TEST = function(){
var bar = scope.bar
var ret = (bar.Open + bar.Close + bar.High + bar.Low) / 4
return ret
}
%%
avg^^TEST;
scope.depth
Доступ к данным о глубине рынка (книга заказов).
%%
scope.TEST = function(){
Log(scope.depth)
throw "stop" // After printing the depth data once, throw an exception and pause
}
%%
TEST;
scope.symbol
Получите строку имен текущей торговой пары.
%%
scope.TEST = function(){
Log(scope.symbol)
throw "stop"
}
%%
TEST;
scope.barPos
Положите К-линию в положение Бар.
%%
scope.TEST = function(){
Log(scope.barPos)
throw "stop"
}
%%
TEST;
scope.get_locals ((
Эта функция используется для получения переменных в разделе кода 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
ВcanTrade
атрибутный знак указывает, можно ли торговать текущей панелью (необходимо ли торговать последней панелью)
Например, суждение о том, что данные рынка печатаются, когда стратегия находится в состоянии, когда ордер может торговаться
%%
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
Команда означаетминутное значение.MyLanguage платформы FMZ Quant, и только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)
, мы можем найти:MIN5.REF1C
это значение цены закрытия последнего предшественника BAR в текущий момент 5-минутных данных K-линии.REF(MIN5.C, 1)
является периодом K-линии текущей модели (вышеперечисленный период обратного тестирования кода установлен на 1 минуту, т.е. ```period: 1m``), ценой закрытия 5-минутного периода, в котором на данный момент расположена предпоследняя BAR.
Эти два определения дифференцированы и могут использоваться по мере необходимости.
В моделиAUTOFILTER
Когда есть несколько сигналов открытия, которые отвечают условиям, первый сигнал принимается как действительный сигнал, и тот же сигнал на K-линии будет отфильтрован.
Инструкции, поддерживаемые моделью фильтрации: BK, BP, BPK, SK, SP, SPK, CLOSEOUT и т. д. Инструкции с номерами партий, такие как BK ((5) не поддерживаются.
Например,
MA1:MA(CLOSE,5);
MA2:MA(CLOSE,10);
CROSSUP(C,MA1),BK;
CROSSUP(MA1,MA2),BK;
C>BKPRICE+10||C<BKPRICE-5,SP;
AUTOFILTER;
Comprehension:
As in the above example, when AUTOFILTER is not set, the third row BK, the fourth row BK and the fifth row SP are triggered in sequence, and each K-line triggers a signal once. After opening the position, and closing the position, the model state is reset.
If AUTOFILTER is set, after triggering BK, only SP is triggered, other BK signals are ignored, and each K-line triggers a signal once.
ВAUTOFILTER
функция не записана в модели, что допускает непрерывные сигналы открытия или непрерывные сигналы закрытия, которые могут увеличивать и уменьшать позиции.
Поддерживаемые инструкции: BK ((N), BP ((N), SK ((N), SP ((N), CLOSEOUT, BPK ((N), SPK ((N), открытые и закрытые заказы без размера партии не поддерживаются. (1)Поддерживается группировка инструкций. (2) Когда одновременно выполняются несколько условий инструкции, сигналы выполняются в том же порядке, в котором записываются условные инструкции. Например:
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);
ИспользованиеTRADE\_AGAIN
Можно сделать одну и ту же командную строку, несколько сигналов подряд.
Comprehension:
The above example is executed one by one, and the signal after execution is no longer triggered. Reset the model status after closing the position. A K -line triggers a signal once.
Независимо от того, закончена ли K-линия, сигнал рассчитывается в режиме реального времени, то есть K-линия размещается до завершения заказа; K-линия пересматривается в конце.
Например:
MA1:MA(CLOSE,5);
MA2:MA(CLOSE,10);
CROSSUP(MA1,MA2),BPK; //The 5-period moving average crosses up, and the 10-period moving average goes long.
CROSSDOWN(MA1,MA2),SPK; //The 5-period moving average crosses down, and the 10-period moving average goes short.
AUTOFILTER;
Модель используетmultsig
для управления и реализации нескольких сигналов от одной K-линии.
Независимо от того, закончена ли K-линия, сигнал рассчитывается в режиме реального времени.
Сигнал не пересматривается, отсутствует исчезновение сигнала, и направление сигнала всегда соответствует направлению положения.
Если в одной K-линии выполняется несколько условий сигнала, он может выполняться неоднократно.
For example:
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);
MULTSIG
может выполнять несколько командных строк в одной строке K.
Командная строка дается только один раз.
O<C,BK; // These conditions may all be executed in a K-line Bar, but only one signal per line
10+O<C,BK; // Strategy plus TRADE_AGAIN(10);it can make multiple signals per line
20+O<C,BK;
40+O<C,BK;
MULTSIG(1,1,10);
Дополнение:
1.Модель добавления и уменьшения позиций, два способа одного сигнала и одной K-линии: размещение ордера по цене закрытия и размещение ордера по цене ордера, поддерживаются.
2.Модель сложения и уменьшения позиций также поддерживает упорядочение нескольких сигналов из одной K-линии.
Модель сложения и уменьшения позиций, напишитеmultsig
Функция для реализации множественных сложений или множественных уменьшений на одной K-линии.
Bar-модель относится к модели, которая выполняется после завершения текущей BAR, а торговля выполняется, когда начинается следующая BAR.
Модель Tick означает, что модель выполняется один раз для каждого движения цены и торгуется сразу, когда есть сигнал. Модель Tick игнорирует сигнал предыдущего дня (сигнал предыдущего дня выполняется немедленно в тот же день), а модель Tick фокусируется только на текущих данных рынка, чтобы определить, запускается ли сигнал.
Использовать оператор
^^
, на основную диаграмму отображаются установленные показатели при присвоении значений переменным.
MA60^^MA(C, 60); // Calculate the average indicator with the parameter of 60
Использовать оператор:
, на подграфике отображаются установленные показатели при присвоении значений переменным.
ATR:MA(MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26); // Assign a value to the ATR variable, the ":" symbol is followed by the formula for calculating the ATR
Если вы не хотите, чтобы он отображался на главной или подкарте, используйте оператор
MA60..MA(C, 60); // Calculate the average indicator with the parameter of 60
Вы можете использоватьDOT
иCOLORRED
чтобы установить тип строки и цвет строки и т. д., в соответствии с привычками пользователей, знакомых с MyLanguage.
Представьтепроблемычасто встречаются в процессе написания показателей, обычно точек, на которые необходимо обратить внимание при написании (непрерывно добавляется).
Заметьте запятую;
в конце.
Обратите внимание, что ключевые слова системы не могут быть объявлены как переменные.
Заметьте, что строка используетоднократные котировки, например: строка'Open position'
.
Аннотация
// The Remark content
(метод ввода может быть введен как на китайском, так и на английском языках) означает, что код не компилируется во время процесса исполнения, то есть содержание после//
Обычно мы используем его для обозначения смысла кода, когда это удобно для пересмотра кода, он может быть быстро понят и запомнен.
{ Remark content }
Блокируйте замечание.
A:=MA(C,10);
{The previous line of code is to calculate the moving average.}
(* Remark content *)
Блокируйте замечание.
A:=MA(C,10);
(*The previous line of code is to calculate the moving average.*)
При написании кода, потому что метод ввода часто переключается между китайским и английским, что приводит к ошибкам символов.:
Терминатор.;
, запятая,
, скобки()
Эти символы в разных состояниях китайского и английского языков нуждаются в внимании.
Если вы используете методы ввода Sogou, Baidu или Bing, вы можете быстро переключаться между китайским и английским, нажав
shift
Ключ один.
>=
.<=
.В фьючерсной стратегии, если перед запуском стратегии робот открывает позицию вручную, когда робот запускает, он обнаруживает информацию о позиции и синхронизирует ее с фактическим состоянием позиции.
В стратегии вы можете использоватьSP
, BP
, CLOSEOUT
Команды на закрытие позиции.
%%
if (!scope.init) {
var ticker = exchange.GetTicker();
exchange.Buy(ticker.Sell+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).
Найди самую высокую цену на графике.
Самая высокая цена
Функция: 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
Найди самую низкую цену на графике.
Самая низкая цена
Функция: Низкая, сокращенная 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
Получите цену закрытия диаграммы.
Цена закрытия
Функция: 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-линейном графике.
Объем торговли
Функция: 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.
Фьючерсы на криптовалюты
Значение в единицах относится к валюте контракта.
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.
Возьмите позицию К-линии.
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, получает год, месяц и день периода с 1900 года.
Example 1:
AA..DATE; // The value of AA at the time of testing is 220218, which means February 18, 2022
Пора делать К-линию.
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
Функция состояния.
IFELSE(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 variable circular reference to the previous period's own variable, that is, supports the following writing Y: IFELSE(CON,X,REF(Y,1));
Example 1:
IFELSE(ISUP,H,L); // The K-line is the positive line, the highest price is taken, otherwise the lowest price is taken
Example 2:
A:=IFELSE(MA5>MA10,CROSS(DIFF,DEA),IFELSE(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 conditio