[TOC]
Язык My - это программируемый язык для транзакций, совместимый и дополненный с языком Mac. Язык My с количественным FMZ проходит строгие грамматические проверки, например, при использовании языковых усовершенствований для встраивания языкового кода JavaScript, в%%
Если после оператора будет больше одного пустого символа, то возникнет ошибка.
Контракт на цифровую валюту
Контракт на цифровую валюту
this_week 数字货币期货当周合约
next_week 数字货币期货次周合约
month 数字货币期货月度合约
quarter 数字货币期货季度合约
next_quarter 数字货币期货次季度合约
third_quarter 数字货币期货第三季度合约
last_quarter 最后季度合约
XBTUSD BITMEX永续合约
swap 除BITMEX交易所以外数字货币期货永续合约
具体可以参看JavaScript/Python/C++文档的exchange.SetContractType()函数部分
Переменная - это пространство, открытое в памяти компьютера для хранения данных.
Открытие первой переменной
// 将1赋值给变量a
a:=1;
существовать麦语言
Из, из数据量
Простые различия:
0
、1
、’abc’
。Close
(Цена закрытия), здесьClose
Включаетn
Заключительная цена цикла[ 10.1 , 10.2 , 10.3 , 10.4 , 10. 5 ...]
Различие от цилиндров переменного типа
''
Пакеты, которые не допускают прямого использования, требуют вывода функций в вид.INFO(CLSOE>OPEN,'OK!');
// 整数
int:=2;
// 小数
float:=3.1;
A:=1>0;
В результате этого кода мы получим следующее:A
Это будет равно 1.// 当前周期收盘价大于-999,你会发现,每个周期的返回值都是1,代表true,因为收盘价几乎不可能为负数
is_true:=Close>-999;
VARIABLE:VALUE1:10; // 声明一个全局变量,赋值为10,只执行一次。
Возвращаясь к этому, обратите внимание:
VARIABLE:NX:0; // 初始一个全局变量NX为0
NX..NX+1; // 每次累加1
INFO(1,NX); // 每次打印NX
ВначалеINFO
Напечатано:101
Возможно, есть сомнения в том, что первоначальный0
Что случилось?
Причина в том, что начальная K-линия на момент отсчета составила 100 корней, а уже прошла 100 K-линий, и составила 100 повторений.
Фиксированный диск зависит от первоначального количества K-линий.
В большинстве систем именение переменных не позволяет использовать системную коробку с сохранением символов (встроенные имена переменных, имена функций).Close
、C
Кроме того, не допускаются чистые числа или цифры в начале. Не допускаются длинные концы, ограничения по длине различных систем различаются.
На самом деле, вам не нужно путать эффективность анализа китайского языка с преобладающей системой, и верьте, что язык муки муки очень дружелюбен к китайскому языку.
1. Китайское название
// 优雅的输出
五日均线:=MA(C,5);
2. Английский + подчеркнуто
// 输出
move_avg_5:=MA(C,5);
Если вы предпочитаете английский, постарайтесь, чтобы ваши вариации были понятны.A1
,AAA
,BBB
…название такого рода. Поверьте мне, когда через какое-то время вы снова просмотрите свой индикаторный код, вам будет очень больно из-за отсутствия памяти. Точно так же, когда вы экспортируете код другим людям, настроение читателя должно быть разрушено.
Поэтому, начиная с сегодняшнего дня, мы приветствуем язык макаронной муки, и надеемся, что он станет для вас мощным инструментом анализа и принятия решений.
Тип данных является базовым понятием, и в программировании, когда мы присваиваем определенное значение данным к переменной, эта переменная также становится типом самой данной.
1、2、3、1.1234、2.23456 ...
'1' 、'2' 、'3' ,字符串类型必须用 '' 包裹
一系列单值数据构成的数据集合
Использование1
Представительствоtrue
,0
Представительствоfalse
。
Пример
// 声明一个数值类型的变量
var_int := 1;
// 声明一个序列数据的变量
var_arr := Close;
// 字符串类型不能单独声明,需要结合函数
INFO(C>O, '阳线');
Используется для выполнения операций, вычислений кода индикатора, проще говоря, это символ, участвующий в операциях.
Используется для присвоения значения некоторой переменной
- 1. `:`
`:`, представляет собой присвоение значения и выводится на график (подграфик).
```
Close1:Close; // 将Close赋值给变量Close1,并且输出到图中
```
- 2. `:=`
`:=`, означает присвоение значения, но не выводится на график (главный график, подграфик...) и не отображается в таблице состояния.
```
Close2:=Close; // 将Close赋值给变量Close2
```
- 3. `^^`
`^^`Два.`^`Символ представляет собой присвоение значения, присвоение значения переменной и вывод на график (в материнский график).
```
lastPrice^^C;
```
- 4. `..`
`..`Два.`.`Символ представляет присвоение значения, присваивает значение переменной и отображает имя переменной, числовое значение в графике, но не рисует график в графике (главный график, подграфик ...).
```
openPrice..O
```
Оператор связи - двоичный оператор, используемый в условных выражениях для определения связи между двумя данными.
Возвращает значение: тип Бура, неtrue
1) этоfalse
(0)。
- 1. Больше чем`>`
```
// 将2>1的运算结果赋值给rv1变量,此时rv1=1
rv1:=2>1;
```
- 2. меньше`<`
```
// 返回false,也就是0,因为2大于1
rv3:=2<1;
```
- 3. Больше, чем равно`>=`
```
x:=Close;
// 将收盘价大于等于10的运算的结果赋值给变量rv2
// 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
rv2:=Close>=10;
```
- 4. меньше, чем равно`<=`
```
此处省略
```
- 5. равный`=`
```
A:=O=C; // 判断开盘价是不是等于收盘价。
```
- 6. Не равняется`<>`
```
1<>2 // 判断1是否不等于2,返回值为1(true)
```
Возвращает значение: тип Бура, неtrue
1) этоfalse
(0)。
1. Логика и`&&`, можно использовать`and`Вместо этого, они должны быть одновременно с левой и правой сторонами соединения.
// 判断 cond_a,cond_b,cond_c 是否同时成立
cond_a:=2>1;
cond_b:=4>3;
cond_c:=6>5;
cond_a && cond_b and cond_c; // 返回值为1,成立
2. Логика или`||`, можно использовать`or`Замена или ссылка с правой и левой стороны, с одной стороны установлена ((true), а в целом установлена ((возвращает значение true) }}.
cond_a:=1>2;
cond_b:=4>3;
cond_c:=5>6;
cond_a || cond_b or cond_c; // 返回值为1,成立
3. `()`Оператор, который вычисляет выражения в скобках.
1>2 AND (2>3 OR 3<5) // 运算结果为假
1>2 AND 2>3 OR 3<5 // 运算结果为真
返回值:数值类型
Арифметические операторы - это символы, используемые для выполнения основных арифметических операций.
- **С +**
```
A:=1+1; // 返回 2
```
- **Снижение -**
```
A:=2-1; // 返回 1
```
- **Умножение***
```
A:=2*2; // 返回 4
```
- **За исключением /**
```
A:=4/2; // 返回 2
```
В мире программирования, функционный падеж падежа является частью кода, реализующего какую-то функцию. И может быть вызван для других кодов, в общем виде:
function(param1,param2,...)
- Состав:
Функциональное имя ((аргумент 1, аргумент 2, ...), может быть без параметров или с несколькими параметрами.`MA(x,n);`Вернувшиеся представители`n`Внутри цикла`x`Простая скользящая средняя.`MA()`Это функция.`x`и`n`Это параметры функции.
Когда мы используем функции, нам нужно знать их основные определения, то есть, какие данные можно получить при их вызове. Обычно функции содержат параметры, и когда мы вводим параметры, нам нужно убедиться, что вводимый тип данных соответствует.`MA(x,n);`Это объясняется:
```
返回简单移动平均
用法:
AVG:=MA(X,N): X的N日简单移动平均,算法(X1+X2+X3+...+Xn)/N,N支持变量
```
Это очень недружелюбно для начинающих. Далее мы проводим тщательный анализ функций, пытаясь найти быстрый способ их изучения и использования.
Чтобы быстро выучить функцию, сначала нам нужно понять понятие, которое называется “возвращаемая величина”.ВозвращениеЕсли значение означает “конкретное числовое значение”, то возвращаемое значение означает: данные, которые можно получить.
// 因为后面的代码中会用到,所以用变量 return_value 接收、保存 function()的返回值
// retrun_value := function(param1,param2);
// 例如:
AVG:=MA(C,10); // AVG即retrun_value,function函数即:MA函数,param1参数:C即收盘价序列数据,param2参数:10。
Второе важное понятие вторичных функций - это понятие параметров, вводящих разные параметры, которые могут получать разные значения.
// 变量ma5接收5日收盘价移动平均值
ma5:=MA(C,5);
// 变量ma10接收10日收盘价移动平均值
ma10:=MA(C,10);
Переменные вышеma5
、ma10
Первый параметрX
ОбаC
(Цена закрытия), фактическиC
Также считается функция ((возвращает последовательность цен на открытие и закрытие на сегодняшний день), только она не имеет параметров. Второй параметр 5 и 10, который используется для указанияMA()
Функция, которую мы собираемся получить, это скользящая средняя за несколько дней по цене закрытия, и с помощью параметров функция становится более гибкой.
MA(x,n)
Если не знать параметры,x
、n
Если вы используете данные типа “С”, то не сможете получить верную величину.Функции, представленные и используемые в последующем, следуют трем принципам, описанным выше.
麦语言
иJavaScript
Смешанное программирование %%
// 这里面可以调用发明者量化的任何API
scope.TEST = function(obj) {
return obj.val * 100;
}
%%
收盘价:C;
收盘价放大100倍:TEST(C);
上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值
- `scope`Объекты
`scope`Объекты могут добавлять свойства и присваивать им функции анонимности, которые могут быть вызваны в части кода языка Mac.
- `scope.getRefs(obj)`функция
существовать`JavaScript`В блоке кода, вызов`scope.getRefs(obj)`Функция возвращает входящие`obj`Данные объекта.
Ниже`%% %%`Символическая упаковка`JavaScript`В коде будет доступен языковой код Mac`TEST(C)`Функция при вызове`C`Заключительная цена
`scope.getRefs`Функция возвращает все конечные значения данного K-линия.`throw "stop"`Прекратить процедуру.`arr`Включает в себя только конечную цену первого бара. Можно попробовать удалить`throw "stop"`Я сделаю это.`JavaScript`Код заканчивается`return`, возвращает все данные о цене сбора.
```
%%
scope.TEST = function(obj){
var arr = scope.getRefs(obj)
Log("arr:", arr)
throw "stop"
return
}
%%
TEST(C);
```
- scope.bars
существовать`JavaScript`Доступ ко всем K-строкам в блоке.
`TEST`Функция возвращает числовое значение: 1 - отрицательный, 0 - положительный.
```
%%
scope.TEST = function(){
var bars = scope.bars
return bars[bars.length - 1].Open > bars[bars.length - 1].Close ? 1 : 0 // 只能返回数值
}
%%
arr:TEST;
```
```
# 注意:
# TEST接收的匿名函数,返回值必须是数值。
# 如果匿名函数没有参数,在调用TEST的时候直接写VAR:=TEST;写VAR:=TEST();会报错。
# scope.TEST中的TEST必须是大写。
```
- scope.bar
существовать`JavaScript`В блоке кода, перейдите к текущему bar.
Расчет среднего числа цен на высокий и низкий урожай.
```
%%
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" // 打印一次深度数据后就抛出异常,暂停
}
%%
TEST;
```
- scope.symbol
Получить текущую строку имен пары.
```
%%
scope.TEST = function(){
Log(scope.symbol)
throw "stop"
}
%%
TEST;
```
- scope.barPos
Поиск позиции K-линии Bar.
```
%%
scope.TEST = function(){
Log(scope.barPos)
throw "stop"
}
%%
TEST;
```
- scope.get_locals('name')
Эта функция используется для получения переменных в части кода языка Mac.
```
V:10;
%%
scope.TEST = function(obj){
return scope.get_locals('V')
}
%%
GET_V:TEST(C);
```
```
# 注意:
# 如果某个变量,由于周期不足的时候计算不出数据,这个时候在JavaScript代码中调用scope.get_locals函数
# 获取这个变量时,会报错:line:XX - undefined locals某个变量名undefined
```
- scope.canTrade
`canTrade`Знак атрибута "Можно ли торговать в настоящее время?" (было ли текущее Bar последним корнем)
Например, для определения, когда стратегия находится в состоянии, когда можно торговать заказами печати текущих данных
```
%%
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 公式名 ... #END
Создание формулы. Если вы не используете формулу для вычисления данных только для получения данных о различных периодах, вы можете написать формулу в пустом виде.Пустая формула:
#EXPORT TEST
NOP;
#END // 结束
#IMPORT [MIN,周期,公式名] AS 变量值
Ссылка на формулу. Получение различных данных за установленный цикл (закрытие, открытие и т. д., полученные с помощью значения переменных).IMPORT
В приказеMIN
Это значитМинутный уровень│ │ │ │ │ │ │IMPORT
Поддержка только в командеMIN
В настоящее время поддерживаются нестандартные циклы, например,#IMPORT [MIN,240,TEST] AS VAR240
Импорт данных типа 240-минутного цикла ((4 часа) K-линии。
Пример:
// 本代码演示如何引用不同周期的公式在同一代码里
// #EXPORT扩展语法,以#END结束标记为一个公式,可以声明多个
#EXPORT TEST
均值1:EMA(C, 20);
均值2:EMA(C, 10);
#END // 结束
#IMPORT [MIN,15,TEST] AS VAR15 // 引用公式,K线周期用15分钟
#IMPORT [MIN,30,TEST] AS VAR30 // 引用公式,K线周期用30分钟
CROSSUP(VAR15.均值1, VAR30.均值1),BPK;
CROSSDOWN(VAR15.均值2, VAR30.均值2),SPK;
十五分最高价:VAR15.HIGH;
三十分最高价:VAR30.HIGH;
AUTOFILTER;
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 // 结束
#IMPORT [MIN,5,TEST] AS MIN5
INFO(1, 'C:', C, 'MIN5.REF1C:', MIN5.REF1C, 'REF(MIN5.C, 1):', REF(MIN5.C, 1), '触发BAR时间:', BARTIME, '#FF0000');
INFO(1, 'L:', L, 'MIN5.REF1L:', MIN5.REF1L, 'REF(MIN5.L, 1):', REF(MIN5.L, 1), '触发BAR时间:', BARTIME, '#32CD32');
AUTOFILTER;
Сравнение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;
理解:
如上范例,没有设置 AUTOFILTER 时,第三行BK 和第四行BK 第五行SP,依次触发,每根K线触发一次信号。开仓后,再到平仓,即重置模型状态。
如果设置 AUTOFILTER , 触发BK后,只能触发SP,其它的BK 信号被忽略,每根K线触发一次信号。
Не включена в модельAUTOFILTER
Функция, позволяющая последовательно выпускать сигналы открытия позиции или последовательно выпускать сигналы закрытия позиции, может осуществлять увеличение и уменьшение позиции.
Поддерживаемые указания: BK (N), BP (N), SK (N), SP (N), CLOSEOUT (BPK (N), SP (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
Можно использовать одну и ту же команду для выпуска нескольких последовательных сигналов.
理解:
以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个K线触发一次信号。
Независимо от того, закончилась ли K-линия, вычисляется сигнал, и производится заказ в реальном времени, то есть K-линия не закончила предыдущий заказ; проверка в конце K-линии, если направление позиции не соответствует направлению сигнала в конце K-линии, она будет автоматически синхронизирована с позицией.
Например:
MA1:MA(CLOSE,5);
MA2:MA(CLOSE,10);
CROSSUP(MA1,MA2),BPK; // 5周期均线上穿10周期均线做多。
CROSSDOWN(MA1,MA2),SPK; // 5周期均线下穿10周期均线做空。
AUTOFILTER;
Модели с использованиемmultsig
Для управления и реализации одного K-провода выпускается несколько сигналов.
В зависимости от того, закончилась ли k-линия или нет, в режиме реального времени выполняется заказ, рассчитывая сигнал.
Сигнал не проверяется, не существует случаев исчезновения сигнала, направление сигнала всегда совпадает с направлением удержания позиции.
Если в одной K-линии удовлетворяется несколько условий сигнала, то она может выполняться неоднократно.
例如:
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; // 这些条件在一个K线Bar内,可能都执行,但是每行只出一次信号
10+O<C,BK; // 策略加上TRADE_AGAIN(10);可以使每行出多次信号
20+O<C,BK;
40+O<C,BK;
MULTSIG(1,1,10);
Он добавил:
1, модель плюса и минуса, два способа сигнализации одной из k-линий: заказ на закрытие цены и заказ на указательную цену, все они являются поддерживаемыми.
2, плюс-минус модель, также поддерживает многократный заказ сигналов на k-линии.
Модели по наращиванию и уменьшению запасов.multsig
Функция, реализующая множественное увеличение или уменьшение гаража на одной k-линии.
При модели закрытия цены, текущий BAR заканчивается, а сделка выполняется в начале следующего BAR.
Модель цены в реальном времени означает, что при каждом изменении цены модель выполняется один раз, и торговля происходит сразу же после получения сигнала. Модель цены в реальном времени игнорирует сигнал предыдущего дня (сигнал предыдущего дня выполняется в предыдущий день), модель цены в реальном времени рассматривает только текущие данные, чтобы определить, был ли вызван сигнал.
Использование оператора
^^
, настройка показателя отображается на главной карте, в то время как переменной присваивается значение.
MA60^^MA(C, 60); // 计算参数为60的均线指标
Использование оператора:
, При присвоении значения переменной, настройка показателя отображается на поддиаграфе.
ATR:MA(MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),26); // 给ATR变量赋值,":"符号后为计算ATR的公式
Если вы не хотите, чтобы это отображалось на главной картинке или на подкартинке, используйте оператор “..”
MA60..MA(C, 60); // 计算参数为60的均线指标
ДоступноDOT
、COLORRED
Устройство линий, их цвета и т.д. соответствует привычкам пользователей, знакомых с языком Mac.
Ознакомьтесь с основными проблемами, с которыми сталкиваются разработчикиВопрос, что обычно требует особого внимания при написании ((постоянное дополнение) }}.
Примечание о знаках;
Заключение.
Примечание: Ключевые слова системы не могут быть объявлены в качестве переменных.
Осторожно с использованием строкиОднозначные цитаты,Например:'开仓'
Эта строка.
Комментарии
- `// 注释内容`(англ. typing in the input method), означает, что код не компилируется во время выполнения, то есть не выполняется`//`Последующий текст, который мы обычно используем для обозначения значения кода, может быть быстро понят и запомнен при просмотре кода.
- `{ 注释内容 }`Комментарии к блоку
```
A:=MA(C,10);
{上一行代码是计算均线。}
```
- `(* 注释内容 *)`Комментарии к блоку
```
A:=MA(C,10);
(*上一行代码是计算均线。*)
```
При написании кода, часто из-за переключения ввода на английский язык, возникают символические ошибки.:
Конец.;
Запятая,
В скобках()
И так далее, обратите внимание на различные символы в китайском и английском языках.
Если вы используете поисковые системы Google, 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;
Mac не поддерживает одни и те же контракты, при этом имеет много свободных позиций.
Открытие сделки с K-линейной картой.
Цена открытия
Функция: OPEN, сокращенно O
Параметры: нет
Пояснение: Возвращение к начальной цене “цикла”
Данные последовательности
OPEN取得K线图的开盘价。
注:
1、可简写为O。
例1:
OO:=O; //定义OO为开盘价;注意O与0的区别。
例2:
NN:=BARSLAST(DATE<>REF(DATE,1));
OO:=REF(O,NN); //取的当日的开盘价
例3:
MA5:=MA(O,5); //定义开盘价的5周期均线(O为OPEN简写)。
Самая высокая цена на карту K.
Самая высокая цена
Функция: HIGH, сокращенно H
Параметры: нет
Описание: Возвращение к самой высокой цене цикла.
Данные последовательности
HIGH取得K线图的最高价。
注:
1、可简写为H。
例1:
HH:=H; // 定义HH为最高价
例2:
HH:=HHV(H,5); // 取的5个周期内最高价的最大值
例3:
REF(H,1); // 取的前一根K线的最高价
Минимальная цена на карту K.
Минимальная цена
Функция: LOW, сокращенно L
Параметры: нет
Описание: Возвращение к минимуму цикла
Данные последовательности
LOW取得K线图的最低价。
注:
1、可简写为L。
例1:
LL:=L; // 定义LL为最低价
例2:
LL:=LLV(L,5); // 取得5个周期内最低价的最小值
例3:
REF(L,1); // 取得前一根K线的最低价
Заключительная цена на получение K-линейной карты.
Заключительная цена
Функция: CLOSE, сокращенно C
Параметры: нет
Пояснение: Возвращение к цене закрытия цикла.
Данные последовательности
CLOSE取得K线图的收盘价
注:
1、当盘中k线没有走完的时候,取得最新价。
2、可简写为C。
例1:
A:=CLOSE; //定义变量A为收盘价(盘中k线没有走完的时候A为最新价)
例2:
MA5:=MA(C,5); //定义收盘价的5周期均线(C为CLOSE简写)
例3:
A:=REF(C,1); //取得前一根k线的收盘价
Количество транзакций, полученных на K-линейной карте.
Объем сделок
Функция: VOL, сокращение V
Параметры: нет
Описание: Возвращение объемов сделок “за этот цикл”
Данные последовательности
VOL取得K线图的成交量。
注:
可简写为V。
该函数在当根TICK上的返回值为当天所有TICK成交量的累计值。
例1:
VV:=V; // 定义VV为成交量
例2:
REF(V,1); // 表示前一个周期的成交量
例3:
V>=REF(V,1); // 成交量大于前一个周期的成交量,表示成交量增加(V为VOL的简写)
Взять общий объем позиций на текущем рынке фьючерсов (контрактов).
OpenInterest:OPI;
Ссылки вперед
引用X在N个周期前的值。
注:
1、当N为有效值,但当前的k线数不足N根,返回空值;
2、N为0时返回当前X值;
3、N为空值时返回空值。
4、N可以为变量
例1:
REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价
例2:
AA:=IFELSE(BARSBK>=1,REF(C,BARSBK),C);//取最近一次买开仓信号K线的收盘价
// 1)发出BK信号的当根k线BARSBK返回空值,则发出BK信号的当根k线REF(C,BARSBK)返回
空值;
// 2)发出BK信号的当根k线BARSBK返回空值,不满足BARSBK>=1,则当根k线的收盘价。
// 3)发出BK信号之后的k线BARSBK返回买开仓的K线距离当前K线的周期数,REF(C,BARSBK)
返回开仓k线的收盘价。
// 4)例:1、2、3 三根k线,1 K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3
K线返回 1 K线的收盘价。
Торговые единицы с контрактами на получение данных.
取数据合约的交易单位。
用法:
UNIT 取加载数据合约的交易单位。
Цифровая наличность
UNIT будет равна 1.
Криптовалютные фьючерсы
Относится к контрактной валюте.
OKEX期货币本位合约:BTC合约1张代表100美元,其它币种的1张合约代表10美元
Минимальная изменяемая цена контракта на данные.
取数据合约的最小变动价位。
用法:
MINPRICE; 取加载数据合约的最小变动价位。
Минимальная изменяемая цена торгового контракта.
取交易合约的最小变动价位。
用法:
MINPRICE1; 取交易合约的最小变动价位。
Положите K-линию.
BARPOS,返回从第一根K线开始到当前的周期数。
注:
1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
2、本机已有的第一根K线上返回值为1。
例1:LLV(L,BARPOS); // 求本地已有数据的最小值。
例2:IFELSE(BARPOS=1,H,0); // 当前K线是本机已有的第一根K线取最高值,否则取0。
DAYBARPOS как корень K BAR как корень KBAR ≠ ≈ ≈ ≈ ≈ ≈ ≈ ≈ ≈ ≈ ≈ ≈ ≈ ≈ ≈
Цикл - количество минут.
1, 3, 5, 15, 30, 60, 1440
ДатаФункция DATE, получающая даты года, начиная с 1900 года.
例1:
AA..DATE; // 测试时AA的值为220218,表示2022年2月18日
Время на линии К.
TIME,取K线时间。
注:
1、该函数在盘中实时返回,在K线走完后返回K线的起始时间。
2、该函数返回的是交易所数据接收时间,也就是交易所时间。
3、TIME函数在秒周期使用时返回六位数的形式,即:HHMMSS,在其他周期上显示为四位数的形式,即:HHMM.
4、TIME函数只能加载在日周期以下的周期中,在日周期及日周期以上的周期中该函数返回值始终为1500。
5、使用TIME函数进行尾盘平仓的操作需要注意
(1)尾盘平仓设置的时间建议设置为K线返回值中实际可以取到的时间(如:螺纹指数 5分钟周期 最后一根K线返回时间为1455,尾盘平仓设置为TIME>=1458,CLOSEOUT;则效果测试中不能出现尾盘平仓的信号)
(2)使用TIME函数作为尾盘平仓的条件的,建议开仓条件也要做相应的时间限制(如设置尾盘平仓条件为TIME>=1458,CLOSEOUT;则相应的开仓条件中需要添加条件TIME<1458;避免平仓后再次开仓的情况)
例1:
C>O&&TIME<1450,BK;
C<O&&TIME<1450,SK;
TIME>=1450,SP;
TIME>=1450,BP;
AUTOFILTER;
// 在14:50后平仓。
例2:
ISLASTSK=0&&C>O&&TIME>=0915,SK;
Год.
YEAR,取得年份。
注:
YEAR的取值范围为1970—2033。
例1:
N:=BARSLAST(YEAR<>REF(YEAR,1))+1;
HH:=REF(HHV(H,N),N);
LL:=REF(LLV(L,N),N);
OO:=REF(VALUEWHEN(N=1,O),N);
CC:=REF(C,N); // 取上一年的最高价,最低价,开盘价,收盘价
例2:
NN:=IFELSE(YEAR>=2000 AND MONTH>=1,0,1);
Выберите месяц.
MONTH,返回某个周期的月份。
注:
MONTH的取值范围为1—12.
例1:
VALUEWHEN(MONTH=3&&DAY=1,C); // 在K线日期为三月一日时取其收盘价
例2:
C>=VALUEWHEN(MONTH<REF(MONTH,1),O),SP;
Число дней в цикле
DAY,返回某一周期的日数。
注:
DAY取值范围为1-31。
例1:
DAY=3&&TIME=0915,BK; // 当日起为3日,时间为9点15分时,买开
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;
CC:=IFELSE(DAY=1,VALUEWHEN(N=1,O),0); // 当日期为1时,取开盘价,否则取值为0
Часы.
HOUR,返回某周期的小时数。
注:
HOUR的取值范围为0—23
例1:
HOUR=10; // 在10:00的K线上返回值为1,其余K线上返回值为0
Минуты.
MINUTE,返回某个周期的分钟数。
注:
1:MINUTE的取值范围为0—59
2:该函数只能加载在分钟周期上,返回当根K线开始的分钟数。
例1:
MINUTE=0; // 在整点时刻的分钟K线上返回值为1,其余K线返回值为0
例2:
TIME>1400&&MINUTE=50,SP; // 在14:50的时候卖平仓
Число недель.
WEEKDAY,取得星期数。
注:
1:WEEKDAY的取值范围是0—6。(星期日 ~ 星期六)
例1:
N:=BARSLAST(MONTH<>REF(MONTH,1))+1;
COUNT(WEEKDAY=5,N)=3&&TIME>=1450,BP;
COUNT(WEEKDAY=5,N)=3&&TIME>=1450,SP;
AUTOFILTER; // 每个月交割日尾盘自动平仓
例2:
C>VALUEWHEN(WEEKDAY<REF(WEEKDAY,1),O)+10,BK;
AUTOFILTER;
Возвращение в текущий цикл.
”` BARSTATUS 返回当前周期的位置状态。
注: 该函数返回1表示当前周期是第一个周期,返回2表示是最后一个周期,返回0表示当前周期处于中间位置。
例: A:=IFELSE(BARSTATUS=1,H,0);