[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 です.// 当前周期收盘价大于-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本走って100回加算された.
リアルディスクは,初期にどれだけのK線が取得されたかによって決まります.
ほとんどのシステムでは,変数命名は,システムキーを用いて単語キーを保持することを許さない (例えば,既知の内蔵変数名,関数名).Close
、C
また,純粋な数字や数字の開始は許されない. 長い終わりは許されない. 異なるシステムの長さの制限は異なる.
実際には,大人は,中国語の解析の効率性について主流のシステムを混乱させる必要はありません.
// 优雅的输出
五日均线:=MA(C,5);
// 输出
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, '阳线');
指標コードを実行する操作,計算,単純に,操作に参加する符号である.
変数に値を与えます.
:
:
グラフ (※) に出力される.
Close1:Close; // 将Close赋值给变量Close1,并且输出到图中
:=
:=
,は,指定値を表すが,図 (主図,副図...) に出力されず,状態表にも表示されない.
Close2:=Close; // 将Close赋值给变量Close2
^^
^^
2つ^
符号は,変数に代入され,グラフ (主図) に出力されます.
lastPrice^^C;
..
..
2つ.
符号は,変数に割り当てられ,変数の名前や数字がグラフに表示されるが,グラフ (主図,副図...) に描かれない.
openPrice..O
関連演算子は,条件式で用いられる双眼演算子である. 二つのデータ間の関係を判断するために用いられる.
返される値は,Boole型ではなく,true
これは,x^2です.false
(0)。
>
// 将2>1的运算结果赋值给rv1变量,此时rv1=1
rv1:=2>1;
<
// 返回false,也就是0,因为2大于1
rv3:=2<1;
>=
x:=Close;
// 将收盘价大于等于10的运算的结果赋值给变量rv2
// 注意,由于close是一个序列数据,当进行close>=10运算的时候,本质是每个周期都进行运算,所以每个周期都会有一个1、0的返回值
rv2:=Close>=10;
<=
此处省略
=
A:=O=C; // 判断开盘价是不是等于收盘价。
<>
1<>2 // 判断1是否不等于2,返回值为1(true)
返される値は,Boole型ではなく,true
これは,x^2です.false
(0)。
&&
簡単に利用できます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,成立
||
簡単に利用できますor
代替またはリンクの両側,一方成立 (true),全体成立 (return true) した.cond_a:=1>2;
cond_b:=4>3;
cond_c:=5>6;
cond_a || cond_b or cond_c; // 返回值为1,成立
()
括弧内の式を計算する操作符.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
この関数のパラメータは
関数を使うとき,関数の基本的な定義,すなわち,関数を呼び出すときにどのようなデータが得られるかを理解する必要があります. 一般的には,関数は参数を持ち,参数を送信するときに,送信されるデータ型が適合していることを確認する必要があります. 現在,ほとんどの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。
函数の第2の概念の重要な概念は,参数であり,異なる参数に異なる返し値が送信される.
// 变量ma5接收5日收盘价移动平均值
ma5:=MA(C,5);
// 变量ma10接收10日收盘价移动平均值
ma10:=MA(C,10);
上記の変数ma5
、ma10
この式は,X
ありがとうございましたC
価格が上昇した.C
この式は,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を,この式を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
言語のコードから取得します.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必须是大写。
ニュース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" // 打印一次深度数据后就抛出异常,暂停
}
%%
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 (scope.get_locals) ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
この関数は,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が最後の 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線データの現在の時刻の逆数第2BARの閉じる価格数である.REF(MIN5.C, 1)
このコードの回帰周期は,1分に設定されている.period: 1m
),現在の瞬間の倒数で2番目のBARが,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),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
複数の信号を連続して同じ命令行で送信できます.
理解:
以上例子,逐个信号执行,执行后的信号不再触发。平仓后重置模型状态。一个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線1つの信号の2つの方法:閉じる価格下令,指令価格下令,どちらもサポートされている.
2,加減仓位モデル,また,k線を複数回信号下記するもサポートする.
貯蔵庫の積分モデル,書き込みmultsig
k行に複数の加仓または複数の減仓を行う.
閉じる価格モデルは,現在のBARが終わるまでモデルを実行し,下の根BARが始まるときに取引を実行することを意味します.
リアルタイム価格モデルは,価格変化ごとに1つのモデルを実行し,信号があれば即座に取引することを意味します. リアルタイム・価格モデルは前日の信号を無視 (前日の信号は前日の瞬間に実行される) している.
オペレーターを使用する
^^
,変数に代入する時に,設定指標が主図に表示される.
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);
(*上一行代码是计算均线。*)
コードを書くとき,入力方法の英語への切り替えにより,しばしば符号の誤りが発生します.以下のようないくつかの種類があります.:
終わり符;
コマ,
括弧()
漢字は中国語と英語の間で異なる文字で,注意が必要です.
検索ドッグ,バウダ,Bingの入力方法を使用すると,
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; 取交易合约的最小变动价位。
線がどこに位置するか.
BARPOS,返回从第一根K线开始到当前的周期数。
注:
1、BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
2、本机已有的第一根K线上返回值为1。
例1:LLV(L,BARPOS); // 求本地已有数据的最小值。
例2:IFELSE(BARPOS=1,H,0); // 当前K线是本机已有的第一根K线取最高值,否则取0。
DAYBARPOSは,K線BARをその日の第10の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从第一个有效周期开始计算,到现在为止的周期数。
2、条件第一次成立的当根k线上BARSCOUNT(COND)的返回值为0。
例:
BARSCOUNT(MA(C,4)); // 计算MA(C,4)第一次有返回值到当前的周期数
条件が設定された場所です.
BARSLAST(COND),上一次条件COND成立到当前的周期数。
注:
1、条件成立的当根k线上BARSLAST(COND)的返回值为0。
例1:
BARSLAST(OPEN>CLOSE); // 上一根阴线到现在的周期数
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,当日k线数
// 由于条件成立的当根k线上BARSLAST(COND)的返回值为0,所以“+1”才是当日k线根数
解説BARSLAST
機能:
最初の条件は,現在の周期数まで成立する.
BARSSINCE(COND)第一个条件成立到当前的周期数。
注:
1、返回值为COND第一次成立到当前的周期数。
2、条件第一次成立的当根k线上BARSSINCE(COND)的返回值为0。
例:
BARSSINCE(CLOSE>OPEN); // 统计第一次满足阳线这个条件的K线到现在的周期数
統計 N 周期の中で最初の条件が現在の周期数に成立する.
BARSSINCEN(COND,N)统计N周期内第一次条件成立到当前的周期数。
注:
1、N包含当前k线。
2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。
3、若N为0返回无效值。
4、N可以为变量。
例:
N:=BARSLAST(DATE<>REF(DATE,1))+1; // 分钟周期,当日K线数
BARSSINCEN(ISUP,N); // 统计N周期内第一次满足阳线到当前的周期数
A,B の条件を満たした最近の一行間の周期数を取得する.
CONDBARS(A,B);取得最近的满足A、B条件的k线间周期数。
注意:
1、该函数返回周期数不包含最后满足条件的K线。
2、距离当前K线最近的满足的条件为B条件,则该函数返回值为最后一次满足A条件的K线到满足B条件的K线的周期数(A条件满足后的第一次满足B条件的K线)。
距离当前K线最近的满足的条件为A条件,则该函数返回值为最后一次满足B条件的K线到满足A条件的K线的周期数(B条件满足后的第一次满足A条件的K线)。
例1:
MA5:=MA(C,5); // 5周期均线
MA10:=MA(C,10); // 10周期均线
CONDBARS(CROSSUP(MA5,MA10),CROSSDOWN(MA5,MA10)); // 最近一次满足5周期均线上穿10周期均线与5周期均线下穿10周期均线之间的周期数
統計総数.
COUNT(COND,N),统计N周期中满足COND条件的周期数。
注:
1、N包含当前k线。
2、若N为0则从第一个有效值算起。
3、当N为有效值,但当前的k线数不足N根,从第一根统计
98K-シリーズ高級取引指標k線でj1を通過し,陽線がj1に止まった後,再びj1を押して開きます. 復元可能な時に,陰線でj1に止まらず,開きます. 小夢先生,どこで間違えたのか教えて下さい. D1:=if ((jk<0 && CROSS ((close,j1) and CLOSE>OPEN and close>j1,j1,0); D1,BK; /upload/asset/2af6fee82ea8bb3725687.png 投稿日:
98K-シリーズ高級取引指標国内愛取引プラットフォームは,マール語の関数データベースがあり,後には互換性があるかどうかわからない. 互換性トレードビューの関数のように,双方の指標戦略は,直接発明者に平移して量化することができます.
98K-シリーズ高級取引指標isLast ((x) 関数説明:現在のデータが最後のデータであるかどうかを判断する.この関数は発明者側にあるか.
wanghehe711@qq.comマンガ語は実体盤の多種化を実現できるのか?
クリームだMARK を掛けるには,JAVA や PYHON が組み込まれている必要がありますか? 例を教えて下さい.
雲OKEX契約のAPIにアクセスできますか?
発明者 量化 - 微かな夢この辺を見てください.
発明者 量化 - 微かな夢この isLast コマンドはサポートされていません.
発明者 量化 - 微かな夢言語は単一品種単一プラットフォーム戦略であり,単一品種,単一アカウントのみを操作する.
発明者 量化 - 微かな夢このデザインは比較的複雑で,挂行リストのポリシーの場合,直接JS,PYのポリシーを書くことをお勧めします.
発明者 量化 - 微かな夢OKEX 契約のサポートも可能です.