[TOC]
My言語は,Mac言語との互換性および強化されたプログラム取引言語である.FMZの量化My言語は,言語強化を使用してJavaScript言語コードを埋め込む場合,例えば,%%
操作符の後に空白文字が1つ以上ある場合,エラーが発生します。
デジタル通貨の契約
デジタル通貨の契約
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 ≠ 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根で,すでに100K線を走らせて,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. `^^`
`^^`2つ目`^`符号は,変数に付加された値を表し,グラフ (メイングラフ) に出力されます.
```
lastPrice^^C;
```
- 4. `..`
`..`2つ目`.`記号は,変数に付加された値を表し,変数名,数値をグラフに表示するが,グラフに描かれない (メイングラフ,副グラフ...).
```
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の2乗です.`>=`
```
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 // 运算结果为真
返回值:数值类型
算数演算符 (arithmetic operator) は,基本的な算数演算 (arithmetic operators) を完了する記号であり,四則演算を処理する記号である.
- **プラス**
```
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`これは,関数のパラメータです.
函数を使うとき,関数の基本的定義,つまりその関数を呼び出すとどんなデータを得ることができるかを理解する必要がある.通常,関数はパラメータを持ち,パラメータを入力するときに入力されたデータタイプが合っていることを確認する必要があります.現段階のほとんどのIDEのコード提示機能は非常に不完全です.パラメータのデータタイプが与えられ,私たちの使用にいくつかのトラブルをもたらします.`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
任意の1番目のパラメータX
両方C
実際にはC
また,関数 ((返される開盤から今日までの閉盤価格の順序),ただし,その関数はありません. 2番目の関数である5、10は,MA()
関数で,閉店価格の数日の移動平均を取得します. 参数で,関数は使用してより柔軟になります.
MA(x,n)
参数を知らなければ,x
、n
返される値が正しいデータ型でもありません.上の3つの原則に従って,後述の関数について説明し,使用する.
麦语言
そしてJavaScript
言語混合プログラミング %%
// 这里面可以调用发明者量化的任何API
scope.TEST = function(obj) {
return obj.val * 100;
}
%%
收盘价:C;
收盘价放大100倍:TEST(C);
上一个收盘价放大100倍:TEST(REF(C, 1)); // 鼠标移动到回测的K线上就会提示变量值
- `scope`オブジェクト
`scope`オブジェクトは属性を追加し,その属性に匿名関数を与え,この属性を引用する匿名関数 (※) をマック言語のコード部分で呼び出すことができます.
- `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行barへアクセスする.
`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
5分K線データ現在の瞬間の逆数第二BARの閉算値である。
REF(MIN5.C, 1)
現在のモデルのK線周期 ((上記コードの反省周期は1分に設定されている.period: 1m
),現在の瞬間の逆数第2BARの5分周期の閉盘価格。
この2つの定義は異なるもので,必要に応じて使用できます.
モデルに書き込むことで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 行の中で何回か実行させることができます.
コマンドラインは1回しか信号を出さない.
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線1信号の2つの方法:閉じる価格下令,指示価格下令,どちらも支持である。
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
線の型,色など,マック語に精通しているユーザーの習慣に合わせて設定する.
インデケーターの作成過程でよく見られるもの問題記事の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方や内容の書き方など.
注意点数;
終わり
システムキーワードは変数声明として使用できません.
文字列の使用に注意してください単引数、例えば:'开仓'
この文字列は
コメント符
- `// 注释内容`コードが実行中にコンパイルされず,つまり実行されないことを意味します.`//`代码の意味をマークして 簡単に調べる時に 素早く理解し 思い出せるようにします
- `{ 注释内容 }`コメント欄
```
A:=MA(C,10);
{上一行代码是计算均线。}
```
- `(* 注释内容 *)`コメント欄
```
A:=MA(C,10);
(*上一行代码是计算均线。*)
```
コードを書くとき,入力法と英語の切り替えにより,しばしば符号エラーが発生する.以下のようなものがあります.:
終わり符号;
コミック,
括弧に()
漢字の違いには注意してください。
キーワードを”回クリックすると, キーワードを”回クリックすると,
shift
キーで英語を中国語に切り替える
>=
。<=
。期貨戦略では,戦略ロボットが起動する前に,手動でポジションを開設したポジションがある場合は,ロボットが起動すると,ポジション保持情報を検出し,実際のポジション状態と同期します.
戦略に使うことができます.SP
, BP
,CLOSEOUT
戦闘停止命令
%%
if (!scope.init) {
var ticker = exchange.GetTicker();
exchange.Buy(ticker.Sell+10, 1);
scope.init = true;
}
%%
C>0, CLOSEOUT;
マック言語は,同じ契約を同時に多空持仓でサポートしません.
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 でした.
暗号通貨先物
UNITの価値は,契約通貨に関連している.
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は,その日の何番目の根K線BAR。
周期値は分数である。
1, 3, 5, 15, 30, 60, 1440
日付DATE関数で,その周期が1900年以降の年月日を取得します.
例1:
AA..DATE; // 测试时AA的值为220218,表示2022年2月18日
Kラインの時間.
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); // 如果当前K线是第一个周期,变量A返回K线最高值,否则取0
介在する
BETWEEN(X,Y,Z) 表示X是否处于Y和Z之间,成立返回1(Yes),否则返回0(No)。
注:
1、其中若X=Y、X=Z、或X=Y且Y=Z时函数返回值为1(Yse)。
例1:
BETWEEN(CLOSE,MA5,MA10); // 表示收盘价介于5日均线与10日均线之间
BARSLASTCOUNT ((COND) 現在の周期から前向きに計算し,統計的に条件を満たす周期の数を連続して計算する。
注:
1、返回值为从当前周期计算COND连续不为0的周期数
2、条件第一次成立的当根k线上BARSLASTCOUNT(COND)的返回值为1
例:
BARSLASTCOUNT(CLOSE>OPEN);
//计算当根K线在内连续为阳线的周期数
交差関数
CROSS(A,B) 表示A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
注:
1、满足穿越的条件必须上根k线满足A<=B,当根k线满足A>B才被认定为穿越。
例1:
CROSS(CLOSE,MA(CLOSE,5)); // 表示收盘线从下方向上穿过5周期均线
横断する
CROSSDOWN(A,B):表示当A从上方向下穿B,成立返回1(Yes),否则返回0(No)
注:
1、CROSSDOWN(A,B)等同于CROSS(B,A),CROSSDOWN(A,B)编写更利于理解
例1:
MA5:=MA(C,5);
MA10:=MA(C,10);
CROSSDOWN(MA5,MA10),SK; // MA5下穿MA10卖开仓
// CROSSDOWN(MA5,MA10),SK;与CROSSDOWN(MA5,MA10)=1,SK;表达同等意义
横断して上へ
CROSSUP(A,B)表当A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
注:
1、CROSSUP(A,B)等同于CROSS(A,B),CROSSUP(A,B)编写更利于理解。
例1:
MA5:=MA(C,5);
MA10:=MA(C,10);
CROSSUP(MA5,MA10),BK; // MA5上穿MA10,买开仓
// CROSSUP(MA5,MA10),BK;与CROSSUP(MA5,MA10)=1,BK;表达同等意义
満足度が持続するか否か
EVERY(COND,N),判断N周期内是否一直满足COND条件。若满足函数返回值为1,不满足函数返回值为0。
注:
1、N包含当前k线。
2、若N是有效数值,但前面没有那么多K线,或者N为空值,代表条件不满足,函数返回值为0。
3、N可以是变量。
例1:
EVERY(CLOSE>OPEN,5); // 表示5个周期内一直是阳线
例2:
MA5:=MA(C,5); // 定义5周期均线
MA10:=MA(C,10); // 定义10周期均线
EVERY(MA5>MA10,4),BK; // 4个周期内MA5都大于MA10,则买开仓
// EVERY(MA5>MA10,4),BK;与EVERY(MA5>MA10,4)=1,BK;表达同等意义
満足しているかどうか判断する
EXIST(COND,N)判断N个周期内是否有满足COND的条件。
注:
1、N包含当前k线。
2、N可以是变量。
3、若N是有效数值,但前面没有那么多K线,按实际周期数计算。
例1:
EXIST(CLOSE>REF(HIGH,1),10); // 表示10个周期中是否存在收盘价大于前一个周期的最高价,存在返回1,不存在则返回0
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;
EXIST(C>MA(C,5),N); // 表示当天是否有满足收盘价大于5周期均线的k线,存在返回1,不存在返回0
条件関数である
IF(COND,A,B)若COND条件成立,则返回A,否则返回B。
注:
1、COND是判断条件;A、B可以是条件,也可以是数值。
2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y:IF(CON,X,REF(Y,1))。
例1:
IF(ISUP,H,L); // k线为阳线,取最高价,否则取最低价
例2:
A:=IF(MA5>MA10,CROSS(DIFF,DEA),IF(CROSS(D,K),2,0)); // 当MA5>MA10时,取是否满足DIFF上穿DEA,否则(MA5不大于MA10),当K,D死叉时,令A赋值为2,若上述条件都不满足,A赋值为0
A=1,BPK; // 当MA5>MA10,以DIFF上穿DEA作为开多仓条件
A=2,SPK; // 当MA5不大于MA10,以K、D死叉作为开空仓条件
条件関数である
IFELSE(COND,A,B) 若COND条件成立,则返回A,否则返回B。
注:
1、COND是判断条件;A、B可以是条件,也可以是数值。
2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y: IFELSE(CON,X,REF(Y,1));
例1:
IFELSE(ISUP,H,L); // k线为阳线,取最高价,否则取最低价
例2:
A:=IFELSE(MA5>MA10,CROSS(DIFF,DEA),IFELSE(CROSS(D,K),2,0)); // 当MA5>MA10时,取是否满足DIFF上穿DEA,否则(MA5不大于MA10),当K,D死叉时,令A赋值为2,若上述条件都不满足,A赋值为0
A=1,BPK; // 当MA5>MA10,以DIFF上穿DEA作为开多仓条件
A=2,SPK; // 当MA5不大于MA10,以K、D死叉作为开空仓条件
現在指定契約であるかどうか
ISCONTRACT(CODE)当前是否为指定的合约。
用法:ISCONTRACT(CODE);是当前合约返回1,不是当前合约返回0。
注:
1、判断是否为指定合约时,CODE可以为合约的交易代码。
例:
ISCONTRACT('this_week'); // 数字货币OKEX期货合约
ISCONTRACT('XBTUSD'); // 数字货币BITMEX期货合约
公式表現がサポートされています.
契約を判断する
ISCONTRACT('this_week'); // 判断当前合约是否为OKEX期货 this_week(当周)合约
取引所の名称を判断
ISCONTRACT('@Futures_(Binance|FTX)'); // 判断当前交易所对象是否为Binance期货或者FTX期货
ISCONTRACT('@(OKEX|Bitfinex)'); // 判断交易所,需要在开头加@字符
陰線について
ISDOWN判断该周期是否收阴。
注:
1、ISDOWN等同于C<O
例:
ISDOWN=1&&C<REF(C,1),SK; // 当根k线收阴并且收盘价小于前一周期收盘价,则开空
// ISDOWN=1&&C<REF(C,1),SK;与ISDOWN&&C<REF(C,1),SK; 表达同等意义
円盤
ISEQUAL判断该周期是否平盘。
注:
1、ISEQUAL等同于C=O
例1:
EVERY(ISEQUAL=1,2),CLOSEOUT; // 持续2根k线都是平盘,则全平
この周期が最後のK線であるかどうかを判断する.
ISLASTBAR判断该周期是否为最后一根k线。
例1:
VALUEWHEN(ISLASTBAR=1,REF(H,1)); // 当前k线是最后一根k线,则取前一周期的最高价
判断は空値である.
ISNULL判断空值。
用法:ISNULL(N);如果N为空值,函数返回1;如果N为非空值,函数返回0。
例:MA5:=IFELSE(ISNULL(MA(C,5))=1,C,MA(C,5)); // 定义五周期均线,K线数量不足五根时,返回当根K线的收盘价
陽の光
ISUP判断该周期是否收阳。
注:
1、ISUP等同于C>O。
例:
ISUP=1&&C>REF(C,1),BK; // 若当根k线收阳并且收盘价大于前一周期收盘价,则开多
// ISUP=1&&C>REF(C,1),BK; 与 ISUP&&C>REF(C,1),BK
// 表达同等意义
判定関数
LAST(COND,N1,N2)判断过去N1到N2周期内,是否一直满足COND条件。
注:
1、若N1与N2只相差一个周期(如N1=3,N2=2),则函数判断距离当前K线最近的那个周期上是否满足条件(即判断过去N2个周期的那根K线上是否满足条件)。
2、当N1/N2为有效值,但当前的k线数不足N1/N2根,或者N1/N2空值的情况下,代表不成立,该函数返回0。
3、N1、N2不可以是变量。
例1:
LAST(CLOSE>OPEN,10,5); // 表示从过去第10个周期到第5个周期内一直是阳线
例2:
MA5:=MA(C,5);
LAST(C>MA5,4,3); // 判断距离当前k线3个周期的那根k线上是否满足C大于MA5
交差関数を維持する.
LONGCROSS(A,B,N)表示A在N个周期内都小于B,本周期A从下向上穿越B。
注:
1、当N为有效值,但当前的k线数不足N根时,LONGCROSS函数返回空值。
2、N不支持变量。
例1:
LONGCROSS(CLOSE,MA(CLOSE,10),20); // 表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线
そうじゃない
NOT(X):取非。当X=0时返回1,否则返回0。
例1:
NOT(ISLASTBK);如果上一个信号不是BK信号,则NOT(ISLASTBK)返回值为1;上一个信号是BK信号,则NOT(ISLASTBK)返回值为0。
例2:
NOT(BARSBK>=1)=1; // BK信号发出的当根K线上满足条件
// NOT(BARSBK>=1)=1与NOT(BARSBK>=1)表达同等意义
ゼロに戻る
返回空值
用法:
MA5:=MA(C,5);
MA10:=MA(C,10);
A:=IFELSE(MA5>MA10,MA5,NULL),COLORRED; // 当MA5>MA10时,画五日均线MA5,不满足MA5>MA10时,返回空值,不画线
評価する
VALUEWHEN(COND,X)当COND条件成立时,取X的当前值。如COND条件不成立,则取上一次COND条件成立时X的值。
注:
X可以是数值也可以是条件。
例1
VALUEWHEN(HIGH>REF(HHV(HIGH,5),1),HIGH); // 表示当前最高价大于前五个周期最高价的最大值时返回当前最高价
例2:
VALUEWHEN(DATE<>REF(DATE,1),O); // 表示取当天第一根k线的开盘价(即当天开盘价)
例3:
VALUEWHEN(DATE<>REF(DATE,1),L>REF(H,1)); // 表示在当天第一根k线上判断当前最低价是否大于昨天最后一根K线的最高价。返回1,说明当天跳空高开。返回0,说明当天不满足跳空高开条件
循環条件関数。
LOOP2(COND,A,B);循环条件函数若COND条件成立,则返回A,否则返回B。
注:
1、COND是判断条件;A、B可以是条件,也可以是数值。
2、该函数支持变量循环引用前一周期自身变量,即支持下面这样的写法Y:=LOOP2(CON,X,REF(Y,1));
例1:
X:=LOOP2(ISUP,H,REF(X,1)); // k线为阳线,取当根K线的最高价,否则取上一次是阳线的K线的最高价;若之前未出现过阳线时,X返回为空值
例2:
BB:=LOOP2(BARSBK=1,LOOP2(L>LV(L,4),L,LV(L,4)),LOOP2(L>REF(BB,1),L,REF(BB,1))); // 持有多单时,开多单那根的前面4个周期内的最低价为起始止损点BB,后续K线最低价比前一个最低价高,取当前最低价为止损点,否则取前一个低点为止损点
SS:=LOOP2(BARSSK=1,LOOP2(H<HV(H,4),H,HV(H,4)),LOOP2(H<REF(SS,1),H,REF(SS,1))); // 持有空单时,开空单那根的前面4个周期内的最高价为起始止损点SS,最高价比前一个最高价低,取当前最高价为止损点,否则取前一个高点为止损点
H>HV(H,20),BK;
L<LV(L,20),SK;
C<BB,SP;
C>SS,BP;
AUTOFILTER;
最初の有効周期から現在の周期数へ。
”` BARSCOUNT(COND)第一个有效周期到当前的周期数。
注: 1、返回值为COND从第一