システムの現在のバージョン番号を返します.
現在のシステムバージョン番号,例えば3.6
- わかった
文字列
バージョン
function main() {
Log("version:", Version())
}
def main():
Log("version:", Version())
void main() {
Log("version:", Version());
}
システムバージョン番号は,dockerのプログラムのバージョン番号です.
睡眠機能で プログラムが一時停止します
睡眠 (ミリ秒)
についてmillisecond
パラメータは睡眠時間とミリ秒数を設定するために使用されます.
ミリ秒
本当
番号
function main() {
Sleep(1000 * 10) // Wait for 10 seconds
Log("Waited for 10 seconds")
}
def main():
Sleep(1000 * 10)
Log("Waited for 10 seconds")
void main() {
Sleep(1000 * 10);
Log("Waited for 10 seconds");
}
実行する際にSleep(1000)
1ミリ秒未満の睡眠時間,例えば設定をサポートします.Sleep(0.1)
. それは最小パラメータをサポートします0.000001
1ナノ秒は1e-6
ミリ秒です
戦略を書き出すときPython
言語,Sleep(millisecond)
投票間隔,待機時間操作のために使用する必要があります.time.sleep(second)
機能Python
ほらtime
図書館を活用したからです.time.sleep(second)
バックテストを行うとき (バックテストシステムの時間列をスキップするのではなく),戦略が非常にゆっくりとバックテストするようになります.
戦略の実行環境がバックテストシステムであるかどうかを決定する.
ストラテジーは,真価を返します.true
バックテストシステム環境で実行される場合. 戦略は誤り値を返します.例えば:false
リアルな取引環境で実行される場合
ボール
IsVirtual (バーチャル)
function main() {
if (IsVirtual()) {
Log("The current backtest system environment.")
} else {
Log("The current live trading environment.")
}
}
def main():
if IsVirtual():
Log("The current backtest system environment.")
else:
Log("The current live trading environment.")
void main() {
if (IsVirtual()) {
Log("The current backtest system environment.");
} else {
Log("The current live trading environment.");
}
}
現在の実行環境がバックテストシステムであるかどうかを決定し,バックテストとライブ取引の違いと互換性を確保するために使用します.
メールを送る
メールの送信が成功すると,実際の値が返されます.true
失敗した配送が誤った値を返します.false
- わかった
ボール
メール ((smtpサーバー, smtpユーザー名, smtpパスワード, mailTo,タイトル,ボディ)
指定するために使用されますSMTP
メール送信者のサービスアドレス
smtpサーバー
本当
文字列
メール送信者のメールアドレスを指定するために使用されます.
smtpユーザー名
本当
文字列
についてSMTP
メール送信者のメールボックスへのパスワードです
smtpパスワード
本当
文字列
メール受信者のメールアドレスを指定するために使用されます.
mailTo に
本当
文字列
メールアドレス
タイトル
本当
文字列
メールボディ
身体
本当
文字列
function main(){
Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
}
def main():
Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
void main() {
Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body");
}
についてsmtpPassword
パラメーターは,パスワードを設定しますSMTP
メールボックスのパスワードではありません
設定するときにsmtpServer
パラメータに直接ポート番号を追加することができます.smtpServer
例えばQQメールsmtp.qq.com:587
試験可能である.
エラーが報告された場合:unencryped connection
変更する必要があります.smtpServer
についてMail
パラメータ形式は:ssl://xxx.com:xxx
例えば,ssl
方法SMTP
QQメールでは:ssl://smtp.qq.com:465
またはsmtp://xxx.com:xxx
- わかった
バックテストシステムでは機能しません
{@fun/Global/Mail_Go メイル_Go}
アシンクロンバージョンMail
function.
についてMail_Go
この関数で,同じオブジェクトをすぐに返します.wait
メール配信の結果を取得する同期オブジェクトの方法. メール配信が成功すると,真値が返されます.true
失敗した配送が誤った値を返します.false
- わかった
オブジェクト
メール_Go (smtpサーバー, smtpユーザー名, smtpパスワード, mailTo,タイトル,ボディ)
指定するために使用されます.SMTP
メール送信者のサービスアドレス
smtpサーバー
本当
文字列
メール送信者のメールアドレスを指定するために使用されます.
smtpユーザー名
本当
文字列
についてSMTP
メール送信者のメールボックスのパスワードです
smtpパスワード
本当
文字列
メール受信者のメールアドレスを指定するために使用されます.
mailTo に
本当
文字列
メールアドレス
タイトル
本当
文字列
メールボディ
身体
本当
文字列
function main() {
var r1 = Mail_Go("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
var r2 = Mail_Go("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
var ret1 = r1.wait()
var ret2 = r2.wait()
Log("ret1:", ret1)
Log("ret2:", ret2)
}
# Not supported.
// Not supported.
バックテストシステムでは機能しません
{@fun/Global/Mail Mail} メール・メール
フィルターエラー ログ
SetErrorFilter (フィルター設定)
規則式文字列です フィルター 本当 文字列
function main() {
SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused")
}
def main():
SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused")
void main() {
SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|http|received|EOF|reused");
}
一般的なエラーをフィルタリングする
function main() {
// A random query for a non-existent order with an id of 123, allowing the interface to report an error deliberately
var order = exchange.GetOrder("123")
Log(order)
// Filter http502 errors, GetOrder interface errors, after setting the error filter, the second call to GetOrder will no longer report errors
SetErrorFilter("502:|GetOrder")
order = exchange.GetOrder("123")
Log(order)
}
def main():
order = exchange.GetOrder("123")
Log(order)
SetErrorFilter("502:|GetOrder")
order = exchange.GetOrder("123")
Log(order)
void main() {
TId orderId;
Order order = exchange.GetOrder(orderId);
Log(order);
SetErrorFilter("502:|GetOrder");
order = exchange.GetOrder(orderId);
Log(order);
}
インターフェースエラーメッセージをフィルタリングします.
この正規表現にマッチしたエラーログはログシステムにアップロードされません.複数のフィルター条件を設定するために,複数の kere (数回数に制限はありません) を呼び出すことができます.複数の kereをセットした正規表現は,蓄積され,同時に有効になります.エラーログをフィルターするために使用される正規表現をリセットするために,空の文字列を設定できます:SetErrorFilter("")
. フィルタリングされたログは,頻繁にエラー報告がデータベースファイルを膨らませるのを防ぐために,ドッカーディレクトリ内のライブ取引IDに対応するデータベースファイルに書き込まれません.
リアルタイムで取引の プロセスIDを取得します
リアルタイム取引プロセスIDを返します. 文字列
GetPid (ゲットピッド)
function main(){
var id = GetPid()
Log(id)
}
def main():
id = GetPid()
Log(id)
void main() {
auto id = GetPid();
Log(id);
}
最後のエラーメッセージを受け取った.
最後のエラーメッセージ 文字列
削除する
function main(){
// Because the order number 123 does not exist, so there will be an error.
exchange.GetOrder("123")
var error = GetLastError()
Log(error)
}
def main():
exchange.GetOrder("123")
error = GetLastError()
Log(error)
void main() {
// Order ID type: TId, so you can't pass in a string, we place an order that doesn't meet the exchange specification to trigger
exchange.GetOrder(exchange.Buy(1, 1));
auto error = GetLastError();
Log(error);
}
バックテストシステムでは機能しません
戦略インタラクションのコマンドを受け取る
返したコマンドの形式はControlName:Data
. ControlName
コントロールの名前で,Data
インタラクティブなコントロールに入力ボックス,ドロップダウンボックス,その他のコンポーネントがない場合 (例えば入力ボックスのないボタンのコントロール),返されるコマンドフォーマットはControlName
コントロールの名前だけ返します.
文字列
コマンドを取得する
function main(){
while(true) {
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(1000)
}
}
def main():
while True:
cmd = GetCommand()
if cmd:
Log(cmd)
Sleep(1000)
void main() {
while(true) {
auto cmd = GetCommand();
if(cmd != "") {
Log(cmd);
}
Sleep(1000);
}
}
インタラクションコマンドを検出し,Log
インタラクションコマンドが検出されたときにそれを出力する機能です.
function main() {
while (true) {
LogStatus(_D())
var cmd = GetCommand()
if (cmd) {
Log("cmd:", cmd)
var arr = cmd.split(":")
if (arr[0] == "buy") {
Log("Buy, the control without number")
} else if (arr[0] == "sell") {
Log("Sell, the control with the number of:", arr[1])
} else {
Log("Other controls trigger:", arr)
}
}
Sleep(1000)
}
}
def main():
while True:
LogStatus(_D())
cmd = GetCommand()
if cmd:
Log("cmd:", cmd)
arr = cmd.split(":")
if arr[0] == "buy":
Log("Buy, the control without number")
elif arr[0] == "sell":
Log("Sell, the control with the number of:", arr[1])
else:
Log("Other controls trigger:", arr)
Sleep(1000)
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void split(const string& s,vector<string>& sv,const char flag = ' ') {
sv.clear();
istringstream iss(s);
string temp;
while (getline(iss, temp, flag)) {
sv.push_back(temp);
}
return;
}
void main() {
while(true) {
LogStatus(_D());
auto cmd = GetCommand();
if (cmd != "") {
vector<string> arr;
split(cmd, arr, ':');
if(arr[0] == "buy") {
Log("Buy, the control without number");
} else if (arr[0] == "sell") {
Log("Sell, the control with the number of:", arr[1]);
} else {
Log("Other controls trigger:", arr);
}
}
Sleep(1000);
}
}
例えば,戦略インタラクティブコントロールは入力ボックスなしでコントロールを追加します.インタラクティブコントロールは以下のように命名されます.buy
制御説明の情報は:buy
インタラクティブなコントロールの名前は:sell
制御説明メッセージは次のとおりです.sell
インタラクションコードは,異なるインタラクションコントロールに対応するように戦略に設計されています.
バックテストシステムでは機能しません
戦略登録コードを生成するときにメタの値を書き出す.
Meta
データです
文字列
GetMeta (メタ) を取得する
function main() {
// The maximum asset value of the denominated currency allowed by the strategy.
var maxBaseCurrency = null
// Get the metadata when creating the registration code.
var level = GetMeta()
// Detecting the conditions corresponding to Meta.
if (level == "level1") {
// -1 for unrestricted
maxBaseCurrency = -1
} else if (level == "level2") {
maxBaseCurrency = 10
} else if (level == "level3") {
maxBaseCurrency = 1
} else {
maxBaseCurrency = 0.5
}
while(1) {
Sleep(1000)
var ticker = exchange.GetTicker()
// Detect asset values
var acc = exchange.GetAccount()
if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Stocks + acc.FrozenStocks) {
// Stop executing strategy trading logic
LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!")
continue
}
// Other trading logic
// Normal output of status bar information
LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker)
}
}
def main():
maxBaseCurrency = null
level = GetMeta()
if level == "level1":
maxBaseCurrency = -1
elif level == "level2":
maxBaseCurrency = 10
elif level == "level3":
maxBaseCurrency = 1
else:
maxBaseCurrency = 0.5
while True:
Sleep(1000)
ticker = exchange.GetTicker()
acc = exchange.GetAccount()
if maxBaseCurrency != -1 and maxBaseCurrency < acc["Stocks"] + acc["FrozenStocks"]:
LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!")
continue
# Other trading logic
# Normal output of status bar information
LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker)
void main() {
auto maxBaseCurrency = 0.0;
auto level = GetMeta();
if (level == "level1") {
maxBaseCurrency = -1;
} else if (level == "level2") {
maxBaseCurrency = 10;
} else if (level == "level3") {
maxBaseCurrency = 1;
} else {
maxBaseCurrency = 0.5;
}
while(1) {
Sleep(1000);
auto ticker = exchange.GetTicker();
auto acc = exchange.GetAccount();
if (maxBaseCurrency != -1 && maxBaseCurrency < acc.Stocks + acc.FrozenStocks) {
// Stop execution strategy trading logic.
LogStatus(_D(), "level:", level, "Positions exceeding the usage limit of the registration code will no longer execute the strategy trading logic!");
continue;
}
// Other trading logic
// Normal output of status bar information
LogStatus(_D(), "level:", level, "The strategy is working properly! ticker data: \n", ticker);
}
}
応用例:使用Meta
戦略によって運用される資産の量を制限する.
戦略の賃貸者のために資本制限を行う必要があります.Meta
登録コードを生成する際に設定された値は 190文字を超えないこと,GetMeta()
メタデータがない場合 (Meta
戦略登録コードを生成する際に設定され,GetMeta()
バックテストシステムでは動作しません.
原始語Socket
アクセス,サポートtcp
, udp
, tls
, unix
4つの一般的な通信プロトコルをサポートします.mqtt
, nats
, amqp
, kafka
データベースに接続するサポート:sqlite3
, mysql
, postgres
, clickhouse
.
についてDial()
標準呼び出しでは,接続オブジェクトが3つのメソッドを持つ.read
, write
そしてclose
.....read
データを読み取るために使用されます.write
データを送信するために使用されます.close
接続を閉めるために使用されます.
についてread
この方法は次のパラメータをサポートします.
ws.read()
.ws.read(2000)
2秒 (2000ミリ秒) のタイムアウトを指定する.-1
機能がメッセージの有無に関わらず即座に返信することを意味します.例えば:ws.read(-1)
- わかった
パラメータを転送する-2
つまり,この関数はメッセージを含むか,ないか,すぐに返信しますが,最新のメッセージのみが返信され,バッファ化されたメッセージは捨てられます.例えば,ws.read(-2)
.read()
機能バッファの記述:
WebSocket プロトコルによって押された受信データは,戦略の間の時間間隔がread()
函数呼び出しが長すぎる.これらのデータはバッファーに格納され,そのデータ構造は最大2000のキューである.2000を超えると,最新のデータがバッファーに入力され,最も古いデータは削除される.
シナリオ | パラメーターなし | パラメータ: -1 | パラメーター: -2 | パラメータ: 2000 ミリ秒 |
---|---|---|---|---|
すでにバッファにあるデータ | 最古のデータをすぐに返します. | 最古のデータをすぐに返します. | 最新のデータをすぐに返します | 最古のデータをすぐに返します. |
バッファーにデータがない | データにブロックされたときに戻す | すぐに null を返します | すぐに null を返します | 2000 ms を待って,データがない場合は null を返します.データがある場合は null を返します. |
WebSocket 接続は,底辺の接続によって切断または再接続されます. | read() 機能は空の文字列を返します.つまり: |
オブジェクト
ダイヤル (住所) ダイヤル (住所,タイムアウト)
アドレスを要求します アドレス 本当 文字列 タイムアウト秒 タイムアウト 偽り 番号
function main(){
// Dial supports tcp://,udp://,tls://,unix://protocol, you can add a parameter to specify the number of seconds for the timeout
var client = Dial("tls://www.baidu.com:443")
if (client) {
// write can be followed by a numeric parameter to specify the timeout, write returns the number of bytes successfully sent
client.write("GET / HTTP/1.1\nConnection: Closed\n\n")
while (true) {
// read can be followed by a numeric parameter specifying the timeout in milliseconds. Returning null indicates an error or timeout or that the socket has been closed
var buf = client.read()
if (!buf) {
break
}
Log(buf)
}
client.close()
}
}
def main():
client = Dial("tls://www.baidu.com:443")
if client:
client.write("GET / HTTP/1.1\nConnection: Closed\n\n")
while True:
buf = client.read()
if not buf:
break
Log(buf)
client.close()
void main() {
auto client = Dial("tls://www.baidu.com:443");
if(client.Valid) {
client.write("GET / HTTP/1.1\nConnection: Closed\n\n");
while(true) {
auto buf = client.read();
if(buf == "") {
break;
}
Log(buf);
}
client.close();
}
}
ダイヤル関数呼び出しの例:
function main() {
LogStatus("Connecting...")
// Accessing WebSocket interface of Binance
var client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")
if (!client) {
Log("Connection failed, program exited")
return
}
while (true) {
// read returns only the data retrieved after the read call
var buf = client.read()
if (!buf) {
break
}
var table = {
type: 'table',
title: 'Ticker Chart',
cols: ['Currency', 'Highest', 'Lowest', 'Buy 1', 'Sell 1', 'Last traded price', 'Volume', 'Update time'],
rows: []
}
var obj = JSON.parse(buf)
_.each(obj, function(ticker) {
table.rows.push([ticker.s, ticker.h, ticker.l, ticker.b, ticker.a, ticker.c, ticker.q, _D(ticker.E)])
})
LogStatus('`' + JSON.stringify(table) + '`')
}
client.close()
}
import json
def main():
LogStatus("Connecting...")
client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr")
if not client:
Log("Connection failed, program exited")
return
while True:
buf = client.read()
if not buf:
break
table = {
"type" : "table",
"title" : "Ticker Chart",
"cols" : ['Currency', 'Highest', 'Lowest', 'Buy 1', 'Sell 1', 'Last traded price', 'Volume', 'Update time'],
"rows" : []
}
obj = json.loads(buf)
for i in range(len(obj)):
table["rows"].append([obj[i]["s"], obj[i]["h"], obj[i]["l"], obj[i]["b"], obj[i]["a"], obj[i]["c"], obj[i]["q"], _D(int(obj[i]["E"]))])
LogStatus('`' + json.dumps(table) + '`')
client.close()
void main() {
LogStatus("Connecting...");
auto client = Dial("wss://stream.binance.com:9443/ws/!ticker@arr");
if(!client.Valid) {
Log("Connection failed, program exited");
return;
}
while(true) {
auto buf = client.read();
if(buf == "") {
break;
}
json table = R"({
"type" : "table",
"title" : "Ticker Chart",
"cols" : ["Currency", "Highest", "Lowest", "Buy 1", "Sell 1", "Last traded price", "Volume", "Update time"],
"rows" : []
})"_json;
json obj = json::parse(buf);
for(auto& ele : obj.items()) {
table["rows"].push_back({ele.value()["s"], ele.value()["h"], ele.value()["l"], ele.value()["b"], ele.value()["a"], ele.value()["c"],
ele.value()["q"], _D(ele.value()["E"])});
}
LogStatus("`" + table.dump() + "`");
}
client.close();
}
バイナンス WebSocket ticker インターフェースにアクセスするには:
var ws = null
function main(){
var param = {
"op": "subscribe",
"args": [{
"channel": "tickers",
"instId": "BTC-USDT"
}]
}
// When calling Dial function, specify reconnect=true to set reconnection mode and payload to be the message sent when reconnecting. When the WebSocket connection is disconnected, it will reconnect and send messages automatically.
ws = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true&payload="+ JSON.stringify(param))
if(ws){
var pingCyc = 1000 * 20
var lastPingTime = new Date().getTime()
while(true){
var nowTime = new Date().getTime()
var ret = ws.read()
Log("ret:", ret)
if(nowTime - lastPingTime > pingCyc){
var retPing = ws.write("ping")
lastPingTime = nowTime
Log("Send : ping", "#FF0000")
}
LogStatus("Current time:", _D())
Sleep(1000)
}
}
}
function onexit() {
ws.close()
Log("exit")
}
import json
import time
ws = None
def main():
global ws
param = {
"op": "subscribe",
"args": [{
"channel": "tickers",
"instId": "BTC-USDT"
}]
}
ws = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true&payload=" + json.dumps(param))
if ws:
pingCyc = 1000 * 20
lastPingTime = time.time() * 1000
while True:
nowTime = time.time() * 1000
ret = ws.read()
Log("ret:", ret)
if nowTime - lastPingTime > pingCyc:
retPing = ws.write("ping")
lastPingTime = nowTime
Log("Send: ping", "#FF0000")
LogStatus("Current time:", _D())
Sleep(1000)
def onexit():
ws.close()
Log("exit")
auto objWS = Dial("wss://ws.okx.com:8443/ws/v5/public|compress=gzip_raw&mode=recv&reconnect=true");
void main() {
json param = R"({
"op": "subscribe",
"args": [{
"channel": "tickers",
"instId": "BTC-USDT"
}]
})"_json;
objWS.write(param.dump());
if(objWS.Valid) {
uint64_t pingCyc = 1000 * 20;
uint64_t lastPingTime = Unix() * 1000;
while(true) {
uint64_t nowTime = Unix() * 1000;
auto ret = objWS.read();
Log("ret:", ret);
if(nowTime - lastPingTime > pingCyc) {
auto retPing = objWS.write("ping");
lastPingTime = nowTime;
Log("Send: ping", "#FF0000");
}
LogStatus("Current time:", _D());
Sleep(1000);
}
}
}
void onexit() {
objWS.close();
Log("exit");
}
OKX
var ws = null
function main(){
var param = {"sub": "market.btcusdt.detail", "id": "id1"}
ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload="+ JSON.stringify(param))
if(ws){
while(1){
var ret = ws.read()
Log("ret:", ret)
// Respond to heartbeat packet operations
try {
var jsonRet = JSON.parse(ret)
if(typeof(jsonRet.ping) == "number") {
var strPong = JSON.stringify({"pong" : jsonRet.ping})
ws.write(strPong)
Log("Respond to ping, send pong:", strPong, "#FF0000")
}
} catch(e) {
Log("e.name:", e.name, "e.stack:", e.stack, "e.message:", e.message)
}
LogStatus("Current time:", _D())
Sleep(1000)
}
}
}
function onexit() {
ws.close()
Log("Execute the ws.close() function")
}
import json
ws = None
def main():
global ws
param = {"sub" : "market.btcusdt.detail", "id" : "id1"}
ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload=" + json.dumps(param))
if ws:
while True:
ret = ws.read()
Log("ret:", ret)
# Respond to heartbeat packet operations
try:
jsonRet = json.loads(ret)
if "ping" in jsonRet and type(jsonRet["ping"]) == int:
strPong = json.dumps({"pong" : jsonRet["ping"]})
ws.write(strPong)
Log("Respond to ping, send pong:", strPong, "#FF0000")
except Exception as e:
Log("e:", e)
LogStatus("Current time:", _D())
Sleep(1000)
def onexit():
ws.close()
Log("Execute the ws.close() function")
using namespace std;
void main() {
json param = R"({"sub" : "market.btcusdt.detail", "id" : "id1"})"_json;
auto ws = Dial("wss://api.huobi.pro/ws|compress=gzip&mode=recv&reconnect=true&payload=" + param.dump());
if(ws.Valid) {
while(true) {
auto ret = ws.read();
Log("ret:", ret);
// Respond to heartbeat packet operations
try
{
auto jsonRet = json::parse(ret);
if(jsonRet["ping"].is_number()) {
json pong = R"({"pong" : 0})"_json;
pong["pong"] = jsonRet["ping"];
auto strPong = pong.dump();
ws.write(strPong);
Log("Respond to ping, send pong:", strPong, "#FF0000");
}
} catch(exception &e)
{
Log("e:", e.what());
}
LogStatus("Current time:", _D());
Sleep(1000);
}
}
}
void onexit() {
// ws.close();
Log("Execute the ws.close() function");
}
Huobiの WebSocket ティッカーインターフェイスへのアクセス:
function getLogin(pAccessKey, pSecretKey, pPassphrase) {
// Signature function for login
var ts = (new Date().getTime() / 1000).toString()
var login = {
"op": "login",
"args":[{
"apiKey" : pAccessKey,
"passphrase" : pPassphrase,
"timestamp" : ts,
"sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey) // exchange.HMAC has been deprecated and is temporarily supported. Please use the latest exchange.Encode function instead.
}]
}
return login
}
var client_private = null
function main() {
// Because the read function uses a timeout setting, filtering the timeout reports errors that would otherwise be output with redundant errors
SetErrorFilter("timeout")
// Position channel subscription information
var posSubscribe = {
"op": "subscribe",
"args": [{
"channel": "positions",
"instType": "ANY"
}]
}
var accessKey = "xxx"
var secretKey = "xxx"
var passphrase = "xxx"
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
client_private.write(JSON.stringify(getLogin(accessKey, secretKey, passphrase)))
Sleep(3000) // When logging in, you cannot subscribe to private channels immediately, you need to wait for server response
client_private.write(JSON.stringify(posSubscribe))
if (client_private) {
var lastPingTS = new Date().getTime()
while (true) {
var buf = client_private.read(-1)
if (buf) {
Log(buf)
}
// Detect disconnection, reconnect
if (buf == "" && client_private.write(JSON.stringify(posSubscribe)) == 0) {
Log("Disconnection detected, close connection, reconnect")
client_private.close()
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
client_private.write(JSON.stringify(getLogin(accessKey, secretKey, passphrase)))
Sleep(3000)
client_private.write(JSON.stringify(posSubscribe))
}
// Send heartbeat packets
var nowPingTS = new Date().getTime()
if (nowPingTS - lastPingTS > 10 * 1000) {
client_private.write("ping")
lastPingTS = nowPingTS
}
}
}
}
function onexit() {
var ret = client_private.close()
Log("Close the connection!", ret)
}
import json
import time
def getLogin(pAccessKey, pSecretKey, pPassphrase):
ts = str(time.time())
login = {
"op": "login",
"args":[{
"apiKey" : pAccessKey,
"passphrase" : pPassphrase,
"timestamp" : ts,
"sign" : exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey)
}]
}
return login
client_private = None
def main():
global client_private
SetErrorFilter("timeout")
posSubscribe = {
"op": "subscribe",
"args": [{
"channel": "positions",
"instType": "ANY"
}]
}
accessKey = "xxx"
secretKey = "xxx"
passphrase = "xxx"
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
client_private.write(json.dumps(getLogin(accessKey, secretKey, passphrase)))
Sleep(3000)
client_private.write(json.dumps(posSubscribe))
if client_private:
lastPingTS = time.time() * 1000
while True:
buf = client_private.read(-1)
if buf:
Log(buf)
if buf == "" and client_private.write(json.dumps(posSubscribe)) == 0:
Log("Disconnection detected, close connection, reconnect")
ret = client_private.close()
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private")
client_private.write(json.dumps(getLogin(accessKey, secretKey, passphrase)))
Sleep(3000)
client_private.write(json.dumps(posSubscribe))
nowPingTS = time.time() * 1000
if nowPingTS - lastPingTS > 10 * 1000:
client_private.write("ping")
lastPingTS = nowPingTS
def onexit():
ret = client_private.close()
Log("Close the connection!", ret)
auto client_private = Dial("wss://ws.okx.com:8443/ws/v5/private");
json getLogin(string pAccessKey, string pSecretKey, string pPassphrase) {
auto ts = std::to_string(Unix());
json login = R"({
"op": "login",
"args": [{
"apiKey": "",
"passphrase": "",
"timestamp": "",
"sign": ""
}]
})"_json;
login["args"][0]["apiKey"] = pAccessKey;
login["args"][0]["passphrase"] = pPassphrase;
login["args"][0]["timestamp"] = ts;
login["args"][0]["sign"] = exchange.HMAC("sha256", "base64", ts + "GET" + "/users/self/verify", pSecretKey);
return login;
}
void main() {
SetErrorFilter("timeout");
json posSubscribe = R"({
"op": "subscribe",
"args": [{
"channel": "positions",
"instType": "ANY"
}]
})"_json;
auto accessKey = "xxx";
auto secretKey = "xxx";
auto passphrase = "xxx";
client_private.write(getLogin(accessKey, secretKey, passphrase).dump());
Sleep(3000);
client_private.write(posSubscribe.dump());
if (client_private.Valid) {
uint64_t lastPingTS = Unix() * 1000;
while (true) {
auto buf = client_private.read(-1);
if (buf != "") {
Log(buf);
}
if (buf == "") {
if (client_private.write(posSubscribe.dump()) == 0) {
Log("Disconnection detected, close connection, reconnect");
client_private.close();
client_private = Dial("wss://ws.okx.com:8443/ws/v5/private");
client_private.write(getLogin(accessKey, secretKey, passphrase).dump());
Sleep(3000);
client_private.write(posSubscribe.dump());
}
}
uint64_t nowPingTS = Unix() * 1000;
if (nowPingTS - lastPingTS > 10 * 1000) {
client_private.write("ping");
lastPingTS = nowPingTS;
}
}
}
}
void onexit() {
client_private.close();
Log("exit");
}
OKX
var client = null
function main() {
// client = Dial("sqlite3://:memory:") // Using an in-memory database
client = Dial("sqlite3://test1.db") // Open/connect to the database file in the docker's directory
// record handle
var sqlite3Handle = client.fd()
Log("sqlite3Handle:", sqlite3Handle)
// Querying tables in the database
var ret = client.exec("SELECT name FROM sqlite_master WHERE type='table'")
Log(ret)
}
function onexit() {
Log("Execute client.close()")
client.close()
}
// Not supported
// Not supported
データベースに接続する際に Dial 関数によって返される接続 オブジェクトには 2 つの独自のメソッド 関数があります.
exec(sqlString)
: SQL 文を SQL 文と類似した方法で実行するために使用されます.DBExec()
function.fd()
についてfd()
この関数は,他のスレッドが再接続するために使用するハンドル (例えば,ハンドル変数はハンドル) を返します (Dial によって作成されたオブジェクトが既に実行によって閉じられた場合でも).close()
接続を閉じる機能) を使って,ハンドルをハンドルにDial()
機能などDial(handle)
再利用接続
ダイヤル関数と接続する例ですsqlite3
database.詳細についてaddress
パラメータ,|
通常の住所の後ろの記号:wss://ws.okx.com:8443/ws/v5/public
もしそうなら|
パラメータ文字列の文字列,その後||
機能のパラメータの設定です. それぞれのパラメータは,&
文字は,例えば,ss5
プロキシと圧縮パラメータは次のように組み合わせることができます.Dial("wss://ws.okx.com:8443/ws/v5/public|proxy=socks5://xxx:9999&compress=gzip_raw&mode=recv")
ダイヤル機能のアドレスパラメータによってサポートされる機能 | パラメータ説明 |
---|---|
WebSocket プロトコルのデータ圧縮に関連するパラメータ: compress=パラメータ値 | gzip は標準 gzip でない場合は,拡張メソッド: gzip_raw を使用できます. |
WebSocket プロトコルデータ圧縮に関連するパラメータ: mode=パラメータ値 | モードは圧縮モードで,モードパラメータは二重で,送信,recv. dualは二方向圧縮,圧縮データを送信,圧縮データ受信.送信は圧縮データを送信する.recvは圧縮データを受け取る,ローカルデコンプレッション. |
WebSocket プロトコルは,元となる自動再接続関連パラメータを設定します: reconnect=パラメータ値 | reconnect は reconnect を設定するかどうか, reconnect=true は reconnect を有効にするかどうかです.このパラメータが設定されていない場合,デフォルトでは reconnect はありません. |
WebSocket プロトコルは,基礎となる自動再接続関連パラメータを設定します: interval=パラメータ値 | intervalは再試行間隔,ミリ秒で,interval=10000は再試行間隔10秒,デフォルトは1秒で,設定されていない場合,つまりinterval=1000です. |
WebSocket プロトコルは,基礎となる自動再接続関連パラメータを設定します: payload=パラメータ値 | payload は WebSocket が再接続されたときに送信されるサブスクリプションメッセージです.例えば: payload=okokok. |
靴下5のパラメータに関するプロキシ:プロキシ=パラメータ値 | プロキシは ss5 プロキシ設定です パラメータ値形式: socks5://name:pwd@192.168.0.1:1080名前はSS5サーバーのユーザー名 pwdはSS5サーバーのログインパスワード 1080はSS5サービスポートです |
についてDial()
この機能はライブ取引のみに対応しています
ダイヤル関数を使用してデータベースに接続するときは,接続文字列は各データベースのgo言語ドライバープロジェクトを参照して記述されます.
サポートされているデータベース | 推進プロジェクト | 接続文字列 | コメント |
---|---|---|---|
スクライト3 | github.com/mattn/go-sqlite3 | sqlite3://ファイル:test.db?キャッシュ=共有&モード=メモリ | についてsqlite3:// 前項は sqlite3 データベースが使用されていることを示します.Dial("sqlite3://test1.db") |
mysql | github.com/go-sql-driver/mysql | mysql://username:yourpassword@tcp (あなたのパスワード@tcp)localhost:3306) /あなたのデータベース?チャルセット=utf8mb4 | – |
産後 | github.com/lib/pq | postgres://user=postgres dbname=yourdatabase sslmode=disable password=yourpassword ホスト=ローカルホスト ポート=5432 | – |
クリックハウス | github.com/ClickHouse/clickhouse-go | クリックハウス://tcp://host:9000?ユーザー名=ユーザー名&パスワード=あなたのパスワード&データベース=youdatabase | – |
確認してください.payload
設定された内容address
パラメータには文字が含まれています.=
解析に影響を与える可能性があります.address
パラメータDial
この例のようなものです
backPack Exchange websocket のプライベートインターフェースの呼び出し例:
var client = null
function main() {
// Base64-encoded public key of the key pair, i.e. the access key configured on FMZ
var base64ApiKey = "xxx"
var ts = String(new Date().getTime())
var data = "instruction=subscribe×tamp=" + ts + "&window=5000"
// Since signEd25519 returns a base64 encoding, it contains the character "="
var signature = signEd25519(data)
// The payload may contain the character "=" after being encoded by JSON
payload = {
"method": "SUBSCRIBE",
"params": ["account.orderUpdate"],
"signature": [base64ApiKey, signature, ts, "5000"]
}
client = Dial("wss://ws.backpack.exchange")
client.write(JSON.stringify(payload))
if (!client) {
Log("Connection failed, program exited")
return
}
while (true) {
var buf = client.read()
Log(buf)
}
}
function onexit() {
client.close()
}
function signEd25519(data) {
return exchange.Encode("ed25519.seed", "raw", "base64", data, "base64", "{{secretkey}}")
}
次の呼び出しはうまく動作します.
client = Dial("wss://ws.backpack.exchange")
client.write(JSON.stringify(payload))
文字を書き込むとpayload
機能しない場合,例えば
client = Dial("wss://ws.backpack.exchange|payload=" + JSON.stringify(payload))
JavaScriptだけが JavaScript の使用をサポートしています.mqtt
, nats
, amqp
そしてkafka
ダイヤル関数における通信プロトコル. JavaScript 言語戦略コードは,4つのプロトコルの使用を示す例として使用されます.mqtt
, nats
, amqp
そしてkafka
:
// We need to configure and deploy proxy servers for each protocol first.
// For the sake of demonstration, the subscription (read operation) and publishing (write operation) of the topic test_topic are all performed in the current strategy.
var arrConn = []
var arrName = []
function main() {
LogReset(1)
conn_nats = Dial("nats://admin@127.0.0.1:4222?topic=test_topic")
conn_mqtt = Dial("mqtt://127.0.0.1:1883?topic=test_topic")
conn_amqp = Dial("amqp://q:admin@127.0.0.1:5672/?queue=test_Queue")
conn_kafka = Dial("kafka://localhost:9092/test_topic")
arrConn = [conn_nats, conn_amqp, conn_mqtt, conn_kafka]
arrName = ["nats", "amqp", "mqtt", "kafka"]
while (true) {
for (var i in arrConn) {
var conn = arrConn[i]
var name = arrName[i]
// Write data
conn.write(name + ", time: " + _D() + ", test msg.")
// Read data
var readMsg = conn.read(1000)
Log(name + " readMsg: ", readMsg, "#FF0000")
}
Sleep(1000)
}
}
function onexit() {
for (var i in arrConn) {
arrConn[i].close()
Log("close", arrName[i], "connect")
}
}
詳細なドキュメント参照:FMZを調査する: ライブ取引戦略間の通信プロトコルの実践
Http リクエストを送信します.
リクエストの応答データを返します.JSON
文字列で解析できます.JSON.parse()
機能についてJavaScript
言語戦略とjson::parse()
機能についてC++
言語戦略.デバッグがオプション構造で true に設定されている場合,返却値はオブジェクト (JSON) である.デバッグが false に設定されている場合,返却値は文字列である.
文字列,オブジェクト
HttpQuery (URL) HttpQuery (URL,オプション)
Http リクエスト URL url 本当 文字列 例えば,Http リクエストに関連する設定は,次のように構造化できます:
{
method: "POST",
body: "a=10&b=20&c=30",
charset: "UTF-8",
cookie: "session_id=12345; lang=en",
profile: "chrome_103",
debug: false,
headers: {"TEST-HTTP-QUERY": "123"},
timeout: 1000
}
tls
指紋を
サポートされている設定には以下のオプションが含まれます.
chrome_: は"chrome_103"
, "chrome_104"
, "chrome_105"
, "chrome_106"
, "chrome_107"
, "chrome_108"
, "chrome_109"
, "chrome_110"
, "chrome_111"
, "chrome_112"
, "chrome_117"
ありがとうございました
サファリ"safari_15_6_1"
, "safari_16_0"
, "safari_ipad_15_6"
, "safari_ios_15_5"
, "safari_ios_15_6"
, "safari_ios_16_0"
ありがとうございました
ファイアフォックス:"firefox_102"
, "firefox_104"
, "firefox_105"
, "firefox_106"
, "firefox_108"
, "firefox_110"
, "firefox_117"
ありがとうございました
オペラ"opera_89"
, "opera_90"
, "opera_91"
ありがとうございました
ザランド:"zalando_android_mobile"
, "zalando_ios_mobile"
ありがとうございました
ナイキ"nike_ios_mobile"
, "nike_android_mobile"
ありがとうございました
雲の摩天楼"cloudscraper"
ありがとうございました
mms_:"mms_ios"
ありがとうございました
メッシュ_:"mesh_ios"
, "mesh_ios_1"
, "mesh_ios_2"
, "mesh_android"
, "mesh_android_1"
, "mesh_android_2"
ありがとうございました
確認した"confirmed_ios"
, "confirmed_android"
ありがとうございました
わかった."okhttp4_android_7"
, "okhttp4_android_8"
, "okhttp4_android_9"
, "okhttp4_android_10"
, "okhttp4_android_11"
, "okhttp4_android_12"
, "okhttp4_android_13"
,true
についてHttpQuery
返信メッセージを返します.false
単一のデータです.Body
返信メッセージが返されます.profile
フィールドは,外に出ることができます.オプション 偽り オブジェクト
function main(){
// An example of GET access without parameters
var info = JSON.parse(HttpQuery("https://www.okx.com/api/v5/public/time"))
Log(info)
// An example of GET access with parameters
var ticker = JSON.parse(HttpQuery("https://www.okx.com/api/v5/market/books?instId=BTC-USDT"))
Log(ticker)
}
import json
import urllib.request
def main():
# HttpQuery does not support Python, you can use the urllib/urllib2 library instead
info = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/time").read().decode('utf-8'))
Log(info)
ticker = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/market/books?instId=BTC-USDT").read().decode('utf-8'))
Log(ticker)
void main() {
auto info = json::parse(HttpQuery("https://www.okx.com/api/v5/public/time"));
Log(info);
auto ticker = json::parse(HttpQuery("https://www.okx.com/api/v5/market/books?instId=BTC-USDT"));
Log(ticker);
}
OKX パブリック ティッカー API インターフェースへのアクセス例.
function main() {
// Setting proxy and sending an http request for this time, no username, no password, this http request will be sent through the proxy
HttpQuery("socks5://127.0.0.1:8889/http://www.baidu.com/")
// Setting proxy and sending an http request for this time, enter the user name and password, only the current call to HttpQuery takes effect, and then call HttpQuery again ("http://www.baidu.com") so that the proxy will not be used.
HttpQuery("socks5://username:password@127.0.0.1:8889/http://www.baidu.com/")
}
# HttpQuery does not support Python, you can use the urllib/urllib2 library instead
void main() {
HttpQuery("socks5://127.0.0.1:8889/http://www.baidu.com/");
HttpQuery("socks5://username:password@127.0.0.1:8889/http://www.baidu.com/");
}
HttpQuery関数はプロキシ設定を使用します.
についてHttpQuery()
機能のみサポートJavaScript
, C++
言語Python
言語はurllib
Http リクエストを直接送信します.HttpQuery()
取引所のインターフェースにアクセスするために主に使用されます. チケット情報などの公開インターフェースなど,署名を必要としません.HttpQuery()
バックテストシステムでリクエストを送信するために使用できます (ただGET
バックテストは,異なる研究機関への20回の訪問に限定されています.URLs
そしてHttpQuery()
データをキャッシュします.URL
2回目でアクセスされる場合,HttpQuery()
この関数はキャッシュされたデータを返し,実際のネットワークリクエストは起こらない.
{@fun/Global/HttpQuery_Go HttpQuery_Go} このビデオは,
Http リクエストを送信します.HttpQuery
function.
についてHttpQuery_Go()
Http リクエストの結果を取得するために使用できる並行オブジェクトをすぐに返します.wait
方法 方法JSON.parse()
解析するために使用できます.JSON.parse()
機能についてJavaScript
言語の戦略について
オブジェクト
HttpQuery_Go (URL) HttpQuery_Go (URL,オプション)
Http リクエスト URL url 本当 文字列 例えば,Http リクエストに関連する設定は,次のように構造化できます:
{
method: "POST",
body: "a=10&b=20&c=30",
charset: "UTF-8",
cookie: "session_id=12345; lang=en",
// profile: "",
debug: false,
headers: {"TEST-HTTP-QUERY": "123"},
timeout: 1000
}
tls
fingerprints.true
このHttpQuery_Go
返信メッセージを返します.false
単一のデータです.Body
返信メッセージが返されます.profile
フィールドは,外に出ることができます.オプション 偽り オブジェクト
function main() {
// Create the first asynchronous thread
var r1 = HttpQuery_Go("https://www.okx.com/api/v5/market/tickers?instType=SPOT")
// Create the second asynchronous thread
var r2 = HttpQuery_Go("https://api.huobi.pro/market/tickers")
// Get the return value of the first asynchronous thread call
var tickers1 = r1.wait()
// Get the return value of the second asynchronous thread call
var tickers2 = r2.wait()
// Print results
Log("tickers1:", tickers1)
Log("tickers2:", tickers2)
}
# Not supported
// Not supported
取引所の公開インターフェイスへの非同期アクセス
についてHttpQuery_Go()
機能のみサポートJavaScript
についてPython
言語は,urllib
Http リクエストを直接送信します.HttpQuery_Go()
取引所で署名を必要としないインターフェースにアクセスするために主に使用されます.HttpQuery_Go
バックテストシステムではサポートされていません.
{@fun/Global/HttpQuery HttpQuery} このビデオは,
この関数は,入力されたパラメータに従ってデータをコードします.
についてEncode
暗号化や暗号化後にデータを返します
文字列
エンコード (algo, inputFormat, output) 形式,データ エンコード (algo, inputFormat, output) 形式,データ,キー 形式,キー
パラメータalgo
暗号化計算に使用されたアルゴリズムです. サポート設定は:raw
(アルゴリズムが使用されていない) "サイン", algo
また: algo
また: algo
ed25519.seed
計算する
アルゴ
本当
文字列
データの形式を指定するために使用されます.data
パラメータinputFormat
パラメータは次のいずれかに設定できます:raw
, hex
, base64
, string
hex
base64
文字列が文字列であることを意味します.
input 形式
本当
文字列
出力のデータ形式を指定するために使用されます.outputFormat
パラメータは次のいずれかに設定できます:raw
, hex
, base64
, string
hex
base64
文字列が文字列であることを意味します.
output 形式
本当
文字列
パラメーターdata
処理されるデータです
データ
本当
文字列
データの形式を指定するために使用されます.key
パラメータkey
パラメータは次のいずれかに設定できます:raw
, hex
, base64
, string
hex
base64
文字列が文字列であることを意味します.
キー形式
偽り
文字列
パラメーターkey
秘密鍵はHMAC
パラメーターkey
パラメータがalgo
設定されています.sign
またはsignTx
.....key
パラメータは,HMAC
暗号化algo
パラメータは
function main() {
Log(Encode("raw", "raw", "hex", "example", "raw", "123")) // 6578616d706c65
Log(Encode("raw", "raw", "hex", "example")) // 6578616d706c65
Log(Encode("sha256", "raw", "hex", "example", "raw", "123")) // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "", "123")) // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
Log(Encode("sha256", "raw", "hex", "example", null, "123")) // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
Log(Encode("sha256", "raw", "hex", "example", "string", "123")) // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("raw", "raw", "hex", "123")) // 313233
Log(Encode("raw", "raw", "base64", "123")) // MTIz
Log(Encode("sha256", "raw", "hex", "example", "hex", "313233")) // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz")) // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
}
def main():
Log(Encode("raw", "raw", "hex", "example", "raw", "123")) # 6578616d706c65
Log(Encode("raw", "raw", "hex", "example", "", "")) # 6578616d706c65
Log(Encode("sha256", "raw", "hex", "example", "raw", "123")) # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "", "123")) # 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
Log(Encode("sha256", "raw", "hex", "example", "string", "123")) # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("raw", "raw", "hex", "123", "", "")) # 313233
Log(Encode("raw", "raw", "base64", "123", "", "")) # MTIz
Log(Encode("sha256", "raw", "hex", "example", "hex", "313233")) # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz")) # 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
void main() {
Log(Encode("raw", "raw", "hex", "example", "raw", "123")); // 6578616d706c65
Log(Encode("raw", "raw", "hex", "example")); // 6578616d706c65
Log(Encode("sha256", "raw", "hex", "example", "raw", "123")); // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "", "123")); // 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c
Log(Encode("sha256", "raw", "hex", "example", "string", "123")); // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("raw", "raw", "hex", "123")); // 313233
Log(Encode("raw", "raw", "base64", "123")); // MTIz
Log(Encode("sha256", "raw", "hex", "example", "hex", "313233")); // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
Log(Encode("sha256", "raw", "hex", "example", "base64", "MTIz")); // 698d54f0494528a759f19c8e87a9f99e75a5881b9267ee3926bcf62c992d84ba
}
エンコード関数呼び出しの例
function main(){
var ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello") // e4bda0e5a5bd
Log(ret1)
var ret2 = Encode("text.decoder.utf8", "hex", "string", ret1)
Log(ret2)
var ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello") // c4e3bac3
Log(ret3)
var ret4 = Encode("text.decoder.gbk", "hex", "string", ret3)
Log(ret4)
}
def main():
ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello", "", "") # e4bda0e5a5bd
Log(ret1)
ret2 = Encode("text.decoder.utf8", "hex", "string", ret1, "", "")
Log(ret2)
ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello", "", "") # c4e3bac3
Log(ret3)
ret4 = Encode("text.decoder.gbk", "hex", "string", ret3, "", "")
Log(ret4)
void main(){
auto ret1 = Encode("text.encoder.utf8", "raw", "hex", "hello"); // e4bda0e5a5bd
Log(ret1);
auto ret2 = Encode("text.decoder.utf8", "hex", "string", ret1);
Log(ret2);
auto ret3 = Encode("text.encoder.gbk", "raw", "hex", "hello"); // c4e3bac3
Log(ret3);
auto ret4 = Encode("text.decoder.gbk", "hex", "string", ret3);
Log(ret4);
}
パラメータalgo
また,文字列のエンコードと解読をサポートする:
についてEncode()
直接取引にのみサポートされています.key
そしてkeyFormat
パラメータが通過されていない場合,key
暗号化が使用されていません
この瞬間のナノ秒タイムスタンプを
についてUnixNano()
この関数はナノ秒間のタイムスタンプを返します
番号
UnixNano (ユニックスナノ))
function main() {
var time = UnixNano() / 1000000
Log(_N(time, 0))
}
def main():
time = UnixNano()
Log(time)
void main() {
auto time = UnixNano();
Log(time);
}
タイムスタンプを手に入れるには 次のコードを使います
{@fun/Global/Unix Unix} ユニクスは
2階の現在の時刻のタイムスタンプを
2階のタイムスタンプを返します 番号
Unix (ユニックス)
function main() {
var t = Unix()
Log(t)
}
def main():
t = Unix()
Log(t)
void main() {
auto t = Unix();
Log(t);
}
{@fun/Global/UnixNano UnixNano} ユニックス・ナノ
ドーカーが位置するデバイスのシステム情報を取得します.
システム情報 文字列
GetOS (ゲットOS)
function main() {
Log("GetOS:", GetOS())
}
def main():
Log("GetOS:", GetOS())
void main() {
Log("GetOS:", GetOS());
}
例えば,電話でGetOS()
動作するドーカーのための関数マック OS操作システムが返信する可能性があります:darwin/amd64
Appleのコンピュータには複数のハードウェアアーキテクチャがあるからですdarwin
名称はマック OS system.
パラメータの MD5 ハッシュを計算するdata
.
MD5ハッシュ値 文字列
MD5 (データ)
MD5の計算を必要とするデータです データ 本当 文字列
function main() {
Log("MD5", MD5("hello world"))
}
def main():
Log("MD5", MD5("hello world"))
void main() {
Log("MD5", MD5("hello world"));
}
呼び出すMD5("hello world")
この関数で返される値は5eb63bbbe01eeed093cb22bb8f5acdc3
.
{@fun/Global/Encode エンコード}
データベース インターフェース機能
実行結果を含むオブジェクトスクワール例えば,以下のように
{"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],"values":[[1518970320000,100,99.1,90,100,12345.6]]}
オブジェクト
DBExec (sql)
スクワール命令文字列です スクワール 本当 文字列
function main() {
var strSql = [
":CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
].join("")
var ret = DBExec(strSql)
Log(ret)
// Add a piece of data
Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
// Query data
Log(DBExec(":SELECT * FROM TEST_TABLE;"))
}
def main():
arr = [
":CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
]
strSql = ""
for i in range(len(arr)):
strSql += arr[i]
ret = DBExec(strSql)
Log(ret)
# Add a piece of data
Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
# Query data
Log(DBExec(":SELECT * FROM TEST_TABLE;"))
void main() {
string strSql = ":CREATE TABLE TEST_TABLE(\
TS INT PRIMARY KEY NOT NULL,\
HIGH REAL NOT NULL,\
OPEN REAL NOT NULL,\
LOW REAL NOT NULL,\
CLOSE REAL NOT NULL,\
VOLUME REAL NOT NULL)";
auto ret = DBExec(strSql);
Log(ret);
// Add a piece of data
Log(DBExec(":INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"));
// Query data
Log(DBExec(":SELECT * FROM TEST_TABLE;"));
}
メモリ内のデータベースをサポートするDBExec
機能パラメータスクワールと始まる:
記憶内データベースで動作する場合は,ファイルを書く必要なくより速く動作します.
function main() {
var strSql = [
"CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
].join("")
var ret = DBExec(strSql)
Log(ret)
}
def main():
arr = [
"CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
]
strSql = ""
for i in range(len(arr)):
strSql += arr[i]
ret = DBExec(strSql)
Log(ret)
void main() {
string strSql = "CREATE TABLE TEST_TABLE(\
TS INT PRIMARY KEY NOT NULL,\
HIGH REAL NOT NULL,\
OPEN REAL NOT NULL,\
LOW REAL NOT NULL,\
CLOSE REAL NOT NULL,\
VOLUME REAL NOT NULL)";
auto ret = DBExec(strSql);
Log(ret);
}
テーブルを作れ
function main() {
var strSql = [
"CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
].join("")
Log(DBExec(strSql))
// Add a piece of data
Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
// Query data
Log(DBExec("SELECT * FROM TEST_TABLE;"))
// Modify data
Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000))
// Delete data
Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110))
}
def main():
arr = [
"CREATE TABLE TEST_TABLE(",
"TS INT PRIMARY KEY NOT NULL,",
"HIGH REAL NOT NULL,",
"OPEN REAL NOT NULL,",
"LOW REAL NOT NULL,",
"CLOSE REAL NOT NULL,",
"VOLUME REAL NOT NULL)"
]
strSql = ""
for i in range(len(arr)):
strSql += arr[i]
Log(DBExec(strSql))
# Add a piece of data
Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"))
# Query data
Log(DBExec("SELECT * FROM TEST_TABLE;"))
# Modify data
Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000))
# Delete data
Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110))
void main() {
string strSql = "CREATE TABLE TEST_TABLE(\
TS INT PRIMARY KEY NOT NULL,\
HIGH REAL NOT NULL,\
OPEN REAL NOT NULL,\
LOW REAL NOT NULL,\
CLOSE REAL NOT NULL,\
VOLUME REAL NOT NULL)";
Log(DBExec(strSql));
// Add a piece of data
Log(DBExec("INSERT INTO TEST_TABLE (TS, HIGH, OPEN, LOW, CLOSE, VOLUME) VALUES (1518970320000, 100, 99.1, 90, 100, 12345.6);"));
// Query data
Log(DBExec("SELECT * FROM TEST_TABLE;"));
// Modify data
Log(DBExec("UPDATE TEST_TABLE SET HIGH=? WHERE TS=?", 110, 1518970320000));
// Delete data
Log(DBExec("DELETE FROM TEST_TABLE WHERE HIGH=?", 110));
}
テーブル内のレコードを追加,削除,チェック,変更します.
機能についてDBExec()
パラメータを入力してライブ取引データベース (SQLiteデータベース) を操作できます. リアル取引データベースにデータを追加,削除,チェック,変更の操作を実現します.SQLiteシステムで予約されたテーブル ライブ取引データベース:kvdb
, cfg
, log
, profit
, chart
このテーブルで操作しないでください.取引システムに衝突を引き起こす可能性があるため,そのような操作を行うことは推奨されません.DBExec()
この機能はライブ取引のみに対応しています
{@fun/Global/_G _G} ほら ほら
UUID を作成します.
32ビット UUID 文字列
UUID ((()
function main() {
var uuid1 = UUID()
var uuid2 = UUID()
Log(uuid1, uuid2)
}
def main():
uuid1 = UUID()
uuid2 = UUID()
Log(uuid1, uuid2)
void main() {
auto uuid1 = UUID();
auto uuid2 = UUID();
Log(uuid1, uuid2);
}
についてUUID()
機能はライブ取引のみをサポートします.
事件を聞いて,それは,何があるときに戻ってくるWebSocket
読み取れるデータや並行作業,例えばexchange.Go()
, HttpQuery_Go()
完了しました.
返されたオブジェクトが null ではない場合,Event
返信内容に含まれるのはイベントトリガータイプです.例えば,次の返信値構造:
{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}
オブジェクト
イベントループ イベントループ (タイムアウト)
パラメータtimeout
パラメーターは,このパラメータを表示します.timeout
イベントが0に設定されている場合,戻る前に発生するのを待つ. イベントが0より大きい場合は,タイムアウトを待つように設定し, 0未満の場合,最も最近のイベントをすぐに返します.
タイムアウト
偽り
番号
function main() {
var routine_getTicker = exchange.Go("GetTicker")
var routine_getDepth = exchange.Go("GetDepth")
var routine_getTrades = exchange.Go("GetTrades")
// Sleep(2000), if the Sleep statement is used here, it will cause the subsequent EventLoop function to miss the previous events, because after waiting for 2 seconds, the concurrent function has received the data, and the subsequent EventLoop listening mechanism started, it misses these events.
// These events will not be missed unless EventLoop(-1) is called at the beginning of the first line of code to first initialize the EventLoop's listening mechanism.
// Log("GetDepth:", routine_getDepth.wait()) If the wait function is called in advance to retrieve the result of a concurrent call to the GetDepth function, the event that the GetDepth function receives the result of the request will not be returned in the EventLoop function.
var ts1 = new Date().getTime()
var ret1 = EventLoop(0)
var ts2 = new Date().getTime()
var ret2 = EventLoop(0)
var ts3 = new Date().getTime()
var ret3 = EventLoop(0)
Log("The first concurrent task completed was:", _D(ts1), ret1)
Log("The second concurrent task completed was:", _D(ts2), ret2)
Log("The third concurrent task completed was:", _D(ts3), ret3)
Log("GetTicker:", routine_getTicker.wait())
Log("GetDepth:", routine_getDepth.wait())
Log("GetTrades:", routine_getTrades.wait())
}
import time
def main():
routine_getTicker = exchange.Go("GetTicker")
routine_getDepth = exchange.Go("GetDepth")
routine_getTrades = exchange.Go("GetTrades")
ts1 = time.time()
ret1 = EventLoop(0)
ts2 = time.time()
ret2 = EventLoop(0)
ts3 = time.time()
ret3 = EventLoop(0)
Log("The first concurrent task completed was:", _D(ts1), ret1)
Log("The second concurrent task completed was:", _D(ts2), ret2)
Log("The third concurrent task completed was:", _D(ts3), ret3)
Log("GetTicker:", routine_getTicker.wait())
Log("GetDepth:", routine_getDepth.wait())
Log("GetTrades:", routine_getTrades.wait())
void main() {
auto routine_getTicker = exchange.Go("GetTicker");
auto routine_getDepth = exchange.Go("GetDepth");
auto routine_getTrades = exchange.Go("GetTrades");
auto ts1 = Unix() * 1000;
auto ret1 = EventLoop(0);
auto ts2 = Unix() * 1000;
auto ret2 = EventLoop(0);
auto ts3 = Unix() * 1000;
auto ret3 = EventLoop(0);
Log("The first concurrent task completed was:", _D(ts1), ret1);
Log("The second concurrent task completed was:", _D(ts2), ret2);
Log("The third concurrent task completed was:", _D(ts3), ret3);
Ticker ticker;
Depth depth;
Trades trades;
routine_getTicker.wait(ticker);
routine_getDepth.wait(depth);
routine_getTrades.wait(trades);
Log("GetTicker:", ticker);
Log("GetDepth:", depth);
Log("GetTrades:", trades);
}
初の電話はEventLoop()
実行される場合,最初の動作が実行される場合,EventLoop()
イベントコールバックが開始された後,以前のイベントを逃します. 基礎システムでは,最大500回のイベントコールバックをキャッシュするキュー構造を包み込みます.EventLoop()
500キャッシュの外の後のイベントコールバックは失われます.EventLoop()
基本システム WebSocket のキャッシュキューや,並行関数のキャッシュに影響しないexchange.Go()
. これらのキャッシュでは,データを取得するためにそれぞれの方法を使用する必要があります.EventLoop()
復元される前に取得されたデータのための機能EventLoop()
主な目的は,EventLoop()
戦略層に新しいネットワークデータが基盤システムに受信されたことを通知する機能です. 戦略全体がイベントによって動かされます.EventLoop()
WebSocket 接続,WebSocket で作成されたオブジェクトなどexchange.Go()
データを集めようとしますEventLoop()
機能はライブ取引のみをサポートします.
メイン機能から呼び出されるとメインスレッドのイベントを聞くmain()
戦略を策定するJavaScript
言語,threading.Thread()
実行関数で呼び出せるスレッドを作成し,現在のスレッドのイベントを聞く.
{@fun/Global/Dial Dial}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Trade/exchange.
について__Serve
Http サービス,TCP サービス,Webソケット サービス (Http プロトコルに基づく) を作成するために使用されます.
作成されたサービスの IP アドレスとポートを記録する文字列を返します.例えば:127.0.0.1:8088
, [::]:8089
.
文字列
__Serve (サーバーURI,ハンドラー) __Serve (サーバーURI,ハンドラー,...args)
についてserveURI
パラメータは,プロトコル,IPアドレス,ポート,および他の設定を設定するために使用されます.http://0.0.0.0:8088?gzip=true
つまりhttp://:8088?gzip=true
.
serveURI
パラメータ設定,例えばtcp://127.0.0.1:6666?tls=true
証明書やプライベートキーを追加できます.tls=true&cert_pem=xxxx&cert_key_pem=xxxx
.serveURI
パラメータ設定などhttp://127.0.0.1:6666?gzip=true
; 圧縮設定を設定できます:gzip=true
- わかった
についてserveURI
Https の場合も使用されます.https://127.0.0.1:6666?tls=true&gzip=true
追加することもできますcert_pem
そしてcert_key_pem
証明書の読み込みのパラメータサービスURI
本当
文字列
についてhandler
このパラメータは,ルーティング処理機能 (Http プロトコル),メッセージ処理機能 (TCP プロトコル),ストリーム処理機能 (Webソケット) に渡すのに使用されます.
パラメータによって送信されたコールバック関数handler
複数のパラメータを定義できます 最初のパラメータは ctx オブジェクト (コンテキスト オブジェクト) です
ハンドラー
本当
機能
コールバック関数の実際のパラメータがパラメータとして渡されますhandler
複数のパラメータがある可能性があります.arg
例えば:
__Serve("http://:8088", function(ctx, a, b, c) {
Log(`ctx.host():`, ctx.host(), ", a=", a, ", b=", b, ", c=", c)
}, 1, 2, 3)
パラメータ1
, 2
, 3
呼び出すときに通過した__Serve()
パラメータに対応する機能a
, b
, c
コールバック機能で通過しました
アルグ 偽り 文字列,数,ボール,オブジェクト,配列,関数,ゼロ値,システムでサポートされる他のタイプ
function main() {
let httpServer = __Serve("http://:8088?gzip=true", function (ctx) {
Log("http connect from: ", ctx.remoteAddr(), "->", ctx.localAddr())
let path = ctx.path()
if (path == "/") {
ctx.write(JSON.stringify({
path: ctx.path(),
method: ctx.method(),
headers: ctx.headers(),
cookie: ctx.header("Cookie"),
remote: ctx.remoteAddr(),
query: ctx.rawQuery()
}))
} else if (path == "/tickers") {
let ret = exchange.GetTickers()
if (!ret) {
ctx.setStatus(500)
ctx.write(GetLastError())
} else {
ctx.write(JSON.stringify(ret))
}
} else if (path == "/wss") {
if (ctx.upgrade("websocket")) { // upgrade to websocket
while (true) {
let r = ctx.read(10)
if (r == "") {
break
} else if (r) {
if (r == "ticker") {
ctx.write(JSON.stringify(exchange.GetTicker()))
} else {
ctx.write("not support")
}
}
}
Log("websocket closed", ctx.remoteAddr())
}
} else {
ctx.setStatus(404)
}
})
let echoServer = __Serve("tcp://:8089", function (ctx) {
Log("tcp connect from: ", ctx.remoteAddr(), "->", ctx.localAddr())
while (true) {
let d = ctx.read()
if (!d) {
break
}
ctx.write(d)
}
Log("connect closed")
})
Log("http serve on", httpServer, "tcp serve on", echoServer)
for (var i = 0; i < 5; i++) {
if (i == 2) {
// test Http
var retHttp = HttpQuery("http://127.0.0.1:8088?num=123&limit=100", {"debug": true})
Log("retHttp:", retHttp)
} else if (i == 3) {
// test TCP
var tcpConn = Dial("tcp://127.0.0.1:8089")
tcpConn.write("Hello TCP Server")
var retTCP = tcpConn.read()
Log("retTCP:", retTCP)
} else if (i == 4) {
// test Websocket
var wsConn = Dial("ws://127.0.0.1:8088/wss|compress=gzip")
wsConn.write("ticker")
var retWS = wsConn.read(1000)
Log("retWS:", retWS)
// no depth
wsConn.write("depth")
retWS = wsConn.read(1000)
Log("retWS:", retWS)
}
Sleep(1000)
}
}
# Unsupported
// Unsupported
Websocket
経路にルーティングブランチを設定し,実装コードを設計することができます.Websocket
このセクションのサンプルコードを参照してください.パラメータによって送信されたコールバック関数handler
受け取るctx
パラメータctx
パラメータは,次の方法でデータを取得し書き込むために使用されるコンテキストオブジェクトです.
HTTP/1.1
, tcp
.http://127.0.0.1:8088?num=123
パラメータによって送信されたコールバック処理機能handler
リターン"123"
いつctx.query("num")
呼び出されていますUser-Agent
本願の表記にはctx.header("User-Agent")
.GET
, POST
などctx
Webソケットプロトコルへのコンテキストオブジェクト; スイッチが成功した場合にブール値 (true) と失敗した場合にブール値 (false) を返します.read
タイムアウトパラメータを指定できます.timeout_ms
数ミリ秒でJSON.stringify()
JSON オブジェクトを文字列にコードし,それを書き込みます.WebSocket
暗号化された文字列をクライアントに送信します{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go} ウェブ上で検索するサイト
データを継続的に保存する,この関数は保存できるグローバル辞書関数を実装する.データ構造は,dockerのローカルデータベースファイルに永久に保存されるKVテーブルである.
キー値のデータを保存するk-v
キー値のペア
文字列,数,ボール,オブジェクト,配列,ゼロ値
_G() _G(k) _G(k,v)
パラメータk
保存されたキー値ペアの鍵の名前で,小字・小文字が表示されない.
k
偽り
文字列,ゼロ値
パラメーターv
保存されたキー値ペアのキー値です.JSON
シリーズ化しました
v
偽り
文字列,数,ボール,オブジェクト,配列,ゼロ値
function main(){
// Set a global variable num with a value of 1
_G("num", 1)
// Change a global variable num to the value of the string ok
_G("num", "ok")
// Delete the global variable num
_G("num", null)
// Returns the value of the global variable num
Log(_G("num"))
// Delete all global variables
_G(null)
// Return to live trading ID
var robotId = _G()
}
def main():
_G("num", 1)
_G("num", "ok")
_G("num", None)
Log(_G("num"))
_G(None)
robotId = _G()
void main() {
_G("num", 1);
_G("num", "ok");
_G("num", NULL);
Log(_G("num"));
_G(NULL);
// Not support auto robotId = _G();
}
リアルタイム取引の各個別データベース,_G()
バックテストが完了すると,バックテストシステムに保存されたデータは,_G()
機能が削除されます._G()
ハードウェアデバイスのメモリとハードディスクスペースに応じて合理的に使用し,悪用してはならない.
呼び出すとき_G()
パラメータが通過されなければ,_G()
この関数は,Id
現行のライブ取引._G()
パラメータv
削除を表示する為, null に渡されます.k-v
呼び出すとき_G()
パラメータのみk
文字列で渡され,_G()
保存されたパラメータに対応するキー値を返します.k
. 呼び出すとき_G()
パラメータのみk
すべての記録が0で表示されます.k-v
キー値ペアが削除されます.k-v
キー値ペアが持続的に保存されている場合,_G()
パラメータとして保存されたキー名を入力します.k
パラメータとして新しいキー値を入力v
更新しますk-v
キー値ペア
{@fun/Global/DBExec DBExec} このビデオは
ミリ秒タイムスタンプまたはDate
時間の文字列にオブジェクト.
タイムストリング 文字列
_D() _D (時間) タイムスタンプ,fmt
ミリ秒タイムスタンプかDate
オブジェクト
タイムスタンプ
偽り
番号、対象
文字列をフォーマットJavaScript
言語のデフォルト形式:yyyy-MM-dd hh:mm:ss
; Python
言語のデフォルト形式:%Y-%m-%d %H:%M:%S
; C++
言語のデフォルト形式:%Y-%m-%d %H:%M:%S
- わかった
fmt
偽り
文字列
function main(){
var time = _D()
Log(time)
}
def main():
strTime = _D()
Log(strTime)
void main() {
auto strTime = _D();
Log(strTime);
}
現在の時間文字列を取得してプリントします:
function main() {
Log(_D(1574993606000))
}
def main():
# Running this code on a server in Beijing time: 2019-11-29 10:13:26 , a docker on another server in another region results in: 2019-11-29 02:13:26
Log(_D(1574993606))
void main() {
Log(_D(1574993606000));
}
タイムスタンプは1574993606000,コード変換で:
function main() {
Log(_D(1574993606000, "yyyy--MM--dd hh--mm--ss")) // 2019--11--29 10--13--26
}
def main():
# 1574993606 is timestamped in seconds.
Log(_D(1574993606, "%Y--%m--%d %H--%M--%S")) # 2019--11--29 10--13--26
void main() {
Log(_D(1574993606000, "%Y--%m--%d %H--%M--%S")); // 2019--11--29 10--13--26
}
パラメータでフォーマットするfmt
異なる場合JavaScript
, Python
そしてC++
言語は以下の例で示されている.
パラメータを通過することなく現在の時間文字列を返します._D()
機能についてPython
パラメータは2階のタイムスタンプ (JavaScriptとC++の戦略では1秒は1000ミリ秒) である._D()
タイムスタンプで読み取れる時間文字列を解析するには,ドッカープログラムが位置するオペレーティングシステムのタイムゾーンと時間設定に注意する必要があります._D()
この関数は,docker
{@fun/Global/UnixNano UnixNano}, {@fun/Global/Unix Unix} ユーニックス
浮動小数点番号をフォーマットする
精度設定に従ってフォーマットされた浮動点数 番号
_ N() _ N (数) _N (num,精度)
フォーマットする必要がある浮動小数点番号.
ナンバー
本当
番号
フォーマットの精度設定,パラメータprecision
このパラメータは,precision
4に設定します.
精度
偽り
番号
function main(){
var i = 3.1415
Log(i)
var ii = _N(i, 2)
Log(ii)
}
def main():
i = 3.1415
Log(i)
ii = _N(i, 2)
Log(ii)
void main() {
auto i = 3.1415;
Log(i);
auto ii = _N(i, 2);
Log(ii);
}
例えば_N(3.1415, 2)
削除する3.1415
この関数から返します.3.14
.
function main(){
var i = 1300
Log(i)
var ii = _N(i, -3)
// Check the logs and see that it is 1000
Log(ii)
}
def main():
i = 1300
Log(i)
ii = _N(i, -3)
Log(ii)
void main() {
auto i = 1300;
Log(i);
auto ii = _N(i, -3);
Log(ii);
}
0に書き換えることができます. これは,
パラメータprecision
負の整数です. 負の整数です.
{@fun/Trade/exchange.SetPrecision exchange.SetPrecision} チェンジする
インターフェースの障害耐性を再試します
コールバック関数の実行時に返される値 システムでは,すべてのタイプがサポートされています.論理的誤り値そしてゼロ値.
_C(pfn) _C ((pfn,... args) について
パラメータpfn
函数参照であり,コールバック機能- わかった
pfn
本当
機能
パラメーターコールバック機能複数のパラメータがある可能性があります.arg
パラメータの種類と数arg
測定するコールバック機能- わかった
アルグ
偽り
文字列,数, bool,オブジェクト,配列,関数,すべてのタイプは,ゼロ値などのシステムでサポートされています
function main(){
var ticker = _C(exchange.GetTicker)
// Adjust _C() function retry interval to 2 seconds
_CDelay(2000)
var depth = _C(exchange.GetDepth)
Log(ticker)
Log(depth)
}
def main():
ticker = _C(exchange.GetTicker)
_CDelay(2000)
depth = _C(exchange.GetDepth)
Log(ticker)
Log(depth)
void main() {
auto ticker = _C(exchange.GetTicker);
_CDelay(2000);
auto depth = _C(exchange.GetDepth);
Log(ticker);
Log(depth);
}
パラメータのない誤差容量関数については:
function main(){
var records = _C(exchange.GetRecords, PERIOD_D1)
Log(records)
}
def main():
records = _C(exchange.GetRecords, PERIOD_D1)
Log(records)
void main() {
auto records = _C(exchange.GetRecords, PERIOD_D1);
Log(records);
}
パラメータが誤差耐性のある関数については:
var test = function(a, b){
var time = new Date().getTime() / 1000
if(time % b == 3){
Log("Eligible!", "#FF0000")
return true
}
Log("Retry!", "#FF0000")
return false
}
function main(){
var ret = _C(test, 1, 5)
Log(ret)
}
import time
def test(a, b):
ts = time.time()
if ts % b == 3:
Log("Eligible!", "#FF0000")
return True
Log("Retry!", "#FF0000")
return False
def main():
ret = _C(test, 1, 5)
Log(ret)
// C++ does not support fault tolerance for custom functions in this way
また,カスタム機能の障害耐性にも使用できます.
について_C()
指定された関数を成功して返すまで呼び続けます (パラメータが参照する関数)pfn
リターンゼロまたは偽り呼び出されると呼び出します.pfn
) など_C(exchange.GetTicker)
3秒で再試行します._CDelay()
試行距離を設定する関数です._CDelay(1000)
試行錯誤の間隔を変更する_C()
1秒まで
障害許容は,以下のような機能に限らずに行うことができる.
exchange.GetTicker()
exchange.GetDepth()
exchange.GetTrades()
exchange.GetRecords()
exchange.GetAccount()
exchange.GetOrders()
exchange.GetOrder()
exchange.GetPositions()
呼び出すことができます._C()
誤差耐性について_C()
機能は上記に記載されている機能の障害許容量に限定されていない場合,パラメータpfn
函数呼び出しではなく関数参照です
注目してください._C(exchange.GetTicker)
しない_C(exchange.GetTicker())
.配列の交差点数を返しますarr1
そして配列arr2
.
配列の交差期数arr1
そして配列arr2
- わかった
番号
_ 交差 (arr1,arr2)
エレメントは型の配列である.number
- わかった
arr1
本当
配列
エレメントは型の配列である.number
- わかった
arr2
本当
配列
// Fast line indicator
var arr1 = [1,2,3,4,5,6,8,8,9]
// Slow line indicator
var arr2 = [2,3,4,5,6,7,7,7,7]
function main(){
Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
}
arr1 = [1,2,3,4,5,6,8,8,9]
arr2 = [2,3,4,5,6,7,7,7,7]
def main():
Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2))
Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1))
void main() {
vector<double> arr1 = {1,2,3,4,5,6,8,8,9};
vector<double> arr2 = {2,3,4,5,6,7,7,7,7};
Log("_Cross(arr1, arr2) : ", _Cross(arr1, arr2));
Log("_Cross(arr2, arr1) : ", _Cross(arr2, arr1));
}
数値のセットをシミュレーションして _Cross ((Arr1,Arr2) 関数をテストできます:
返回値が_Cross()
値が正数である場合,上向きの浸透期間を示し,負数である場合,下向きの浸透期間を示し,0は現在の価格と同じです. 具体的な使用説明:内蔵機能に関する分析と使用説明 _Cross.
機能についてJSONParse()
解析するために使用されます.JSON
strings.
JSON
オブジェクト
オブジェクト
JSONParse (JSONパース)
JSON
ストリング
s
本当
文字列
function main() {
let s1 = '{"num": 8754613216564987646512354656874651651358}'
Log("JSON.parse:", JSON.parse(s1)) // JSON.parse: {"num":8.754613216564988e+39}
Log("JSONParse:", JSONParse(s1)) // JSONParse: {"num":"8754613216564987646512354656874651651358"}
let s2 = '{"num": 123}'
Log("JSON.parse:", JSON.parse(s2)) // JSON.parse: {"num":123}
Log("JSONParse:", JSONParse(s2)) // JSONParse: {"num":123}
}
import json
def main():
s1 = '{"num": 8754613216564987646512354656874651651358}'
Log("json.loads:", json.loads(s1)) # json.loads: map[num:8.754613216564987e+39]
Log("JSONParse:", JSONParse(s1)) # JSONParse: map[num:8754613216564987646512354656874651651358]
s2 = '{"num": 123}'
Log("json.loads:", json.loads(s2)) # json.loads: map[num:123]
Log("JSONParse:", JSONParse(s2)) # JSONParse: map[num:123]
void main() {
auto s1 = "{\"num\":8754613216564987646512354656874651651358}";
Log("json::parse:", json::parse(s1));
// Log("JSONParse:", JSONParse(s1)); // The function is not supported.
auto s2 = "{\"num\":123}";
Log("json::parse:", json::parse(s2));
// Log("JSONParse:", JSONParse(s2)); // The function is not supported.
}
JSON の文字列は,文字列の種類として解析されます.JSONParse()
バックテストシステムでは機能がサポートされていません.
出力日記
ログ...msgs
パラメータmsg
出力の内容であり,パラメータmsg
1つ以上で通過できます
メッセージ
偽り
文字列,数,ボール,オブジェクト,配列,システムでサポートされる任意のタイプ,例えば null
function main() {
Log("msg1", "msg2", "msg3")
}
def main():
Log("msg1", "msg2", "msg3")
void main() {
Log("msg1", "msg2", "msg3");
}
複数msg
パラメータは,次の通り渡すことができます:
function main() {
Log("Hello, FMZ Quant!@")
Sleep(1000 * 5)
// Add #ff0000 to the string to print the log in red and push the message
Log("Hello, #ff0000@")
}
def main():
Log("Hello, FMZ Quant!@")
Sleep(1000 * 5)
Log("Hello, #ff0000@")
void main() {
Log("Hello, FMZ Quant!@");
Sleep(1000 * 5);
Log("Hello, #ff0000@");
}
色を設定し,同時にプッシュする場合は,私たちは最初に色を設定し,使用する必要があります@
押す最後の設定するキャラクター.
function main() {
Log("`data:image/png;base64,AAAA`")
}
def main():
Log("`data:image/png;base64,AAAA`")
void main() {
Log("`data:image/png;base64,AAAA`");
}
についてLog()
機能は印刷をサポートするbase64
暗号化された画像は`
そして最後に`
例えば:
import matplotlib.pyplot as plt
def main():
plt.plot([3,6,2,4,7,1])
Log(plt)
についてLog()
直接印刷をサポートするPython
ほらmatplotlib.pyplot
オブジェクトは,そのオブジェクトがsavefig
直接印刷することができます.Log
機能,例えば:
function main() {
Log("[trans]中文|abc[/trans]")
}
def main():
Log("[trans]中文|abc[/trans]")
void main() {
Log("[trans]中文|abc[/trans]");
}
についてLog()
言語の切り替えをサポートします.Log()
この機能は,プラットフォームページの言語設定に基づいて,自動的に対応言語に切り替えるテキストを出力します.例えば:
についてLog()
リアルトレードまたはバックテストシステムのログエリアにログメッセージを出力し,ライブトレードが実行されているときにログはライブトレードデータベースに保存されます.Log()
終了するログメッセージを出力します.@
メールアドレス, WebHook アドレス,などに設定します.設定を押すFMZ Quant トレーディング プラットフォームの現在のアカウントです.デバッグツール,バックテストシステム.メッセージプッシュには周波数制限があります.特定の制限規則は以下のとおりです:ライブ取引の20秒サイクルの内,最後のプッシュメッセージのみが保持されプッシュされ,他のメッセージはフィルタリングされプッシュされません (ログ機能によるプッシュログ出力は,ログエリアで通常印刷され表示されます).
についてWebHook
プッシュ,あなたが書いたサービスプログラムを使用することができますGolang
:
package main
import (
"fmt"
"net/http"
)
func Handle (w http.ResponseWriter, r *http.Request) {
defer func() {
fmt.Println("req:", *r)
}()
}
func main () {
fmt.Println("listen http://localhost:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe(":9090", nil)
}
セットWebHook
中設定を押す: http://XXX.XX.XXX.XX:9090/data?data=Hello_FMZ
- わかった
書き込みの実行後Golang
実行を開始します. 次の戦略は書いていますJavaScript
言語,戦略は実行によって実行されますLog()
メッセージを押して:
function main() {
Log("msg", "@")
}
サービスプログラムGolang
language は push を受信し,サービスプログラムはメッセージをプリントします.
listen http://localhost:9090
req: {GET /data?data=Hello_FMZ HTTP/1.1 1 1 map[User-Agent:[Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.x.xxxx.xxx Safari/537.36] Accept-Encoding:[gzip]] {} <nil> 0 [] false 1XX.XX.X.XX:9090 map[] map[] <nil> map[] XXX.XX.XXX.XX:4xxx2 /data?data=Hello_FMZ <nil> <nil> <nil> 0xc420056300
{@fun/Log/LogReset ログリセット}, {@fun/Log/Logバキュム ログバキュム}
P&L値を記録し,P&L値を印刷し,P&L値に基づいてリターン曲線を描く.
ログ 利益 (利益) ログProfit (利益,... args)
パラメータprofit
戦略の設計アルゴリズムと計算によって得られる収益データです
利益
本当
番号
収益日記に偶然の情報を出力するための拡張パラメータarg
パラメータは"つ以上渡すことができます
アルグ
偽り
文字列,数,ボール,オブジェクト,配列,システムでサポートされる任意のタイプ,例えば null
function main() {
// Print 30 points on the earnings chart
for(var i = 0; i < 30; i++) {
LogProfit(i, '&')
Sleep(500)
}
}
def main():
for i in range(30):
LogProfit(i, '&')
Sleep(500)
void main() {
for(int i = 0; i < 30; i++) {
LogProfit(i, '&');
Sleep(500);
}
}
についてLogProfit
文字で終わったら&
収入表だけ作成し,収入日記を印刷しません.
{@fun/Log/LogProfitReset ログプロフィットリセット}
収入記録や 収入表を全て 消して
ログプロフィットリセット ログProfitReset (残る)
についてremain
このパラメータは,保存するログエントリ (整数値) の数を指定するために使用されます.
留まる
偽り
番号
function main() {
// Print 30 points on the revenue chart, then reset and keep only the last 10 points
for(var i = 0; i < 30; i++) {
LogProfit(i)
Sleep(500)
}
LogProfitReset(10)
}
def main():
for i in range(30):
LogProfit(i)
Sleep(500)
LogProfitReset(10)
void main() {
for(int i = 0; i < 30; i++) {
LogProfit(i);
Sleep(500);
}
LogProfitReset(10);
}
{@fun/Log/LogProfit ログプロフィット}
バックテストシステムまたはライブ取引ページのステータスバーの出力情報
ログステータス...msgs
パラメータmsg
出力の内容であり,パラメータmsg
1つ以上で通過できます
メッセージ
偽り
文字列,数,ボール,オブジェクト,配列,システムでサポートされる任意のタイプ,例えば null
function main() {
LogStatus('This is a general status alert')
LogStatus('This is a status alert in red font #ff0000')
LogStatus('This is a multi-line status message \n I am the second line')
}
def main():
LogStatus('This is a general status alert')
LogStatus('This is a status alert in red font #ff0000')
LogStatus('This is a multi-line status message \n I am the second line')
void main() {
LogStatus("This is a general status alert");
LogStatus("This is a status alert in red font #ff0000");
LogStatus("This is a multi-line status message \n I am the second line");
}
出力コンテンツの色を設定するサポート:
function main() {
var table = {type: 'table', title: 'Position information', cols: ['Column 1', 'Column 2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
// JSON serialization with the ` character on both sides, as a complex message format (support tables currently)
LogStatus('`' + JSON.stringify(table) + '`')
// Table information can also appear in multiple rows
LogStatus('First line of message\n`' + JSON.stringify(table) + '`\n third line of message')
// It supports multiple tables at the same time, will be displayed in a group with TAB
LogStatus('`' + JSON.stringify([table, table]) + '`')
// You can also construct a button in the form, and use the GetCommand strategy to receive the contents of the cmd attribute
var table = {
type: 'table',
title: 'Position operations',
cols: ['Column 1', 'Column 2', 'Action'],
rows: [
['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': 'Close out positions'}]
]
}
LogStatus('`' + JSON.stringify(table) + '`')
// Or construct a separate button
LogStatus('`' + JSON.stringify({'type':'button', 'cmd': 'coverAll', 'name': 'Close out positions'}) + '`')
// Customizable button style (bootstrap's button attribute)
LogStatus('`' + JSON.stringify({'type':'button', 'class': 'btn btn-xs btn-danger', 'cmd': 'coverAll', 'name': 'Close out positions'}) + '`')
}
import json
def main():
table = {"type": "table", "title": "Position information", "cols": ["Column 1", "Column 2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]}
LogStatus('`' + json.dumps(table) + '`')
LogStatus('First line of message\n`' + json.dumps(table) + '`\n third line of message')
LogStatus('`' + json.dumps([table, table]) + '`')
table = {
"type" : "table",
"title" : "Position operations",
"cols" : ["Column 1", "Column 2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "Close out positions"}]
]
}
LogStatus('`' + json.dumps(table) + '`')
LogStatus('`' + json.dumps({"type": "button", "cmd": "coverAll", "name": "Close out positions"}) + '`')
LogStatus('`' + json.dumps({"type": "button", "class": "btn btn-xs btn-danger", "cmd": "coverAll", "name": "Close out positions"}) + '`')
void main() {
json table = R"({"type": "table", "title": "Position information", "cols": ["Column 1", "Column 2"], "rows": [["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
LogStatus("`" + table.dump() + "`");
LogStatus("First line of message\n`" + table.dump() + "`\n third line of message");
json arr = R"([])"_json;
arr.push_back(table);
arr.push_back(table);
LogStatus("`" + arr.dump() + "`");
table = R"({
"type" : "table",
"title" : "Position operations",
"cols" : ["Column 1", "Column 2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "Close out positions"}]
]
})"_json;
LogStatus("`" + table.dump() + "`");
LogStatus("`" + R"({"type": "button", "cmd": "coverAll", "name": "Close out positions"})"_json.dump() + "`");
LogStatus("`" + R"({"type": "button", "class": "btn btn-xs btn-danger", "cmd": "coverAll", "name": "Close out positions"})"_json.dump() + "`");
}
状態バーのデータ出力例:
function main() {
var table = {
type: "table",
title: "status bar button style",
cols: ["default", "original", "success", "info", "warning", "danger"],
rows: [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
]
]
}
LogStatus("`" + JSON.stringify(table) + "`")
}
import json
def main():
table = {
"type": "table",
"title": "status bar button style",
"cols": ["default", "original", "success", "info", "warning", "danger"],
"rows": [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
]
]
}
LogStatus("`" + json.dumps(table) + "`")
void main() {
json table = R"({
"type": "table",
"title": "status bar button style",
"cols": ["default", "original", "success", "info", "warning", "danger"],
"rows": [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "info"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "danger"}
]
]
})"_json;
LogStatus("`" + table.dump() + "`");
}
ステータスバー (古いボタンの構造) でボタンのコントロールを設計するサポート:
function main() {
var table = {
type: "table",
title: "Status bar button disable, description function test",
cols: ["Column 1", "Column 2", "Column 3"],
rows: []
}
var button1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"}
var button2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": true}
var button3 = {"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": false}
table.rows.push([button1, button2, button3])
LogStatus("`" + JSON.stringify(table) + "`")
}
import json
def main():
table = {
"type": "table",
"title": "Status bar button disable, description function test",
"cols": ["Column 1", "Column 2", "Column 3"],
"rows": []
}
button1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"}
button2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": True}
button3 = {"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": False}
table["rows"].append([button1, button2, button3])
LogStatus("`" + json.dumps(table) + "`")
void main() {
json table = R"({
"type": "table",
"title": "Status bar button disable, description function test",
"cols": ["Column 1", "Column 2", "Column 3"],
"rows": []
})"_json;
json button1 = R"({"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button"})"_json;
json button2 = R"({"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button, set to disabled", "disabled": true})"_json;
json button3 = R"({"type": "button", "name": "button3", "cmd": "button3", "description": "This is the third button, set to enable", "disabled": false})"_json;
json arr = R"([])"_json;
arr.push_back(button1);
arr.push_back(button2);
arr.push_back(button3);
table["rows"].push_back(arr);
LogStatus("`" + table.dump() + "`");
}
ステータスバーボタン (古いボタン構造) の記述関数を無効に設定します:
function test1() {
Log("Calling custom functions")
}
function main() {
while (true) {
var table = {
type: 'table',
title: 'operation',
cols: ['column1', 'column2', 'Action'],
rows: [
['a', '1', {
'type': 'button',
'cmd': "CoverAll",
'name': 'Close out positions'
}],
['b', '1', {
'type': 'button',
'cmd': 10,
'name': 'Send values'
}],
['c', '1', {
'type': 'button',
'cmd': _D(),
'name': 'Calling functions'
}],
['d', '1', {
'type': 'button',
'cmd': 'test1',
'name': 'Calling custom functions'
}]
]
}
LogStatus(_D(), "\n", '`' + JSON.stringify(table) + '`')
var str_cmd = GetCommand()
if (str_cmd) {
Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd)
if(str_cmd == "test1") {
test1()
}
}
Sleep(500)
}
}
import json
def test1():
Log("Calling custom functions")
def main():
while True:
table = {
"type": "table",
"title": "operation",
"cols": ["column1", "column2", "Action"],
"rows": [
["a", "1", {
"type": "button",
"cmd": "CoverAll",
"name": "Close out positions"
}],
["b", "1", {
"type": "button",
"cmd": 10,
"name": "Send values"
}],
["c", "1", {
"type": "button",
"cmd": _D(),
"name": "Calling functions"
}],
["d", "1", {
"type": "button",
"cmd": "test1",
"name": "Calling custom functions"
}]
]
}
LogStatus(_D(), "\n", "`" + json.dumps(table) + "`")
str_cmd = GetCommand()
if str_cmd:
Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd)
if str_cmd == "test1":
test1()
Sleep(500)
void test1() {
Log("Calling custom functions");
}
void main() {
while(true) {
json table = R"({
"type": "table",
"title": "operation",
"cols": ["column1", "column2", "Action"],
"rows": [
["a", "1", {
"type": "button",
"cmd": "CoverAll",
"name": "Close out positions"
}],
["b", "1", {
"type": "button",
"cmd": 10,
"name": "Send values"
}],
["c", "1", {
"type": "button",
"cmd": "",
"name": "Calling functions"
}],
["d", "1", {
"type": "button",
"cmd": "test1",
"name": "Calling custom functions"
}]
]
})"_json;
table["rows"][2][2]["cmd"] = _D();
LogStatus(_D(), "\n", "`" + table.dump() + "`");
auto str_cmd = GetCommand();
if(str_cmd != "") {
Log("Received interaction data str_cmd:", "type:", typeof(str_cmd), "value:", str_cmd);
if(str_cmd == "test1") {
test1();
}
}
Sleep(500);
}
}
共同でGetCommand()
機能,状態バーボタンのインタラクション関数 (古いボタンの構造) を構築する:
function main() {
var tbl = {
type: "table",
title: "operation",
cols: ["column1", "column2"],
rows: [
["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
]
}
LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`")
while (true) {
var cmd = GetCommand()
if (cmd) {
Log("cmd:", cmd)
}
Sleep(1000)
}
}
import json
def main():
tbl = {
"type": "table",
"title": "operation",
"cols": ["column1", "column2"],
"rows": [
["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
]
}
LogStatus(_D(), "\n", "`" + json.dumps(tbl) + "`")
while True:
cmd = GetCommand()
if cmd:
Log("cmd:", cmd)
Sleep(1000)
void main() {
json tbl = R"({
"type": "table",
"title": "operation",
"cols": ["column1", "column2"],
"rows": [
["Open position operation", {"type": "button", "cmd": "open", "name": "open position", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}],
["Close position operation", {"type": "button", "cmd": "coverAll", "name": "close all positions"}]
]
})"_json;
LogStatus(_D(), "\n", "`" + tbl.dump() + "`");
while(true) {
auto cmd = GetCommand();
if(cmd != "") {
Log("cmd:", cmd);
}
Sleep(1000);
}
}
インタラクション用のステータスバーボタンを構築する際にもサポートされ,インタラクションコマンドはGetCommand()
追加します.input
状態バーのボタン制御のデータ構造に,例えば,追加"input": {"name": "number of open positions", "type": "number", "defValue": 1}
に{"type": "button", "cmd": "open", "name": "open position"}
ボタンをクリックすると,入力ボックス制御が表示されるポップアップを表示します (入力ボックス内のデフォルト値は1,defValue
) ボタンコマンドと一緒に送信されるデータを入力できます.例えば,次のテストコードを実行すると", open positionGetCommand()
この関数は次のメッセージをキャプチャしますopen:111
.
function main() {
var tbl = {
type: "table",
title: "Demonstrate grouping button control",
cols: ["operation"],
rows: []
}
// Creating a grouping button control structure
var groupBtn = {
type: "button",
cmd: "open",
name: "open positions",
group: [
{"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
{"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
{"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
{"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": true}
]
}
// test button 1
var testBtn1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
var testBtn2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}}
// Add groupBtn to tbl
tbl.rows.push([groupBtn])
// It supports multiple buttons in a cell of a status bar table, i.e. the data in a cell is an array of button structures: [testBtn1, testBtn2].
tbl.rows.push([[testBtn1, testBtn2]])
while (true) {
LogStatus("`" + JSON.stringify(tbl) + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + JSON.stringify(groupBtn) + "`")
var cmd = GetCommand()
if (cmd) {
Log("cmd:", cmd)
}
Sleep(5000)
}
}
import json
def main():
tbl = {
"type": "table",
"title": "Demonstrate grouping button control",
"cols": ["operation"],
"rows": []
}
groupBtn = {
"type": "button",
"cmd": "open",
"name": "open positions",
"group": [
{"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
{"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
{"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
{"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": True}
]
}
testBtn1 = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
testBtn2 = {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}}
tbl["rows"].append([groupBtn])
tbl["rows"].append([[testBtn1, testBtn2]])
while True:
LogStatus("`" + json.dumps(tbl) + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + json.dumps(groupBtn) + "`")
cmd = GetCommand()
if cmd:
Log("cmd:", cmd)
Sleep(5000)
void main() {
json tbl = R"({
"type": "table",
"title": "Demonstrate grouping button control",
"cols": ["operation"],
"rows": []
})"_json;
json groupBtn = R"({
"type": "button",
"name": "open positions",
"cmd": "open",
"group": [
{"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
{"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
{"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
{"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": true}
]})"_json;
json testBtn1 = R"({"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."})"_json;
json testBtn2 = R"({"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of positions opened", "type": "number", "defValue": 1}})"_json;
tbl["rows"].push_back({groupBtn});
tbl["rows"].push_back({{testBtn1, testBtn2}});
while(true) {
LogStatus("`" + tbl.dump() + "`", "\n", "The grouping button control can also be set directly on the status bar in addition to being set on the status bar form:", "`" + groupBtn.dump() + "`");
auto cmd = GetCommand();
if(cmd != "") {
Log("cmd:", cmd);
}
Sleep(5000);
}
}
機能的にコンパクトなボタン制御 (古いボタン構造) をサポートします.データ入力をサポートするステータスバーのボタンインタラクティブなコマンドは,最終的に,コンピュータによって記録されます.GetCommand()
機能.その違いは,"group"
ページにポップアップするダイアログは,グループ一度にデータ群を入力するように設定された入力制御の
この問題について注意すべき点は"group"
ステータスバー ボタン コントロールとグループ ボタン コントロールの構造のフィールド:
type
グループ内のプロパティは,次の4つのタイプのみをサポートし,defValue
property はデフォルト値です
|
各オプションを設定したままにドロップダウンボックスで分離するシンボルです
"name": "tradePrice@orderType==1"
設定する取引価格入力制御は,order タイプドロップダウン制御が選択されます.待機中の命令.|
中国語と英語の記述の内容を区別するシンボルですname
, description
グループとname
, description
ボタンの構造に同じフィールド名を持つにもかかわらず,同じ定義がありません.
定義するname
定義から異なる.name
入力されている.Log("cmd:", cmd)
次の試験例の記述:cmd: open:{"orderType":1,"tradePrice":99,"orderAmount":"99","boolean":true}
返されるものGetCommand()
相互作用が起こるときの機能:open:{"orderType":1,"tradePrice":99,"orderAmount":"99","boolean":true}
.type
ボタンのコントロールのプロパティは,以下のみをサポートします."button"
- わかった
入力データをサポートするボタン制御,つまりinput
属性セット,type
設定情報にプロパティinput
このフィールドは複数の制御タイプをサポートします.
次の例を参照してください.function main() {
// Status bar button control (set input field to implement) testBtn1 button triggered by the page in the drop-down box control using the options field to set options, using the defValue field to set the default options. This is different from the other examples in this chapter, which use defValue to set the options directly.
var testBtn1 = {
type: "button",
name: "testBtn1",
cmd: "cmdTestBtn1",
input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1}
}
/*
Status bar button control (set input field implementation) testBtn2 button triggered by the page in the drop-down box control using the options field to set the options, options field in the options field not only supports the string,
the use of the ```{text: "description", value: "value"}``` structure is also supported. Use the defValue field to set the default option, which can be multiple choice (multiple choice via array structure). Multiple choice requires setting the additional field multiple to a true value.
*/
var testBtn2 = {
type: "button",
name: "testBtn2",
cmd: "cmdTestBtn2",
input: {
name: "testBtn2MultiComboBox",
type: "selected",
description: "Implementing dropdown box multi-selection",
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}],
defValue: ["A", "C"],
multiple: true
}
}
// Status bar grouping button control (set group field implementation) testBtn3 button triggered by the page in the drop-down box control using the options field to set options, also supports the direct use of defValue set options.
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Dropdown box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Dropdown box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Dropdown box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Dropdown box 4",
type: "selected",
defValue: ["A", "C"],
multiple: true,
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
}
]
}
while (true) {
LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n")
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(5000)
}
}
import json
def main():
testBtn1 = {
"type": "button",
"name": "testBtn1",
"cmd": "cmdTestBtn1",
"input": {"name": "testBtn1ComboBox", "type": "selected", "options": ["A", "B"], "defValue": 1}
}
testBtn2 = {
"type": "button",
"name": "testBtn2",
"cmd": "cmdTestBtn2",
"input": {
"name": "testBtn2MultiComboBox",
"type": "selected",
"description": "Implementing dropdown box multi-selection",
"options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}],
"defValue": ["A", "C"],
"multiple": True
}
}
testBtn3 = {
"type": "button",
"name": "testBtn3",
"cmd": "cmdTestBtn3",
"group": [
{"name": "comboBox1", "label": "labelComboBox1", "description": "Dropdown box 1", "type": "selected", "defValue": 1, "options": ["A", "B"]},
{"name": "comboBox2", "label": "labelComboBox2", "description": "Dropdown box 2", "type": "selected", "defValue": "A|B"},
{"name": "comboBox3", "label": "labelComboBox3", "description": "Dropdown box 3", "type": "selected", "defValue": [0, 2], "multiple": True, "options": ["A", "B", "C"]},
{
"name": "comboBox4",
"label": "labelComboBox4",
"description": "Dropdown box 4",
"type": "selected",
"defValue": ["A", "C"],
"multiple": True,
"options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}, {"text": "Option D", "value": "D"}]
}
]
}
while True:
LogStatus("`" + json.dumps(testBtn1) + "`\n", "`" + json.dumps(testBtn2) + "`\n", "`" + json.dumps(testBtn3) + "`\n")
cmd = GetCommand()
if cmd:
Log(cmd)
Sleep(5000)
void main() {
json testBtn1 = R"({
"type": "button",
"name": "testBtn1",
"cmd": "cmdTestBtn1",
"input": {"name": "testBtn1ComboBox", "type": "selected", "options": ["A", "B"], "defValue": 1}
})"_json;
json testBtn2 = R"({
"type": "button",
"name": "testBtn2",
"cmd": "cmdTestBtn2",
"input": {
"name": "testBtn2MultiComboBox",
"type": "selected",
"description": "Implementing dropdown box multi-selection",
"options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}],
"defValue": ["A", "C"],
"multiple": true
}
})"_json;
json testBtn3 = R"({
"type": "button",
"name": "testBtn3",
"cmd": "cmdTestBtn3",
"group": [
{"name": "comboBox1", "label": "labelComboBox1", "description": "Dropdown box 1", "type": "selected", "defValue": 1, "options": ["A", "B"]},
{"name": "comboBox2", "label": "labelComboBox2", "description": "Dropdown box 2", "type": "selected", "defValue": "A|B"},
{"name": "comboBox3", "label": "labelComboBox3", "description": "Dropdown box 3", "type": "selected", "defValue": [0, 2], "multiple": true, "options": ["A", "B", "C"]},
{
"name": "comboBox4",
"label": "labelComboBox4",
"description": "Dropdown box 4",
"type": "selected",
"defValue": ["A", "C"],
"multiple": true,
"options": [{"text": "Option A", "value": "A"}, {"text": "Option B", "value": "B"}, {"text": "Option C", "value": "C"}, {"text": "Option D", "value": "D"}]
}
]
})"_json;
while (true) {
LogStatus("`" + testBtn1.dump() + "`\n", "`" + testBtn2.dump() + "`\n", "`" + testBtn3.dump() + "`\n");
auto cmd = GetCommand();
if (cmd != "") {
Log(cmd);
}
Sleep(5000);
}
}
状態バーのグループボタン制御 (設定によって実装group
状態バーボタンの制御 (設定によって実装)input
field) をクリックすると,インタラクションを起動する (古いボタンの構造),ページにポップアップするダイアログボックスのドロップダウンボックスのコントロールも複数の選択をサポートします.以下の例では,複数の選択オプションを持つドロップダウンボックスの制御を設計する方法を示します:
var symbols = ["BTC_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "BNB_USDT.swap", "SOL_USDT.swap"]
function createBtn(tmp, group) {
var btn = JSON.parse(JSON.stringify(tmp))
_.each(group, function(eleByGroup) {
btn["group"].unshift(eleByGroup)
})
return btn
}
function main() {
var arrManager = []
_.each(symbols, function(symbol) {
arrManager.push({
"symbol": symbol,
})
})
// Btn
var tmpBtnOpen = {
"type": "button",
"cmd": "open",
"name": "Open a position and place an order",
"group": [{
"type": "selected",
"name": "tradeType",
"label": "Order type",
"description": "Market order, limit order",
"default": 0,
"group": "Trading setup",
"settings": {
"options": ["Market order", "Limit order"],
"required": true,
}
}, {
"type": "selected",
"name": "direction",
"label": "Trading direction",
"description": "Buy, sell",
"default": "buy",
"group": "Trading setup",
"settings": {
"render": "segment",
"required": true,
"options": [{"name": "buy", "value": "buy"}, {"name": "sell", "value": "sell"}],
}
}, {
"type": "number",
"name": "price",
"label": "price",
"description": "The price of the order",
"group": "Trading setup",
"filter": "tradeType==1",
"settings": {
"required": true,
}
}, {
"type": "number",
"name": "amount",
"label": "Order quantity",
"description": "Order quantity",
"group": "Trading setup",
"settings": {
"required": true,
}
}],
}
while (true) {
var tbl = {"type": "table", "title": "dashboard", "cols": ["symbol", "actionOpen"], "rows": []}
_.each(arrManager, function(m) {
var btnOpen = createBtn(tmpBtnOpen, [{"type": "string", "name": "symbol", "label": "Trading instruments", "default": m["symbol"], "settings": {"required": true}}])
tbl["rows"].push([m["symbol"], btnOpen])
})
var cmd = GetCommand()
if (cmd) {
Log("Receive interaction:", cmd)
// Parsing interaction messages: open:{"symbol":"LTC_USDT.swap","tradeType":0,"direction":"buy","amount":111}
// According to the first colon: the previous instruction determines which button template triggers the message
var arrCmd = cmd.split(":", 2)
if (arrCmd[0] == "open") {
var msg = JSON.parse(cmd.slice(5))
Log("Trading instruments:", msg["symbol"], ", Trading direction:", msg["direction"], ", Order type:", msg["tradeType"] == 0 ? "Market order" : "Limit order", msg["tradeType"] == 0 ? ", Order price: current market price" : ", Order price:" + msg["price"], ", Order quantity:", msg["amount"])
}
}
LogStatus(_D(), "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
import json
symbols = ["BTC_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "BNB_USDT.swap", "SOL_USDT.swap"]
def createBtn(tmp, group):
btn = json.loads(json.dumps(tmp))
for eleByGroup in group:
btn["group"].insert(0, eleByGroup)
return btn
def main():
arrManager = []
for symbol in symbols:
arrManager.append({"symbol": symbol})
# Btn
tmpBtnOpen = {
"type": "button",
"cmd": "open",
"name": "Open a position and place an order",
"group": [{
"type": "selected",
"name": "tradeType",
"label": "Order type",
"description": "Market order, limit order",
"default": 0,
"group": "Trading setup",
"settings": {
"options": ["Market order", "Limit order"],
"required": True,
}
}, {
"type": "selected",
"name": "direction",
"label": "Trading direction",
"description": "Buy, sell",
"default": "buy",
"group": "Trading Setup",
"settings": {
"render": "segment",
"required": True,
"options": [{"name": "买入", "value": "buy"}, {"name": "卖出", "value": "sell"}],
}
}, {
"type": "number",
"name": "price",
"label": "price",
"description": "The price of the order",
"group": "Trading Setup",
"filter": "tradeType==1",
"settings": {
"required": True,
}
}, {
"type": "number",
"name": "amount",
"label": "Order quantity",
"description": "Order quantity",
"group": "Trading Setup",
"settings": {
"required": True,
}
}],
}
while True:
tbl = {"type": "table", "title": "dashboard", "cols": ["symbol", "actionOpen"], "rows": []}
for m in arrManager:
btnOpen = createBtn(tmpBtnOpen, [{"type": "string", "name": "symbol", "label": "交易品种", "default": m["symbol"], "settings": {"required": True}}])
tbl["rows"].append([m["symbol"], btnOpen])
cmd = GetCommand()
if cmd != "" and cmd != None:
Log("Receive interaction:", cmd)
# Parsing interaction messages: open:{"symbol":"LTC_USDT.swap","tradeType":0,"direction":"buy","amount":111}
# According to the first colon: the previous instruction determines which button template triggers the message
arrCmd = cmd.split(":")
if arrCmd[0] == "open":
msg = json.loads(cmd[5:])
Log("Trading instruments:", msg["symbol"], ", Trading direction:", msg["direction"], ", Order type:", "Market order" if msg["tradeType"] == 0 else "Limit order", ", Order price: current market price" if msg["tradeType"] == 0 else ", Order price:" + str(msg["price"]), ", Order quantity:", msg["amount"])
# Output status bar information
LogStatus(_D(), "\n", "`" + json.dumps(tbl) + "`")
Sleep(1000)
// Omit...
最新のボタン構造を使用して状態バーのテーブルでボタンを作成します. インタラクションを起動するためにボタンをクリックすると,マルチコントロールポップアップウィンドウがポップアップします. 詳細については,以下を参照してください.ユーザーガイド - ステータスバーのインタラクティブなコントロール.
function main() {
var table = {
type: 'table',
title: 'position operation',
cols: ['column1', 'column2', 'Action'],
rows: [
['abc', 'def', {'type':'button', 'cmd': 'coverAll', 'name': 'close positions'}]
]
}
var ticker = exchange.GetTicker()
// Add a row of data, merge the first and second cells, and output the ticker variable in the merged cell
table.rows.push([{body : JSON.stringify(ticker), colspan : 2}, "abc"])
LogStatus('`' + JSON.stringify(table) + '`')
}
import json
def main():
table = {
"type" : "table",
"title" : "position operation",
"cols" : ["column1", "column2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "close positions"}]
]
}
ticker = exchange.GetTicker()
table["rows"].append([{"body": json.dumps(ticker), "colspan": 2}, "abc"])
LogStatus("`" + json.dumps(table) + "`")
void main() {
json table = R"({
"type" : "table",
"title" : "position operation",
"cols" : ["column1", "column2", "Action"],
"rows" : [
["abc", "def", {"type": "button", "cmd": "coverAll", "name": "close positions"}]
]
})"_json;
auto ticker = exchange.GetTicker();
json jsonTicker = R"({"Buy": 0, "Sell": 0, "High": 0, "Low": 0, "Volume": 0, "Last": 0, "Time": 0})"_json;
jsonTicker["Buy"] = ticker.Buy;
jsonTicker["Sell"] = ticker.Sell;
jsonTicker["Last"] = ticker.Last;
jsonTicker["Volume"] = ticker.Volume;
jsonTicker["Time"] = ticker.Time;
jsonTicker["High"] = ticker.High;
jsonTicker["Low"] = ticker.Low;
json arr = R"([{"body": {}, "colspan": 2}, "abc"])"_json;
arr[0]["body"] = jsonTicker;
table["rows"].push_back(arr);
LogStatus("`" + table.dump() + "`");
}
テーブル内のセルを横軸に合併LogStatus()
機能:
function main() {
var table = {
type: 'table',
title: 'table demo',
cols: ['columnA', 'columnB', 'columnC'],
rows: [
['A1', 'B1', {'type':'button', 'cmd': 'coverAll', 'name': 'C1'}]
]
}
var ticker = exchange.GetTicker()
var name = exchange.GetName()
table.rows.push([{body : "A2 + B2:" + JSON.stringify(ticker), colspan : 2}, "C2"])
table.rows.push([{body : "A3 + A4 + A5:" + name, rowspan : 3}, "B3", "C3"])
// A3 is merged by the first cell in the previous row
table.rows.push(["B4", "C4"])
// A2 is merged by the first cell of the previous row
table.rows.push(["B5", "C5"])
table.rows.push(["A6", "B6", "C6"])
LogStatus('`' + JSON.stringify(table) + '`')
}
import json
def main():
table = {
"type" : "table",
"title" : "table demo",
"cols" : ["columnA", "columnB", "columnC"],
"rows" : [
["A1", "B1", {"type": "button", "cmd": "coverAll", "name": "C1"}]
]
}
ticker = exchange.GetTicker()
name = exchange.GetName()
table["rows"].append([{"body": "A2 + B2:" + json.dumps(ticker), "colspan": 2}, "C2"])
table["rows"].append([{"body": "A3 + A4 + A5:" + name, "rowspan": 3}, "B3", "C3"])
table["rows"].append(["B4", "C4"])
table["rows"].append(["B5", "C5"])
table["rows"].append(["A6", "B6", "C6"])
LogStatus("`" + json.dumps(table) + "`")
void main() {
json table = R"({
"type" : "table",
"title" : "table demo",
"cols" : ["columnA", "columnB", "columnC"],
"rows" : [
["A1", "B1", {"type": "button", "cmd": "coverAll", "name": "C1"}]
]
})"_json;
// For testing purposes, the code is short and easy to read, and the constructed data is used here
json jsonTicker = R"({"High": 0, "Low": 0, "Buy": 0, "Sell": 0, "Last": 0, "Time": 0, "Volume": 0})"_json;
auto name = exchange.GetName();
json arr1 = R"([{"body": "", "colspan": 2}, "C2"])"_json;
arr1[0]["body"] = "A2 + B2:" + jsonTicker.dump();
json arr2 = R"([{"body": "", "rowspan": 3}, "B3", "C3"])"_json;
arr2[0]["body"] = "A3 + A4 + A5:" + name;
table["rows"].push_back(arr1);
table["rows"].push_back(arr2);
table["rows"].push_back(R"(["B4", "C4"])"_json);
table["rows"].push_back(R"(["B5", "C5"])"_json);
table["rows"].push_back(R"(["A6", "B6", "C6"])"_json);
LogStatus("`" + table.dump() + "`");
}
縦に結合する テーブルにセルLogStatus()
機能:
function main() {
var table1 = {type: 'table', title: 'table1', cols: ['column1', 'column2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
var table2 = {type: 'table', title: 'table2', cols: ['column1', 'column2'], rows: [ ['abc', 'def'], ['ABC', 'support color #ff0000']]}
LogStatus('`' + JSON.stringify([table1, table2]) + '`')
}
import json
def main():
table1 = {"type": "table", "title": "table1", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]}
table2 = {"type": "table", "title": "table2", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]}
LogStatus("`" + json.dumps([table1, table2]) + "`")
void main() {
json table1 = R"({"type": "table", "title": "table1", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
json table2 = R"({"type": "table", "title": "table2", "cols": ["column1", "column2"], "rows": [ ["abc", "def"], ["ABC", "support color #ff0000"]]})"_json;
json arr = R"([])"_json;
arr.push_back(table1);
arr.push_back(table2);
LogStatus("`" + arr.dump() + "`");
}
状態バー表ページ表示:
function main(){
var tab1 = {
type : "table",
title : "table1",
cols : ["1", "2"],
rows : []
}
var tab2 = {
type : "table",
title : "table2",
cols : ["1", "2", "3"],
rows : []
}
var tab3 = {
type : "table",
title : "table3",
cols : ["A", "B", "C"],
rows : []
}
tab1.rows.push(["jack", "lucy"])
tab2.rows.push(["A", "B", "C"])
tab3.rows.push(["A", "B", "C"])
LogStatus('`' + JSON.stringify(tab1) + '`\n' +
'`' + JSON.stringify(tab2) + '`\n' +
'`' + JSON.stringify(tab3) + '`')
Log("exit")
}
import json
def main():
tab1 = {
"type": "table",
"title": "table1",
"cols": ["1", "2"],
"rows": []
}
tab2 = {
"type": "table",
"title": "table2",
"cols": ["1", "2", "3"],
"rows": []
}
tab3 = {
"type": "table",
"title": "table3",
"cols": ["A", "B", "C"],
"rows": []
}
tab1["rows"].append(["jack", "lucy"])
tab2["rows"].append(["A", "B", "C"])
tab3["rows"].append(["A", "B", "C"])
LogStatus("`" + json.dumps(tab1) + "`\n" +
"`" + json.dumps(tab2) + "`\n" +
"`" + json.dumps(tab3) + "`")
void main() {
json tab1 = R"({
"type": "table",
"title": "table1",
"cols": ["1", "2"],
"rows": []
})"_json;
json tab2 = R"({
"type": "table",
"title": "table2",
"cols": ["1", "2", "3"],
"rows": []
})"_json;
json tab3 = R"({
"type": "table",
"title": "table3",
"cols": ["A", "B", "C"],
"rows": []
})"_json;
tab1["rows"].push_back(R"(["jack", "lucy"])"_json);
tab2["rows"].push_back(R"(["A", "B", "C"])"_json);
tab3["rows"].push_back(R"(["A", "B", "C"])"_json);
LogStatus("`" + tab1.dump() + "`\n" +
"`" + tab2.dump() + "`\n" +
"`" + tab3.dump() + "`");
}
テーブルをページに表示するだけでなく,複数のテーブルを上から下へと順序で表示することもできます.
function main() {
var tbl = {
type : "table",
title : "test scroll",
scroll : "auto",
cols : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10",
"col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
rows : []
}
for (var i = 1 ; i < 100 ; i++) {
tbl.rows.push([i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i,
"11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
import json
def main():
tbl = {
"type" : "table",
"title" : "test scroll",
"scroll" : "auto",
"cols" : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10",
"col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
"rows" : []
}
for index in range(1, 100):
i = str(index)
tbl["rows"].append([i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i,
"11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i])
LogStatus("`" + json.dumps(tbl) + "`")
void main() {
json table = R"({
"type" : "table",
"title" : "test scroll",
"scroll" : "auto",
"cols" : ["col 0", "col 1", "col 2", "col 3", "col 4", "col 5", "col 6", "col 7", "col 8", "col 9", "col 10",
"col 11", "col 12", "col 13", "col 14", "col 15", "col 16", "col 17", "col 18", "col 19", "col 20"],
"rows" : []
})"_json;
for (int index = 1; index < 100; ++index) {
std::string i = std::to_string(index);
table["rows"].push_back({i, "1," + i, "2," + i, "3," + i, "4," + i, "5," + i, "6," + i, "7," + i, "8," + i, "9," + i, "10," + i,
"11," + i, "12," + i, "13," + i, "14," + i, "15," + i, "16," + i, "17," + i, "18," + i, "19," + i, "20," + i});
}
LogStatus("`" + table.dump() + "`");
}
ステータスバーテーブルの水平および垂直スクロールモードを設定するサポート.scroll
属性について"auto"
横の列の数がページ表示範囲を超えると,ページの表示範囲が移動されます.scroll
リアルトレード中に状態バーに大量のデータを書き込む遅延問題を軽減するために使用できます.次のテスト例を参照してください.
情報の出力はLogStatus()
ライブ取引が実行されているときの機能は ライブ取引データベースに保存されませんが,現在のライブ取引のステータスバーコンテンツのみを更新します.
についてLogStatus()
機能は印刷をサポートするbase64
暗号化された画像は`
そして最後に`
例えば:LogStatus("`data:image/png;base64,AAAA`")
- わかった
についてLogStatus()
機能は通過を支えるmatplotlib.pyplot
対象を直接Python
対象にsavefig
パラメータとして渡すことができます.LogStatus()
機能,例えば:
import matplotlib.pyplot as plt
def main():
plt.plot([3,6,2,4,7,1])
LogStatus(plt)
ストラテジーがライブ・トレードを実行しているとき,ライブ・トレードページの履歴を閲覧すると,ステータスバーは休み,更新を停止します.ログが最初のページにあるときにステータスバーデータのみがリフレッシュされます.出力をサポートします.base64
状態バーでエンコードされた画像を表示し,base64
ステータスバーに表示される表の暗号化された画像. 暗号化された画像の文字列データは一般的に非常に長いため,サンプルコードは表示されません.
{@fun/Global/GetCommand GetCommand} オーケストラがやってる
注文情報のログをオンまたはオフにする.
EnableLog (ログを有効にする)
もしenable
パラメータが false に設定されている場合,例えばfalse
命令日記 (例えば,関数によって生成される日記)exchange.Buy()
) は印刷されず,ライブ取引のデータベースに書き込まれていません.
許可する
本当
ボール
function main() {
EnableLog(false)
}
def main():
EnableLog(False)
void main() {
EnableLog(false);
}
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.CancelOrder exchange.CancelOrder}, {@fun/Trade/exchange.Buy.exchange.Buy}, {@fun/Trade/exchange.Buy}, {@fun/Trade/exchange.Buy.Exchange.Buy}, {@fun/Trade/exchange.Buy.Exchange.Buy}, {@fun/Trade/exchange.Buy.Exchange.Buy}, {@fun/Trade/exchange.Buy.Exchange.Buy}, {@fun/Trade/exchange.Buy.Exchange.Buy}, {@fun/Trade/Exchange.Sell.Exchange.Sell}, {@fun/Trade/Exchange.Exchange.Exchange.Sell.Order}, {@fun/Trade/Exchange.Exchange.Exchange.Sell},
グラフを描く機能をカスタマイズします
チャートオブジェクト オブジェクト
グラフ (オプション)
についてoptions
パラメータはチャート構成です.Chart()
機能パラメータoptions
これはJSON
シリーズ化可能HighStocks
パラメータHighcharts.StockChart
追加的な__isStock
native パラメーターの上に attribute が追加され,__isStock:false
通常のグラフとして表示されます.__isStock
属性が false に設定されている場合,false
,つまり,使用したグラフはHighcharts
グラフ.__isStock
アトリビュットは true 値に設定されます.true
,つまり,使用したグラフはHighstocks
チャート (デフォルトで)__isStock
真実です 例えばtrue
) に問い合わせることができます.HighStocksチャートライブラリ- わかった
オプション
本当
オブジェクト,オブジェクトアレイ
function main() {
var cfgA = {
extension: {
layout: 'single', // No grouping, display separately, default to group 'group'
height: 300, // Specify the height
},
title: {
text: 'handicap chart'
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'buy one',
data: [],
}, {
name: 'sell one',
data: [],
}]
}
var cfgB = {
title: {
text: 'spread chart'
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'spread',
type: 'column',
data: [],
}]
}
var cfgC = {
__isStock: false,
title: {
text: 'pie chart'
},
series: [{
type: 'pie',
name: 'one',
data: [
["A", 25],
["B", 25],
["C", 25],
["D", 25],
] // Instead of updating the initial data with the add function, the sequence can be updated by changing the chart configuration directly.
}]
};
var cfgD = {
extension: {
layout: 'single',
col: 8, // Specify the cell value for the width, the total value is 12
height: '300px',
},
title: {
text: 'handicap chart'
},
xAxis: {
type: 'datetime'
},
series: [{
name: 'buy one',
data: [],
}, {
name: 'sell one',
data: [],
}]
}
var cfgE = {
__isStock: false,
extension: {
layout: 'single',
col: 4,
height: '300px',
},
title: {
text: 'pie chart2'
},
series: [{
type: 'pie',
name: 'one',
data: [
["A", 25],
["B", 25],
["C", 25],
["D", 25],
]
}]
};
var chart = Chart([cfgA, cfgB, cfgC, cfgD, cfgE]);
chart.reset()
// Add a number of points to the pie chart, add can only update the data points added by add, built-in data points cannot be updated later.
chart.add(3, {
name: "ZZ",
y: Math.random() * 100
});
while (true) {
Sleep(1000)
var ticker = exchange.GetTicker()
if (!ticker) {
continue;
}
var diff = ticker.Sell - ticker.Buy
cfgA.subtitle = {
text: 'buy one ' + ticker.Buy + ', sell one ' + ticker.Sell,
};
cfgB.subtitle = {
text: 'spread ' + diff,
};
chart.add([0, [new Date().getTime(), ticker.Buy]]);
chart.add([1, [new Date().getTime(), ticker.Sell]]);
// Equivalent to updating the first data series of the second chart
chart.add([2, [new Date().getTime(), diff]]);
chart.add(4, [new Date().getTime(), ticker.Buy]);
chart.add(5, [new Date().getTime(), ticker.Buy]);
cfgC.series[0].data[0][1] = Math.random() * 100;
cfgE.series[0].data[0][1] = Math.random() * 100;
// update is actually the same as resetting the chart's configuration
chart.update([cfgA, cfgB, cfgC, cfgD, cfgE]);
}
}
import random
import time
def main():
cfgA = {
"extension" : {
"layout" : "single",
"height" : 300,
"col" : 8
},
"title" : {
"text" : "handicap chart"
},
"xAxis" : {
"type" : "datetime"
},
"series" : [{
"name" : "buy one",
"data" : []
}, {
"name" : "sell one",
"data" : []
}]
}
cfgB = {
"title" : {
"text" : "spread chart"
},
"xAxis" : {
"type" : "datetime",
},
"series" : [{
"name" : "spread",
"type" : "column",
"data" : []
}]
}
cfgC = {
"__isStock" : False,
"title" : {
"text" : "pie chart"
},
"series" : [{
"type" : "pie",
"name" : "one",
"data" : [
["A", 25],
["B", 25],
["C", 25],
["D", 25],
]
}]
}
cfgD = {
"extension" : {
"layout" : "single",
"col" : 8,
"height" : "300px"
},
"title" : {
"text" : "handicap chart"
},
"series" : [{
"name" : "buy one",
"data" : []
}, {
"name" : "sell one",
"data" : []
}]
}
cfgE = {
"__isStock" : False,
"extension" : {
"layout" : "single",
"col" : 4,
"height" : "300px"
},
"title" : {
"text" : "pie chart2"
},
"series" : [{
"type" : "pie",
"name" : "one",
"data" : [
["A", 25],
["B", 25],
["C", 25],
["D", 25]
]
}]
}
chart = Chart([cfgA, cfgB, cfgC, cfgD, cfgE])
chart.reset()
chart.add(3, {
"name" : "ZZ",
"y" : random.random() * 100
})
while True:
Sleep(1000)
ticker = exchange.GetTicker()
if not ticker :
continue
diff = ticker["Sell"] - ticker["Buy"]
cfgA["subtitle"] = {
"text" : "buy one" + str(ticker["Buy"]) + "sell one" + str(ticker["Sell"])
}
cfgB["subtitle"] = {
"text" : "spread " + str(diff)
}
chart.add(0, [time.time() * 1000, ticker["Buy"]])
chart.add(1, [time.time() * 1000, ticker["Sell"]])
chart.add(2, [time.time() * 1000, diff])
chart.add(4, [time.time() * 1000, ticker["Buy"]])
chart.add(5, [time.time() * 1000, ticker["Buy"]])
cfgC["series"][0]["data"][0][1] = random.random() * 100
cfgE["series"][0]["data"][0][1] = random.random() * 100
void main() {
json cfgA = R"({
"extension" : {
"layout" : "single",
"height" : 300,
"col" : 8
},
"title" : {
"text" : "handicap chart"
},
"xAxis" : {
"type" : "datetime"
},
"series" : [{
"name" : "buy one",
"data" : []
}, {
"name" : "sell one",
"data" : []
}]
})"_json;
json cfgB = R"({
"title" : {
"text" : "spread chart"
},
"xAxis" : {
"type" : "datetime"
},
"series" : [{
"name" : "spread",
"type" : "column",
"data" : []
}]
})"_json;
json cfgC = R"({
"__isStock" : false,
"title" : {
"text" : "pie chart"
},
"series" : [{
"type" : "pie",
"name" : "one",
"data" : [
["A", 25],
["B", 25],
["C", 25],
["D", 25]
]
}]
})"_json;
json cfgD = R"({
"extension" : {
"layout" : "single",
"col" : 8,
"height" : "300px"
},
"title" : {
"text" : "handicap chart"
},
"series" : [{
"name" : "buy one",
"data" : []
}, {
"name" : "sell one",
"data" : []
}]
})"_json;
json cfgE = R"({
"__isStock" : false,
"extension" : {
"layout" : "single",
"col" : 4,
"height" : "300px"
},
"title" : {
"text" : "pie chart2"
},
"series" : [{
"type" : "pie",
"name" : "one",
"data" : [
["A", 25],
["B", 25],
["C", 25],
["D", 25]
]
}]
})"_json;
auto chart = Chart({cfgA, cfgB, cfgC, cfgD, cfgE});
chart.reset();
json zz = R"({
"name" : "ZZ",
"y" : 0
})"_json;
zz["y"] = rand() % 100;
chart.add(3, zz);
while(true) {
Sleep(1000);
auto ticker = exchange.GetTicker();
if(!ticker.Valid) {
continue;
}
auto diff = ticker.Sell - ticker.Buy;
json cfgASubTitle = R"({"text" : ""})"_json;
cfgASubTitle["text"] = format("buy one %f , sell one %f", ticker.Buy, ticker.Sell);
cfgA["subtitle"] = cfgASubTitle;
json cfgBSubTitle = R"({"text" : ""})"_json;
cfgBSubTitle["text"] = format("spread %f", diff);
cfgB["subtitle"] = cfgBSubTitle;
chart.add(0, {Unix() * 1000, ticker.Buy});
chart.add(1, {Unix() * 1000, ticker.Sell});
chart.add(2, {Unix() * 1000, diff});
chart.add(4, {Unix() * 1000, ticker.Buy});
chart.add(5, {Unix() * 1000, ticker.Buy});
cfgC["series"][0]["data"][0][1] = rand() % 100;
cfgE["series"][0]["data"][0][1] = rand() % 100;
chart.update({cfgA, cfgB, cfgC, cfgD, cfgE});
}
}
複数のチャート図の設定:
extension.layout
属性
属性が値extension.height
属性
この属性は,数値値または300pxextension.col
属性
この属性は,チャートの幅を設定するために使用されます. ページの幅は12のセルに分けられ,セットは8です. つまり,チャートは8のセル幅を占めています.// This chart is an object in the JavaScript language, and before using the Chart function, we need to declare an object variable chart to configure the chart. var chart = {
// This field marks whether the chart is a general chart or not, if you are interested, you can change it to false and run it.
__isStock: true,
// Scaling tool
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
// title
title : { text : 'spread analysis chart'},
// selection range
rangeSelector: {
buttons: [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
selected: 0,
inputEnabled: false
},
// Coordinate axis horizontal axis that is: x-axis, the current setting type is: time
xAxis: { type: 'datetime'},
// Coordinate axis vertical axis that is: y-axis, default value adjusted with the size of the data
yAxis : {
// title
title: {text: 'spread'},
// Whether to enable the right vertical axis
opposite: false
},
// Data series, this sttribute holds the individual data series (lines, K-charts, labels, etc...)
series : [
// The index is 0, and the data array holds the data of the index series
{name : "line1", id : "line1,buy1Price", data : []},
// Index is 1, set dashStyle:'shortdash' i.e.: set the dashed line
{name : "line2", id : "line2,lastPrice", dashStyle : 'shortdash', data : []}
]
} function main(){
// Call the Chart function to initialize the chart
var ObjChart = Chart(chart)
// Clear out
ObjChart.reset()
while(true){
// Gets the timestamp of this poll, i.e. a millisecond timestamp. It's used to determine the position of the X-axis written to the chart.
var nowTime = new Date().getTime()
// Get the ticker data
var ticker = _C(exchange.GetTicker)
// Get buy one price from the return value of the ticker data
var buy1Price = ticker.Buy
// To obtain the final transaction price, we add 1 in order not to overlap the 2 lines
var lastPrice = ticker.Last + 1
// Data sequence with timestamp as X-value and buy one price as Y-value passed into index 0
ObjChart.add(0, [nowTime, buy1Price])
// ditto
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
}
}```
```python
import time
chart = {
"__isStock" : True,
"tooltip" : {"xDateFormat" : "%Y-%m-%d %H:%M:%S, %A"},
"title" : {"text" : "spread analysis chart"},
"rangeSelector" : {
"buttons" : [{"type": "count", "count": 1, "text": "1h"}, {"type": "hour", "count": 3, "text": "3h"}, {"type": "hour", "count": 8, "text": "8h"}, {"type": "all", "text": "All"}],
"selected": 0,
"inputEnabled": False
},
"xAxis": {"type": "datetime"},
"yAxis": {
"title": {"text": "spread"},
"opposite": False
},
"series": [{
"name": "line1", "id": "line1,buy1Price", "data": []
}, {
"name": "line2", "id": "line2,lastPrice", "dashStyle": "shortdash", "data": []
}]
}
def main():
ObjChart = Chart(chart)
ObjChart.reset()
while True:
nowTime = time.time() * 1000
ticker = exchange.GetTicker()
buy1Price = ticker["Buy"]
lastPrice = ticker["Last"] + 1
ObjChart.add(0, [nowTime, buy1Price])
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
void main() {
// When writing strategies in C++, try not to declare global variables that are not of the base type, so the chart configuration object is declared inside the main function.
json chart = R"({
"__isStock" : true,
"tooltip" : {"xDateFormat" : "%Y-%m-%d %H:%M:%S, %A"},
"title" : {"text" : "spread analysis chart"},
"rangeSelector" : {
"buttons" : [{"type": "count", "count": 1, "text": "1h"}, {"type": "hour", "count": 3, "text": "3h"}, {"type": "hour", "count": 8, "text": "8h"}, {"type": "all", "text": "All"}],
"selected": 0,
"inputEnabled": false
},
"xAxis": {"type": "datetime"},
"yAxis": {
"title": {"text": "spread"},
"opposite": false
},
"series": [{
"name": "line1", "id": "line1,buy1Price", "data": []
}, {
"name": "line2", "id": "line2,lastPrice", "dashStyle": "shortdash", "data": []
}]
})"_json;
auto ObjChart = Chart(chart);
ObjChart.reset();
while(true) {
auto nowTime = Unix() * 1000;
auto ticker = exchange.GetTicker();
auto buy1Price = ticker.Buy;
auto lastPrice = ticker.Last + 1.0;
ObjChart.add(0, {nowTime, buy1Price});
ObjChart.add(1, {nowTime, lastPrice});
Sleep(2000);
}
}
簡単な図の例:
// Objects used to initialize the chart
var chart = {
// Chart title
title: {text: "line value triggers the plotLines value"},
// Y-axis related settings
yAxis: {
// A horizontal line perpendicular to the Y-axis, used as a trigger line, is a structural array that can set multiple trigger lines
plotLines: [{
// The value of the trigger line, how much it set, this line will be displayed in the corresponding value position
value: 0,
// Set the color of the trigger line
color: 'red',
// Width
width: 2,
// Displaying labels
label: {
// Label text
text: 'Trigger value',
// Centered label position
align: 'center'
}
}]
},
// X-axis related settings, here the setting type is time axis
xAxis: {type: "datetime"},
series: [
{name: "sin", type: "spline", data: []},
// This is an important data series, you can set multiple data series, according to the array index control
{name: "cos", type: "spline", data: []}
]
}
function main(){
// Circumference
var pi = 3.1415926535897
// Variables for recording timestamps
var time = 0
// Angle
var angle = 0
// Coordinate y values for receiving sine and cosine values
var y = 0
// Call the API interface to initialize the chart with the chart object
var objChart = Chart(chart)
// Initially, clear the chart
objChart.reset()
// Set the value of the trigger line to 1
chart.yAxis.plotLines[0].value = 1
// Loop
while(true){
// Get the timestamp of the current moment
time = new Date().getTime()
// Angle increases by 5 degrees every 500ms and calculates the sine value
y = Math.sin(angle * 2 * pi / 360)
// Write the calculated y value to the data series of the corresponding index of the chart, the first parameter of the add function is the specified data series index
objChart.add(0, [time, y])
// Calculate the cosine value
y = Math.cos(angle * 2 * pi / 360)
objChart.add(1, [time, y])
// Increase by 5 degrees
angle += 5
// Pause for 5 seconds to avoid drawing too often and growing data too fast
Sleep(5000)
}
}
import math
import time
chart = {
"title": {"text": "line value triggers the plotLines value"},
"yAxis": {
"plotLines": [{
"value": 0,
"color": "red",
"width": 2,
"label": {
"text": "trigger value",
"align": "center"
}
}]
},
"xAxis": {"type": "datetime"},
"series": [{"name": "sin", "type": "spline", "data": []},
{"name": "cos", "type": "spline", "data": []}]
}
def main():
pi = 3.1415926535897
ts = 0
angle = 0
y = 0
objChart = Chart(chart)
objChart.reset()
chart["yAxis"]["plotLines"][0]["value"] = 1
while True:
ts = time.time() * 1000
y = math.sin(angle * 2 * pi / 360)
objChart.add(0, [ts, y])
y = math.cos(angle * 2 * pi / 360)
objChart.add(1, [ts, y])
angle += 5
Sleep(5000)
void main() {
json chart = R"({
"title": {"text": "line value triggers the plotLines value"},
"yAxis": {
"plotLines": [{
"value": 0,
"color": "red",
"width": 2,
"label": {
"text": "trigger value",
"align": "center"
}
}]
},
"xAxis": {"type": "datetime"},
"series": [{"name": "sin", "type": "spline", "data": []},
{"name": "cos", "type": "spline", "data": []}]
})"_json;
auto pi = 3.1415926535897;
auto ts = 0;
auto angle = 0.0;
auto y = 0.0;
auto objChart = Chart(chart);
objChart.reset();
chart["yAxis"]["plotLines"][0]["value"] = 1;
while(true) {
ts = Unix() * 1000;
y = sin(angle * 2 * pi / 360);
objChart.add(0, {ts, y});
y = cos(angle * 2 * pi / 360);
objChart.add(1, {ts, y});
angle += 5;
Sleep(5000);
}
}
三角形曲線を描く例:
/*backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
var chartCfg = {
subtitle: {
text: "subtitle",
},
yAxis: [{
height: "40%",
lineWidth: 2,
title: {
text: 'PnL',
},
tickPixelInterval: 20,
minorGridLineWidth: 1,
minorTickWidth: 0,
opposite: true,
labels: {
align: "right",
x: -3,
}
}, {
title: {
text: 'Profit',
},
top: "42%",
height: "18%",
offset: 0,
lineWidth: 2
}, {
title: {
text: 'Vol',
},
top: '62%',
height: '18%',
offset: 0,
lineWidth: 2
}, {
title: {
text: 'Asset',
},
top: '82%',
height: '18%',
offset: 0,
lineWidth: 2
}],
series: [{
name: 'PnL',
data: [],
id: 'primary',
tooltip: {
xDateFormat: '%Y-%m-%d %H:%M:%S'
},
yAxis: 0
}, {
type: 'column',
lineWidth: 2,
name: 'Profit',
data: [],
yAxis: 1,
}, {
type: 'column',
name: 'Trade',
data: [],
yAxis: 2
}, {
type: 'area',
step: true,
lineWidth: 0,
name: 'Long',
data: [],
yAxis: 2
}, {
type: 'area',
step: true,
lineWidth: 0,
name: 'Short',
data: [],
yAxis: 2
}, {
type: 'line',
step: true,
color: '#5b4b00',
name: 'Asset',
data: [],
yAxis: 3
}, {
type: 'pie',
innerSize: '70%',
name: 'Random',
data: [],
center: ['3%', '6%'],
size: '15%',
dataLabels: {
enabled: false
},
startAngle: -90,
endAngle: 90,
}],
};
function main() {
let c = Chart(chartCfg);
let preTicker = null;
while (true) {
let t = exchange.GetTicker();
c.add(0, [t.Time, t.Last]); // PnL
c.add(1, [t.Time, preTicker ? t.Last - preTicker.Last : 0]); // profit
let r = Math.random();
var pos = parseInt(t.Time/86400);
c.add(2, [t.Time, pos/2]); // Vol
c.add(3, [t.Time, r > 0.8 ? pos : null]); // Long
c.add(4, [t.Time, r < 0.8 ? -pos : null]); // Short
c.add(5, [t.Time, Math.random() * 100]); // Asset
// update pie
chartCfg.series[chartCfg.series.length-1].data = [
["A", Math.random()*100],
["B", Math.random()*100],
];
c.update(chartCfg)
preTicker = t;
}
}
'''backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
import random
chartCfg = {
"subtitle": {
"text": "subtitle"
},
"yAxis": [{
"height": "40%",
"lineWidth": 2,
"title": {
"text": 'PnL'
},
"tickPixelInterval": 20,
"minorGridLineWidth": 1,
"minorTickWidth": 0,
"opposite": True,
"labels": {
"align": "right",
"x": -3
}
}, {
"title": {
"text": 'Profit'
},
"top": "42%",
"height": "18%",
"offset": 0,
"lineWidth": 2
}, {
"title": {
"text": 'Vol'
},
"top": '62%',
"height": '18%',
"offset": 0,
"lineWidth": 2
}, {
"title": {
"text": 'Asset'
},
"top": '82%',
"height": '18%',
"offset": 0,
"lineWidth": 2
}],
"series": [{
"name": 'PnL',
"data": [],
"id": 'primary',
"tooltip": {
"xDateFormat": '%Y-%m-%d %H:%M:%S'
},
"yAxis": 0
}, {
"type": 'column',
"lineWidth": 2,
"name": 'Profit',
"data": [],
"yAxis": 1
}, {
"type": 'column',
"name": 'Trade',
"data": [],
"yAxis": 2
}, {
"type": 'area',
"step": True,
"lineWidth": 0,
"name": 'Long',
"data": [],
"yAxis": 2
}, {
"type": 'area',
"step": True,
"lineWidth": 0,
"name": 'Short',
"data": [],
"yAxis": 2
}, {
"type": 'line',
"step": True,
"color": '#5b4b00',
"name": 'Asset',
"data": [],
"yAxis": 3
}, {
"type": 'pie',
"innerSize": '70%',
"name": 'Random',
"data": [],
"center": ['3%', '6%'],
"size": '15%',
"dataLabels": {
"enabled": False
},
"startAngle": -90,
"endAngle": 90
}]
}
def main():
c = Chart(chartCfg)
preTicker = None
while True:
t = exchange.GetTicker()
c.add(0, [t["Time"], t["Last"]])
profit = t["Last"] - preTicker["Last"] if preTicker else 0
c.add(1, [t["Time"], profit])
r = random.random()
pos = t["Time"] / 86400
c.add(2, [t["Time"], pos / 2])
long = pos if r > 0.8 else None
c.add(3, [t["Time"], long])
short = -pos if r < 0.8 else None
c.add(4, [t["Time"], short])
c.add(5, [t["Time"], random.random() * 100])
# update pie
chartCfg["series"][len(chartCfg["series"]) - 1]["data"] = [
["A", random.random() * 100],
["B", random.random() * 100]
]
c.update(chartCfg)
preTicker = t
/*backtest
start: 2020-03-11 00:00:00
end: 2020-04-09 23:59:00
period: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json chartCfg = R"({
"subtitle": {
"text": "subtitle"
},
"yAxis": [{
"height": "40%",
"lineWidth": 2,
"title": {
"text": "PnL"
},
"tickPixelInterval": 20,
"minorGridLineWidth": 1,
"minorTickWidth": 0,
"opposite": true,
"labels": {
"align": "right",
"x": -3
}
}, {
"title": {
"text": "Profit"
},
"top": "42%",
"height": "18%",
"offset": 0,
"lineWidth": 2
}, {
"title": {
"text": "Vol"
},
"top": "62%",
"height": "18%",
"offset": 0,
"lineWidth": 2
}, {
"title": {
"text": "Asset"
},
"top": "82%",
"height": "18%",
"offset": 0,
"lineWidth": 2
}],
"series": [{
"name": "PnL",
"data": [],
"id": "primary",
"tooltip": {
"xDateFormat": "%Y-%m-%d %H:%M:%S"
},
"yAxis": 0
}, {
"type": "column",
"lineWidth": 2,
"name": "Profit",
"data": [],
"yAxis": 1
}, {
"type": "column",
"name": "Trade",
"data": [],
"yAxis": 2
}, {
"type": "area",
"step": true,
"lineWidth": 0,
"name": "Long",
"data": [],
"yAxis": 2
}, {
"type": "area",
"step": true,
"lineWidth": 0,
"name": "Short",
"data": [],
"yAxis": 2
}, {
"type": "line",
"step": true,
"color": "#5b4b00",
"name": "Asset",
"data": [],
"yAxis": 3
}, {
"type": "pie",
"innerSize": "70%",
"name": "Random",
"data": [],
"center": ["3%", "6%"],
"size": "15%",
"dataLabels": {
"enabled": false
},
"startAngle": -90,
"endAngle": 90
}]
})"_json;
Chart c = Chart(chartCfg);
Ticker preTicker;
while(true) {
auto t = exchange.GetTicker();
c.add(0, {t.Time, t.Last});
auto profit = preTicker.Valid ? t.Last - preTicker.Last : 0;
c.add(1, {t.Time, profit});
auto r = rand() % 100;
auto pos = t.Time / 86400.0;
c.add(2, {t.Time, pos / 2.0});
auto longPos = r > 0.8 ? pos : NULL;
c.add(3, {t.Time, longPos});
auto shortPos = r < 0.8 ? -pos : NULL;
c.add(4, {t.Time, shortPos});
c.add(5, {t.Time, rand() % 100});
// update pie
json pie = R"([["A", 0], ["B", 0]])"_json;
pie[0][1] = rand() % 100;
pie[1][1] = rand() % 100;
chartCfg["series"][chartCfg["series"].size() - 1]["data"] = pie;
c.update(chartCfg);
preTicker = t;
}
}
ハイブリッドチャートの複雑な例:
// update pie
chartCfg.series[chartCfg.series.length-1].data = [
["A", Math.random()*100],
["B", Math.random()*100],
];
c.update(chartCfg)
# update pie
chartCfg["series"][len(chartCfg["series"]) - 1]["data"] = [
["A", random.random() * 100],
["B", random.random() * 100]
]
c.update(chartCfg)
// update pie
json pie = R"([["A", 0], ["B", 0]])"_json;
pie[0][1] = rand() % 100;
pie[1][1] = rand() % 100;
chartCfg["series"][chartCfg["series"].size() - 1]["data"] = pie;
c.update(chartCfg);
タイプ図pie
データを更新するときに直接チャート構成を更新する必要があります.例えば,上記の例のコードは,チャートを更新します.c.update(chartCfg)
データを更新した後,次のとおり:
についてChart()
この関数は4つのメソッドを持つチャートオブジェクトを返しますadd()
, reset()
, update()
, del()
.
update()
方法:
についてupdate()
このメソッドのパラメータは Chart Configuration Object (JSON) である.del()
方法:
についてdel()
このメソッドは,渡されたシリーズパラメータに基づいて,指定されたインデックスのデータシリーズを削除できます.add()
方法:
についてadd()
この方法では,次のパラメータの順序でデータをチャートに書き込むことができます.series
: 数値系インデックスを設定するために使用されます.data
: 書き込む特定のデータを設定するために使用されます. これは配列です.index
(オプション): データインデックスを設定するために使用されます.これは整数です. 変更されたデータの特定のインデックス位置を指定します.-1
データセットの最後のデータを指します.
例えば,線を描くとき,線の最後の点のデータを修正します.chart.add(0, [1574993606000, 13.5], -1)
,つまり,チャートの前最後の最初のポイントのデータを変更しますseries[0].data
- わかった
についてindex
パラメータが設定されていないので,データは現在のデータシリーズの最後の点に追加されます.reset()
方法:
についてreset()
グラフのデータを空にする.reset()
メソッドはパラメータを取ることができるremain
パラメータはありません.remain
すべてのデータをクリアします.{@fun/Log/KLineChartKLineChart} クライン・チャート クライン・チャート
この関数は,戦略実行時にカスタム図を描くのに使用されます.Pine
language.
グラフオブジェクト.KLineChart()
複数のメソッドでチャートオブジェクトを返します.begin()
そしてclose()
引く作業は,begin()
函数呼び出しで終了するclose()
描画操作を実行するためにKLineデータを通過するときに関数呼び出しをする.
オブジェクト
KLineChart (オプション)
についてoptions
パラメータはチャート構成です
オプション
本当
オブジェクト,オブジェクトアレイ
function main() {
// Call the KLineChart function to create a chart control object c
let c = KLineChart({
overlay: true
})
// Use the Spot Exchange object test to get K-line data. If you use the futures exchange object test, you need to set up the contract first.
let bars = exchange.GetRecords()
if (!bars) {
return
}
// Execute the drawing operation by traversing over the K-line data. The drawing operation must start with the ```c.begin(bar)``` function call and end with the ```c.close()``` function call.
bars.forEach(function(bar, index) {
c.begin(bar)
c.barcolor(bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.2)')
if (bar.Close > bar.Open) {
c.bgcolor('rgba(0, 255, 0, 0.5)')
}
let h = c.plot(bar.High, 'high')
let l = c.plot(bar.Low, 'low')
c.fill(h, l, {
color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'
})
c.hline(bar.High)
c.plotarrow(bar.Close - bar.Open)
c.plotshape(bar.Low, {
style: 'diamond'
})
c.plotchar(bar.Close, {
char: 'X'
})
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
if (bar.Close > bar.Open) {
// long/short/closelong/closeshort
c.signal("long", bar.High, 1.5)
} else if (bar.Close < bar.Open) {
c.signal("closelong", bar.Low, 1.5)
}
c.close()
})
}
def main():
# Call the KLineChart function to create a chart control object c
c = KLineChart({
"overlay": True
})
# Use the Spot Exchange object test to get K-line data. If you use the futures exchange object test, you need to set up the contract first.
bars = exchange.GetRecords()
if not bars:
return
for bar in bars:
c.begin(bar)
c.barcolor('rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(0, 0, 0, 0.2)')
if bar.Close > bar.Open:
c.bgcolor('rgba(0, 255, 0, 0.5)')
h = c.plot(bar.High, 'high')
l = c.plot(bar.Low, 'low')
c.fill(h, l, 'rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(255, 0, 0, 0.2)')
c.hline(bar.High)
c.plotarrow(bar.Close - bar.Open)
c.plotshape(bar.Low, style = 'diamond')
c.plotchar(bar.Close, char = 'X')
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
if bar.Close > bar.Open:
# long/short/closelong/closeshort
c.signal("long", bar.High, 1.5)
elif bar.Close < bar.Open:
c.signal("closelong", bar.Low, 1.5)
c.close()
// Not supported for now
図面制御オブジェクトが戦略のカスタム描画領域に描画するために必要な場合,KLineChart()
対象を作成する. パラメータKLineChart()
この関数はチャート構成構造で,参照コードで使用されるものはシンプルです.{overlay: true}
このチャート構成構造は,メインチャートで出力される描画コンテンツのみを設定します.overlay
誤り値に設定されます.false
メインチャートに描くための描画関数を指定する必要がある場合,パラメータも指定できます.overlay
特定の関数呼び出しの真の値として,例えば:true
.
c.barcolor(bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.2)') // Use the example illustrated in the reference code in this example, without further ado
c.barcolor('rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(0, 0, 0, 0.2)')
// Not supported for now
図面インターフェースの機能Pine
図面処理でサポートされる言語は:barcolor
K線の色を設定します.
barcolor ((色,オフセット,編集可能, show_last,タイトル,表示) 表示パラメータはオプションです:
none , all
c.bgcolor('rgba(0, 255, 0, 0.5)')
c.bgcolor('rgba(0, 255, 0, 0.5)')
// Not supported for now
bgcolor
,K線の背景を指定された色で満たします.
bgcolor ((色,オフセット,編集可能, show_last,タイトル,表示,オーバーレイ) 表示パラメータはオプションです:
none , all
c.plot(bar.High, 'high')
c.plot(bar.Open < bar.Close ? NaN : bar.Close, "Close", {style: "linebr"}) // Support for drawing discontinuous data lines
h = c.plot(bar.High, 'high')
h = c.plot(None if bar.Open < bar.Close else bar.Close, "Close", style = "linebr") # Support for drawing discontinuous data lines
// Not supported for now
plot
グラフに一連のデータを描画する.
plot ((シリーズ,タイトル,色,行幅,スタイル,トラック価格,histbase,オフセット,join,編集可能,show_last,display) スタイルのパラメータはオプションです:
stepline_diamond , stepline , cross , areabr , area , circles , columns , histogram , linebr , line 表示パラメータはオプションです: none , all
let h = c.plot(bar.High, 'high')
let l = c.plot(bar.Low, 'low')
c.fill(h, l, {color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'})
h = c.plot(bar.High, 'high')
l = c.plot(bar.Low, 'low')
c.fill(h, l, color = 'rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(255, 0, 0, 0.2)'})
// Not supported for now
fill
2つのプロット間の背景を埋め,またはhline
提供された色で
記入する (→ライン1,ライン2,色,タイトル,編集可能,記入する,表示する) 表示パラメータはオプションです:
none , all
労働組合がJavaScript
この問題を解くには,公式パラメータを使用できます. 公式パラメータは,{key: value}
特定のフォーマルパラメータ名に渡すパラメータを指定する構造です.
例えば,参照コードは,{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0, 0.2)'}
指定するcolor
パラメータfill
機能
形式のパラメータの名前で複数のパラメータを指定する必要がある場合,{key1: value1, key2: value2, key3: value3}
- わかった
この例では,追加のtitle
パラメータが指定されています:{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0, 0.2)', title: 'fill'}
- わかった
設定することができます.'rgba(255, 0, 0, 0, 0.2)'
または'#FF0000'
.
c.hline(bar.High)
c.hline(bar.High)
// Not supported for now
hline
,水平線は一定の固定価格レベルで表されます.
ライン (価格,タイトル,色,ラインスタイル,ライン幅,編集可能,表示) ラインスタイルのパラメータはオプションです:
点 , 点 , 固体 表示パラメータはオプションです: none , all
c.plotarrow(bar.Close - bar.Open)
c.plotarrow(bar.Close - bar.Open)
// Not supported for now
plotarrow
グラフに上下矢印を描いてください
plotarrow ((シリーズ,タイトル,カラーアップ,カラーダウン,オフセット,ミンの高さ,最大高さ,編集可能, show_last,表示) 表示パラメータはオプションです:
none , all
c.plotshape(bar.Low, {style: 'diamond'})
c.plotshape(bar.Low, style = 'diamond')
// Not supported for now
plotshape
図に視覚的な形を描く.
plotshape (シリーズ,タイトル,スタイル,位置,色,オフセット,テキスト,テキスト色,編集可能,サイズ, show_last,表示) スタイルのパラメータはオプションです:
ダイヤモンド size.autoサイズが小さい 表示パラメータはオプションです:, 平方 , ラベル_ダウン , ラベル_アップ , 矢印_ダウン , 矢印_アップ , 円 , 旗 , 三角_ダウン , 三角_アップ , クロス , xクロス 位置パラメータはオプションです: 上 , 下 , 上 , 下 , 絶対 サイズパラメータはオプションです: 10px , 14px , 20px , 40px , 80px , パイン言語でsize.tiny, size.small, size.normal, size.large, size.huge を比較します. none , all
c.plotchar(bar.Close, {char: 'X'})
c.plotchar(bar.Close, char = 'X')
// Not supported for now
plotchar
グラフに任意のユニコード文字を使用して視覚的な形を描きます.
plotchar (シリーズ,タイトル,チャール,場所,色,オフセット,テキスト,テキスト色,編集可能,サイズ, show_last,表示) 位置パラメータはオプションです:
上 size.autoサイズが小さい 表示パラメータはオプションです:, 下 , 上 , 下 , 絶対 サイズパラメータはオプションです: 10px , 14px , 20px , 40px , 80px , パイン言語でsize.tiny, size.small, size.normal, size.large, size.huge を比較します. none , all
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
// Not supported for now
plotcandle
図にK線図を描く
plotcandle ((open, high, low, close, title, color, wickcolor, 編集可能, show_last, bordercolor, display) オープン,高い,低い, 閉じる, タイトル, カラー, ウィックカラー, 編集可能, ショウ_ラスト, 境界カラー, 表示) 表示パラメータはオプションです:
none , all
c.signal("long", bar.High, 1.5)
c.signal("long", bar.High, 1.5)
// Not supported for now
signal
バイ・セールシグナルを描くのに使われます.
シグナル (方向,価格,Qty,ID) 取引の方向を示すためにパラメータは渡されます. あなたは選択することができます
long , closelong , short , closeshort . パラメータ bar.High
マーカー信号のY軸位置です. 送信されたパラメータ1.5は,信号のトランザクションの数を示します.第4パラメータは,描かれたデフォルトテキストコンテンツを入れ替えるために送信され,描かれた信号マーカーのデフォルトテキストは,トランザクションの方向である,例えばcloselong です.
c.reset()
c.reset()
// Not supported for now
reset
,Pine言語では利用できない関数は,チャートデータを空にするのに使用されます.
リセット (リメイク) について
reset()
方法が1つのパラメータを取ることができる.remain
保存するデータの数を指定する.remain
すべてのデータを削除します.
戦略のカスタム図は,方法の1つだけ使用することができますKLineChart()
機能またはChart()
機能.いくつかの色とスタイル設定のためにKLineChart()
機能の呼び出し,参照してくださいKLineChart 関数を使って戦略図面設計を簡単にする.
{@fun/Log/チャート・チャート}
ログを片付けろ
ログリセット (remain)
についてremain
このパラメータは,保存すべき最近のログエントリの数を設定するために使用されます.
留まる
偽り
番号
function main() {
// Keep the last 10 logs and clear the rest
LogReset(10)
}
def main():
LogReset(10)
void main() {
LogReset(10);
}
ストラテジーの開始毎の起動ログは1つとしてカウントされるので,パラメータが送信されず,ストラテジーの開始時にログ出力がない場合は,ログが表示されず,ドッカーログが返されるのを待っています (例外ではありません).
{@fun/Log Log}, {@fun/Log/Logバキューム ログバキューム}
貯蔵スペースを回収するために使われますSQLiteデータを削除する際にLogReset()
ログをクリアする機能です
ログバキューム
function main() {
LogReset()
LogVacuum()
}
def main():
LogReset()
LogVacuum()
void main() {
LogReset()
LogVacuum()
}
その理由はSQLite
データを削除するときに占有するスペースを回収せず,実行する必要があります.VACUUM
この機能が呼び出されるとファイル移動操作が起こります.遅延は大きいので,適切な時間間隔で呼び出すことが推奨されます.
{@fun/Log/LogReset ログリセット}
これは,ライブ取引ページの"debug information"列のデバッグ情報を出力するために使用されます.例えば,ライブ取引 ID が123456
についてconsole.log
拡張子でログファイルを作成します. このプログラムでは,すべての情報と.log
プログラムにデバッグ情報を書き込む/logs/storage/123456/
ライブ取引が属しているドッカーディレクトリで,ファイル名前置きでstdout_
.
コンソール. ログ...msgs
パラメータmsg
出力の内容であり,パラメータmsg
1つ以上で通過できます
メッセージ
偽り
文字列,数,ボール,オブジェクト,配列,null,その他のシステムでサポートされるタイプ.
function main() {
console.log("test console.log")
}
# Not supported
// Not supported
JavaScript
言語はこの機能をサポートします[object Object]
できるだけ多くの読み取れる情報を出力してみてください.{@fun/Log/console.error コンソール.エラー}
ライブ取引ページの"デバッグメッセージ"フィールドのエラー出力に使用されます.例えば,ライブ取引IDが123456
についてconsole.error
拡張子でログファイルを作成する.log
について/logs/storage/123456/
プレフィックスでエラー出力を書き込むstderr_
.
コンソール.エラー...msgs
パラメータmsg
出力の内容であり,パラメータmsg
1つ以上で通過できます
メッセージ
偽り
文字列,数,ボール,オブジェクト,配列,null,その他のシステムでサポートされるタイプ.
function main() {
console.error("test console.error")
}
# Not supported
// Not supported
JavaScript
言語はこの機能をサポートします[object Object]
できるだけ多くの読み取れる情報を出力してみてください.{@fun/Log/console.log コンソール.log}
現時点での設定された取引ペア,契約コード,すなわちティッカーデータに対応するスポットまたはコントラクトの {@struct/Ticker Ticker} 構造を取得します.GetTicker ()
交換オブジェクト {@var/EXCHANGE exchange} のメンバー関数であり,exchange
対象メンバーの関数 (方法) は,exchange
文書には繰り返されないでしょう
についてexchange.GetTicker()
データの要求が成功すると {@struct/Ticker Ticker} 構造を返し,データ要求が失敗すると null 値を返します.
{@struct/Ticker Ticker},ゼロ値
交換する.GetTicker() 交換する.GetTicker (タッカーのシンボル)
パラメータsymbol
要求された {@struct/Ticker Ticker} データに対応する特定の取引ペアとコントラクトコードを指定するために使用されます.このパラメータが送信されない場合は,現在設定されている取引ペアとコントラクトコードの市場データがデフォルトで要求されます.
呼び出すときexchange.GetTicker(symbol)
機能exchange
USDT と BTC と取引される通貨で市場データを要求する必要がある場合,パラメータはsymbol
これは:"BTC_USDT"
形式はFMZプラットフォームで定義された取引ペア形式です.
呼び出すときexchange.GetTicker(symbol)
機能exchange
BTCsymbol
これは:"BTC_USDT.swap"
形式は,トレーディングペアそして契約コードFMZプラットフォームで定義され,文字exchange.GetTicker(symbol)
機能exchange
BTCsymbol
これは:"BTC_USDT.BTC-240108-40000-C"
(Binance Option BTC-240108-40000-C を例として) 形式は,トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字
シンボル 偽り 文字列
function main(){
// If it is a futures exchange object, set the contract code first, e.g. set it as a perpetual contract
// exchange.SetContractType("swap")
var ticker = exchange.GetTicker()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, the ticker is null, and it will cause an error when accessing ticker.High, so when testing this code, make sure that the exchange interface can be accessed.
*/
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume)
}
def main():
ticker = exchange.GetTicker()
Log("Symbol:", ticker["Symbol"], "High:", ticker["High"], "Low:", ticker["Low"], "Sell:", ticker["Sell"], "Buy:", ticker["Buy"], "Last:", ticker["Last"], "Open:", ticker.Open, "Volume:", ticker["Volume"])
void main() {
auto ticker = exchange.GetTicker();
Log("Symbol:", ticker.Symbol, "High:", ticker.High, "Low:", ticker.Low, "Sell:", ticker.Sell, "Buy:", ticker.Buy, "Last:", ticker.Last, "Open:", ticker.Open, "Volume:", ticker.Volume);
}
フューチャー取引対象 (すなわち,exchange
またはexchanges[0]
契約コードを設定するには,exchange.SetContractType()
呼び出しが繰り返されない.
function main() {
var ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
}
def main():
ticker = exchange.GetTicker("BTC_USDT")
Log(ticker)
void main() {
auto ticker = exchange.GetTicker("BTC_USDT");
Log(ticker);
}
試しにsymbol
特定のシンボル (スポットシンボル) の市場データを要求するパラメータ.
についてTicker
返されたデータexchange.GetTicker()
バックテストシステムで機能します.High
そしてLow
市場から1つ購入し,その時点で1つ販売.Ticker
返されたデータexchange.GetTicker()
実際の市場での機能.High
そしてLow
値がカプセル化された交換によって返されるデータに基づいています.Tick
インターフェースで,特定の期間 (通常24時間) の最高値と最低値が表示されます.
支援しない取引所exchange.GetTicker()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetTicker をインストールする | – | フューチャーズ_Aevo |
{@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange.GetTickers}, {@fun/Market/exchange.GetTickers exchange
現時点で設定された取引ペア,契約コード,すなわちオーダーブックデータに対応するスポットまたは契約の {@struct/Depth Depth} 構造を取得します.
についてexchange.GetDepth()
データの要求が成功した場合 {@struct/Depth Depth} 構造を返し,データ要求が失敗した場合 null を返します.
{@struct/Depth Depth},ゼロ値
交換する.GetDepth ((() 交換.GetDepth (深度) シンボル
パラメータsymbol
要求された {@struct/Depth Depth} データに対応する特定の取引ペアとコントラクトコードを指定するために使用されます.このパラメータが送信されない場合,現在設定されている取引ペアとコントラクトコードのオーダーブックデータはデフォルトで要求されます.exchange.GetDepth(symbol)
機能exchange
USDT と BTC と取引通貨で注文簿データを取得するために要求する必要があります.symbol
これは:"BTC_USDT"
FMZ プラットフォームで定義された取引ペア形式です.exchange.GetDepth(symbol)
機能exchange
BTCのU標準永続契約のオーダーブックデータを要求する必要がある場合,パラメータはsymbol
これは:"BTC_USDT.swap"
形式は,トレーディングペアそして契約コードFMZ プラットフォームによって定義され,文字で区切られています.exchange.GetDepth(symbol)
機能exchange
BTCsymbol
これは:"BTC_USDT.BTC-240108-40000-C"
(Binance Option BTC-240108-40000-C を例として) 形式は,トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字
function main(){
var depth = exchange.GetDepth()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, the depth is null, which will cause an error when accessing depth.Asks[1].Price, so make sure you can access the exchange interface when testing the code.
*/
var price = depth.Asks[1].Price
Log("Sell 2 price is:", price)
}
def main():
depth = exchange.GetDepth()
price = depth["Asks"][1]["Price"]
Log("Sell 2 price is:", price)
void main() {
auto depth = exchange.GetDepth();
auto price = depth.Asks[1].Price;
Log("Sell 2 price is:", price);
}
テストexchange.GetDepth()
機能:
function main() {
// BTC U-based perpetual contract
var depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
}
def main():
depth = exchange.GetDepth("BTC_USDT.swap")
Log(depth)
void main() {
auto depth = exchange.GetDepth("BTC_USDT.swap");
Log(depth);
}
設定されたときexchange
取引対象は,先物として,symbol
特定のシンボル (フューチャーシンボル) のオーダーブックデータを要求するパラメータ.
バックテストシステムでは,各グレードのデータがexchange.GetDepth()
機能シミュレーションバックテストシステムでは,バックテストによって返されるデータは,exchange.GetDepth()
機能リアル・ティックバックテストは 2階層の深層スナップショットです
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker.GetTicker}, {@fun/Market/Market/
{@struct/Trade Trade} の構造配列を取得します. 現時点での設定された取引ペア,契約コード,すなわち市場取引データに対応するスポットまたは契約.
についてexchange.GetTrades()
この関数は,データ要求が成功した場合に {@struct/Trade Trade} 構造の配列を返し,データ要求が失敗した場合に null 値を返します.
{@struct/Trade Trade}配列,ゼロ値
交換.GetTrades (ゲットトレード) 交換.GetTrades (シンボル)
パラメータsymbol
要求された {@struct/Trade Trade} 配列データに対応する特定の取引ペアと契約コードを指定するために使用されます.このパラメータが通過しなければ,現在設定されている取引ペアと契約コードの最新の取引記録データがデフォルトで要求されます.exchange.GetTrades(symbol)
機能exchange
USDT と BTC と取引される通貨で注文簿データを要求する必要がある場合,パラメータsymbol
これは:"BTC_USDT"
FMZ プラットフォームで定義された取引ペア形式です.exchange.GetTrades(symbol)
機能exchange
BTCのU標準永続契約のオーダーブックデータを要求する必要がある場合,パラメータはsymbol
これは:"BTC_USDT.swap"
形式は,トレーディングペアそして契約コードFMZ プラットフォームによって定義され,文字で区切られています.exchange.GetTrades(symbol)
機能exchange
BTCsymbol
これは:"BTC_USDT.BTC-240108-40000-C"
(Binance Option BTC-240108-40000-C を例として) 形式は,トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字
function main(){
var trades = exchange.GetTrades()
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, trade is null. When accessing trade[0].Id, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type)
}
def main():
trades = exchange.GetTrades()
Log("id:", trades[0]["Id"], "time:", trades[0]["Time"], "Price:", trades[0]["Price"], "Amount:", trades[0]["Amount"], "type:", trades[0]["Type"])
void main() {
auto trades = exchange.GetTrades();
Log("id:", trades[0].Id, "time:", trades[0].Time, "Price:", trades[0].Price, "Amount:", trades[0].Amount, "type:", trades[0].Type);
}
試験するexchange.GetTrades()
機能:
function main() {
// BTC's U-based perpetual contract
var trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
}
def main():
trades = exchange.GetTrades("BTC_USDT.swap")
Log(trades)
void main() {
auto trades = exchange.GetTrades("BTC_USDT.swap");
Log(trades);
}
設定されたときexchange
取引対象は,先物として,symbol
特定のシンボル (フューチャーシンボル) の市場取引記録データを要求するパラメータ.
exchange.GetTrades()
現行の取引ペア,市場の取引履歴 (自分のものではなく) を取得する機能. いくつかの取引所はこの機能をサポートせず,返される特定のデータは,取引記録の範囲が取引所に依存し,特定の状況に応じて処理する必要がある程度です. 返されるデータは配列で,各要素が時間順に並べられ,exchange.GetRecords ()
この関数は同じ順序のデータを返します つまり,配列の最後の要素は現在の時間に近いデータです
についてexchange.GetTrades()
この関数で表示される値が,シミュレーションバックテストシステムでバックテストします.exchange.GetTrades()
使用するときに機能リアル・ティックバックテストシステムにおけるバックテストは,オーダーフローのスナップショットデータ,つまり {@struct/Trade Trade} 構造配列です.
支援しない取引所exchange.GetTrades()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetTrades は | – | Futures_BitMart / Futures_Bibox について |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {@fun/Market/exchange.GetRecords exchange.GetRecords}, {
現在設定されている取引ペア,契約コード,すなわちKラインデータに対応するスポットまたはコントラクトの {@struct/Record Record} 構造配列を取得します.
についてexchange.GetRecords()
この関数は,データ要求が成功すると {@struct/Record Record} 構造の配列を返し,データ要求が失敗すると null 値を返します.
{@struct/Record Record}配列,ゼロ値
交換.GetRecords (取得記録) 交換.GetRecords (レコードのシンボル) 交換.GetRecords (記号,点) exchange.GetRecords (シンボル,ピリオド,制限) 交換.GetRecords (期間) 交換.GetRecords (期間,制限)
パラメータsymbol
このパラメータが送信されない場合,現在設定されている取引ペアと契約コードのK線データはデフォルトで要求されます.exchange.GetRecords(symbol)
機能exchange
USDT と BTC と取引通貨でデータを取得するために要求する必要がある場合,パラメータsymbol
これは:"BTC_USDT"
FMZ プラットフォームで定義された取引ペア形式です.exchange.GetRecords(symbol)
機能exchange
BTCのU標準永続契約のオーダーブックデータを要求する必要がある場合,パラメータはsymbol
これは:"BTC_USDT.swap"
形式は,トレーディングペアそして契約コードFMZ プラットフォームによって定義され,文字で区切られています.exchange.GetRecords(symbol)
機能exchange
BTCsymbol
これは:"BTC_USDT.BTC-240108-40000-C"
(Binance Option BTC-240108-40000-C を例として) 形式は,トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字period
要求されたK線データの期間を指定します.例えば: {@var/PERIOD/PERIOD_M1 PERIOD_M1}, {@var/PERIOD/PERIOD_M5 PERIOD_M5}, {@var/PERIOD/PERIOD_M15 PERIOD_M15}など.パラメータの値period
定義された標準周期だけでなく,秒で整数値も通過できます.このパラメータが通過しなければ,デフォルトで要求されるK線データの期間は,現在の戦略リアルタイム/バックテスト構成のデフォルトK線周期です.
期間
偽り
番号
パラメーターlimit
このパラメータが送信されない場合,デフォルトの要求長は,交換K線インターフェースの時点で要求される最大数のK線バーである.このパラメータは,交換K線データをクエリするページングを引き起こし,ページングクエリ中に関数呼び出しの時間の消費が増加する可能性があります.
制限
偽り
番号
function main() {
// Print K-line data with a K-line period of 120 seconds (2 minutes)
Log(exchange.GetRecords(60 * 2))
// Print K-line data with a K-line period of 5 minutes
Log(exchange.GetRecords(PERIOD_M5))
}
def main():
Log(exchange.GetRecords(60 * 2))
Log(exchange.GetRecords(PERIOD_M5))
void main() {
Log(exchange.GetRecords(60 * 2)[0]);
Log(exchange.GetRecords(PERIOD_M5)[0]);
}
カスタム期間のK線データを取得します
function main() {
var records = exchange.GetRecords(PERIOD_H1)
/*
The exchange interface may not be accessible due to network reasons (even if the docker program's device can open the exchange website, the API interface may not be accessible).
At this point, records is null. When accessing records[0].Time, it will cause an error. Therefore, when testing this code, ensure that you can access the exchange interface.
*/
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High)
Log("The second k-line data is Time:", records[1].Time ,"Close:", records[1].Close)
Log("Current K-line (latest)", records[records.length-1], "Previous K-line", records[records.length-2])
}
def main():
records = exchange.GetRecords(PERIOD_H1)
Log("The first k-line data is Time:", records[0]["Time"], "Open:", records[0]["Open"], "High:", records[0]["High"])
Log("The second k-line data Time:", records[1]["Time"], "Close:", records[1]["Close"])
Log("Current K-line (latest)", records[-1], "Previous K-line", records[-2])
void main() {
auto records = exchange.GetRecords(PERIOD_H1);
Log("The first k-line data is Time:", records[0].Time, "Open:", records[0].Open, "High:", records[0].High);
Log("The second k-line data Time:", records[1].Time, "Close:", records[1].Close);
Log("Current K-line (latest)", records[records.size() - 1], "Previous K-line", records[records.size() - 2]);
}
出力K線バーデータ:
function main() {
var records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
}
def main():
records = exchange.GetRecords("BTC_USDT.swap", 60, 100)
Log(records)
void main() {
auto records = exchange.GetRecords("BTC_USDT.swap", 60, 100);
Log(records);
}
設定されたときexchange
取引対象は,先物として,symbol
, period
そしてlimit
特定の製品 (将来の製品) のK線データを要求するパラメータ
バックテストと実際の取引ページで設定できます. パラメータを指定するとexchange.GetRecords()
函数で,そのパラメータ期間に対応するK線データが取得されます.関数を呼び出すときにパラメータが指定されていない場合は,バックテストと実際の市場パラメータに設定されたK線期間に従って対応するK線データが返されます.
返される値は,数列です.Record
蓄積されたK線バーの上限は,exchange.SetMaxBarLen()
関数設定. 設定されていない場合のデフォルト制限は5000バーです. K線データが K線バー蓄積制限に達すると,K線バーを追加して最古のK線バーを削除することによって更新されます (例えば,キューイン/アウト).Trade
K線を生成するために,リアルタイムで
エクスチェンジのKラインインターフェースがページングクエリをサポートしている場合,複数のAPIリクエストがexchange.SetMaxBarLen()
線長を大きく設定する機能です
必要なのはexchange.GetRecords()
- バックテストシステムは,バックテストの時間範囲が開始される前に (デフォルトは5000で,バックテストシステムの設定とデータの量は返された最終数値に影響を与える) 初期Kラインデータとして,一定の数のKラインバーを事前に取得します. - 実際の取引中に得られたKラインバーの数は,取引所のKラインインターフェースから得ることができる最大量のデータに基づいています.
についてperiod
5 秒間でK線データを取得する要求です.period
パラメータは60で割り切れない (つまり,表示された期間は分で割り切れない). 基礎システムでは,exchange.GetTrades()
取引記録データを取得し,必要なK線データを合成します.period
パラメータが60で割り切れる場合,必要なK線データは最低1分間のK線データを用い合成されます (可能な限り,必要なK線データはより長い期間を使って合成されます).
バックテストシステムにおけるシミュレーションレベルのバックテストには,基礎K線周期の設定が必要である (バックテストシステムがレベルバックテストをシミュレートするとき,対応するK線データは,セットの基礎K線周期に従ってTickデータを生成するために使用される).戦略で得られたK線データの期間は,基礎K線周期よりも小さくならないことに注意すべきである.シミュレーションレベルのバックテストでは,バックテストシステムの各期間のK線データは,基礎K線期間のK線データから合成される.
についてC++
この言語は,自分のK線データを構築する必要がある場合,次のコード例を持っています.
#include <sstream>
void main() {
Records r;
r.Valid = true;
for (auto i = 0; i < 10; i++) {
Record ele;
ele.Time = i * 100000;
ele.High = i * 10000;
ele.Low = i * 1000;
ele.Close = i * 100;
ele.Open = i * 10;
ele.Volume = i * 1;
r.push_back(ele);
}
// Output display: Records[10]
Log(r);
auto ma = TA.MA(r,10);
// Output display: [nan,nan,nan,nan,nan,nan,nan,nan,nan,450]
Log(ma);
}
支援しない取引所exchange.GetRecords()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetRecords を取得する | ザイフ / コインチェック / ビットフライヤー | フューチャーズ_Aevo |
{@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTrades exchange.GetTrades}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}, {@fun/Market/exchange.SetMaxBarLen exchange.SetMaxBarLen}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetTicker exchange.GetTicker}, {@fun/Market/exchange.GetDepth exchange.GetDepth exchange.GetDepth}, {@fun/Market/exchange.GetDepth exchange.GetDepth exchange
FMZ Quant Trading プラットフォームのウェブサイトページで設定されたK-ライン期間を取得して,バックテストとライブ取引で戦略を実行します.exchange.GetRecords()
パラメータを通過することなく機能する.
数秒で整数値を表示します 番号
交換.GetPeriod (取得期間)
function main() {
// For example, the K-line period set on the website page of the FMZ Quant Trading platform during backtesting and live trading is 1 hour.
var period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
}
def main():
period = exchange.GetPeriod()
Log("K-line period:", period / (60 * 60), "hours")
void main() {
auto period = exchange.GetPeriod();
Log("K-line period:", period / (60 * 60.0), "hours");
}
{@fun/Market/exchange.GetRecords exchange.GetRecords} 取引先を チェックする
K線の最大長さを設定します
交換する.SetMaxBarLen ((n)
パラメータn
最大K線長を指定するために使用されます.
n
本当
番号
function main() {
exchange.SetMaxBarLen(50)
var records = exchange.GetRecords()
Log(records.length, records)
}
def main():
exchange.SetMaxBarLen(50)
r = exchange.GetRecords()
Log(len(r), r)
void main() {
exchange.SetMaxBarLen(50);
auto r = exchange.GetRecords();
Log(r.size(), r[0]);
}
についてexchange.SetMaxBarLen()
機能は暗号通貨戦略の実行時間には2つの側面に影響を与える:
{@fun/Market/exchange.GetRecords exchange.GetRecords} 取引先を チェックする
元のコンテンツを最後に戻すrest
現在の交換オブジェクトの要求 ({@var/EXCHANGE exchange}, {@var/EXCHANGE/exchanges exchanges}).
回答データrest
要求する
文字列
交換する.GetRawJSON()
function main(){
exchange.GetAccount();
var obj = JSON.parse(exchange.GetRawJSON());
Log(obj);
}
import json
def main():
exchange.GetAccount()
obj = json.loads(exchange.GetRawJSON())
Log(obj)
void main() {
auto obj = exchange.GetAccount();
// C++ does not support the GetRawJSON function
Log(obj);
}
についてexchange.GetRawJSON()
この機能は,実際の取引にのみサポートされています.C++
language.
{@var/EXCHANGE exchange} 交換する
交換対象の為替レートを取得します.
交換対象の為替レートの現在の値. 番号
エクスチェンジ.GetRate ((()
function main(){
Log(exchange.GetTicker())
// Set up exchange rate conversion
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
}
def main():
Log(exchange.GetTicker())
exchange.SetRate(7)
Log(exchange.GetTicker())
Log("Current exchange rate:", exchange.GetRate())
void main() {
Log(exchange.GetTicker());
exchange.SetRate(7);
Log(exchange.GetTicker());
Log("Current exchange rate:", exchange.GetRate());
}
もしexchange.SetRate()
換算率を設定するために呼び出されていなかった場合,exchange.GetRate()
この関数は,現在表示されている通貨 (quoteCurrency) に関するデータが変換されていないことを表示します.
通貨レートの値が,exchange.SetRate()
例えばexchange.SetRate(7)
価格情報,例えば,オート,深さ,および注文価格exchange
交換対象は,設定された為替レートに掛けることで変換されます.7
- わかった
もしexchange
呼び出し後,名義通貨としてUSDと交換に対応します.exchange.SetRate(7)
リアルマーケットのすべての価格は,CNYに近い価格に変換されます.7
この時点で,交換レートの値は,exchange.GetRate()
は7
.
{@fun/Trade/exchange.SetRate exchange.SetRate} {@fun/Trade/exchange.SetRate exchange.SetRate} {@fun/Trade/exchange.SetRate exchange.SetRate} {@fun/Trade/exchange.SetRate} {@trade.exchange.setRate} {@trade.exchange.setRate.setRate.setRate} {@fun/Trade.exchange.setRate.setRate} {@trade.exchange.setRate.setRate}
についてexchange.SetData()
戦略が実行されているときに読み込まれるデータを設定するために使用されます.
パラメータの後の文字列の長さvalue
JSONコード化
番号
exchange.SetData ((キー,値) を表示する
データ収集の名前
キー
本当
文字列
読み込むデータexchange.SetData()
配列のデータ構造があります. データ構造は,配列が要求するデータ形式と同じです.exchange.GetData()
外部データ要求時の機能,すなわち:"schema": ["time", "data"]
- わかった
価値
本当
配列
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
var data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while(true) {
Log(exchange.GetData("test"))
Sleep(1000)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
data = [
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
exchange.SetData("test", data)
while True:
Log(exchange.GetData("test"))
Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json data = R"([
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
])"_json;
exchange.SetData("test", data);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000);
}
}
パラメータのデータがvalue
形式は,data
タイムスタンプが表示されているように,1579622400000
時間に対応します2020-01-22 00:00:00
この時間後に実行すると,呼び出すexchange.GetData()
次のデータタイムスタンプの前にデータを取得する関数1579708800000
時間2020-01-23 00:00:00
受け取るものは[1579622400000, 123]
プログラムが実行され続けるにつれて,そのデータの内容,時間の変化,など,データ項目を項目ごとに取得します.次の例では,実行時に (バックテストまたはライブ取引),現在の瞬間はタイムスタンプに達または超過します.1579795200000
についてexchange.GetData()
函数が呼び出し,返した値は:{"Time":1579795200000,"Data":["abc", 123,{"price":123}]}
. "Time":1579795200000
対応する1579795200000
データで[1579795200000, ["abc", 123, {"price": 123}]]
. "Data":["abc", 123, {"price": 123}]
データに対応する["abc", 123, {"price": 123}]]
中[1579795200000, ["abc", 123, {"price": 123}]]
.
読み込まれるデータは,あらゆる計測可能な情報の戦略的定量評価に使用される経済指標,業界データ,関連指標などである.
{@fun/Market/exchange.GetData exchange.GetData} 情報を交換する
についてexchange.GetData()
この関数は,データ読み込みをexchange.SetData()
外部リンクによって提供されます.
データ収集の記録 オブジェクト
交換する.GetData (キー) 交換.GetData (キー,タイムアウト)
データ収集の名前 キー 本当 文字列 ミリ秒でキャッシュタイムアウトを設定します. リアルトレードでは1分キャッシュタイムアウトをデフォルトで設定します. タイムアウト 偽り 番号
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
while(true) {
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
exchange.SetData("test", [[1579536000000, _D(1579536000000/1000)], [1579622400000, _D(1579622400000/1000)], [1579708800000, _D(1579708800000/1000)]])
while True:
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
json arr = R"([[1579536000000, ""], [1579622400000, ""], [1579708800000, ""]])"_json;
arr[0][1] = _D(1579536000000);
arr[1][1] = _D(1579622400000);
arr[2][1] = _D(1579708800000);
exchange.SetData("test", arr);
while(true) {
Log(exchange.GetData("test"));
Sleep(1000 * 60 * 60 * 24);
}
}
データを直接書き込むための電話です
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
}
}
'''backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
'''
def main():
while True:
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Sleep(1000)
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
void main() {
while(true) {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Sleep(1000);
}
}
外部リンクを通じてデータを要求するサポート,要求されたデータのフォーマット:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
どこにschema
ロードされたデータ本体の各レコードのデータ形式で,["time", "data"]
入力データ形式に対応するdata
属性
保存されているものdata
アトリビュートとは,データの本体であり,各エントリにはミリ秒レベルのタイムスタンプとデータ内容 (JSONでコードできる任意のデータ) が含まれます.
Goで書かれたテストのためのサービスプログラム:
package main
import (
"fmt"
"net/http"
"encoding/json"
)
func Handle (w http.ResponseWriter, r *http.Request) {
defer func() {
fmt.Println("req:", *r)
ret := map[string]interface{}{
"schema": []string{"time","data"},
"data": []interface{}{
[]interface{}{1579536000000, "abc"},
[]interface{}{1579622400000, 123},
[]interface{}{1579708800000, map[string]interface{}{"price":123}},
[]interface{}{1579795200000, []interface{}{"abc", 123, map[string]interface{}{"price":123}}},
},
}
b, _ := json.Marshal(ret)
w.Write(b)
}()
}
func main () {
fmt.Println("listen http://localhost:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe(":9090", nil)
}
要求を受信した際にプログラムによる応答データ:
{
"schema":["time","data"],
"data":[
[1579536000000, "abc"],
[1579622400000, 123],
[1579708800000, {"price": 123}],
[1579795200000, ["abc", 123, {"price": 123}]]
]
}
試験戦略コード:
function main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
}
def main():
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"))
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"))
void main() {
Log(exchange.GetData("http://xxx.xx.x.xx:9090/data"));
Log(exchange.GetData("https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json"));
}
外部リンクのデータを取得するための呼び出し方法.
function main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data")) // The xxx part of the link is the code of the query data, here xxx is an example.
}
def main():
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"))
void main() {
Log(exchange.GetData("https://www.datadata.com/api/v1/query/xxx/data"));
}
プラットフォームで作成されたクエリのデータ要求データデータ回答のデータ形式を要求する (時間,スキーマで記述されたデータフィールドを含む必要があります):
{
"data": [],
"schema": ["time", "data"]
}
exchange.GetData()
JSON オブジェクトが返されます.例えば:{"Time":1579795200000, "Data":"..."}
.
バックテストシステムでは,アクセスインターフェースを使用してデータを要求するときに,バックテストシステムは自動的に追加します.from
(秒で表示)to
(秒で表示される) 要求,パラメータなどperiod
(基となるK線期間,時間スタンプはミリ秒で) は,データを取得する時間枠を決定するために使用されます.
{@fun/Market/exchange.SetData exchange.SetData} データを交換する
についてexchange.GetMarkets()
交換市場情報を入手するために使用されます.
{@struct/Market Market} 構造を含む辞書 オブジェクト
交換.GetMarkets (ゲットマーケットズ)
function main() {
var markets = exchange.GetMarkets()
var currency = exchange.GetCurrency()
// Get the current contract code can also use exchange.GetContractType() function
var ct = "swap"
var key = currency + "." + ct
Log(key, ":", markets[key])
}
def main():
markets = exchange.GetMarkets()
currency = exchange.GetCurrency()
ct = "swap"
key = currency + "." + ct
Log(key, ":", markets[key])
void main() {
auto markets = exchange.GetMarkets();
auto currency = exchange.GetCurrency();
auto ct = "swap";
auto key = currency + "." + ct;
Log(key, ":", markets[key]);
}
フューチャー取引対象へのコール例:
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
var tbl1 = {
type: "table",
title: "markets1",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets1 = exchange.GetMarkets()
for (var key in markets1) {
var market = markets1[key]
tbl1.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
var tbl2 = {
type: "table",
title: "markets2",
cols: ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
rows: []
}
var markets2 = exchange.GetMarkets()
for (var key in markets2) {
var market = markets2[key]
tbl2.rows.push([key, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize, market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
tbl1 = {
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets1 = exchange.GetMarkets()
for key in markets1:
market = markets1[key]
tbl1["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tbl2 = {
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
}
markets2 = exchange.GetMarkets()
for key in markets2:
market = markets2[key]
tbl2["rows"].append([key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2023-05-10 00:00:00
end: 2023-05-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"SOL_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
json tbl1 = R"({
"type": "table",
"title": "markets1",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets1 = exchange.GetMarkets();
for (auto& [key, market] : markets1.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl1["rows"].push_back(arrJson);
}
for (const auto& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
json tbl2 = R"({
"type": "table",
"title": "markets2",
"cols": ["key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty", "MaxQty", "MinNotional", "MaxNotional", "CtVal"],
"rows": []
})"_json;
auto markets2 = exchange.GetMarkets();
for (auto& [key, market] : markets2.items()) {
json arrJson = {key, market["Symbol"], market["BaseAsset"], market["QuoteAsset"], market["TickSize"], market["AmountSize"], market["PricePrecision"], market["AmountPrecision"], market["MinQty"], market["MaxQty"], market["MinNotional"], market["MaxNotional"], market["CtVal"]};
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
フューチャー交換オブジェクトを呼び出すexchange.GetMarkets()
バックテストシステム内の関数.任意の市場関数を呼び出す前に,GetMarketsは現在のデフォルト取引ペアの市場データを返します.市場関数を呼び出す後,すべての要求された多様性の市場データを返します.以下のテスト例を参照してください:
についてexchange.GetMarkets()
この関数は,取引品種の名前というキーで辞書を返します.例えば,取引ペアとしてフォーマットされたスポット修正の場合:
{
"BTC_USDT" : {...}, // The key value is the Market structure
"LTC_USDT" : {...},
...
}
フューチャー契約の取引では,単一の種類のための複数の契約がある可能性があるため,例えばBTC_USDT
永続契約や四半期契約などがあります.exchange.GetMarkets()
function は,契約コードと組み合わせたペアのキー名を含む辞書を返します.例えば:
{
"BTC_USDT.swap" : {...}, // The key value is the Market structure
"BTC_USDT.quarter" : {...},
"LTC_USDT.swap" : {...},
...
}
exchange.GetMarkets()
機能はライブ取引,バックテストシステムをサポートします.exchange.GetMarkets()
この関数は,取引所でオンライン取引されている品種のみの市場情報を返します.exchange.GetMarkets()
この機能はオプション契約をサポートしません.支援しない取引所exchange.GetMarkets()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetMarkets を取得する | Coincheck / Bithumb / ビットフライヤー | – |
{@struct/市場市場}
についてexchange.GetTickers()
この関数は,交換されたティッカーデータ ({@struct/Ticker Ticker} 構造の配列) を取得するために使用されます.exchange
スポット取引対象である場合,すべての取引対の ticker データを返します.exchange
フューチャー取引対象の場合,すべての契約のティッカーデータを返します.
についてexchange.GetTickers()
この関数は {@struct/Ticker Ticker} 構造の配列をデータ要求に成功すると返し,失敗すると null を返します.
{@struct/Ticker Ticker}配列,ゼロ値
交換する.GetTickers ((()
function main() {
var tickers = exchange.GetTickers()
if (tickers && tickers.length > 0) {
Log("Number of tradable items on the exchange:", tickers.length)
}
}
def main():
tickers = exchange.GetTickers()
if tickers and len(tickers) > 0:
Log("Number of tradable items on the exchange:", len(tickers))
void main() {
auto tickers = exchange.GetTickers();
if (tickers.Valid && tickers.size() > 0) {
Log("Number of tradable items on the exchange:", tickers.size());
}
}
呼んでexchange.GetTickers()
市場データを集計する機能です
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
// Before requesting other trading pair market data, call Get Tickers
var tickers1 = exchange.GetTickers()
var tbl1 = {type: "table", title: "tickers1", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers1) {
tbl1.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
// Request market data for other trading pairs
for (var symbol of arrSymbol) {
exchange.GetTicker(symbol)
}
// Call GetTickers again
var tickers2 = exchange.GetTickers()
var tbl2 = {type: "table", title: "tickers2", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
for (var ticker of tickers2) {
tbl2.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
}
LogStatus("`" + JSON.stringify([tbl1, tbl2]) + "`")
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"]
tickers1 = exchange.GetTickers()
tbl1 = {"type": "table", "title": "tickers1", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers1:
tbl1["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
for symbol in arrSymbol:
exchange.GetTicker(symbol)
tickers2 = exchange.GetTickers()
tbl2 = {"type": "table", "title": "tickers2", "cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], "rows": []}
for ticker in tickers2:
tbl2["rows"].append([ticker["Symbol"], ticker["High"], ticker["Open"], ticker["Low"], ticker["Last"], ticker["Buy"], ticker["Sell"], ticker["Time"], ticker["Volume"]])
LogStatus("`" + json.dumps([tbl1, tbl2]) + "`")
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
json tickerToJson(const Ticker& ticker) {
json arrJson;
arrJson.push_back(ticker.Symbol);
arrJson.push_back(ticker.High);
arrJson.push_back(ticker.Open);
arrJson.push_back(ticker.Low);
arrJson.push_back(ticker.Last);
arrJson.push_back(ticker.Buy);
arrJson.push_back(ticker.Sell);
arrJson.push_back(ticker.Time);
arrJson.push_back(ticker.Volume);
return arrJson;
}
void main() {
std::string arrSymbol[] = {"ADA_USDT", "LTC_USDT", "ETH_USDT", "SOL_USDT"};
auto tickers1 = exchange.GetTickers();
json tbl1 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl1["title"] = "tickers1";
for (const auto& ticker : tickers1) {
json arrJson = tickerToJson(ticker);
tbl1["rows"].push_back(arrJson);
}
for (const std::string& symbol : arrSymbol) {
exchange.GetTicker(symbol);
}
auto tickers2 = exchange.GetTickers();
json tbl2 = R"({
"type": "table",
"cols": ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"],
"rows": []
})"_json;
tbl2["title"] = "tickers2";
for (const auto& ticker : tickers2) {
json arrJson = tickerToJson(ticker);
tbl2["rows"].push_back(arrJson);
}
json tbls = R"([])"_json;
tbls.push_back(tbl1);
tbls.push_back(tbl2);
LogStatus("`" + tbls.dump() + "`");
}
スポット交換オブジェクトを使用し,exchange.GetTickers()
バックテストシステムにおける関数.任意の市場関数を呼び出す前に,GetTickersは現在のデフォルト取引ペアのティッカーデータを返します.市場関数を呼び出す後,すべての要求された多様性のティッカーデータを返します.以下のテスト例を参照してください:
支援しない取引所exchange.GetTickers()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetTickers は | Zaif / WOO / Gemini / Coincheck / BitFlyer / ビボックス | フューチャーズ_WOO / フューチャーズ_dYdX / フューチャーズ_Deribit / フューチャーズ_Bibox / フューチャーズ_Aevo |
{@struct/TickerTicker}, {@fun/Market/exchange.GetTicker交換.GetTicker} 取引先を表示する
についてexchange.Buy()
購入オーダーを出すために使用されます.Buy()
交換オブジェクト {@var/EXCHANGE exchange} のメンバー関数である.Buy()
交換対象に結合した交換口座で動作します.exchange
メンバーの機能 (方法) の目的exchange
対象は,単に関連しているexchange
文書化後には 繰り返されないでしょう
成功したオーダーはオーダー Id を返します.失敗したオーダーは null 値を返します.
属性Id
FMZプラットフォームのオーダー {@struct/Order Order} 構造は,英語の逗子で分離された交換製品コードと交換元の注文IDで構成されています.Id
スポット取引対の形式ETH_USDT
OKX取引所の順序は次のとおりです.ETH-USDT,1547130415509278720
- わかった
呼び出すときexchange.Buy()
注文を出す機能,返品値の注文Id
基準に合致していますId
オーダー {@struct/Order Order} 構造の属性
文字列,ゼロ値
交換.購入 (価格,金額) 交換する.購入する (価格,金額,... args)
についてprice
パラメータは注文価格を設定するために使用されます.
価格
本当
番号
についてamount
パラメータは注文金額を設定するために使用されます.
額
本当
番号
この注文日記に付随情報を出力できる拡張パラメータarg
パラメータは"つ以上渡すことができます
アルグ
偽り
文字列,数,ボール,オブジェクト,配列,null,およびシステムでサポートされる他の種類
function main() {
var id = exchange.Buy(100, 1);
Log("id:", id);
}
def main():
id = exchange.Buy(100, 1)
Log("id:", id)
void main() {
auto id = exchange.Buy(100, 1);
Log("id:", id);
}
返した順序番号exchange.Buy()
注文情報への問い合わせや注文のキャンセルに使用できます
// The following is an error call
function main() {
exchange.SetContractType("quarter")
// Set the shorting direction
exchange.SetDirection("sell")
// If you place a buy order, an error will be reported, and shorting can only be sold
var id = exchange.Buy(50, 1)
// Set the long direction
exchange.SetDirection("buy")
// If you place a sell order, it will report an error, go long, only buy
var id2 = exchange.Sell(60, 1)
// Set direction to close long positions
exchange.SetDirection("closebuy")
// If you place a buy order, it will report an error, close long, only sell
var id3 = exchange.Buy(-1, 1)
// Set direction to close short positions
exchange.SetDirection("closesell")
// If you place a sell order, it will report an error, close short, only buy
var id4 = exchange.Sell(-1, 1)
}
# The following is an error call
def main():
exchange.SetContractType("quarter")
exchange.SetDirection("sell")
id = exchange.Buy(50, 1)
exchange.SetDirection("buy")
id2 = exchange.Sell(60, 1)
exchange.SetDirection("closebuy")
id3 = exchange.Buy(-1, 1)
exchange.SetDirection("closesell")
id4 = exchange.Sell(-1, 1)
// The following is an error call
void main() {
exchange.SetContractType("quarter");
exchange.SetDirection("sell");
auto id = exchange.Buy(50, 1);
exchange.SetDirection("buy");
auto id2 = exchange.Sell(60, 1);
exchange.SetDirection("closebuy");
auto id3 = exchange.Buy(-1, 1);
exchange.SetDirection("closesell");
auto id4 = exchange.Sell(-1, 1);
}
暗号通貨の先物契約のオーダーを出すとき,取引方向が正しく設定されていることを注意する必要があります.取引方向と取引機能の不一致はエラーを引き起こすため:
direction is sell, invalid order type Buy
direction is buy, invalid order type Sell
direction is closebuy, invalid order type Buy
direction is closesell, invalid order type Sell
// For example, the trading pair: ETH_BTC, place a buy order at the market price
function main() {
// Place a buy order at the market price and buy ETH coins with a value of 0.1 BTC (denominated currency)
exchange.Buy(-1, 0.1)
}
def main():
exchange.Buy(-1, 0.1)
void main() {
exchange.Buy(-1, 0.1);
}
スポットマーケットオーダー
フューチャー契約の注文をすると,取引方向と取引機能が一致しない場合はエラーが報告されるため,取引方向が正しく設定されているかどうか注意する必要があります.仮想通貨フューチャー契約の注文サイズは,指定されていない場合の契約数です.
パラメーターprice
設定されています.-1
取引所のオーダー配置インターフェースが市場オーダーをサポートすることを要求する.仮想通貨のスポット契約の市場オーダーを配置する際に,パラメータは,amount
取引先は,取引先の取引先の取引先の取引先の取引先の取引先です.amount
取引数です. ライブ取引中にマーケットオーダーインターフェースをサポートしない数少ない仮想通貨取引所があります. いくつかのスポット取引所で市場購入注文の注文量は取引コインの数です.交換に関する特別指示詳細については ユーザーガイド を参照してください.
命令の返却値が,この命令の返却値が,Id
についてexchange.Buy()
命令の返却値とは異なる可能性があります.Id
このドキュメントで説明されています
{@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Futures/exchange.Sell}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Futures/Futures/exchange.Sell}, {@fun/Futures/exchange.SetContractType exchange.SetContractType},
についてexchange.Sell()
販売注文を出すために使われます.
順序 Id を返します.失敗した順序は null 値を返します.Id
FMZプラットフォームのオーダー {@struct/Order Order} 構造は,英語の逗子で分離された交換製品コードと交換元の注文IDで構成されています.Id
スポット取引対の形式ETH_USDT
OKX取引所の順序は次のとおりです.ETH-USDT,1547130415509278720
. 呼び出すときexchange.Sell()
注文を出す機能,返品値の注文Id
基準に合致していますId
オーダー {@struct/Order Order} 構造の属性
文字列,ゼロ値
交換.販売 (価格,金額) 交換.販売 (価格,金額,... args)
についてprice
パラメータは注文価格を設定するために使用されます.
価格
本当
番号
についてamount
パラメータは注文金額を設定するために使用されます.
額
本当
番号
この注文日記に付随情報を出力できる拡張パラメータarg
パラメータは"つ以上渡すことができます
アルグ
偽り
文字列,数,ボール,オブジェクト,配列,null,およびシステムでサポートされる他の種類
function main(){
var id = exchange.Sell(100, 1)
Log("id:", id)
}
def main():
id = exchange.Sell(100, 1)
Log("id:", id)
void main() {
auto id = exchange.Sell(100, 1);
Log("id:", id);
}
返した順序番号exchange.Sell()
注文情報をクエリしたり 注文をキャンセルしたりできます
// The following is an error call
function main() {
exchange.SetContractType("quarter")
// Set the shorting direction
exchange.SetDirection("sell")
// If you place a buy order, an error will be reported, and shorting can only be sold
var id = exchange.Buy(50, 1)
// Set the long direction
exchange.SetDirection("buy")
// If you place a sell order, it will report an error, go long, only buy
var id2 = exchange.Sell(60, 1)
// Set direction to close long positions
exchange.SetDirection("closebuy")
// If you place a buy order, it will report an error, close long, only sell
var id3 = exchange.Buy(-1, 1)
// Set direction to close short positions
exchange.SetDirection("closesell")
// If you place a sell order, it will report an error, close short, only buy
var id4 = exchange.Sell(-1, 1)
}
# The following is an error call
def main():
exchange.SetContractType("quarter")
exchange.SetDirection("sell")
id = exchange.Buy(50, 1)
exchange.SetDirection("buy")
id2 = exchange.Sell(60, 1)
exchange.SetDirection("closebuy")
id3 = exchange.Buy(-1, 1)
exchange.SetDirection("closesell")
id4 = exchange.Sell(-1, 1)
// The following is an error call
void main() {
exchange.SetContractType("quarter");
exchange.SetDirection("sell");
auto id = exchange.Buy(50, 1);
exchange.SetDirection("buy");
auto id2 = exchange.Sell(60, 1);
exchange.SetDirection("closebuy");
auto id3 = exchange.Buy(-1, 1);
exchange.SetDirection("closesell");
auto id4 = exchange.Sell(-1, 1);
}
暗号通貨の先物契約のオーダーを出すとき,取引方向が正しく設定されていることを注意する必要があります.取引方向と取引機能の不一致はエラーを引き起こすため:
direction is sell, invalid order type Buy
direction is buy, invalid order type Sell
direction is closebuy, invalid order type Buy
direction is closesell, invalid order type Sell
// For example, the trading pair: ETH_BTC, place a sell order at the market price
function main() {
// Note: place a market order to sell, sell 0.2 ETH
exchange.Sell(-1, 0.2)
}
def main():
exchange.Sell(-1, 0.2)
void main() {
exchange.Sell(-1, 0.2);
}
スポットマーケットオーダー
フューチャー契約の注文をすると,取引方向と取引機能が一致しない場合はエラーが報告されるため,取引方向が正しく設定されているか注意する必要があります.仮想通貨フューチャー契約の注文金額は,指定されていない場合の契約数です.
パラメーターprice
設定されています.-1
取引所amount
取引通貨の金額です. 仮想通貨先物契約の市場オーダーを出すとき,金額パラメータamount
契約数です. ライブ取引中にマーケットオーダーインターフェースをサポートしない数少ない仮想通貨取引所があります.
命令の返却値が,この命令の返却値が,Id
についてexchange.Sell()
命令の返却値とは異なる可能性があります.Id
このドキュメントで説明されています
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}, {@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Futures/exchange.Buy}, {@fun/Futures/exchange.Buy}, {@fun/Futures/exchange.Buy}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetDirection exchange.SetDirection}, {@fun/Futures/exchange.SetDirection}, {@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Futures/Futures/exchange.
についてexchange.CreateOrder()
この関数は,注文をするのに使用されます.
順序が成功した場合,順序 ID が返されます.順序が失敗した場合, null 値が返されます.Id
FMZプラットフォームのオーダー {@struct/Order Order} 構造は,英語の逗子で分離された交換製品コードと交換元の注文IDで構成されています.Id
スポット取引対のオーダーの形式ETH_USDT
OKXの取引所は:ETH-USDT,1547130415509278720
. 呼び出すときexchange.CreateOrder(symbol, side, price, amount)
オーダーを表示する機能,オーダーの返却値Id
基準に合致していますId
オーダー {@struct/Order Order} 構造の属性
文字列,ゼロ値
exchange.CreateOrder ((シンボル,サイド,価格,金額) exchange.CreateOrder ((シンボル,サイド,価格,金額,... args)
パラメータsymbol
注文の特定の取引ペアと契約コードを指定するために使用されます.exchange.CreateOrder(symbol, side, price, amount)
オーダーを出す機能exchange
注文の通貨がUSDTで取引通貨がBTCである場合,パラメータはsymbol
これは:"BTC_USDT"
FMZ プラットフォームで定義された取引対の形式でexchange.CreateOrder(symbol, side, price, amount)
オーダーを出す機能exchange
取引対象である.もし注文が BTCsymbol
これは:"BTC_USDT.swap"
形式は,トレーディングペアそして契約コードFMZ プラットフォームによって定義され,文字で区切られています.exchange.CreateOrder(symbol, side, price, amount)
オーダーを出す機能exchange
取引対象である.もしその注文が BTCsymbol
これは:"BTC_USDT.BTC-240108-40000-C"
(Binance Option BTC-240108-40000-C を例として) 形式はトレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字side
このパラメータは,注文の取引方向を指定するために使用されます.
スポット交換対象の場合,オプション値はside
パラメータは:buy
, sell
. buy
購入を意味しますsell
売るという意味です
フューチャー取引対象については,side
パラメータは:buy
, closebuy
, sell
, closesell
. buy
長いポジションを開くことを意味します.closebuy
長いポジションを閉じるという意味ですsell
ショートポジションを開くことを意味します.closesell
ショートポジションを閉じる
側
本当
文字列
パラメーターprice
オーダーの価格を設定するために使用されます. -1 の価格は,オーダーが市場オーダーであることを示します.
価格
本当
番号
パラメーターamount
注文量設定に使用されます. 注文が市場購入オーダーである場合,注文量は購入金額であり,一部のスポット取引所の市場購入オーダーの注文量は取引コインの数であることに注意してください.詳細については,交換に関する特別指示arg
パラメーターは渡すことができます
アルグ
偽り
文字列,数,ボール,オブジェクト,配列,ゼロ値など,システムでサポートされる任意のタイプ
function main() {
var id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01) // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
// var id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01) // Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id)
}
def main():
id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01) # Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
# id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01) # Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id)
void main() {
auto id = exchange.CreateOrder("BTC_USDT", "buy", 60000, 0.01); // Spot exchange objects place orders for currency-to-currency transactions BTC_USDT trading pairs
// auto id = exchange.CreateOrder("BTC_USDT.swap", "buy", 60000, 0.01); // Futures exchange objects place orders for BTC's U-standard perpetual contracts
Log("Order Id:", id);
}
スポット取引物と先物取引物とはexchange.CreateOrder()
注文する機能です
{@fun/Trade/exchange.buy exchange.buy} {@fun/Trade/exchange.sell exchange.sell} {@fun/Trade/exchange.exchange.buy} {@fun/Trade/exchange.sell exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.exchange.buy} {@fun/Trade/exchange.exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.exchange.sell} {@fun/Trade/exchange.sell.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.sell.sell}
についてexchange.CancelOrder()
命令をキャンセルするために使用されます.
属性Id
FMZプラットフォームのオーダー {@struct/Order Order} 構造は,英語の逗子で分離された交換製品コードと交換元の注文IDで構成されています.Id
スポット取引対のオーダーの形式ETH_USDT
OKXの取引所は:ETH-USDT,1547130415509278720
- わかった
パラメーターorderId
呼び出すときに通過したexchange.CancelOrder()
命令をキャンセルする機能は,Id
オーダー {@struct/Order Order} 構造の属性
についてexchange.CancelOrder()
例えば,この関数は,真値を返します.true
キャンセル注文要求が成功して送信されたことを意味します.false
, はキャンセルオーダー要求が送信されなかったことを意味します.返した値は,交換が注文をキャンセルするかどうかを決定するために送信された要求の成功または失敗を表します.exchange.GetOrders()
命令がキャンセルされたかどうかを判断するために
ボール
交換.注文をキャンセル (注文Id) 交換.注文をキャンセル (注文Id,... args)
についてorderId
このパラメータは,キャンセルされるオーダーを指定するために使用されます.
命令された
本当
番号,文字列
この退会日記に添付された情報を出力できますarg
パラメータは"つ以上渡すことができます
アルグ
偽り
文字列,数,ボール,オブジェクト,配列,null,およびシステムでサポートされる他の種類
function main(){
var id = exchange.Sell(99999, 1)
exchange.CancelOrder(id)
}
def main():
id = exchange.Sell(99999, 1)
exchange.CancelOrder(id)
void main() {
auto id = exchange.Sell(99999, 1);
exchange.CancelOrder(id);
}
注文をキャンセル
function main() {
if (exchange.GetName().includes("Futures_")) {
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
exchange.SetContractType("swap")
exchange.SetDirection("buy")
}
var ticker = exchange.GetTicker()
exchange.Buy(ticker.Last * 0.5, 0.1)
var orders = exchange.GetOrders()
for (var i = 0 ; i < orders.length ; i++) {
exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i])
Sleep(500)
}
}
def main():
if exchange.GetName().find("Futures_") != -1:
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.")
exchange.SetContractType("swap")
exchange.SetDirection("buy")
ticker = exchange.GetTicker()
exchange.Buy(ticker["Last"] * 0.5, 0.1)
orders = exchange.GetOrders()
for i in range(len(orders)):
exchange.CancelOrder(orders[i]["Id"], "Cancelled orders:", orders[i])
Sleep(500)
void main() {
if (exchange.GetName().find("Futures_") != std::string::npos) {
Log("Set the contract as: perpetual contract, set the trade direction as: open long position.");
exchange.SetContractType("swap");
exchange.SetDirection("buy");
}
auto ticker = exchange.GetTicker();
exchange.Buy(ticker.Last * 0.5, 0.1);
auto orders = exchange.GetOrders();
for (int i = 0 ; i < orders.size() ; i++) {
exchange.CancelOrder(orders[i].Id, "Cancelled orders:", orders[i]);
Sleep(500);
}
}
FMZ API 機能は,次のようなログ出力機能を生成することができる.Log()
, exchange.Buy()
, exchange.CancelOrder()
必要なパラメータの後にいくつかの付随の出力パラメータが続きます.例えば:exchange.CancelOrder(orders[i].Id, orders[i])
注文をキャンセルするときにIDがorders[i].Id
命令の情報が出力されます.つまり, {@struct/Order Order} の構造orders[i]
.
古いバージョンのドッカーを使用している場合は,Exchange.CancelOrder (※) 関数の orderId パラメータは,現在のドキュメントで説明されているorderId と異なる可能性があります.
{@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Sell exchange.Sell}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.Buy exchange.Buy}, {@fun/Trade/exchange.Buy}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetOrders}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetOrders}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetOrders}, {@fun/Trade/exchange.GetOrders}, {@fun/Trade/exchange.
についてexchange.GetOrder()
オーダー情報を取得するために使用されます.
順序番号に従って順序の詳細をクエリし,クエリが成功した場合 {@struct/Order Order} 構造を返します. {@struct/Order Order},ゼロ値
交換.GetOrder (注文番号)
についてorderId
パラメータは,クエリする順序を指定するために使用されます.
属性Id
FMZプラットフォームのオーダー {@struct/Order Order} 構造は,英語の逗子で分離された交換製品コードと交換元の注文IDで構成されています.Id
スポット取引対のオーダーの形式ETH_USDT
OKXの取引所は:ETH-USDT,1547130415509278720
- わかった
パラメーターorderId
呼び出すときに通過したexchange.GetOrder()
順序をクエリする機能は,Id
オーダー {@struct/Order Order} 構造の属性
命令された 本当 文字列
function main(){
var id = exchange.Sell(1000, 1)
// Parameter id is the order number, you need to fill in the number of the order you want to query
var order = exchange.GetOrder(id)
Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:",
order.DealAmount, "Status:", order.Status, "Type:", order.Type)
}
def main():
id = exchange.Sell(1000, 1)
order = exchange.GetOrder(id)
Log("Id:", order["Id"], "Price:", order["Price"], "Amount:", order["Amount"], "DealAmount:",
order["DealAmount"], "Status:", order["Status"], "Type:", order["Type"])
void main() {
auto id = exchange.Sell(1000, 1);
auto order = exchange.GetOrder(id);
Log("Id:", order.Id, "Price:", order.Price, "Amount:", order.Amount, "DealAmount:",
order.DealAmount, "Status:", order.Status, "Type:", order.Type);
}
についてexchange.GetOrder()
機能は,いくつかの交換によってサポートされていません.AvgPrice
{@struct/Order Order} 構造の帰還値の属性は,取引の平均価格である.一部の取引所はこのフィールドをサポートしていないが,そうでない場合は0に設定されている.
古いバージョンを使用している場合は,orderId
パラメータexchange.GetOrder()
機能はorderId
現在のドキュメントに記載されています.
支援しない取引所exchange.GetOrder()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetOrder を取得する | ザイフ / コインチェック / ビットスタンプ | – |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@struct/Trade/Order Order}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Trade/Exchange}, {@struct/Order Order}, {@fun/Trade/exchange.GetOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetOrders exchange.GetOrders exchange.GetOrders.GetOr
についてexchange.GetOrders()
欠点オーダーを得るのに使われます
についてexchange.GetOrders()
この関数は,データ要求が成功した場合に {@struct/Order Order} 構造の配列を返し,データ要求が失敗した場合に null 値を返します.
{@struct/Order Order}配列,ゼロ値
交換する.GetOrders (GetOrders) 交換.GetOrders (GetOrders) を表示する
パラメータsymbol
設定するために使用されます.トランザクションシンボルまたはトランザクションシンボルの範囲尋問される
スポット交換対象の場合,symbol
パラメータが渡されない場合,すべてのスポット製品の未完了注文データは要求されます.
フューチャー取引対象の場合,symbol
パラメータが渡されない場合,デフォルトでは,現在の取引ペアと契約コードの次元範囲内のすべての種類の未完了オーダーデータを要求します.
シンボル 偽り 文字列
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]
for (var symbol of arrSymbol) {
var t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01)
}
var spotOrders = exchange.GetOrders()
var tbls = []
for (var orders of [spotOrders]) {
var tbl = {type: "table", title: "test GetOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
// Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"]
for symbol in arrSymbol:
t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 0.01)
spotOrders = exchange.GetOrders()
tbls = []
for orders in [spotOrders]:
tbl = {"type": "table", "title": "test GetOrders", "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
for order in orders:
tbl["rows"].append([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
tbls.append(tbl)
LogStatus("`" + json.dumps(tbls) + "`")
return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"ETH_USDT", "BTC_USDT", "LTC_USDT", "SOL_USDT"};
for (const auto& symbol : arrSymbol) {
auto t = exchange.GetTicker(symbol);
exchange.CreateOrder(symbol, "buy", t.Last / 2, 0.01);
}
auto spotOrders = exchange.GetOrders();
json tbls = R"([])"_json;
std::vector<std::vector<Order>> arr = {spotOrders};
for (const auto& orders : arr) {
json tbl = R"({
"type": "table",
"title": "test GetOrders",
"cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
"rows": []
})"_json;
for (const auto& order : orders) {
json arrJson = R"([])"_json;
arrJson.push_back("Symbol");
arrJson.push_back("Id");
arrJson.push_back(order.Price);
arrJson.push_back(order.Amount);
arrJson.push_back(order.DealAmount);
arrJson.push_back(order.AvgPrice);
arrJson.push_back(order.Status);
arrJson.push_back(order.Type);
arrJson.push_back(order.Offset);
arrJson.push_back(order.ContractType);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
スポット交換オブジェクトを使用して,現在の価格の半分で複数の異なる取引ペアの購入オーダーを置き,その後に未払いオーダー情報をクエリします.
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for (var symbol of arrSymbol) {
var t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t.Last / 2, 1)
exchange.CreateOrder(symbol, "sell", t.Last * 2, 1)
}
var defaultOrders = exchange.GetOrders()
var swapOrders = exchange.GetOrders("USDT.swap")
var futuresOrders = exchange.GetOrders("USDT.futures")
var btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")
var tbls = []
var arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
var tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
for (var index in arr) {
var orders = arr[index]
var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
// Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for symbol in arrSymbol:
t = exchange.GetTicker(symbol)
exchange.CreateOrder(symbol, "buy", t["Last"] / 2, 1)
exchange.CreateOrder(symbol, "sell", t["Last"] * 2, 1)
defaultOrders = exchange.GetOrders()
swapOrders = exchange.GetOrders("USDT.swap")
futuresOrders = exchange.GetOrders("USDT.futures")
btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap")
tbls = []
arr = [defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders]
tblDesc = ["defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"]
for index in range(len(arr)):
orders = arr[index]
tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], "rows": []}
for order in orders:
tbl["rows"].append([order["Symbol"], order["Id"], order["Price"], order["Amount"], order["DealAmount"], order["AvgPrice"], order["Status"], order["Type"], order["Offset"], order["ContractType"]])
tbls.append(tbl)
LogStatus("`" + json.dumps(tbls) + "`")
return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
for (const auto& symbol : arrSymbol) {
auto t = exchange.GetTicker(symbol);
exchange.CreateOrder(symbol, "buy", t.Last / 2, 1);
exchange.CreateOrder(symbol, "sell", t.Last * 2, 1);
}
auto defaultOrders = exchange.GetOrders();
auto swapOrders = exchange.GetOrders("USDT.swap");
auto futuresOrders = exchange.GetOrders("USDT.futures");
auto btcUsdtSwapOrders = exchange.GetOrders("BTC_USDT.swap");
json tbls = R"([])"_json;
std::vector<std::vector<Order>> arr = {defaultOrders, swapOrders, futuresOrders, btcUsdtSwapOrders};
std::string tblDesc[] = {"defaultOrders", "swapOrders", "futuresOrders", "btcUsdtSwapOrders"};
for (int index = 0; index < arr.size(); index++) {
auto orders = arr[index];
json tbl = R"({
"type": "table",
"cols": ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"],
"rows": []
})"_json;
tbl["title"] = tblDesc[index];
for (const auto& order : orders) {
json arrJson = R"([])"_json;
arrJson.push_back(order.Symbol);
arrJson.push_back(to_string(order.Id)); // The Id attribute type in the Order structure is TId, which is encoded using a C++ function to_string built into the FMZ platform.
arrJson.push_back(order.Price);
arrJson.push_back(order.Amount);
arrJson.push_back(order.DealAmount);
arrJson.push_back(order.AvgPrice);
arrJson.push_back(order.Status);
arrJson.push_back(order.Type);
arrJson.push_back(order.Offset);
arrJson.push_back(order.ContractType);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
フューチャー交換オブジェクトを使用して,複数の異なる取引ペアと契約コードの注文をします. 対価価格から遠く離れた価格で注文を入れ,未履行状態で注文を保持し,複数の方法で注文をクエリします.
function main() {
var orders = exchange.GetOrders("BTC_USDT") // Examples of spot products
// var orders = exchange.GetOrders("BTC_USDT.swap") // Examples of futures products
Log("orders:", orders)
}
def main():
orders = exchange.GetOrders("BTC_USDT") # Examples of spot products
# orders = exchange.GetOrders("BTC_USDT.swap") # Examples of futures products
Log("orders:", orders)
void main() {
auto orders = exchange.GetOrders("BTC_USDT"); // Examples of spot products
// auto orders = exchange.GetOrders("BTC_USDT.swap"); // Examples of futures products
Log("orders:", orders);
}
呼び出すときexchange.GetOrders()
機能,パスSymbol
特定の取引ペアと契約コードのオーダーデータを要求するパラメータ
についてGetOrders
function,シンボルのパラメータの使用シナリオは,以下のように要約されます.
エクスチェンジオブジェクト分類 | パラメータ | クエリの範囲 | コメント |
---|---|---|---|
スポット | シンボルのパラメータを通さない | すべてのスポット取引ペアをクエリ | すべての呼び出しシナリオでは,交換インターフェイスがサポートしていない場合は,エラーが報告され,ゼロ値が返されます.さらなる説明はされません. |
スポット | 取引の種類を指定します. シンボルのパラメータは: |
指定された BTC_USDT 取引ペアをクエリする | スポット取引対象のシンボルのパラメータ形式は: |
フューチャー | シンボルのパラメータを通さない | 現在の取引ペアと契約コードの次元範囲内のすべての取引製品を検索する. | 現在の取引ペアが BTC_USDT で,契約コードがスワップである場合,USDTのマージング付き永続契約はすべてクエリされます.これは,呼び出しに相当しますGetOrders("USDT.swap") |
フューチャー | 取引の種類を指定し,シンボルのパラメータは: |
指定されたBTCのUSDTベースの永続契約をクエリする | フューチャー取引対象のパラメータシンボルの形式は:トレーディングペアそして契約コードFMZプラットフォームで定義され,文字で区切られています.". . |
フューチャー | 取引商品の範囲を指定します. シンボルのパラメータは: |
すべてのUSDTベースの永続契約をクエリ | - |
オプションをサポートする先物取引 | シンボルのパラメータを通さない | 現在の取引ペアサイズ範囲内のすべてのオプション契約をクエリする | 現在の取引ペアが BTC_USDTである場合,契約はオプション契約に設定されます.例えば,Binanceオプション契約: BTC-240108-40000-C |
オプションをサポートする先物取引 | 特定の取引製品を指定する | 指定されたオプション契約をクエリ | たとえば,Binance 期貨取引所では,シンボルのパラメータは: BTC_USDT.BTC-240108-40000-C |
オプションをサポートする先物取引 | 取引商品の範囲を指定します,シンボルのパラメータは: |
すべてのUSDTベースのオプション契約をクエリ | - |
についてGetOrders
フューチャー交換オブジェクトのクエリ
サイズ範囲は以下のように要約される:
パラメータ | 要求範囲の定義 | コメント |
---|---|---|
USDT.swap | USDTベースの永続契約範囲 | について |
交換 API インターフェースでサポートされていない次元 エラーが報告され, null 値が返されます. 呼び出しています 送料契約の範囲です 送料契約の範囲です USD.swap. 通貨ベースの永続的な 契約です USD.futures. 貨幣による配送の範囲 契約です USDTのオプションです USDTベースのオプション契約の範囲です 通貨ベースのオプション契約の範囲です USDT.futures_combo CFDの組み合わせの範囲 FUTURES_DERIBIT 取引所 USD.futures_ff ミックスド・マーージン・デリバリー・コントラクト フューチャーズ_クラッケン取引所 USD.swap_pf 混合型永続契約の範囲です 未来_クラケン取引所
取引対象となる口座がexchange
待機中の注文はありません問い合わせ範囲または特定取引手段この関数を呼び出すと空の配列が返されます.[]
- わかった
以下の交換では,当面未完了の注文をクエリする際に,インストラムがインストゥルメントパラメータに送信することを要求する.これらの交換でGetOrders関数を呼び出すとき,インストゥルメントパラメータが送信されない場合は,すべてのインストゥルメントの未完了の注文ではなく,当面のインストゥルメントの未完了の注文のみが要求される (交換インターフェイスがこれをサポートしていないため).
Zaif,MEXC,LBank,Korbit,Coinw,BitMart,Bithumb,BitFlyer,ビッグONE について
支援しない取引所exchange.GetOrders()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetOrders を取得する | – | フューチャーズ_ビボックス |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}, {@struct/Trade/Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/Trade/exchange}, {@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders}, {@fun/Trade/exchange.GetHistoryOrders}, {@fun/Trade/exchange}, {@struct/Trade/Exchange}, {@struct/Trade/Exchange.GetOrder exchange.GetOrder exchange.GetOrder exchange.GetOrder}, {@fun/Trade/Exchange.GetHistoryOrders}, {@
についてexchange.GetHistoryOrders()
この関数は,現在の取引ペア,契約の過去のオーダーを取得するために使用されます.
についてexchange.GetHistoryOrders()
この関数は,データ要求が成功した場合に {@struct/Order Order} 構造の配列を返し,要求が失敗した場合に null を返します.
{@struct/Order Order}配列,ゼロ値
交換.GetHistoryOrders (取得履歴) exchange.GetHistoryOrders (シンボル) をクリックする exchange.GetHistoryOrders ((シンボル,から) exchange.GetHistoryOrders (シンボル,から,制限) 交換.GetHistoryOrders (過去からの) exchange.GetHistoryOrders (ここから制限)
についてsymbol
取引の記号を指定するために使用されます.BTC_USDT
取引相手は,例えば,exchange
スポット交換オブジェクトで,パラメータ形式はsymbol
はBTC_USDT
■ 期貨取引対象である場合,永久契約を例として,パラメータ形式symbol
これは:BTC_USDT.swap
- わかった
オプション契約の注文データをクエリする場合は,パラメータを設定しますsymbol
に"BTC_USDT.BTC-240108-40000-C"
(Binance Option BTC-240108-40000-C を例として)トレーディングペアFMZプラットフォームで定義され,取引所によって定義された特定のオプション契約コードは,文字
シンボル
偽り
文字列
についてsince
このパラメータは,クエリの開始タイムスタンプをミリ秒で指定するために使用されます.
それ以来
偽り
番号
についてlimit
このパラメータは,クエリする注文の数を指定するために使用されます.
制限
偽り
番号
function main() {
var historyOrders = exchange.GetHistoryOrders()
Log(historyOrders)
}
def main():
historyOrders = exchange.GetHistoryOrders()
Log(historyOrders)
void main() {
auto historyOrders = exchange.GetHistoryOrders();
Log(historyOrders);
}
symbol
, since
, limit
パラメータが指定されていない場合,デフォルトクエリは現在の取引ペア,契約の歴史的な注文です.現在の時間に近い特定の範囲内の歴史的な注文をクエリします.クエリ範囲は,交換インターフェイスの単一のクエリ範囲に依存します.symbol
設定された取引タイプの注文履歴をクエリします.since
設定されている場合,現在の時間方向で問い合わせsince
開始時間としてタイムスタンプをlimit
パラメータが指定された場合,十分な数の入力後にクエリが返されます.支援しない取引所exchange.GetHistoryOrders()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetHistoryOrders を取得する | Zaif / Upbit / Coincheck / Bitstamp / Bithumb / BitFlyer / ビッグONE | Futures_dYdX / Futures_Bibox / Futures_ApolloX について |
{@struct/Order Order}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@struct/Trade/Order Order}, {@fun/Trade/Exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Exchange.GetOrders exchange.GetOrders}, {@fun/Trade/Exchange.GetOrder exchange.GetOrder exchange.GetOrder exchange.GetOrders}, {@fun/
exchange.SetPrecision()
精度を設定するために使用されます.exchange
交換対象価格そして注文金額設定後,システムは過剰なデータを自動的に無視します.
交換.セット 精度 ((価格 精度,金額 精度)
についてpricePrecision
このパラメータは,価格データの精度を制御するために使用されます.
価格 精度
本当
番号
についてamountPrecision
パラメータは,注文されるデータの量の精度を制御するために使用されます.
額 精度
本当
番号
function main(){
// Set the decimal precision of price to 2 bits, and the decimal precision of variety order amount to 3 bits
exchange.SetPrecision(2, 3)
}
def main():
exchange.SetPrecision(2, 3)
void main() {
exchange.SetPrecision(2, 3);
}
バックテストシステムはこの機能をサポートせず,バックテストシステムの数値精度は自動的に処理されます.
{@fun/Trade/exchange.buy exchange.buy} {@fun/Trade/exchange.sell exchange.sell} {@fun/Trade/exchange.exchange.buy} {@fun/Trade/exchange.sell exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.exchange.buy} {@fun/Trade/exchange.exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.exchange.sell} {@fun/Trade/exchange.sell.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.sell.sell}
交換対象の現在の為替レートを設定する.
交換.セットレート (レート)
についてrate
このパラメータは,変換為替レートを指定するために使用されます.
税率
本当
番号
function main(){
Log(exchange.GetTicker())
// Set exchange rate conversion
exchange.SetRate(7)
Log(exchange.GetTicker())
// Set to 1, no conversion
exchange.SetRate(1)
}
def main():
Log(exchange.GetTicker())
exchange.SetRate(7)
Log(exchange.GetTicker())
exchange.SetRate(1)
void main() {
Log(exchange.GetTicker());
exchange.SetRate(7);
Log(exchange.GetTicker());
exchange.SetRate(1);
}
通貨レートの値がexchange.SetRate()
価格の情報,例えばティッカー,深さ,注文価格,など,現在の取引所によって代表される.exchange
交換対象は,設定された為替レート7に掛けることで変換されます.例えば,exchange
通貨として,アメリカドルと交換です.exchange.SetRate(7)
市場でのすべての価格は,CNY7で掛けると
{@fun/Market/exchange.GetRate exchange.GetRate} 取引先は 取引先の 取引先の 取引先の
についてexchange.IO()
交換オブジェクトに関連する他のインターフェース呼び出しに使用されます.
についてexchange.IO()
機能は交換オブジェクトに関連する他のインターフェースに呼び出し,成功した呼び出しで要求された応答データを返します.失敗した呼び出しでは null を返します.
文字列,数, bool,オブジェクト,配列,null,およびシステムによってサポートされる他の種類
exchange.IO(k,... args)
についてk
パラメータは,オプション値でコールタイプを設定するために使用されます."api"
, "currency"
, "base"
, "trade_margin"
, "trade_normal"
, "public_base"
, "mbase"
, selfTradePreventionMode
, simulate
, cross
, dual
, unified
そしてこれからも
k
本当
文字列
拡張されたパラメータ,特定のコールシナリオに従って通過,arg
複数のパラメータが通過できます.exchange.IO()
パラメータの数と種類は,異なる機能に対応します. パラメータの数と種類は,exchange.IO()
機能は不確定です
アルグ
本当
文字列,数, bool,オブジェクト,配列,null,その他のシステムでサポートされるタイプ
function main() {
var arrOrders = [
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
]
// Call exchange.IO to access the exchange's bulk order interface directly
var ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", JSON.stringify(arrOrders))
Log(ret)
}
import json
def main():
arrOrders = [
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
]
ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", json.dumps(arrOrders))
Log(ret)
void main() {
json arrOrders = R"([
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"},
{"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"2","posSide":"long"}
])"_json;
auto ret = exchange.IO("api", "POST", "/api/v5/trade/batch-orders", "", arrOrders.dump());
Log(ret);
}
システムを使用exchange.IO("api", httpMethod, resource, params, raw)
呼び出しのフォームexchange.IO()
FMZプラットフォームに追加されていない機能を拡張することができます. 交換のAPIインターフェースを理解し,関連するドキュメントを最初に確認する必要があります.POST
対応するパラメータを記入する限り,FMZが既に下に処理しているパラメータを暗号化,署名,検証する心配する必要はありません.OKX 交換所パラメーターを使用します.raw
順序パラメータを表示するには:
var amount = 1
var price = 10
var basecurrency = "ltc"
function main () {
// Note that both amount.toString() and price.toString() have a ' character on the left and right side
var message = "symbol=" + basecurrency + "&amount='" + amount.toString() + "'&price='" + price.toString() + "'&side=buy" + "&type=limit"
var id = exchange.IO("api", "POST", "/v1/order/new", message)
}
amount = 1
price = 10
basecurrency = "ltc"
def main():
message = "symbol=" + basecurrency + "&amount='" + str(amount) + "'&price='" + str(price) + "'&side=buy" + "&type=limit"
id = exchange.IO("api", "POST", "/v1/order/new", message)
void main() {
auto amount = 1.0;
auto price = 10.0;
auto basecurrency = "ltc";
string message = format("symbol=%s&amount=\"%.1f\"&price=\"%.1f\"&side=buy&type=limit", basecurrency, amount, price);
auto id = exchange.IO("api", "POST", "/v1/order/new", message);
}
キー値がparams
パラメータ (つまり,Http リクエスト パラメータ) は文字列で,パラメータ値を包むためにパラメータ値の周りに単一の引数で (つまり,符号 ') 書き込む必要があります.
function main() {
var ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
Log(ret)
}
def main():
ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
Log(ret)
void main() {
auto ret = exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC");
Log(ret);
}
ベースアドレスを切り替える操作を省略できる.exchange.SetBase()
機能)
function main(){
var ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
Log(ret)
}
def main():
ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT")
Log(ret)
void main() {
auto ret = exchange.IO("api", "GET", "/api/v5/trade/orders-pending", "instType=SPOT");
Log(ret);
}
パラメータなしの呼び出しの例raw
:
function main() {
// For example, if you set the current trading pair of the exchange object to BTC_USDT at the beginning of the live trading, print the current trading pair tickers
Log(exchange.GetTicker())
// Switch the trading pair to LTC_BTC
exchange.IO("currency", "LTC_BTC")
Log(exchange.GetTicker())
}
def main():
Log(exchange.GetTicker())
exchange.IO("currency", "LTC_BTC")
Log(exchange.GetTicker())
void main() {
Log(exchange.GetTicker());
exchange.IO("currency", "LTC_BTC");
Log(exchange.GetTicker());
}
コードで設定された取引ペアを切り替えるように,現在の交換の取引ペアを切り替える直接取引の作成時にまたはバックテストで.
function main () {
// exchanges[0] is the first exchange object added when the live trading is created
exchanges[0].IO("base", "https://api.huobi.pro")
}
def main():
exchanges[0].IO("base", "https://api.huobi.pro")
void main() {
exchanges[0].IO("base", "https://api.huobi.pro");
}```
For example, the default base address when the exchange object is wrapped is ```https://api.huobipro.com```, and when you need to switch to ```https://api.huobi.pro```, use the following code to switch:
```javascript
function main() {
exchange.SetBase("https://api.bitfinex.com")
exchange.IO("mbase", "https://api-pub.bitfinex.com")
}
def main():
exchange.SetBase("https://api.bitfinex.com")
exchange.IO("mbase", "https://api-pub.bitfinex.com")
void main() {
exchange.SetBase("https://api.bitfinex.com");
exchange.IO("mbase", "https://api-pub.bitfinex.com");
}
取引先のインターフェースと取引インターフェースの異なるベースアドレスを持つ取引所では,例えば,Bitfinex Futuresには2つのアドレスがあり,一つは ticker インターフェース,もう一つは取引インターフェースです.Bitfinex futuurs はプライベート インターフェースのベースアドレスを使用して切り替えます.exchange.SetBase("xxx")
Bitfinexの先物取引は,公開インターフェースのベースアドレスをexchange.IO("mbase", "xxx")
.
I. 暗号通貨中心の取引所では,パラメータが均一にカプセル化されていない他のAPIインターフェース呼び出しk
に設定"api"
:
exchange.IO("api", httpMethod, resource, params, raw)
POST
, GET
などURL
.についてexchange.IO("api", httpMethod, resource, params, raw)
呼び出しが失敗してエラーが発生した場合,関数呼び出しは交換インターフェースにアクセスし null を返します.
真の取引のみをサポートしますexchange.IO("api", httpMethod, resource, params, raw)
function.
II. 取引対を切り替える場合,パラメータはk
設定されています."currency"
:
exchange.IO("currency", currency)
通貨: パラメータは,単一の上文字形式の文字列タイプで,下文字で区切ります.baseCurrency
からquoteCurrency
例えばBTC_USDT
.
ETH_BTC
切り替えるだけですLTC_BTC
しないLTC_USDT
.exchange.IO("currency", currency)
取引相手を切り替える(III) 仮想通貨スポット取引所オブジェクトのレバレッジアカウントモードを切り替えるために使用する:
k
設定されています."trade_margin"
スポットレバレッジアカウントモードに切り替える.オーダーと口座資産の取得は,取引所のスポットレバレッジインターフェイスにアクセスします.
取引所が,即日レバレッジにおいて,完全なリマージと孤立したリマージを区別する場合,以下を用います.exchange.IO("trade_super_margin")
利回り口座の全保安金に切り替える,およびexchange.IO("trade_margin")
利回り口座の利回り分担に切り替えるk
設定されています."trade_normal"
通常のスポット口座モードに戻る.ローバー付き口座モデル間の切り替えをサポートするスポット取引所:
交換 | 特別注意事項 |
---|---|
OKX | レバレッジアカウントモードの取引ペアは通常のものとは異なります.一部の取引ペアはそれらを持たない可能性があります.exchange.IO("trade_super_margin") レバレッジ付き口座の全ポジションに切り替えて使用するexchange.IO("trade_margin") 位置から位置に切り替える.trade_normal 通常のスポットモードに切り替える.exchange.IO("tdMode", "cross") 直接レバレッジモードを指定する. |
ハウビー | ハーバードアカウントモードの取引ペアは通常のペアとは異なります.一部の取引ペアはそうでない場合があります. Huobi ハーバードアカウントにはフルポジションとポジションごとに位置があります.trade_margin レバレッジ口座のポジションごとに切り替えるtrade_super_margin レバレッジアカウントの完全なポジションに切り替える.trade_normal 通常の通貨対通貨モードに切り替える |
バイナンス | レバレッジされた口座モードは,ポジションごとにポジションとフルポジションに分けられる.trade_margin 位置から位置に切り替え,使用trade_super_margin フルポジションに切り替えるには,trade_normal 通常の通貨対通貨モードに切り替える |
ゲート | レバレッジされた口座モードは,ポジションごとにポジションとフルポジションに分けられる.trade_margin 位置から位置に切り替え,使用trade_super_margin フルポジションに切り替えるには,trade_normal 通常の通貨対通貨モードに切り替える |
アセンデックス | 使用exchange.IO("trade_margin") レバレッジアカウントモードに切り替えるexchange.IO("trade_normal") 普通のアカウントモードに戻る |
ワオ | 使用exchange.IO("trade_margin") レバレッジアカウントモードに切り替えるexchange.IO("trade_normal") 普通のアカウントモードに戻る |
コインエックス | 使用exchange.IO("trade_margin") レバレッジ付き口座モードに切り替えるexchange.IO("trade_normal") 普通のアカウントモードに戻る |
他のスイッチ機能:チェックしてくださいexchange.IO()
の関数他のスイッチ機能ユーザーガイドで
{@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}, {@fun/NetSettings/exchange.SetBase exchange.SetBase}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}, {@var EXCHANGE_OP_IO_CONTROL}
についてexchange.Log()
この関数は,ログ列領域のオーダープレスメントと撤収のログを出力するために使用されます.呼び出されると,注文は行われず,トランザクションログだけが出力され記録されます.
取引日記 (注文の種類,価格,金額) 取引日記 (注文の種類,価格,金額,... args)
についてorderType
パラメータは出力ログのタイプを設定するために使用され,オプション値は {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}.
命令型
本当
番号
についてprice
パラメータは出力ログに表示される価格を設定するために使用されます.
価格
本当
番号
についてamount
パラメータは,出力日記に表示される注文の量を設定するために使用されます.
額
本当
番号
このログに付随情報を出力できる拡張パラメータarg
パラメータは"つ以上渡すことができます
アルグ
偽り
文字列,数,ボール,オブジェクト,配列,null,およびシステムでサポートされる他の種類
var id = 123
function main() {
// Order type buy, price 999, amount 0.1
exchange.Log(LOG_TYPE_BUY, 999, 0.1)
// Cancel the order
exchange.Log(LOG_TYPE_CANCEL, id)
}
id = 123
def main():
exchange.Log(LOG_TYPE_BUY, 999, 0.1)
exchange.Log(LOG_TYPE_CANCEL, id)
void main() {
auto id = 123;
exchange.Log(LOG_TYPE_BUY, 999, 0.1);
exchange.Log(LOG_TYPE_CANCEL, id);
}
使用するexchange.Log(orderType, price, amount)
テスト,シミュレーションされた注文の配達,および注文の配達をログインするのに役立ちます.最も一般的なシナリオの1つは, {@fun/Trade/exchange.IOを使用することです.exchange.IO条件付きの注文を作成するための交換のインターフェースにアクセスする機能,しかし,exchange.IO()
取引日誌の記録にトランザクションログ情報を出力しません.exchange.Log()
オーダー発注の情報を記録するために出力日記を補完するために使用できますし,オーダー撤回も同様です
その時にorderType
パラメータはLOG_TYPE_CANCEL
についてprice
パラメータは,引き出されたオーダーの順序 Id で,直接注文を引き出すときに引き出すログを印刷するために使用されます.exchange.IO()
機能exchange.Log()
function は,グローバル関数 {@fun/Log Log} と区別される {@var/EXCHANGE exchange} 交換オブジェクトのメンバー関数です.
{@fun/Log Log}, {@var/LOG_TYPE/LOG_TYPE_BUY LOG_TYPE_BUY}, {@var/LOG_TYPE/LOG_TYPE_SELL LOG_TYPE_SELL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}, {@var/LOG_TYPE/LOG_TYPE_CANCEL LOG_TYPE_CANCEL}, ローグ・タイプは, ローグ・タイプは, ローグ・タイプが, ログ・タイプが, ログ・タイプが, ログ・タイプが, ログ・タイプが
についてexchange.Encode()
この関数は署名暗号化計算に使用されます.
についてexchange.Encode()
計算したハッシュ値のエンコーディングを返します.
文字列
exchange.Encode ((algo, input 形式, output 形式,データ) exchange.Encode ((algo, input形式, output形式,データ,キー形式,キー)
パラメータalgo
は,暗号化計算に使用されるアルゴリズムである. サポートされている設定は: algo
また,文字列のエンコーディングと解読のために, algo
また: algo
ed25519.seed
計算する
アルゴ
本当
文字列
データの形式を指定するために使用されます.data
パラメータinputFormat
パラメータは,次のいずれかに設定できます: hex
base64
文字列が文字列であることを意味します.
input 形式
本当
文字列
出力データ形式を指定するために使用されます.outputFormat
パラメータは以下の設定をサポートします: hex
base64
文字列が文字列であることを意味します.
output 形式
本当
文字列
パラメーターdata
処理されるデータです
データ
本当
文字列
データの形式を指定するために使用されます.key
パラメータkey
パラメータは,次のいずれかに設定できます: hex
base64
文字列が文字列であることを意味します.
キー形式
偽り
文字列
についてkey
パラメータは署名計算に使用されたキーを指定するために使用され, 文字列として使用できます."{{accesskey}}"
, "{{secretkey}}"
参照するaccessKey
そしてsecretKey
{@var/EXCHANGE exchange} exchange オブジェクトで設定されている.
キー
偽り
文字列
function main() {
var APIKEY = "your Access Key(Bitmex API ID)"
var expires = parseInt(Date.now() / 1000) + 10
var signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
var client = Dial("wss://www.bitmex.com/realtime", 60)
var auth = JSON.stringify({args: [APIKEY, expires, signature], op: "authKeyExpires"})
var pos = 0
client.write(auth)
client.write('{"op": "subscribe", "args": "position"}')
while (true) {
bitmexData = client.read()
if(bitmexData.table == 'position' && pos != parseInt(bitmexData.data[0].currentQty)){
Log('position change', pos, parseInt(bitmexData.data[0].currentQty), '@')
pos = parseInt(bitmexData.data[0].currentQty)
}
}
}
import time
def main():
APIKEY = "your Access Key(Bitmex API ID)"
expires = int(time.time() + 10)
signature = exchange.Encode("sha256", "string", "hex", "GET/realtime" + expires, "hex", "{{secretkey}}")
client = Dial("wss://www.bitmex.com/realtime", 60)
auth = json.dumps({"args": [APIKEY, expires, signature], "op": "authKeyExpires"})
pos = 0
client.write(auth)
client.write('{"op": "subscribe", "args": "position"}')
while True:
bitmexData = json.loads(client.read())
if "table" in bitmexData and bitmexData["table"] == "position" and len(bitmexData["data"]) != 0 and pos != bitmexData["data"][0]["currentQty"]:
Log("position change", pos, bitmexData["data"][0]["currentQty"], "@")
pos = bitmexData["data"][0]["currentQty"]
void main() {
auto APIKEY = "your Access Key(Bitmex API ID)";
auto expires = Unix() + 10;
auto signature = exchange.Encode("sha256", "string", "hex", format("GET/realtime%d", expires), "hex", "{{secretkey}}");
auto client = Dial("wss://www.bitmex.com/realtime", 60);
json auth = R"({"args": [], "op": "authKeyExpires"})"_json;
auth["args"].push_back(APIKEY);
auth["args"].push_back(expires);
auth["args"].push_back(signature);
auto pos = 0;
client.write(auth.dump());
client.write("{\"op\": \"subscribe\", \"args\": \"position\"}");
while(true) {
auto bitmexData = json::parse(client.read());
if(bitmexData["table"] == "position" && bitmexData["data"][0].find("currentQty") != bitmexData["data"][0].end() && pos != bitmexData["data"][0]["currentQty"]) {
Log("test");
Log("position change", pos, bitmexData["data"][0]["currentQty"], "@");
pos = bitmexData["data"][0]["currentQty"];
}
}
}
BitMEX の位置変更プッシュ (wss プロトコル) の例:
真の取引のみをサポートしますexchange.Encode()
機能"{{accesskey}}"
, "{{secretkey}}"
参照は,exchange.Encode()
機能が使われています.
{@var/EXCHANGE exchange}, {@fun/Global/Encode エンコード}
多スレッドアシンクロンサポート機能は,すべてのサポートされた機能の操作をアシンクロン同時実行に変えることができます.
についてexchange.Go()
この関数で,同じオブジェクトをすぐに返します.wait()
同期リクエストの結果を取得するために,同期オブジェクトの方法.
オブジェクト
交換.Go (方法) 交換.Go (方法,... args)
についてmethod
パラメーターは,関数の名前文字列であり,関数の参照ではないことに注意してください.
方法
本当
文字列
パラメータ同時に機能を実行する複数のパラメータがある可能性があります.arg
パラメータの種類と番号arg
測定する同期実行機能- わかった
アルグ
偽り
文字列,数, bool,オブジェクト,配列,関数,null,およびシステムでサポートされる他のすべてのタイプ
function main(){
// The following four operations are concurrently executed asynchronously by multiple threads and do not take time and return immediately
var a = exchange.Go("GetTicker")
var b = exchange.Go("GetDepth")
var c = exchange.Go("Buy", 1000, 0.1)
var d = exchange.Go("GetRecords", PERIOD_H1)
// Call the wait method to wait for the return of the ticker results asynchronously
var ticker = a.wait()
// Returns the depth, or null if it fails
var depth = b.wait()
// return order number, limited to 1 second timeout, if timeout, returns undefined, the object can continue to call wait if the last wait timeout
var orderId = c.wait(1000)
if(typeof(orderId) == "undefined") {
// Timeout, reacquire
orderId = c.wait()
}
var records = d.wait()
}
def main():
a = exchange.Go("GetTicker")
b = exchange.Go("GetDepth")
c = exchange.Go("Buy", 1000, 0.1)
d = exchange.Go("GetRecords", PERIOD_H1)
ticker, ok = a.wait()
depth, ok = b.wait()
orderId, ok = c.wait(1000)
if ok == False:
orderId, ok = c.wait()
records, ok = d.wait()
void main() {
auto a = exchange.Go("GetTicker");
auto b = exchange.Go("GetDepth");
auto c = exchange.Go("Buy", 1000, 0.1);
auto d = exchange.Go("GetRecords", PERIOD_H1);
Ticker ticker;
Depth depth;
Records records;
TId orderId;
a.wait(ticker);
b.wait(depth);
if(!c.wait(orderId, 300)) {
c.wait(orderId);
}
d.wait(records);
}
Exchange.Go()
function の使用例を決定するundefined
使うtypeof(xx) === "undefined"
なぜならnull == undefined
JavaScriptで有効です
function main() {
var d = exchange.Go("GetRecords", PERIOD_H1)
// Waiting for K-line results
var records = d.wait()
// Here waits an asynchronous operation that has been waited and finished, it will return null, and log the error message
var ret = d.wait()
}
def main():
d = exchange.Go("GetRecords", PERIOD_H1)
records, ok = d.wait()
ret, ok = d.wait()
void main() {
auto d = exchange.Go("GetRecords", PERIOD_H1);
Records records;
d.wait(records);
Records ret;
d.wait(ret);
}
呼び出すwait()
このメソッドは,リリースされた同時オブジェクトでエラーを報告します.
function main() {
while(true) {
var beginTS = new Date().getTime()
var arrRoutine = []
var arrTicker = []
var arrName = []
for(var i = 0; i < exchanges.length; i++) {
arrRoutine.push(exchanges[i].Go("GetTicker"))
arrName.push(exchanges[i].GetName())
}
for(var i = 0; i < arrRoutine.length; i++) {
arrTicker.push(arrRoutine[i].wait())
}
var endTS = new Date().getTime()
var tbl = {
type: "table",
title: "ticker",
cols: ["index", "name", "latest-deal-price"],
rows: []
}
for(var i = 0; i < arrTicker.length; i++) {
tbl.rows.push([i, arrName[i], arrTicker[i].Last])
}
LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", endTS - beginTS, "millisecond", "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(500)
}
}
import time
import json
def main():
while True:
beginTS = time.time()
arrRoutine = []
arrTicker = []
arrName = []
for i in range(len(exchanges)):
arrRoutine.append(exchanges[i].Go("GetTicker"))
arrName.append(exchanges[i].GetName())
for i in range(len(exchanges)):
ticker, ok = arrRoutine[i].wait()
arrTicker.append(ticker)
endTS = time.time()
tbl = {
"type": "table",
"title": "ticker",
"cols": ["index", "name", "latest-deal-price"],
"rows": []
}
for i in range(len(arrTicker)):
tbl["rows"].append([i, arrName[i], arrTicker[i]["Last"]])
LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", endTS - beginTS, "second", "\n", "`" + json.dumps(tbl) + "`")
Sleep(500)
void main() {
while(true) {
int length = exchanges.size();
auto beginTS = UnixNano() / 1000000;
Ticker arrTicker[length] = {};
string arrName[length] = {};
// Note that to add several exchange objects, several exchanges[n].Go functions have to be executed here, this example is to add four exchange objects, the details can be modified
auto r0 = exchanges[0].Go("GetTicker");
auto r1 = exchanges[1].Go("GetTicker");
auto r2 = exchanges[2].Go("GetTicker");
auto r3 = exchanges[3].Go("GetTicker");
GoObj *arrRoutine[length] = {&r0, &r1, &r2, &r3};
for(int i = 0; i < length; i++) {
arrName[i] = exchanges[i].GetName();
}
for(int i = 0; i < length; i++) {
Ticker ticker;
arrRoutine[i]->wait(ticker);
arrTicker[i] = ticker;
}
auto endTS = UnixNano() / 1000000;
json tbl = R"({
"type": "table",
"title": "ticker",
"cols": ["index", "name", "latest-deal-price"],
"rows": []
})"_json;
for(int i = 0; i < length; i++) {
json arr = R"(["", "", ""])"_json;
arr[0] = format("%d", i);
arr[1] = arrName[i];
arr[2] = format("%f", arrTicker[i].Last);
tbl["rows"].push_back(arr);
}
LogStatus(_D(), "Total time taken to obtain tickers from multiple exchanges concurrently:", format("%d", endTS - beginTS), "millisecond", "\n", "`" + tbl.dump() + "`");
Sleep(500);
}
}
複数の交換チケットへの同時アクセス:
function main() {
/*
Testing with OKX futures order interface
POST /api/v5/trade/order
*/
var beginTS = new Date().getTime()
var param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
var ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", JSON.stringify(param))
var id1 = ret1.wait()
var id2 = ret2.wait()
var id3 = ret3.wait()
var endTS = new Date().getTime()
Log("id1:", id1)
Log("id2:", id2)
Log("id3:", id3)
Log("Concurrent order placement time consumption:", endTS - beginTS, "millisecond")
}
import time
import json
def main():
beginTS = time.time()
param = {"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"}
ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", json.dumps(param))
id1, ok1 = ret1.wait()
id2, ok2 = ret2.wait()
id3, ok3 = ret3.wait()
endTS = time.time()
Log("id1:", id1)
Log("id2:", id2)
Log("id3:", id3)
Log("Concurrent order placement time consumption:", endTS - beginTS, "second")
void main() {
auto beginTS = UnixNano() / 1000000;
json param = R"({"instId":"BTC-USDT-SWAP","tdMode":"cross","side":"buy","ordType":"limit","px":"16000","sz":"1","posSide":"long"})"_json;
auto ret1 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
auto ret2 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
auto ret3 = exchange.Go("IO", "api", "POST", "/api/v5/trade/order", "", param.dump());
json id1 = R"({})"_json;
json id2 = R"({})"_json;
json id3 = R"({})"_json;
ret1.wait(id1);
ret2.wait(id2);
ret3.wait(id3);
auto endTS = UnixNano() / 1000000;
Log("id1:", id1);
Log("id2:", id2);
Log("id3:", id3);
Log("Concurrent order placement time consumption:", endTS - beginTS, "millisecond");
}
同期募集についてexchange.IO("api", ...)
機能:
この機能は,実際の取引で実行する際に多スレッド実行タスクのみを作成し,バックテストは多スレッド同時実行タスクをサポートしません (バックテストは利用可能ですが,それでも順番で実行されます).
その後にexchange.Go()
この関数は,そのオブジェクトを返しますwait()
このスレッドで返されるデータを得るため,そのオブジェクトを通して呼び出されます.wait()
スレッドが自動的にリリースされる前にデータを取得するために呼び出す必要があります.wait()
インタフェースの機能が指定されている場合,タイムアウトが発生してもスレッドは自動的にリリースされません.スレッドが自動的にリリースされる前にスレッドの結果が取得されなければならない (同時アクセスのためのインターフェースコールが成功するか失敗するかに関わらず). シンプルな言葉で,要求されたスレッドは,スレッドが自動的にリリースされる前に取得する必要があります.wait()
実行が成功するか失敗するかに関わらず, 要求されたスレッドのリソースexchange.Go()
自動で解き放たれる必要があります.
についてwait()
このメソッドはタイムアウトパラメータをサポートします.
タイムアウトパラメータがないとwait()
,またはタイムアウトパラメータが0である,すなわち,wait(0)
.....wait()
機能ブロックで,並行スレッドが実行を終了するまで待機し,並行スレッドwait(-1)
.....wait()
異なるプログラミング言語の異なる返却値で,このサブセクションを例の呼び出しのために参照してください.
特定のタイムアウトパラメータを設定しますwait(300)
そして,wait()
戻る前に最大300ミリ秒待ちます
試験結果が返される場合wait()
要求されたスレッドが蓄積し,2000以上のスレッドがエラーを報告します."too many routine wait, max is 2000"
- わかった
サポートされている機能:GetTicker
, GetDepth
, GetTrades
, GetRecords
, GetAccount
, GetOrders
, GetOrder
, CancelOrder
, Buy
, Sell
, GetPositions
, IO
これらの機能はすべて,同時に呼び出すときに現在の {@var/EXCHANGE exchange} 交換オブジェクトに基づいて実行されます.
PythonとJavaScriptの違いはwait()
Python言語の同時オブジェクトの関数は2つのパラメータを返します.最初のパラメータは,非同期 API コールによって返される結果で,第2パラメータは,非同期 コールが完了しているかを示します.
def main():
d = exchange.Go("GetRecords", PERIOD_D1)
# ok will return True definitely, unless the strategy is stopped
ret, ok = d.wait()
# If the wait times out, or if it waits for an instance that has already ended, ok returns False
ret, ok = d.wait(100)
{@fun/Global/Mail_Go Mail_Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}, {@fun/Global/EventLoop イベントループ}
についてexchange.GetAccount()
交換口座情報を要求するために使用されます.GetAccount()
交換オブジェクト {@var/EXCHANGE exchange} のメンバー関数である. 交換オブジェクトのメンバー関数 (方法) の目的はexchange
対象は,単に関連しているexchange
文書化後には 繰り返されないでしょう
アカウント資産情報をクエリし,クエリが成功した場合に {@struct/Account Account} 構造を返します. {@struct/アカウントアカウント},ゼロ値
交換する.GetAccount (取得する)
function main(){
// Switching trading pairs
exchange.IO("currency", "BTC_USDT")
// Take OKX futures as an example, set the contract as the current week's contract, the current trading pair is BTC_USDT, so the current contract is BTC's U-nominal current week contract
exchange.SetContractType("this_week")
// Get current account asset data
var account = exchange.GetAccount()
// Available balance of USDT as margin
Log(account.Balance)
// USDT freeze amount as margin
Log(account.FrozenBalance)
// Current asset equity
Log(account.Equity)
// The unrealized profit and loss of all positions held with the current asset as margin
Log(account.UPnL)
}
def main():
exchange.IO("currency", "BTC_USDT")
exchange.SetContractType("this_week")
account = exchange.GetAccount()
Log(account["Balance"])
Log(account["FrozenBalance"])
Log(account["Equity"])
Log(account["UPnL"])
void main() {
exchange.IO("currency", "BTC_USDT");
exchange.SetContractType("this_week");
auto account = exchange.GetAccount();
Log(account.Balance);
Log(account.FrozenBalance);
Log(account["Equity"])
Log(account["UPnL"])
}
取引ペアと契約コードを設定して 経金情報を入手する
取引対象が暗号通貨の先物契約取引に設定され,USDT
マージンとして ([@fun/Account/exchange.SetCurrency exchange.SetCurrency},[@fun/Futures/exchange.SetContractType exchange.SetContractType}の関数を見て,どのように切り替えるかを参照してください).資産はUSDT
利回りとして記録されます.Balance
, FrozenBalance
{@struct/アカウントアカウント} 構造の属性
取引対象が暗号通貨先物契約取引所に設定され,通貨ベースの契約に切り替わると,資産は通貨で保安金として記録され,Stocks
, FrozenStocks
{@struct/アカウントアカウント} 構造の属性
取引先に電話をするときexchange.GetAccount()
収納されたデータは,すべての資産に変換された金額ですドル図表に表示されています.Balance
{@struct/Account Account} 構造のフィールド.他の資産の変換額を計算する必要がある場合は,USD変換額をインデックス価格 (変換される資産) で割って,その後押金金率 (変換される資産) で割って計算できます.
{@struct/Account Account}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@struct/Account Account}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetContractType}, {@fun/Futures/exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.
についてexchange.GetAssets
交換口座の資産情報を要求するために使用されます.
についてexchange.GetAssets()
この関数は,データ要求が成功した場合に {@struct/Asset Asset} 構造の配列,または要求が失敗した場合に null を返す.
{@struct/Asset Asset}配列,ゼロ値
交換する.GetAssets ((()
function main() {
// exchange.SetCurrency("BTC_USDT") // You can set up trading pairs
// exchange.SetContractType("swap") // You can set up contracts
var assets = exchange.GetAssets()
Log(assets)
}
def main():
# exchange.SetCurrency("BTC_USDT") # You can set up trading pairs
# exchange.SetContractType("swap") # You can set up contracts
assets = exchange.GetAssets()
Log(assets)
void main() {
// exchange.SetCurrency("BTC_USDT"); // You can set up trading pairs
// exchange.SetContractType("swap"); // You can set up contracts
auto assets = exchange.GetAssets();
Log(assets);
}
交換口座の資産に関する情報を得るexchange.GetAssets()
アセット構造の要素を含む配列を返します.
についてGetAssets()
フォウチャーズ・エクスチェンジオブジェクトの関数は,現在の取引ペア (通貨ベース,USDTベース,USDCベース,など) のマーージン資産を返します.
{@struct/Asset Asset} 資産について
についてexchange.GetName()
この関数は,現在の交換オブジェクトが接続されている交換の名前を得るのに使用されます.
についてexchange.GetName()
FMZ Quant Trading プラットフォームで定義された取引所の名前を返します.
文字列
exchange.GetName (取得する)
function main() {
Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance")
}
def main():
Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance")
void main() {
Log("The exchange object exchange is judged to be Binance spot, and the result is judged to be:", exchange.GetName() == "Binance");
}
についてexchange.GetName()
交換オブジェクトを識別するために一般的に使用されます.exchange
またはexchanges[1]
, exchanges[2]
暗号通貨の先物取引所の名前には,固定プレフィックスがあります.Futures_
.
{@fun/Account/exchange.GetLabel exchange.GetLabel} {@fun/Account/exchange.GetLabel exchange.GetLabel} {@fun/Account/exchange.GetLabel exchange.GetLabel} {@fun/Account/exchange.GetLabel exchange.GetLabel} {@fun/Account/exchange.GetLabel exchange.GetLabel} {@fun/Account/exchange.GetLabel.GetLabel} {@fun/account.getLabel.}
についてexchange.GetLabel()
交換オブジェクトの設定時に設定されたカスタムラベルを取得するために使用されます.
についてexchange.GetLabel()
交換オブジェクトの設定時に設定されたカスタムラベルを返します.
文字列
交換する.GetLabel ((()
function main() {
Log("exchange label:", exchange.GetLabel())
}
def main():
Log("exchange label:", exchange.GetLabel())
void main() {
Log("exchange label:", exchange.GetLabel());
}
交換オブジェクトexchange
またはexchanges[1]
, exchanges[2]
セットタグで識別されます.
{@var/EXCHANGE exchange} 交換する
についてexchange.GetCurrency()
この関数は,現在設定されている取引ペアを得るのに使用されます.
についてexchange.GetCurrency()
この関数は,現在の {@var/EXCHANGE exchange} exchange オブジェクトによって設定された取引ペアを返します.
文字列
交換.GetCurrency (通貨を取得する)
function main() {
Log("the current trading pair of exchange is:", exchange.GetCurrency())
}
def main():
Log("the current trading pair of exchange is:", exchange.GetCurrency())
void main() {
Log("the current trading pair of exchange is:", exchange.GetCurrency());
}
トレーディングペアの形式は,単一の大文字で,baseCurrency
そしてquoteCurrency
例えばBTC_USDT
.
{@fun/Account/exchange.SetCurrency exchange.SetCurrency} {@fun/Account/exchange.SetCurrency} {@fun/Account/exchange.SetCurrency.SetCurrency} {@fun/Account.
についてexchange.SetCurrency()
この関数は,交換オブジェクト {@var/EXCHANGE exchange} の現在の取引ペアを切り替えるのに使用されます.
交換.セット 通貨 (通貨)
についてcurrency
交換する取引ペアを設定するために使用されます. 取引ペアの形式は,単一の上文字で,分離するために下文字を使用します.baseCurrency
からquoteCurrency
例えばBTC_USDT
- わかった
通貨
本当
文字列
function main() {
var ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
// Switching trading pairs, pay attention to the changes of ticker data and account information after switching
exchange.SetCurrency("LTC_USDT")
Log("Switch to LTC_USDT")
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
}
def main():
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
exchange.SetCurrency("LTC_USDT")
Log("Switch to LTC_USDT")
ticker = exchange.GetTicker()
Log(ticker)
Log(exchange.GetAccount())
void main() {
auto ticker = exchange.GetTicker();
Log(ticker);
Log(exchange.GetAccount());
exchange.SetCurrency("LTC_USDT");
Log("Switch to LTC_USDT");
ticker = exchange.GetTicker();
Log(ticker);
Log(exchange.GetAccount());
}
exchange.IO("currency", "BTC_USDT")
{@fun に参照してください.excahnge.IO}.BTC_USDT
切り替えられるLTC_USDT
しないLTC_BTC
.BTC_USDT
,数についてBTC
3 になります.USDT
この時点で,切り替えるLTC_USDT
取引される通貨の数は 0 です.LTC_USDT
つまり,この数値が 0 です.LTC
取引相手は 0 となり,交換された取引相手はUSDT
これは10000です.{@fun/Account/exchange.GetCurrency exchange.GetCurrency} {@fun/Account/exchange.GetCurrency exchange.GetCurrency} {@fun/Account/exchange.GetCurrency exchange.GetCurrency} {@fun/Account/exchange.GetCurrency exchange.GetCurrency} {@fun/Account/exchange.GetCurrency.GetCurrency} {@getCurrency.getCurrency} {@getCurrency.getCurrency.}
についてexchange.GetQuoteCurrency()
この関数は,現在の取引対の通貨の名前を得るのに使用されます.quoteCurrency
.
についてexchange.GetQuoteCurrency()
この関数は,現在の取引対の通貨を返します.
文字列
交換.GetQuoteCurrency (GetQuoteCurrency) について
function main() {
exchange.SetCurrency("BTC_USDT")
Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency())
// exchange.SetCurrency("ETH_BTC")
// Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
}
def main():
exchange.SetCurrency("BTC_USDT")
Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency())
# exchange.SetCurrency("ETH_BTC")
# Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
void main() {
exchange.SetCurrency("BTC_USDT");
Log("BTC_USDT denominated currency name:", exchange.GetQuoteCurrency());
// exchange.SetCurrency("ETH_BTC")
// Log("ETH_BTC denominated currency name:", exchange.GetQuoteCurrency())
}
例えば: {@var/EXCHANGE exchange} 交換オブジェクトの現在のトランザクションペアはBTC_USDT
についてexchange.GetQuoteCurrency()
関数返しUSDT
. 現在の取引ペアがETH_BTC
についてexchange.GetQuoteCurrency()
関数返しBTC
.
{@fun/Account/exchange.GetCurrency exchange.GetCurrency}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Account/exchange.SetCurrency exchange.GetCurrency}, {@fun/Account/exchange.SetCurrency.GetCurrency.GetCurrency}, {@fun/Account/exchange.SetCurrency.GetCurrency.GetCurrency}, {@fun/Account/exchange.SetCurrency.SetCurrency.GetCurrency.GetCurrency.GetCurrency}, {@fun/Account/exchange.SetCurrency.SetCurrency.GetCurrency.GetCurrency.GetCurrency.GetCurrency}, {@fun/Account/Exchange.
についてexchange.GetPositions()
位置情報を取得するために使用されます.GetPositions()
交換オブジェクト {@var/EXCHANGE exchange} のメンバー関数である.GetPositions()
交換オブジェクトにリンクした交換口座の位置情報を取得します.exchange
メンバーの機能 (方法) の目的exchange
対象は,単に関連しているexchange
繰り返されないでしょう
についてexchange.GetPositions()
この関数は,データ要求が成功した場合に {@struct/Position Position} 構造の配列を返し,データ要求が失敗した場合に null 値を返します.
{@struct/Position Position} アレイ,ゼロ値
交換.GetPositions (位置を取得する) 交換.GetPositions (シグナル)
パラメータsymbol
設定するために使用されます.取引符号または取引シンボルの範囲尋問される
もしsymbol
パラメータが送信されない場合,デフォルトでは,現在の取引ペアと契約コードの次元範囲内のすべてのシンボルの位置データを要求します.
シンボル 偽り 文字列
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
function main() {
var arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for (var symbol of arrSymbol) {
exchange.CreateOrder(symbol, "buy", -1, 1)
exchange.CreateOrder(symbol, "sell", -1, 1)
}
var defaultPositions = exchange.GetPositions()
var swapPositions = exchange.GetPositions("USDT.swap")
var futuresPositions = exchange.GetPositions("USDT.futures")
var btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")
var tbls = []
var arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
var tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
for (var index in arr) {
var positions = arr[index]
var tbl = {type: "table", title: tblDesc[index], cols: ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], rows: [] }
for (var pos of positions) {
tbl.rows.push([pos.Symbol, pos.MarginLevel, pos.Amount, pos.FrozenAmount, pos.Price, pos.Profit, pos.Type, pos.ContractType, pos.Margin])
}
tbls.push(tbl)
}
LogStatus("`" + JSON.stringify(tbls) + "`")
// Print out the information once and then return to prevent the order from being executed during the subsequent backtest and affecting data observation
return
}
'''backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
import json
def main():
arrSymbol = ["BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"]
for symbol in arrSymbol:
exchange.CreateOrder(symbol, "buy", -1, 1)
exchange.CreateOrder(symbol, "sell", -1, 1)
defaultPositions = exchange.GetPositions()
swapPositions = exchange.GetPositions("USDT.swap")
futuresPositions = exchange.GetPositions("USDT.futures")
btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap")
tbls = []
arr = [defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions]
tblDesc = ["defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"]
for index in range(len(arr)):
positions = arr[index]
tbl = {"type": "table", "title": tblDesc[index], "cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"], "rows": []}
for pos in positions:
tbl["rows"].append([pos["Symbol"], pos["MarginLevel"], pos["Amount"], pos["FrozenAmount"], pos["Price"], pos["Profit"], pos["Type"], pos["ContractType"], pos["Margin"]])
tbls.append(tbl)
LogStatus("`" + json.dumps(tbls) + "`")
return
/*backtest
start: 2024-05-21 00:00:00
end: 2024-09-05 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
void main() {
auto arrSymbol = {"BTC_USDT.swap", "BTC_USDT.quarter", "ETH_USDT.swap", "ETH_USDT.quarter"};
for (const auto& symbol : arrSymbol) {
exchange.CreateOrder(symbol, "buy", -1, 1);
exchange.CreateOrder(symbol, "sell", -1, 1);
}
auto defaultPositions = exchange.GetPositions();
auto swapPositions = exchange.GetPositions("USDT.swap");
auto futuresPositions = exchange.GetPositions("USDT.futures");
auto btcUsdtSwapPositions = exchange.GetPositions("BTC_USDT.swap");
json tbls = R"([])"_json;
std::vector<std::vector<Position>> arr = {defaultPositions, swapPositions, futuresPositions, btcUsdtSwapPositions};
std::string tblDesc[] = {"defaultPositions", "swapPositions", "futuresPositions", "btcUsdtSwapPositions"};
for (int index = 0; index < arr.size(); index++) {
auto positions = arr[index];
json tbl = R"({
"type": "table",
"cols": ["Symbol", "MarginLevel", "Amount", "FrozenAmount", "Price", "Profit", "Type", "ContractType", "Margin"],
"rows": []
})"_json;
tbl["title"] = tblDesc[index];
for (const auto& pos : positions) {
json arrJson = R"([])"_json;
arrJson.push_back(pos.Symbol);
arrJson.push_back(pos.MarginLevel);
arrJson.push_back(pos.Amount);
arrJson.push_back(pos.FrozenAmount);
arrJson.push_back(pos.Price);
arrJson.push_back(pos.Profit);
arrJson.push_back(pos.Type);
arrJson.push_back(pos.ContractType);
arrJson.push_back(pos.Margin);
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
}
LogStatus(_D(), "\n", "`" + tbls.dump() + "`");
return;
}
複数の異なる取引ペアと契約コードのための市場オーダーを配置するために先物交換オブジェクトを使用します.複数の方法でポジションをクエリします.
仮想通貨先物契約は,ポジションの論理的概念のみを有する仮想通貨スポットとは異なります. FMZ Quant Tradingプラットフォームのシステムでは,特定のタイプの仮想通貨先物契約は,トレーディングペア, 契約コード{@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType} の関数を参照してください.
についてGetPositions
function,シンボルのパラメータの使用シナリオは,以下のように要約されます.
エクスチェンジオブジェクト分類 | パラメータ | クエリの範囲 | コメント |
---|---|---|---|
フューチャー | シンボルのパラメータを通さない | 現在の取引ペアと契約コードの次元範囲内のすべての取引製品を検索する. | 現在の取引ペアがBTC_USDTで,契約コードがスワップである場合,すべてのUSDTベースの永続契約がクエリされます. これは,呼び出しに相当しますGetPositions("USDT.swap") |
フューチャー | 取引商品を指定する,シンボルのパラメータは: |
指定されたBTCのUSDTベースの永続契約をクエリする | フューチャー取引対象のパラメータシンボルの形式は:トレーディングペアそして契約コードFMZプラットフォームで定義され,文字で区切られています.". . |
フューチャー | 取引商品の範囲を指定します. シンボルのパラメータは: |
すべてのUSDTベースの永続契約をクエリ | - |
オプションをサポートする先物取引 | シンボルのパラメータを通さない | 現在の取引ペアサイズ範囲内のすべてのオプション契約をクエリする | 現在の取引ペアが BTC_USDTである場合,契約はオプション契約に設定されます.例えば,Binanceオプション契約: BTC-240108-40000-C |
オプションをサポートする先物取引 | 特定の取引商品を指定する | 指定されたオプション契約をクエリ | たとえば,Binance 期貨取引所では,シンボルのパラメータは: BTC_USDT.BTC-240108-40000-C |
オプションをサポートする先物取引 | 取引商品の範囲を指定します,シンボルのパラメータは: |
すべてのUSDTベースのオプション契約をクエリ | - |
についてGetPositions
機能,先物取引対象
問い合わせの寸法範囲は次のように要約されます.
パラメータ | 要求範囲の定義 | コメント |
---|---|---|
USDT.swap | USDTベースの永続契約範囲 | について |
Exchange API インターフェースでサポートされていない次元 エラーが報告され, null 値が返されます. 呼び出しています
送料契約の範囲です 送料契約の範囲です
通貨ベースの永続的な取引の範囲 契約です
貨幣による配送の範囲 契約です
USDTのオプションです USDTベースのオプション契約の範囲です
通貨ベースのオプション契約の範囲です
USDT.futures_combo CFDの組み合わせの範囲 FUTURES_DERIBIT 取引所
USD.futures_ff ミックス・マーージン・デリバリー・コントラクトの範囲 フューチャーズ_クラッケン取引所
USD.swap_pf ミックス・マーージン・パーペチュアル・コントラクト・レンジ フューチャーズ_クラッケン取引所
互換性exchange.GetPosition()
呼び出しGetPosition
この式は,GetPositions
.
取引対象となる口座がexchange
市場におけるポジションがない問い合わせ範囲または特定取引手段についてexchange.GetPositions()
function は空の配列を返します 例えば:[]
.
{@struct/Position Position}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@struct/Position Position}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}, {@fun/Futures/exchange.SetContractType}, {@fun/Futures/exchange.SetCurrency}, {@fun/Futures/exchange.SetCurrency}, {@fun/Futures/exchange.SetCurrency}, {@fun/Futures/exchange.SetContractType exchange.SetContractType}
についてexchange.SetMarginLevel()
取引対または契約のレバレッジ値を設定するために使用されます.symbol
パラメータ. パラメータを入力するだけで対応marginLevel
{@var/EXCHANGE exchange} 取引対象の現在の取引ペアまたは契約のレバレッジ値を設定する.
exchange.SetMarginLevel ((マーク,マージンLevel) を設定する) 交換. 設定 マージンレベル (マージンレベル)
についてsymbol
このパラメータは,レバレッジ値を調整する必要がある取引ペアまたは契約を指定するために使用されます.symbol
パラメータSetMarginLevel()
機能は,その形式と一致しているsymbol
パラメータGetTicker()
機能
シンボル
偽り
文字列
についてmarginLevel
このパラメータはレバレッジ値を設定するために使用され,通常は取引所の整数であり,一部の取引所の浮動点レバレッジ値設定もサポートします.
マージンレベル
本当
番号
function main() {
exchange.SetMarginLevel(10)
// Set the leverage of BTC’s USDT-margined perpetual contract to 15
exchange.SetMarginLevel("BTC_USDT.swap", 15)
}
def main():
exchange.SetMarginLevel(10)
exchange.SetMarginLevel("BTC_USDT.swap", 15)
void main() {
exchange.SetMarginLevel(10);
exchange.SetMarginLevel("BTC_USDT.swap", 15);
}
についてexchange.SetMarginLevel()
バックテストシステムは,暗号通貨の先物取引対象のみをサポートします.exchange.SetMarginLevel()
引き上げ値を設定する機能です.
仮想通貨先物契約の為,レバレッジメカニズムは仮想通貨先物契約取引所により均一ではない.一部の取引所で,先物契約のレバレッジ値は,注文配置インターフェースのパラメータである.exchange.SetMarginLevel()
この関数はネットワークリクエストを生成せず,基となる FMZ システム (オーダー配置インターフェースのパラメータを通すのに使用される) にレバレッジ変数を設定するだけです.一部の取引先先先物契約のレバレッジ値は,取引所のウェブサイトページまたは API インターフェースを使用して設定する必要がある取引所の設定です.exchange.SetMarginLevel()
この関数はネットワークリクエストを生成し,レバレッジを設定できない可能性があります.その理由はたくさんあります.例えば,現在のポジションまたは待機中のオーダーがあり,この取引ペアまたは契約に新しいレバレッジ値を設定することが不可能になります.
支援しない取引所exchange.SetMarginLevel()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
マージンレベルを設定 | – | 期貨_dYdX / 期貨_Deribit |
{@var/EXCHANGE exchange} 交換する
についてexchange.SetDirection()
この関数は,先物契約の注文を出すとき, {@fun/Trade/exchange.Buy exchange.Buy}関数, {@fun/Trade/exchange.Sell exchange.Sell}関数のオーダー方向を設定するために使用されます.
交換.設定方向 (方向)
についてdirection
このパラメータは,オーダーを投じたときに先物契約の方向を設定するために使用されます.オプション値は:"buy"
, "closesell"
, "sell"
, "closebuy"
- わかった
方向性
本当
文字列
function main(){
// For example, set to OKX futures contract of this week
exchange.SetContractType("this_week")
// Set leverage to 5 times
exchange.SetMarginLevel(5)
// Set the order type to long
exchange.SetDirection("buy")
// Place an order for 2 contracts at 10,000
exchange.Buy(10000, 2)
exchange.SetMarginLevel(5)
exchange.SetDirection("closebuy")
exchange.Sell(1000, 2)
}
def main():
exchange.SetContractType("this_week")
exchange.SetMarginLevel(5)
exchange.SetDirection("buy")
exchange.Buy(10000, 2)
exchange.SetMarginLevel(5)
exchange.SetDirection("closebuy")
exchange.Sell(1000, 2)
void main() {
exchange.SetContractType("this_week");
exchange.SetMarginLevel(5);
exchange.SetDirection("buy");
exchange.Buy(10000, 2);
exchange.SetMarginLevel(5);
exchange.SetDirection("closebuy");
exchange.Sell(1000, 2);
}
についてexchange.SetDirection()
この関数は,先物契約取引の方向とオーダー配置関数の間の対応を設定します.
注文の配送機能 | SetDirection 関数のパラメータによって設定された方向 | コメント |
---|---|---|
exchange.Buy | 買って | ロングポジションの購入と開設 |
exchange.Buy | 閉店する | ショートポジションの購入と閉じる |
exchange.Sell | 売る | 売り出し・開いたショートポジション |
exchange.Sell | ロングポジションを売り,閉じる |
{@fun/Trade/exchange.buy exchange.buy} {@fun/Trade/exchange.sell exchange.sell} {@fun/Trade/exchange.exchange.buy} {@fun/Trade/exchange.sell exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.exchange.buy} {@fun/Trade/exchange.exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.exchange.sell} {@fun/Trade/exchange.sell.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.sell} {@fun/Trade/exchange.sell.sell}
についてexchange.SetContractType()
この関数は {@var/EXCHANGE exchange} 交換オブジェクトの現在の契約コードを設定するために使用されます.
についてexchange.SetContractType()
この関数は,現在の契約コードに対応する取引契約コードを含む構造を返します.例えば,Binance Futures 取引所の場合,現在の契約コードはquarter
この関数の返し値構造は:{"InstrumentID": "BTCUSD_230630", "instrument": "BTCUSD_230630"}
- わかった
オブジェクト
exchange.SetContractType (符号)
についてsymbol
パラメータは契約コードを設定するために使用され,オプション値は:"this_week"
, "next_week"
, "quarter"
, "next_quarter"
, "swap"
など
暗号通貨の先物契約納品契約指定されていないコードは,一般的に次のとおりです.
this_week
契約は今週の契約ですnext_week
次の週の契約ですquarter
契約は四半期ごとにnext_quarter
次の四半期契約です永住契約暗号通貨の先物契約のコードは,指定されていない場合,一般的に以下のとおりである.swap
永久契約シンボル 本当 文字列
function main() {
// Set to this week contract
exchange.SetContractType("this_week")
}
def main():
exchange.SetContractType("this_week")
void main() {
exchange.SetContractType("this_week");
}
現在の契約を現在の週の契約として設定します.
function main() {
// The default trading pair is BTC_USD, set the contract for this week, and the contract is a currency standard contract
exchange.SetContractType("this_week")
Log("ticker:", exchange.GetTicker())
// Switching trading pairs, then setting up contracts, switching to USDT as margin contracts, as opposed to currency standard contracts
exchange.IO("currency", "BTC_USDT")
exchange.SetContractType("swap")
Log("ticker:", exchange.GetTicker())
}
def main():
exchange.SetContractType("this_week")
Log("ticker:", exchange.GetTicker())
exchange.IO("currency", "BTC_USDT")
exchange.SetContractType("swap")
Log("ticker:", exchange.GetTicker())
void main() {
exchange.SetContractType("this_week");
Log("ticker:", exchange.GetTicker());
exchange.IO("currency", "BTC_USDT");
exchange.SetContractType("swap");
Log("ticker:", exchange.GetTicker());
}
契約を締結する際にはUSDT
取引対をコードで切り替える必要があります (交換オブジェクトを追加するときに直接取引対を設定することもできます):
function main(){
// Set the contract for this week
var ret = exchange.SetContractType("this_week")
// Return information about the current week's contracts
Log(ret)
}
def main():
ret = exchange.SetContractType("this_week")
Log(ret)
void main() {
auto ret = exchange.SetContractType("this_week");
Log(ret);
}
復元値を印刷するexchange.SetContractType()
機能:
暗号通貨の先物契約戦略では,BTC_USDT
トレーディングペア: 取引ペアを切り替えるときexchange.SetCurrency("BTC_USDT")
またはexchange.IO("currency", "BTC_USDT")
機能,スイッチした後,あなたは使用する必要がありますexchange.SetContractType()
新しい取引ペアで実行される現在の契約を決定するために契約をリセットする機能.通貨標準契約またはUSDT標準契約例えば,取引ペアがBTC_USDT
薬剤をexchange.SetContractType("swap")
契約コードを設定する機能swap
この時点で,それはBTC
についてUSDT標準取引相手が,BTC_USD
薬剤をexchange.SetContractType("swap")
契約コードを設定する機能swap
この時点で,それはBTC
ほら通貨標準永久契約です
サポートされている暗号通貨先物取引所の詳細,各取引所の契約名:
フューチャー=OKCoin (OKX)
永久契約に設定:exchange.SetContractType("swap")
今週の契約に設定:exchange.SetContractType("this_week")
来週の契約に設定:exchange.SetContractType("next_week")
月間契約に設定:exchange.SetContractType("month")
来月の契約に設定:exchange.SetContractType("next_month")
決算された四半期契約:exchange.SetContractType("quarter")
次の四半期に設定された契約:exchange.SetContractType("next_quarter")
OKXには,市場前の取引契約があります.契約の納期日は固定時間です.取引所によって定義される契約コードは,例えば:HMSTR-USDT-250207
. 取引ペアをHMSTR_USDT
FMZのプラットフォームで,そしてそれを使用exchange.SetContractType("HMSTR-USDT-250207")
契約書を作るために
サポートする機能のためにsymbol
パラメータは次の通りですexchange.GetTicker()
, exchange.CreateOrder()
, etc. 指定することができますsymbol
パラメータは:HMSTR_USDT.HMSTR-USDT-250207
この契約の市場データを入手したり,注文をしたりする.
フューチャーズ_HuobiDM (フューチャーズ)
今週の契約に設定:exchange.SetContractType("this_week")
- わかった
来週の契約に設定:exchange.SetContractType("next_week")
- わかった
決算された四半期契約:exchange.SetContractType("quarter")
- わかった
次の四半期に設定された契約:exchange.SetContractType("next_quarter")
- わかった
永久契約に設定:exchange.SetContractType("swap")
- わかった
契約を支えるUSDT
マージンとしてBTC
契約例:使用exchange.IO("currency", "BTC_USDT")
契約に切り替えるUSDT
マージンとして
または現在の取引ペアをBTC_USDT
取引ペアを切り替えた後,呼び出す必要があります.exchange.SetContractType()
契約を設定するために再び機能します.
取引先は,取引先の取引先と関連している.
永久契約に設定:exchange.SetContractType("swap")
- わかった
Futures_BitMEX 取引所配送契約は,以下の契約コード (1月から12月まで) を有する月間契約です.
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
納品契約の作成exchange.SetContractType("December")
例えば,取引ペアがXBT_USDT
についてexchange.SetContractType("December")
BTC に基づく USDT で12月の配送の契約を設定します (実際の契約コードに対応します)XBTUSDTZ23
).
フューチャーズ_BitMEX 契約情報要約
Futures_BitMEX で定義された契約コード | FMZ に対応する取引対 | FMZにおける対応契約コード | コメント |
---|---|---|---|
ドッグスード | DOGE_USD | スワップ | USDで決算され,XBTはBTCです. |
ドーゲュスト | DOGE_USDT | スワップ | USDTで表され,USDTで決済されます. |
XBTETH | XBT_ETH | スワップ | ETHで決済 XBTで決済 |
XBTEUR | XBT_EUR | スワップ | EURで決済され,XBTで決済されます. |
USDTUSDC | USDT_USDC | スワップ | USDCで決済され XBTで決済されます |
ETHUSD_ETH | ETH_USD_ETH | スワップ | USDで決済され,ETHで決済される. |
XBTH24 | XBT_USD | 3月 | 効用期限: 3月24日 月コードは: H; ドルで表され,XBTで決済. |
ETHUSDZ23 | ETH_USD | 12月 | 効用期限: 12月23日 月コードは: Z; ドルで表され,XBTで決済. |
XBTUSDTZ23 | XBT_USDT | 12月 | 効用期限: 12月23日 月コードは: Z; USDTで表され,USDTで決済される. |
ADAZ23 | ADA_XBT | 12月 | 期限: 12月23日 月コードは: Z ; XBTで請求,XBTで決済. |
P_XBTETFX23 | USDT_XXX | P_XBTETFX23 | 期限: 11/23/23; 割合で表し,USDTで決済する. |
フューチャーズ_GateIO
今週の契約に設定:exchange.SetContractType("this_week")
- わかった
来週の契約に設定:exchange.SetContractType("next_week")
- わかった
決算された四半期契約:exchange.SetContractType("quarter")
- わかった
次の四半期に設定された契約:exchange.SetContractType("next_quarter")
- わかった
永久契約に設定:exchange.SetContractType("swap")
- わかった
契約を支えるUSDT
マージンとしてBTC
契約例:使用exchange.IO("currency", "BTC_USDT")
契約に切り替えるUSDT
マージンとして
または現在の取引ペアをBTC_USDT
取引ペアを切り替えた後,呼び出す必要があります.exchange.SetContractType()
契約を設定するために再び機能します.
フューチャーズ_デリビット
永久契約に設定:exchange.SetContractType("swap")
- わかった
デリビットをサポートします.USDC
契約
納品契約は次のとおりです."this_week"
, "next_week"
, "month"
, "quarter"
, "next_quarter"
, "third_quarter"
, "fourth_quarter"
- わかった
CFD (フューチャー_コンボ):"this_week,swap"
, "next_week,swap"
, "next_quarter,this_week"
, "third_quarter,this_week"
, "month,next_week"
,多くの組み合わせがあります.
オプション契約については,取引所によって定義された特定のオプション契約コードを入力する必要があります.詳細については Deribit のウェブサイトを参照してください.
フューチャー=KuCoin
例えば,取引ペアがBTC_USD
コードが設定されれば,通貨に基づく契約です.
永久契約に設定:exchange.SetContractType("swap")
- わかった
決算された四半期契約:exchange.SetContractType("quarter")
- わかった
次の四半期に設定された契約:exchange.SetContractType("next_quarter")
.
保証金契約としてUSDT:
例えば,取引ペアがBTC_USDT
契約コードを設定します. これは,USDTを保全金として使用する契約です.
永久契約に設定:exchange.SetContractType("swap")
.
フューチャー=Binance
バイナンス・フューチャーズ・エクスチェンジは,現在の取引ペアの永続契約のデフォルト,契約コード:swap
- わかった
永久契約に設定:exchange.SetContractType("swap")
Binanceの永続契約にはUSDT
例えば,この2つの要素はUSDT
標準の永続契約BTC
取引ペアが設定されている場合BTC_USDT
例えば,コインを担保金として使用する永続契約もサポートします.BTC
取引ペアを設定してBTC_USD
- わかった
決算された四半期契約:exchange.SetContractType("quarter")
, 配送契約には通貨標準契約 (つまり,通貨を保証金として使用する) があります.BTC
取引対は,次のように設定されます.BTC_USD
そして契約を設定しますexchange.SetContractType("quarter")
設定されているBTC
通貨スタンダード契約と四半期契約.
次の四半期に設定された契約:exchange.SetContractType("next_quarter")
例えばBTC
通貨スタンダード四半期契約の取引対は,以下に設定される:BTC_USD
契約書を作ってexchange.SetContractType("next_quarter")
- わかった
バイナンスではUSDT
マージン付与契約として,BTC
例えば,取引対をBTC_USDT
契約コードを設定します
バイナンスオプション契約のサポート:
オプション契約コードの形式は,取引所によって定義されたオプション契約コードに基づいています.BTC-241227-15000-C
, XRP-240112-0.5-C
, BTC-241227-15000-P
バイナンスオプション契約コードをBTC-241227-15000-P
例えば,BTCはオプション通貨コード,241227は行使日,15000は行使価格,Pは販売オプション,Cはコールオプションです.
オプションの種類については,欧州オプションかアメリカオプションかについては,取引所のオプション契約の関連情報を参照してください.
取引所はオプション販売者を制限し,資格を別々に申請することを要求することがあります.バイナンスオプションには販売者の資格が必要です.
フューチャーズ_ビボックス
バイボックスの永続契約の契約コード:swap
- わかった
永久契約に設定:exchange.SetContractType("swap")
.
フューチャーズ_Bybit
既定は,現在の取引対の永続契約,契約コード:swap
- わかった
今週の契約コード:this_week
- わかった
来週の契約コード:next_week
- わかった
第3週間の契約コード:third_week
- わかった
月間契約コード:month
- わかった
次の月の契約コード:next_month
- わかった
四半期契約コード:quarter
- わかった
次の四半期契約コード:next_quarter
- わかった
第3四半期契約コード:third_quarter
.
フューチャーズ_クラケン
既定は,現在の取引ペアの永続契約,契約コード:swap
.
swap
永久契約month
: 現月契約.quarter
契約は四半期ごとにnext_quarter
次の四半期契約ですswap_pf
: 混合保証金付き永続契約quarter_ff
: 混同保証金による四半期契約month_ff
: 混同保証金 流動月契約next_quarter_ff
: 混同利益率の契約
フューチャー=Bitfinex
契約コードは,現在の取引対の永久契約です.swap
.
フューチャー=Bitget
契約コードは,現在の取引対の永久契約です.swap
- わかった
取引対は,BTC_USD
通貨標準契約の場合,取引対はBTC_USDT
決済された契約の場合USDT
デモコンタクトは,以下のような取引対で設定できます.SBTC_USD
, BTC_SUSDT
.
フューチャーズ_dYdX
dYdX 永続契約の契約コード:swap
- わかった
永久契約に設定:exchange.SetContractType("swap")
, dYdXはUSDT標準契約のみを持っています.
フューチャーズ_MEXC
MEXCの永続契約の契約コード:swap
- わかった
永久契約に設定:exchange.SetContractType("swap")
. 取引対をBTC_USD
通貨標準契約であり,取引ペアをBTC_USDT
これはUSDT
- 契約が決まった
フューチャー=仮想通貨
トークンcrypto.com契約取引のための保証金として使用するために,ドルで表記されたクレジットに変換することができます.
永久契約に設定:exchange.SetContractType("swap")
呼び出す例exchange.SetContractType("swap")
取引ペアが設定されているとき BTCの永久契約を設定する機能BTC_USD
- わかった
についてcrypto.com交換配送契約は,次の契約コードを持つ月間契約 (1月から12月まで) である.
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
配送契約を設定する:exchange.SetContractType("October")
例えば,取引ペアがBTC_USD
,関数を呼び出すexchange.SetContractType("October")
BTCの10月の配達契約を設定する
合同コードは,現在,次のとおりです.BTCUSD-231027
.
フューチャーズ
フューチャーズ_WOO 交換サポートUSDT
永続契約のコードでswap
例えば,取引ペアがBTC_USDT
機能についてexchange.SetContractType("swap")
現行の契約を BTC の USDT ベースの永続契約に設定します
{@fun/Futures/exchange.GetContractType exchange.GetContractType}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Futures/exchange.GetContractType exchange.GetContractType}, {@fun/Account/exchange.SetCurrency exchange.SetCurrency}, {@fun/Account/exchange.SetCurrency.SetCurrency}, {@fun/Futures/Futures/exchange.GetContractType exchange.GetContractType}, {@fun/Account/exchange.SetCurrency.SetCurrency}, {@fun/Account/exchange.SetCurrency.SetCurrency.SetCurrency}
についてexchange.GetContractType()
この関数は {@var/EXCHANGE exchange} exchange オブジェクトの現在の設定の契約コードを取得するために使用されます.
についてexchange.GetContractType()
FMZ プラットフォームで定義された契約コードを返します 例えば:this_week
, swap
など
文字列
exchange.GetContractType (契約型を取得する)
function main () {
Log(exchange.SetContractType("this_week"))
Log(exchange.GetContractType())
}
def main():
Log(exchange.SetContractType("this_week"))
Log(exchange.GetContractType())
void main() {
Log(exchange.SetContractType("this_week"));
Log(exchange.GetContractType());
}
{@fun/Futures/exchange.SetContractType exchange.SetContractType} 契約の種類を表示する
についてexchange.GetFundings()
この関数は,現在の期間の資金調達の割合のデータを得るのに使用されます.
についてexchange.GetFundings()
この関数は,データリクエストが成功した場合に {@struct/Funding Funding} 構造の配列を返し,データリクエストが失敗した場合に null 値を返します.
{@struct/Funding Funding}配列,ゼロ値
交換.GetFundings (資金調達) exchange.GetFundings (シンボル)
パラメータsymbol
設定するために使用されます.トランザクションシンボルまたはトランザクションシンボルの範囲問いかけられる.symbol
パラメータが通過されない場合,すべてのインstrumentの現在の資金調達のレートのデータは,現在の取引ペアと契約コードの次元範囲でデフォルトで要求されます.
シンボル 偽り 文字列
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/
function main() {
// LPT_USDT.swap 4-hour period
var symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
for (var symbol of symbols) {
exchange.GetTicker(symbol)
}
var arr = []
var arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
for (p of arrParams) {
if (p == "no param") {
arr.push(exchange.GetFundings())
} else {
arr.push(exchange.GetFundings(p))
}
}
var tbls = []
var index = 0
for (var fundings of arr) {
var tbl = {
"type": "table",
"title": arrParams[index],
"cols": ["Symbol", "Interval", "Time", "Rate"],
"rows": [],
}
for (var f of fundings) {
tbl["rows"].push([f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate * 100 + " %"])
}
tbls.push(tbl)
index++
}
LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + JSON.stringify(tbls) + "`")
}
'''backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
'''
import json
def main():
# LPT_USDT.swap 4-hour period
symbols = ["SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"]
for symbol in symbols:
exchange.GetTicker(symbol)
arr = []
arrParams = ["no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"]
for p in arrParams:
if p == "no param":
arr.append(exchange.GetFundings())
else:
arr.append(exchange.GetFundings(p))
tbls = []
index = 0
for fundings in arr:
tbl = {
"type": "table",
"title": arrParams[index],
"cols": ["Symbol", "Interval", "Time", "Rate"],
"rows": [],
}
for f in fundings:
tbl["rows"].append([f["Symbol"], f["Interval"] / 3600000, _D(f["Time"]), str(f["Rate"] * 100) + " %"])
tbls.append(tbl)
index += 1
LogStatus(_D(), "\n Requested market types:", symbols, "\n`" + json.dumps(tbls) + "`")
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-23 00:05:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDC"}]
*/
void main() {
// LPT_USDT.swap 4-hour period
json arrSymbol = R"([])"_json;
std::string symbols[] = {"SOL_USDT.swap", "ETH_USDT.swap", "LTC_USDT.swap", "SOL_USDC.swap", "ETH_USDC.swap", "BTC_USD.swap", "BTC_USDT.quarter", "LPT_USDT.swap"};
for (const std::string& symbol : symbols) {
exchange.GetTicker(symbol);
arrSymbol.push_back(symbol);
}
std::vector<std::vector<Funding>> arr = {};
std::string arrParams[] = {"no param", "LTC_USDT.swap", "USDT.swap", "USD.swap", "USDC.swap", "USDT.futures", "BTC_USDT.quarter"};
for (const std::string& p : arrParams) {
if (p == "no param") {
arr.push_back(exchange.GetFundings());
} else {
arr.push_back(exchange.GetFundings(p));
}
}
json tbls = R"([])"_json;
int index = 0;
for (int i = 0; i < arr.size(); i++) {
auto fundings = arr[i];
json tbl = R"({
"type": "table",
"cols": ["Symbol", "Interval", "Time", "Rate"],
"rows": []
})"_json;
tbl["title"] = arrParams[index];
for (int j = 0; j < fundings.size(); j++) {
auto f = fundings[j];
// json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), string(f.Rate * 100) + " %"};
json arrJson = {f.Symbol, f.Interval / 3600000, _D(f.Time), f.Rate};
tbl["rows"].push_back(arrJson);
}
tbls.push_back(tbl);
index++;
}
LogStatus(_D(), "\n Requested market types:", arrSymbol.dump(), "\n`" + tbls.dump() + "`");
}
フューチャー交換オブジェクトを呼び出すexchange.GetFundings()
バックテストシステムにおける関数.任意の市場関数を呼び出す前に,GetFundingsは現在のデフォルト取引ペアの資金提供データを返します.市場関数を呼び出す後,すべての要求された多様性の資金提供データを返します.以下のテスト例を参照してください:
資金調達の割合のデータの一連のクエリをサポートしない先物取引所では,symbol
パラメータはクエリ範囲として指定されます 例えば:USDT.swap
またはsymbol
パラメータが送信されない場合,インターフェースはエラーを報告します.GetFundings()
このタイプの先物交換オブジェクトを指定する必要があります.symbol
パラメータは特定の永続契約の種類として,そのタイプの現在の資金調達の割合のデータをクエリする.
についてexchange.GetFundings()
機能は実際の取引とバックテストシステムをサポートします.
資金調達のレートのデータをバッチ取得をサポートしない取引所:Futures_Bitget,Futures_OKX,Futures_MEXC,Futures_Deribit,Futures_Cryptosymbol
パラメータの特定のシンボルのコード,例えば:ETH_USDT.swap
.
支援しない取引所exchange.GetFundings()
機能:
機能名 | サポートされていないスポット交換 | サポートされていない先物取引 |
---|---|---|
GetFundings について | – | フューチャーズ_DigiFinex |
{@struct/Funding 資金提供}
についてexchange.SetBase()
この関数は,交換オブジェクト {@var/EXCHANGE exchange} で設定された交換 API インターフェイスのベースアドレスを設定するために使用されます.
交換.セットBase (s)
についてs
このパラメータは,交換 API インターフェイスのベースアドレスを指定するために使用されます.
s
本当
文字列
function main() {
// Use default base address
Log(exchange.GetTicker())
// Switch to https://aws.okx.com
exchange.SetBase("https://aws.okx.com")
Log(exchange.GetTicker())
}
def main():
Log(exchange.GetTicker())
exchange.SetBase("https://aws.okx.com")
Log(exchange.GetTicker())
void main() {
Log(exchange.GetTicker());
exchange.SetBase("https://aws.okx.com");
Log(exchange.GetTicker());
}
Exchange API ベースアドレスの切り替えは,Backtesting システムではサポートされません. Backtesting システムはサンドボックスシミュレーション環境であり, Exchange API インターフェイスにアクセスできません.
{@fun/Trade/exchange.IO exchange.IO}
についてexchange.GetBase()
この関数は,現在の交換 API インターフェイスのベースアドレスを取得するために使用されます.
現在の Exchange API インターフェースのベースアドレスです 文字列
交換する.GetBase ((()
function main() {
Log(exchange.GetBase())
}
def main():
Log(exchange.GetBase())
void main() {
Log(exchange.GetBase());
}
{@fun/NetSettings/exchange.SetBase exchange.SetBase} (ネット設定) {@fun/NetSettings/exchange.SetBase exchange.SetBase} (ネット設定/ネット設定/交換.セットベース交換.セットベース}
についてexchange.SetProxy()
交換オブジェクト {@var/EXCHANGE exchange} のプロキシ設定を設定するために使用されます.
交換.SetProxy (プロキシ)
についてproxy
パラメータはプロキシの設定を指定するために使用されます.
代理
本当
文字列
function main() {
exchange.SetProxy("socks5://192.168.1.10:8080")
// If you can't access the exchange ticker interface, set up an available ss5 proxy and you can access the ticker interface
Log(exchange.GetTicker())
}
def main():
exchange.SetProxy("socks5://192.168.1.10:8080")
Log(exchange.GetTicker())
void main() {
exchange.SetProxy("socks5://192.168.1.10:8080");
Log(exchange.GetTicker());
}
交換オブジェクト {@var/EXCHANGE exchange} を設定するsocks5
代理:
function main(){
exchange.SetProxy("ip://10.0.3.15")
// The requested IP address is 10.0.3.15
exchange.GetTicker()
}
def main():
exchange.SetProxy("ip://10.0.3.15")
exchange.GetTicker()
void main() {
exchange.SetProxy("ip://10.0.3.15");
exchange.GetTicker();
}
更にグローバル仕様{@var/EXCHANGE exchange} exchange オブジェクトからの要求の IP アドレスの場合, {@var/EXCHANGE exchange} に基づいて IP アドレスを指定することもサポートされています:
プロキシ設定が失敗すると,exchange.SetProxy()
呼び出すと null を返します.exchange.SetProxy()
この関数では,rest
プロキシを設定した後, {@var/EXCHANGE exchange} 交換オブジェクトにリンクされた交換インターフェースへのアクセスがプロキシを通じてアクセスされます.
設定のサポートsocks5
交換オブジェクトを追加します. つまり:exchanges[0]
例えば:
exchange.SetProxy("socks5://127.0.0.1:8889")
.exchange.SetProxy("socks5://username:password@127.0.0.1:8889")
. username
ユーザー名とpassword
パスワードですexchange.SetProxy("")
.{@var/EXCHANGE exchange} 交換オブジェクトからの要求のIPアドレスを設定するサポート,グローバルに指定.
{@var/EXCHANGE exchange} 交換する
についてexchange.SetTimeout()
タイムアウトを設定するために使用されます.rest
{@var/EXCHANGE exchange} 交換オブジェクトの要求
交換.セットタイムアウト (タイムアウト)
についてtimeout
パラメータはタイムアウト設定のミリ秒数を指定するために使用されます.
タイムアウト
本当
番号
function main() {
exchange.SetTimeout(3000)
Log(exchange.GetTicker())
}
def main():
exchange.SetTimeout(3000)
Log(exchange.GetTicker())
void main() {
exchange.SetTimeout(3000);
Log(exchange.GetTicker());
}
パラメータtimeout
1000ミリ秒は1秒に等しい.rest
タイムアウトを設定するために使用されます.rest
要求が一度だけ設定されれば 効力を発揮しますexchange.SetTimeout(3000)
設定するrest
タイムアウトを要求するexchange
ネットワークリクエストなどの関数を呼び出す.exchange.GetTicker()
3秒以上応答を受けない関数は タイムアウトし,タイムアウトする関数は ゼロ値を返しますSetTimeout()
グローバル関数ではなく,交換オブジェクト {@var/EXCHANGE exchange} の方法です.
{@var/EXCHANGE exchange} 交換する
FMZ 量子取引プラットフォームは,実際に多スレッド機能をサポートしていますJavaScript
言語戦略をシステムの下部から導入し,以下の目的を実現します
対象物 | 指示 | コメント |
---|---|---|
スレッド | 多スレッドグローバルオブジェクト | メンバーの役割Thread , getThread , mainThread など |
スレッド | スレッドオブジェクト | メンバーの役割peekMessage , postMessage , join など |
スレッドロック | スレッドロックオブジェクト | メンバーの役割acquire , release スレッド実行関数のパラメータとしてスレッド環境に転送できます. |
ThreadEvent について | イベントオブジェクト | メンバーの役割set , clear , wait , isSet スレッド実行関数のパラメータとしてスレッド環境に転送できます. |
ThreadCondition について | 条件オブジェクト | メンバーの役割notify , notifyAll , wait , acquire , release スレッド実行関数のパラメータとしてスレッド環境に転送できます. |
ThreadDict について | 辞書オブジェクト | メンバーの役割get , set スレッド実行関数のパラメータとしてスレッド環境に転送できます. |
についてthreading
object は,同時スレッド,スレッドロック,および条件オブジェクトを作成する機能を提供するグローバルマルチスレッド管理ツールです.このセクションでは,Stream のメンバー関数を紹介します.threading
このオブジェクトは,このオブジェクトのみがサポートされていますJavaScript
言語戦略
についてThread()
この関数は同時スレッドを作成するために使用されます.
についてThread()
a を返しますThread
作成された同時スレッド,スレッド通信などを管理するために使用されるオブジェクト.
Thread
オブジェクト
スレッド (笑) スレッド (→...項目)
パラメータfunc
同期実行のための関数 (参照で渡す) で,匿名関数の渡しをサポートします.func
複数のパラメータを受け入れることができます....args
パラメータリストはfunc
必要なのは...args
.
機能
本当
機能
パラメーターarg
実行パラメータがfunc
(つまり,同時スレッド実行機能) コールバックが実行されるとき,複数のパラメータがある可能性があります.arg
, パラメータリストfunc
必要なのは...args
.
アルグ
偽り
文字列,数,ボール,オブジェクト,配列,関数,ゼロ値,システムでサポートされる他のタイプ
パラメーターitem
同期実行される関数参照とそのパラメータを含む配列である.item
パラメータを呼び出すときに送信することができます.Thread
function.
ポイント 本当 配列
function test1(a, b, c) {
Log("test1:", a, b, c)
}
function main() {
var t1 = threading.Thread(test1, 1, 2, 3)
var t2 = threading.Thread(function (msg) {
Log("msg:", msg)
}, "Hello thread2")
t1.join()
t2.join()
}
カスタム関数と匿名関数の両方の同時スレッドを作成します.
function test1(msg) {
Log("msg:", msg)
test2("Hello test2")
}
function main() {
var t1 = threading.Thread(
[function(a, b, c) {Log(a, b, c)}, 1, 2, 3],
[test1, "Hello test1"],
[`function test2(msg) {Log("msg:", msg)}`])
t1.join()
}
試しにThread(...items)
連続スレッドを作成し,複数の機能を順序的に実行します.
function ml(input) {
const net = new brain.NeuralNetwork()
net.train([
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] },
])
return net.run(input)
}
function main() {
var ret = threading.Thread([ml, [1, 0]], [HttpQuery("https://unpkg.com/brain.js")]).join()
// ret: {"id":1,"terminated":false,"elapsed":337636000,"ret":{"0":0.9339330196380615}}
Log(ret)
}
函数文字列の転送をサポートし,同時コンピューティングのために外部ライブラリを動的にインポートすることができます.
スレッド機能func
通過したThread()
同期実行のための関数は孤立した環境で実行されるので,スレッドの外の変数は直接参照できないし,参照されたときにコンパイルが失敗する.同時に,スレッド内で他の閉じる関数への参照はサポートされません.プラットフォームが提供するすべてのAPIはスレッド内で呼び出されますが,他のユーザー定義関数は呼び出できません.
バックテストシステムとライブ取引環境をサポートする.すべての同時スレッド関連機能は,バックテストシステムでのコード互換性としてのみサポートされており,実際に同時スレッドによって実行されません.したがって,この章では繰り返されません.
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threads/threading/eventLoop}
についてgetThread()
この関数は,指定されたスレッドIDに基づいてスレッドオブジェクトを取得するために使用されます.
についてgetThread()
この関数は,Thread
パラメータで指定されたthreadIdを持つオブジェクト
Thread
オブジェクト
getThread (threadId) を取得する
パラメータthreadId
パラメータを指定して対応するスレッドオブジェクトを取得します.
スレッドId 本当 番号
function main() {
var t1 = threading.Thread(function () {
Log("Hello thread1")
})
// The Thread object has a method: id(), which is used to get the thread ID. You can view the section of the document corresponding to the Thread object.
var threadId = t1.id()
var threadName = t1.name()
Log("threadId:", threadId, ", threadName:", threadName)
var t2 = threading.getThread(threadId)
Log(`threadId == t2.id():`, threadId == t2.id(), `, threadName == t2.name():`, threadName == t2.name())
}
指定されたスレッドオブジェクトを入力します.threadId
.
バックテストシステムとライブ取引環境をサポートします
実行され,解放された場合は,それを使用することはできません.threading.getThread(threadId)
糸のスレッドオブジェクトを得るために
{@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/threading/Lock Lock}, {@fun/Threads/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}
についてmainThread()
主糸のスレッドオブジェクト,つまりスレッドがmain()
戦略の機能が位置しています.
についてmainThread()
この関数で返されるのは 主なスレッドのスレッドオブジェクトです
Thread
オブジェクト
mainThread (メインスレッド)
function main() {
Log("The threadId of the main thread:", threading.mainThread().id())
}
持ってきてThread
主糸の物体と出力threadId
主要な糸の
function test() {
Log("Output the main thread ID in the test function:", threading.mainThread().id())
}
function main() {
var t1 = threading.Thread(test)
t1.join()
}
メインスレッドのスレッドオブジェクトは,並行スレッドでも得ることができる.
バックテストシステムとライブ取引環境をサポートします
{@fun/Threads/getThread getThread}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/threading/Lock Lock}, {@fun/Threads/threads/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}, {@fun/Threads/threads/threads/threading/eventLoop}
についてcurrentThread()
この関数は,現在のスレッドのスレッドオブジェクトを取得するために使用されます.
についてcurrentThread()
この関数は,現在のスレッドのスレッドオブジェクトを返します.
Thread
オブジェクト
currentThread (現在のスレッド)
function test() {
Log("Id of the current thread:", threading.currentThread().id())
}
function main() {
var t1 = threading.Thread(test)
t1.join()
}
持ってきてThread
電流の糸の対象と出力threadId
ロープの流れを
バックテストシステムとライブ取引環境をサポートします
{@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/threading/Condition Condition}, {@fun/Threads/threading/event Event}, {@fun/Threads/threading/threading/Dict Dict}, {@fun/Threads/threading/threading/eventLoop}, {@fun/Threads/threading/threading/pending pending}, {@fun/Threads/threads/threading/eventLoop eventLoop}, {@fun/Threads/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}, {@fun/Threads/threads/
についてLock()
この関数はスレッドロックオブジェクトを作成するために使用されます.
についてLock()
この関数はスレッドロックオブジェクトを返します.
ThreadLock
オブジェクト
鍵を閉めろ
function consumer(productionQuantity, dict, lock) {
for (var i = 0; i < productionQuantity; i++) {
lock.acquire()
var count = dict.get("count")
Log("consumer:", count)
Sleep(1000)
lock.release()
}
}
function producer(productionQuantity, dict, lock) {
for (var i = 0; i < productionQuantity; i++) {
lock.acquire()
dict.set("count", i)
Log("producer:", i)
Sleep(1000)
lock.release()
}
}
function main() {
var dict = threading.Dict()
dict.set("count", -1)
var lock = threading.Lock()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, lock)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, lock)
consumerThread.join()
producerThread.join()
}
2つの同時スレッドが共通のリソースにアクセスします.
バックテストシステムとライブ取引環境をサポートします
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threads/threading/Thread Thread}, {@fun/Threads/threads/threading/condition Condition}, {@fun/Threads/threads/threading/event Event}, {@fun/Threads/threads/threading/mainThread mainThread}, {@fun/Threads/threads/threading/currentThread currentThread}, {@fun/Threads/threads/threading/threads/threading/threadThreadThread}, {@fun/Threads/threads/threads/threads/threads/eventLoopイベント}, {@fun/Threads/threads/threads/thre
についてCondition()
条件変数オブジェクトを作成するために使用され,複数のスレッドの同時環境におけるスレッド間の同期と通信を達成するために使用されます.Condition()
特定の条件が満たされていない場合,スレッドが他のスレッドが条件が満たされていることを通知するまで待つことができます.
についてCondition()
a を返しますThreadCondition
object.
ThreadCondition
オブジェクト
条件
function consumer(productionQuantity, dict, condition) {
for (var i = 0; i < productionQuantity; i++) {
condition.acquire()
while (dict.get("array").length == 0) {
condition.wait()
}
var arr = dict.get("array")
var count = arr.shift()
dict.set("array", arr)
Log("consumer:", count, ", array:", arr)
condition.release()
Sleep(1000)
}
}
function producer(productionQuantity, dict, condition) {
for (var i = 0; i < productionQuantity; i++) {
condition.acquire()
var arr = dict.get("array")
arr.push(i)
dict.set("array", arr)
Log("producer:", i, ", array:", arr)
condition.notify()
condition.release()
Sleep(1000)
}
}
function main() {
var dict = threading.Dict()
dict.set("array", [])
var condition = threading.Condition()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, condition)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, condition)
consumerThread.join()
producerThread.join()
}
2つの同時スレッドが共通のリソースにアクセスします.
バックテストシステムは この機能を実装しません ただ定義します
{@fun/Threads/getThread getThread}, {@fun/Threads/threads/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threads/threading/Lock Lock}, {@fun/Threads/threads/threading/Thread Thread}, {@fun/Threads/threads/threading/event Event}, {@fun/Threads/threads/threads/mainThread mainThread}, {@fun/Threads/threads/threading/currentThread currentThread}, {@fun/Threads/threads/threads/threading/Loop lock}, {@fun/Threads/threads/threads/eventLoop}, {@fun/Threads/threads/threads/threading/eventLoop}, {@fun/Threads/threads/th
についてEvent()
この関数は,スレッドイベントスレッド間の同期に使用されるオブジェクトで,スレッドが別のスレッドからの通知またはシグナルを待つことができます.
についてEvent()
a を返しますThreadEvent
object.
ThreadEvent
オブジェクト
イベント
function consumer(productionQuantity, dict, pEvent, cEvent) {
for (var i = 0; i < productionQuantity; i++) {
while (dict.get("array").length == 0) {
pEvent.wait()
}
if (pEvent.isSet()) {
pEvent.clear()
}
var arr = dict.get("array")
var count = arr.shift()
dict.set("array", arr)
Log("consumer:", count, ", array:", arr)
cEvent.set()
Sleep(1000)
}
}
function producer(productionQuantity, dict, pEvent, cEvent) {
for (var i = 0; i < productionQuantity; i++) {
while (dict.get("array").length != 0) {
cEvent.wait()
}
if (cEvent.isSet()) {
cEvent.clear()
}
var arr = dict.get("array")
arr.push(i)
dict.set("array", arr)
Log("producer:", i, ", array:", arr)
pEvent.set()
Sleep(1000)
}
}
function main() {
var dict = threading.Dict()
dict.set("array", [])
var pEvent = threading.Event()
var cEvent = threading.Event()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, pEvent, cEvent)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, pEvent, cEvent)
consumerThread.join()
producerThread.join()
}
2つの同時スレッドが共通のリソースにアクセスします.
バックテストシステムとライブ取引環境をサポートします
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threads/threading/eventLoop 事件終了}
についてDict()
この関数は,並行スレッドに転送するための辞書オブジェクトを作成するために使用されます.
についてDict()
a を返しますThreadDict
object.
ThreadDict
オブジェクト
暗記する
function threadFun1(obj) {
obj["age"] = 100
while (true) {
Log("threadFun1 obj:", obj)
Sleep(5000)
}
}
function threadFun2(obj) {
while (true) {
Log("threadFun2 obj:", obj)
Sleep(5000)
}
}
function main() {
var obj = {"age": 10}
var t1 = threading.Thread(threadFun1, obj)
var t2 = threading.Thread(threadFun2, obj)
t1.join()
t2.join()
}
正規オブジェクトを同時スレッド実行関数に転送し,オブジェクトのキー値を修正すると,他のスレッドのオブジェクトのキー値が変更されるかどうかをテストします.
function threadFun1(threadDict) {
threadDict.set("age", 100)
while (true) {
Log(`threadFun1 threadDict.get("age"):`, threadDict.get("age"))
Sleep(5000)
}
}
function threadFun2(threadDict) {
while (true) {
Log(`threadFun2 threadDict.get("age"):`, threadDict.get("age"))
Sleep(5000)
}
}
function main() {
var threadDict = threading.Dict()
threadDict.set("age", 10)
var t1 = threading.Thread(threadFun1, threadDict)
var t2 = threading.Thread(threadFun2, threadDict)
t1.join()
t2.join()
}
渡してThreadDict
作成されたオブジェクトDict()
動作を同時スレッド実行機能に変換し,オブジェクトのキー値を変更すると,他のスレッドのオブジェクトのキー値が変化するかどうかをテストします.
共通のオブジェクトが並行スレッド関数に渡されたとき,それはディープコピーとして渡されます.並行スレッドのキー値を修正すると,他のスレッドの辞書に影響しません.
バックテストシステムとライブ取引環境をサポートします
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/event Event}, {@fun/Threads/threading/threading/Thread Thread}, {@fun/Threads/threading/threading/pending pending}, {@fun/Threads/threading/threading/eventLoop}
についてpending
この関数は,現在の戦略プログラムで実行されている並行スレッドの数を得るのに使用されます.
についてpending()
この関数は,現在の戦略プログラムが実行している並行スレッドの数を返します.
番号
待機している
function threadFun1() {
Log("threadFun1")
Sleep(3000)
}
function threadFun2() {
for (var i = 0; i < 3; i++) {
LogStatus(_D(), "print from threadFun2")
Sleep(3000)
}
}
function main() {
Log(`begin -- threading.pending():`, threading.pending())
var t1 = threading.Thread(threadFun1)
var t2 = threading.Thread(threadFun2)
Log(`after threading.Thread -- threading.pending():`, threading.pending())
t1.join()
t2.join()
Log(`after thread.join -- threading.pending():`, threading.pending())
}
2つの同時実行スレッドを作成して,pending()
異なる時間ノードで機能します.
戦略がmain()
実行を開始し,関数を呼び出す.pending()
戦略が実行されている主なスレッドであるため,main()
機能が位置している場合も 待機しているスレッドです
バックテストシステムとライブ取引環境をサポートします
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threading/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop}, {@fun/Threads/threads/threads/threading/threading/threadLoop}
Thread
作成または返却することができます.threading.Thread()
, threading.getThread()
, threading.mainThread()
そしてthreading.currentThread()
.
についてpeekMessage()
この関数はスレッドからメッセージを受け取るのに使われます
についてpeekMessage()
この関数は,現在のスレッドオブジェクトに関連付けられたスレッドが受信したメッセージを返します.
文字列,数,ボール,オブジェクト,配列,ゼロ値,システムでサポートされる他のタイプ
peekMessage (メッセージ) peekMessage (タイムアウト)
パラメータtimeout
timeout の設定です. パラメータによって設定されたミリ秒の数をブロックして待ち,データを返します. データがない場合,タイムアウトが限界を超えると, null 値が返されます.timeout
0 に設定されているか,timeout
プロセスがブロックされ,チャネルからデータが受信されるまで待つことを意味します.timeout
−1に設定された場合,プロセスはデータをブロックし,すぐに返却しないことを意味します.データがない場合は,ゼロ値が返されます.
タイムアウト 偽り 番号
function main() {
var t1 = threading.Thread(function() {
for (var i = 0; i < 10; i++) {
Log("thread1 postMessage():", i)
threading.mainThread().postMessage(i)
Sleep(500)
}
})
while (true) {
var msg = threading.currentThread().peekMessage()
Log("main peekMessage():", msg)
if (msg == 9) {
break
}
Sleep(1000)
}
t1.join()
}
同期スレッドからメインスレッドにメッセージを送信します.
プログラムを書くとき スレッド・デッドロックの問題に 注意を払う必要があります
{@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/join name}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/event
についてpostMessage()
この関数はスレッドにメッセージを送信するために使用されます.
postMessage ((msg) について
パラメータmsg
メッセージを送信します
メッセージ 本当 文字列,数,ボール,オブジェクト,配列,ゼロ値など,システムでサポートされる任意のタイプ
function main() {
var t1 = threading.Thread(function() {
for (var i = 0; i < 10; i++) {
Log("thread1 postMessage():", i)
threading.mainThread().postMessage(i)
Sleep(500)
}
})
for (var i = 0; i < 10; i++) {
var event = threading.mainThread().eventLoop()
Log("main event:", event)
Sleep(500)
}
t1.join()
}
同期スレッドでメッセージを送信し,使用するeventLoop()
メッセージの通知を受け取る
実行関数に呼び出します.postMessage()
メッセージ イベントも生成されます.eventLoop()
メッセージ通知を受信する機能
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData set}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Threads/id id}, {@fun/Threads/Threads/Threads/name name}, {@fun/Threads/Thread/eventLoop eventLoop}
についてjoin()
この機能はスレッドが終了してシステムリソースを回収するのを待つために使用されます.
についてThreadRet
オブジェクト実行結果に関するデータを含みます.その属性には以下が含まれます:
ThreadRet
オブジェクト
加入する 加入 (タイムアウト)
についてtimeout
スレッドが終了するのを待つためのミリ秒でタイムアウトを設定するために使用されます.timeout
パラメータが0に設定されているかtimeout
パラメータが設定されていない場合,join()
実行が完了するまで待つ.timeout
パラメータが -1 に設定され,join()
機能がすぐに戻ります
タイムアウト 偽り 番号
function main() {
var t1 = threading.Thread(function() {
Log("Hello thread1")
Sleep(5000)
})
var ret = t1.join(1000)
Log("ret:", ret) // ret: undefined
ret = t1.join()
Log("ret:", ret) // ret: {"id":1,"terminated":false,"elapsed":5003252000}
}
試験するjoin()
タイムアウトの関数と返却値を出力します
についてjoin()
関数 out と return の時間undefined
.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name}, {@fun/Threads/Thread/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop eventLoop
についてterminate()
この機能はスレッドを強制的に終了し,作成したスレッドが使用するハードウェアリソースを解放するために使用されます.
終了する
function main() {
var t1 = threading.Thread(function() {
for (var i = 0; i < 10; i++) {
Log("thread1 i:", i)
Sleep(1000)
}
})
Sleep(3000)
t1.terminate()
Log("after t1.terminate()")
while (true) {
LogStatus(_D())
Sleep(1000)
}
}
スレッドの実行を強制的に終了します. スレッドを強制的に終了した後,ログにこのスレッドからの出力はありません.
糸が強要的に切断される場合terminate()
機能,我々はもはや使用することはできませんjoin()
機能が終了するのを待つことです
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop event
についてgetData()
この関数はスレッド環境で記録された変数にアクセスするために使用されます.スレッドが実行していない場合,データは有効です.join()
実行していない場合terminate()
機能 (糸を強制的に切る)
についてgetData()
この関数は,この関数に対応するキー値を返します.key
現在のスレッドコンテキストに格納されたキー値ペアのパラメータです.
文字列,数,ボール,オブジェクト,配列,ゼロ値,システムでサポートされる他のタイプ
getData (データ取得) getData (キー) を取得する
についてkey
パラメータは,保存されたキー値ペアのキー名です.
キー 本当 文字列
function main() {
var t1 = threading.Thread(function() {
for (var i = 0; i < 5; i++) {
threading.currentThread().setData("count", i)
Log(`setData("count"):`, i)
Sleep(1000)
}
})
for (var i = 0; i < 5; i++) {
var count = threading.getThread(t1.id()).getData("count")
Log(`getData("count"):`, count)
Sleep(1000)
}
t1.join()
}
鍵の値を記録するcount
鍵値を読み取ることができます.count
主要な話題です
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/setData set}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/thread/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/thread/eventLoop eventLoop eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads
についてsetData()
この関数はスレッドコンテキスト内の変数を保存するために使用されます.
setData (キー,値)
についてkey
パラメータは,保存されたキー値ペアのキー名を指定するために使用されます.
キー
本当
文字列
についてvalue
パラメータは,保存されたキー値ペアのキー値を指定するために使用されます.
価値 本当 文字列,数,ボール,オブジェクト,配列,ゼロ値など,システムでサポートされる任意のタイプ
function main() {
var t1 = threading.Thread(function() {
threading.currentThread().setData("data", 100)
})
Sleep(1000)
Log(`t1.getData("data"):`, t1.getData("data"))
t1.join()
}
同行スレッドにキー値ペアを設定し メインスレッドにキー値ペアを読み取ります
このスレッドが実行していない場合,このデータは有効です.join()
実行していない場合terminate()
パラメータの値value
シリアル化可能な変数でなければならない.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop eventLoop
についてid()
この関数で,threadId
複数のスレッドのオブジェクトのインスタンスの
返金値がid()
機能はthreadId
.
番号
id()
function main() {
var t1 = threading.Thread(function() {
threading.currentThread().setData("data", 100)
})
Log(`t1.id():`, t1.id())
t1.join()
}
同期で実行するスレッドを作成して出力しますthreadId
この同時進行糸がメイン糸に
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData set}, {@fun/Threads/Threads/Thread/name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/thread/eventLoop eventLoop}, {@fun/Threads/thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/
についてname()
この関数は,現在のマルチスレッドオブジェクトインスタンスの名前を返します.
についてname()
この関数は,同時スレッド名を返します.
文字列
氏名
function main() {
var t1 = threading.Thread(function() {
threading.currentThread().setData("data", 100)
})
Log(`t1.name():`, t1.name()) // t1.name(): Thread-1
t1.join()
}
同期スレッドを作成し,メインスレッドで同期スレッドの名前を出力します.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData set}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/thread/eventLoop eventLoop}, {@fun/Threads/thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Th
についてeventLoop()
この機能はスレッドが受信したイベントを聞くために使用されます.
についてeventLoop()
この関数は,現在のスレッドが受信したイベント情報を返します.イベント情報構造.
オブジェクト,ゼロ値
イベントループ イベントループ (タイムアウト)
パラメータtimeout
パラメータが設定されている場合timeout
値が0に設定されている場合,帰還する前にイベントが起こるのを待つ.値が0を超えると,イベントの待機タイムアウトを設定します.値が0未満の場合,最新のイベントを直ちに返します.
タイムアウト 偽り 番号
function main() {
var t1 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop() // Blocking wait
// 2024-11-14 10:14:18 thread1 eventMsg: {"Seq":1,"Event":"thread","ThreadId":0,"Index":1,"Queue":0,"Nano":1731550458699947000}
Log(_D(), "thread1 eventMsg:", eventMsg)
}
})
var t2 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop(-1) // Return immediately
Log(_D(), "thread2 eventMsg:", eventMsg)
Sleep(5000)
}
})
var t3 = threading.Thread(function() {
while (true) {
var eventMsg = threading.currentThread().eventLoop(3000) // Set a 3 second timeout
Log(_D(), "thread3 eventMsg:", eventMsg)
}
})
t1.postMessage("Hello ", t1.name())
t2.postMessage("Hello ", t2.name())
t3.postMessage("Hello ", t3.name())
t1.join()
t2.join()
t3.join()
}
3つのスレッドを同時に実行し,受信されたイベント情報を出力します.タイムアウトが発生するか,関数がすぐに返される場合は,出力値は null です.
処理メカニズムはeventLoop()
この関数は,この関数と同じです.EventLoop()
.
{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name}, {@fun/Threads/name id}, {@fun/Threads/Thread/name name}, {@fun/Threads/Threads/name name}, {@fun/Threads/Threads/name name}, {@fun/Threads/Threads/data set}, {@fun/Threads/Threads/id id}, {@fun/Threads/threads/name name}, {@
複数のスレッドの同期処理に使用されるスレッドロックオブジェクト
についてacquire()
機能はスレッドロック (ロック) を要求するために使用されます.
取得する
参照してくださいthreading.Lock()
例のセクションです
についてacquire()
スレッドロックを要求するために使用されます. スレッドがスレッドロックを呼び出すとき,acquire()
スレッドロックオブジェクトの関数は,スレッドロックを取得しようとします.もしスレッドロックが別のスレッドによって現在保持されていない場合,呼び出しスレッドはロックを成功裏に取得し,実行を続けます.もしスレッドロックが既に別のスレッドによって保持されている場合,スレッドコールacquire()
鍵が解けられるまで ブロックされます
{@fun/Threads/threading/Lock Lock} {@fun/Threads/ThreadLock/release release} {@fun/threads/threads/threading/lock lock} {@fun/threads/threads/threads/threading/lock lock} {@fun/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads}
についてrelease()
機能はスレッドロックを解き放つために使われます.
解放する
function consumer(productionQuantity, dict, pLock, cLock) {
for (var i = 0; i < productionQuantity; i++) {
pLock.acquire()
cLock.acquire()
var arr = dict.get("array")
var count = arr.shift()
dict.set("array", arr)
Log("consumer:", count, ", array:", arr)
cLock.release()
Sleep(1000)
pLock.release()
}
}
function producer(productionQuantity, dict, pLock, cLock) {
for (var i = 0; i < productionQuantity; i++) {
cLock.acquire() // cLock.acquire() placed after pLock.acquire() will not cause deadlock
pLock.acquire()
var arr = dict.get("array")
arr.push(i)
dict.set("array", arr)
Log("producer:", i, ", array:", arr)
pLock.release()
Sleep(1000)
cLock.release()
}
}
function main() {
var dict = threading.Dict()
dict.set("array", [])
var pLock = threading.Lock()
var cLock = threading.Lock()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, pLock, cLock)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, pLock, cLock)
consumerThread.join()
producerThread.join()
}
デッドロックシナリオのテスト
線鎖の不適切な使用は,行き詰まりにつながる可能性があることに注意してください.
{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/acquire acquire} ローックロック
複数のスレッドのイベント通知と信号に使用されるイベントオブジェクト.
についてset()
機能はイベント (セット信号) を通知するために使用されます.
セット
参照してくださいthreading.Event()
例のセクションです
信号が設定されている場合set()
信号を消して再設定する
{@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/Threads/Threads/isSet isSet}, {@fun/Threads/Threads/Threads/isSet isSet}, {@fun/Threads/Threads/Threads/Threads/Threads/isSet isSet}, {@fun/Threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/thread
についてclear()
信号をクリアするために使用されます.
分かりました.
参照してくださいthreading.Event()
例のセクションです
{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/Threads/Threads/isSet isSet}, {@fun/Threads/Threads/Threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/thre
についてwait()
この機能は,イベント (信号) の待機を設定するために使用され,イベント (信号) が設定される前にブロックされます.タイムアウトパラメータを設定することをサポートします.
についてwait()
timeout が発生したかどうかを返します.そうであれば true 値を返します.
ボール
待って 待って (タイムアウト)
についてtimeout
パラメータは,待機タイムアウトをミリ秒で設定するために使用されます.
タイムアウト 偽り 番号
function main() {
var event = threading.Event()
var t1 = threading.Thread(function(event) {
var ret = event.wait(100)
Log(`event.wait(100):`, ret)
ret = event.wait()
Log(`event.wait():`, ret)
}, event)
Sleep(1000)
event.set()
t1.join()
}
返回値をテストするwait()
function.
{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/ThreadEvent/isSet isSet}, {@fun/Threads/Threads/ThreadEvent/clear clear}, {@fun/Threads/Threads/Threads/isSet isSet}, {@fun/Threads/Threads/Threads/isSet isSet}, {@fun/Threads/Threads/Threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads/threads
についてisSet()
この関数は,イベント (信号) が設定されているかどうかを判断するために使用されます.
についてisSet()
この関数は,イベント (信号) が設定されているかどうかを返します.もしイベント (信号) が設定されている場合は,true値を返します.
ボール
isSet (セット)
参照してくださいthreading.Event()
例のセクションです
{@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/set set}, {@fun/Threads/ThreadEvent/clear clear}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/ThreadEvent/wait wait}, {@fun/Threads/Threads/ThreadEvent/set set}, {@fun/Threads/Threads/ThreadEvent/clear clear}, {@fun/Threads/Threads/Wait wait}, {@fun/Threads/Threads/Wait wait}, {@fun/Threads/Threads/threads/threads/wait}, {@fun/threads/threads/
条件オブジェクト,マルチスレッド同期に使用されます.
についてnotify()
呼び出したスレッドのみです.wait()
方法が目覚めるでしょう
通知する
function consumer(dict, condition) {
while (true) {
condition.acquire()
while (dict.get("array").length == 0) {
Log(threading.currentThread().name(), "wait()...", ", array:", dict.get("array"))
condition.wait()
}
var arr = dict.get("array")
var num = arr.shift()
Log(threading.currentThread().name(), ", num:", num, ", array:", arr, "#FF0000")
dict.set("array", arr)
Sleep(1000)
condition.release()
}
}
function main() {
var condition = threading.Condition()
var dict = threading.Dict()
dict.set("array", [])
var t1 = threading.Thread(consumer, dict, condition)
var t2 = threading.Thread(consumer, dict, condition)
var t3 = threading.Thread(consumer, dict, condition)
Sleep(1000)
var i = 0
while (true) {
condition.acquire()
var msg = ""
var arr = dict.get("array")
var randomNum = Math.floor(Math.random() * 5) + 1
if (arr.length >= 3) {
condition.notifyAll()
msg = "notifyAll"
} else {
arr.push(i)
dict.set("array", arr)
if (randomNum > 3 && arr.length > 0) {
condition.notify()
msg = "notify"
} else {
msg = "pass"
}
i++
}
Log(_D(), "randomNum:", randomNum, ", array:", arr, ", msg:", msg)
condition.release()
Sleep(1000)
}
}
試しにnotify()
待機糸を目覚めさせる機能です
についてnotify()
待機列のスレッドを起こします
その時にnotify()
糸がスレッドロックに戻ります
{@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/release release}, {@fun/ThreadCondition/threadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/threads/threadCondition/release release}, {@fun/threads/threadCondition/release release release}, {@fun/threads/threadCondition/release release
についてnotifyAll()
待機するスレッドをすべて起こします.
全員に知らせる
参照してくださいThreadCondition.notify()
例のセクションです
についてnotifyAll()
起き上がったスレッドがスレッドロックを再獲得します 起き上がったスレッドがスレッドロックを再獲得します
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/thread release}, {@fun/threads/threadCondition/thread release release}, {@fun/threads/threadCondition/thread release release}, {@fun/threads/threadCondition/thread release release}, {@fun/threads/threadCondition/thread release release release}, {@fun/threads/threadCondition/thread release release release release}, {@fun/threads/threadCondition/thread
についてwait()
特定の設計条件下でスレッドを待機させる機能です
待って
参照してくださいThreadCondition.notify()
例のセクションです
についてwait()
機能はスレッドロックを解放し,目覚めるとスレッドロックを再獲得します.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}, {@fun/ThreadCondition/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}, {@fun/Threads/ThreadCondition/release release}, {@fun/threads/threadCondition/release release}, {@fun/threads/threadCondition/release release release}, {@fun/threads
についてacquire()
機能はスレッドロック (ロック) を要求するために使用されます.
取得する
参照してくださいThreadCondition.notify()
例のセクションです
使用前wait()
ロープのロック (ロック) を要求する必要があります.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/ThreadCondition/ThreadCondition/release release}, {@fun/ThreadCondition/ThreadCondition/release release}, {@fun/ThreadCondition/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/release release}, {@fun/ThreadCondition/threadCondition/release release}, {@fun/threadCondition/threadCondition/release release}, {@threadCondition/threadCondition/release release release}, {@fun/threadCondition/threadCondition/release release release}, {@fun/thread
についてrelease()
機能はスレッドロックを解き放つために使われます.
解放する
参照してくださいThreadCondition.notify()
例のセクションです
使用後wait()
ロープを解き放つ必要があります. ロープを解き放つ必要があります.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/ThreadCondition/threadCondition/acquire acquire}, {@fun/ThreadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition}, {@fun/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/threadCondition/acquire
辞書オブジェクト,データ共有に使用されます.
についてget()
辞書オブジェクトに記録されたキー値を取得するために使用されます.
についてget()
鍵の値を返しますkey
parameter.
文字列,数,ボール,オブジェクト,配列,ゼロ値,システムでサポートされる他のタイプ
get (キー)
についてkey
パラメータは取得するキーに対応するキー名を指定するために使用されます.
キー 本当 文字列
function main() {
var event = threading.Event()
var dict = threading.Dict()
dict.set("data", 100)
var t1 = threading.Thread(function(dict, event) {
Log(`thread1, dict.get("data"):`, dict.get("data"))
event.set()
event.clear()
event.wait()
Log(`after main change data, thread1 dict.get("data"):`, dict.get("data"))
dict.set("data", 0)
}, dict, event)
event.wait()
dict.set("data", 99)
event.set()
event.clear()
t1.join()
Log(`main thread, dict.get("data"):`, dict.get("data"))
}
イベントオブジェクトを使用してスレッドにデータを読み取り,修正するように通知します.
{@fun/Threads/ThreadDict/セットセット}
についてset()
鍵値ペアを設定するために使用されます.
セット (キー,値)
パラメータkey
変更するキー名を設定するために使用されます.
キー
本当
文字列
パラメーターvalue
変更するキー値を設定するために使用されます.
価値 本当 文字列,数,ボール,オブジェクト,配列,ゼロ値,システムでサポートされる他のタイプ
参照してくださいThreadDict.get()
例のセクションです
{@fun/Threads/ThreadDict/get get} 楽しいこと
FMZ Quant トレーディング プラットフォームでは,主に様々な機能を実装し,ブロックチェーンに関連する呼び出しをexchange.IO()
機能について説明しますexchange.IO()
呼び出し方法は,その機能に応じて別々に機能します.exchange.IO("abi", ...)
ABI を登録するために使用されます.
exchange.IO(k,アドレス,abiContent)
についてk
パラメータは,機能の設定に使用されますexchange.IO()
設定されている"abi"
この関数は登録するために使用されます.ABI
- わかった
k
本当
文字列
についてaddress
パラメータはスマートコントラクトのアドレスを指定するために使用されます.
アドレス
本当
文字列
についてabiContent
パラメータは,指定するために使用されますABI
スマートコントラクトです
abiコンテンツ
本当
文字列
function main() {
// register Uniswap SwapRouter02 abi
var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
// Get the ```ABI``` content of the contract can be obtained with the following URL, taking the ```result``` field only, e.g:
exchange.IO("abi", routerAddress, abi)
}
スマートコントラクトを呼び出す方法は,標準ERC20方法である場合は登録する必要はありません.
持ってきてABI
契約内容は,次のURLで取得できます.result
フィールドのみ,例えば:
https://api.etherscan.io/api?module=contract&action=getabi&address=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
呼び出す方法exchange.IO("api", "eth", ...)
この関数は Ethereum RPC メソッドを呼び出すのに使われます
についてexchange.IO("api", "eth", ...)
この関数は,呼び出された RPC メソッドの返却値を返します.
文字列,数, bool,オブジェクト,配列,null,およびシステムでサポートされる他のすべてのタイプ
exchange.IO(k,ブロックチェーン,rpcメソッド)exchange.IO(k,blockChain,rpcメソッド,...args)
についてk
パラメータは,機能の設定に使用されますexchange.IO()
設定されている"api"
呼び出し要求を拡張するために使用されていることを示します.
k
本当
文字列
についてblockChain
パラメータは,機能の設定に使用されますexchange.IO()
設定されている"eth"
この関数は,Ethereumネットワーク上の RPC メソッド呼び出しに使用されていることを示します.
ブロックチェーン
本当
文字列
についてrpcMethod
呼び出す RPC メソッドを設定するために使用されます.exchange.IO()
機能
rpcメソッド
本当
文字列
についてarg
呼び出す RPC メソッドのパラメータを指定するために使用されます.arg
パラメータの種類と数arg
RPC 方法によって決定されます.rpcMethod
パラメーター
アルグ
偽り
文字列,数, bool,オブジェクト,配列,関数,null,およびシステムでサポートされる他のすべてのタイプ
function main() {
// "owner" needs to be replaced with the specific wallet address
// Parameter labels for the "latest" string position: 'latest', 'earliest' or 'pending', please refrer to https://eth.wiki/json-rpc/API#the-default-block-parameter
// The return value ethBalance is a hexadecimal string: 0x9b19ce56113070
var ethBalance = exchange.IO("api", "eth", "eth_getBalance", "owner", "latest")
// ETH has a precision unit of 1e18
var ethDecimal = 18
// Because of the JavaScript language precision, it is necessary to use the system underlying package function BigInt, BigDecimal to process
// Convert ethBalance to readable amount, 0x9b19ce56113070 to 0.043656995388076145
Log(Number((BigDecimal(BigInt(ethBalance))/BigDecimal(Math.pow(10, ethDecimal))).toString()))
}
財布のETHの残高を確認してください.
function mian() {
// ETH has a precision unit of 1e18
var ethDecimal = 18
// Number of transfers, readable amount e.g. 0.01 ETH
var sendAmount = 0.01
// Due to the JavaScript language precision, it is necessary to use the system underlying encapsulated functions BigInt, BigDecimal to process, and to convert the readable amount to the data processed on the chain
var toAmount = (BigDecimal(sendAmount)*BigDecimal(Math.pow(10, ethDecimal))).toFixed(0)
// "toAddress" is the address of the recipient's ETH wallet at the time of the transfer, which needs to be filled in specifically, and toAmount is the number of transfers
exchange.IO("api", "eth", "send", "toAddress", toAmount)
}
ETHの送金には,{gasPrice: 11, gasLimit: 111, nonce: 111}
パラメータ,最後のパラメータに設定されますexchange.IO()
特定のニーズに応じて機能します.nonce
システムデフォルトを使用し,または残すgasLimit/gasPrice/nonce
システムデフォルト値をすべてに有効にします
function toAmount(s, decimals) {
return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}
function main() {
var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
Log("gasPrice:", toAmount(gasPrice, 0)) // 5000000000 , in wei (5 gwei)
}
問い合わせgasPrice
:
function toAmount(s, decimals) {
// The toAmount function can convert hex-encoded values to decimal values
return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}
function main() {
// Coding approve (authorization) method calls
var data = exchange.IO("encode", "0x111111111117dC0aa78b770fA6A738034120C302", "approve", "0xe592427a0aece92de3edee1f18e0157c05861564", "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
Log("data:", data)
var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
Log("gasPrice:", toAmount(gasPrice, 0))
var obj = {
"from" : "0x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // walletAddress
"to" : "0x111111111117dC0aa78b770fA6A738034120C302",
"gasPrice" : gasPrice,
"value" : "0x0",
"data" : "0x" + data,
}
var gasLimit = exchange.IO("api", "eth", "eth_estimateGas", obj)
Log("gasLimit:", toAmount(gasLimit, 0))
Log("gas fee", toAmount(gasLimit, 0) * toAmount(gasPrice, 0) / 1e18)
}
問い合わせeth_estimateGas
:
この2番目のパラメータはexchange.IO()
機能する"eth"
直接Ethereumノードサーバーに利用可能な RPCメソッドを呼び出すことができます
{@楽しいビッグデシマル} {@楽しいビッグイン}
についてexchange.IO("encode", ...)
データのエンコーディングのために呼び出されます.
についてexchange.IO("encode", ...)
暗号化されたデータを返します.
文字列
exchange.IO(k,データフォーマット,...args)exchange.IO(k,アドレス,データ形式)exchange.IO(k,アドレス,データ 形式,... args)
についてk
パラメータは,機能の設定に使用されますexchange.IO()
設定されている"encode"
この関数はデータコーディングに使用される.
k
本当
文字列
についてaddress
スマートコントラクトのアドレスを設定するために使用されます.exchange.IO("encode", ...)
機能, 通過するaddress
スマートコントラクトのメソッド呼び出しの暗号化を示します.exchange.IO("encode", ...)
機能,もしaddress
パラメータが渡されない場合,この関数は指定された型順序をコードするために使用され,機能的に同等である.abi.encode
中Solidity
- わかった
アドレス
偽り
文字列
についてdataFormat
パラメータは,暗号化されたデータの方法,タイプ,順序を指定するために使用されます.
data 形式
本当
文字列
についてarg
パラメータは,特定のデータ値を指定するために使用されます.dataFormat
パラメーターは,一つ以上あります.arg
パラメータ,およびarg
パラメータは,dataFormat
パラメータ設定
アルグ
偽り
文字列,数,タプル,配列,およびシステムによってサポートされる他のすべてのタイプ
function main() {
// Main network address of ContractV3SwapRouterV2: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
// Calling the unwrapWETH9 method requires registering the ABI first, which is omitted here
// "owner" represents the wallet address, which need to fill in the specific, 1 represents the number of unpacking, unpacking a WETH into ETH
var data = exchange.IO("encode", "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", "unwrapWETH9(uint256,address)", 1, "owner")
Log(data)
}
暗号化メソッドを呼び出すunwrapWETH9
:
function main() {
var x = 10
var address = "0x02a5fBb259d20A3Ad2Fdf9CCADeF86F6C1c1Ccc9"
var str = "Hello World"
var array = [1, 2, 3]
var ret = exchange.IO("encode", "uint256,address,string,uint256[]", x, address, str, array) // uint i.e. uint256 , the type length needs to be specified on FMZ
Log("ret:", ret)
/*
000000000000000000000000000000000000000000000000000000000000000a // x
00000000000000000000000002a5fbb259d20a3ad2fdf9ccadef86f6c1c1ccc9 // address
0000000000000000000000000000000000000000000000000000000000000080 // Offset of str
00000000000000000000000000000000000000000000000000000000000000c0 // Offset of array
000000000000000000000000000000000000000000000000000000000000000b // The length of str
48656c6c6f20576f726c64000000000000000000000000000000000000000000 // str data
0000000000000000000000000000000000000000000000000000000000000003 // The length of the array
0000000000000000000000000000000000000000000000000000000000000001 // array the first data
0000000000000000000000000000000000000000000000000000000000000002 // array the second data
0000000000000000000000000000000000000000000000000000000000000003 // array the third data
*/
}
暗号化例と同じですabi.encode
中Solidity
:
function main() {
var types = "tuple(a uint256,b uint8,c address),bytes"
var ret = exchange.IO("encode", types, {
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}, "0011")
Log("encode: ", ret)
}
トゥップルまたはトゥップルを含むタイプ順序のエンコーディングをサポートします.
このタイプオーダーは,tuple
, bytes
だから電話をする時exchange.IO()
2つのパラメータを入力します.
{
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}
送信されたパラメータは,また,構造とタイプのtuple
定義されているようにtypes
フォームのパラメータ:tuple(a uint256,b uint8,c address)
.
bytes
:"0011"
function main() {
var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"] // ETH address, USDT address
var ret = exchange.IO("encode", "address[]", path)
Log("encode: ", ret)
}
配列または配列を含むタイプの連続的なコーディングをサポートします.
についてexchange.IO()
この関数は,encode
函数呼び出しコードをhex
特定の用途については,公開されているプラットフォームを参照してください.
についてexchange.IO("encodePacked", ...)
この関数は,encodePacked
encoding.
についてexchange.IO("encodePacked", ...)
この関数は,encodePacked
暗号化されたデータ
文字列
exchange.IO(k,データフォーマット,...args)
についてk
パラメータは,機能の設定に使用されますexchange.IO()
設定されている"encodePacked"
この関数がデータに使用されるという意味ですencodePacked
暗号化する
k
本当
文字列
についてdataFormat
パラメータは,種類と順序を指定するために使用されますencodePacked
暗号化されたデータ
data 形式
本当
文字列
についてarg
パラメータは,特定のデータ値を指定するために使用されます.dataFormat
パラメーターは,一つ以上あります.arg
パラメータ,およびarg
パラメータは,dataFormat
パラメータ設定
アルグ
本当
文字列,数,タプル,配列,およびシステムによってサポートされる他のすべてのタイプ
function main() {
var fee = exchange.IO("encodePacked", "uint24", 3000)
var tokenInAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
var tokenOutAddress = "0x6b175474e89094c44da98b954eedeac495271d0f"
var path = tokenInAddress.slice(2).toLowerCase()
path += fee + tokenOutAddress.slice(2).toLowerCase()
Log("path:", path)
}
服用時にUniswap V3
交換経路のようなパラメータを通す必要があります.encodePacked
コード操作:
についてexchange.IO("decode", ...)
解読に使われる方法で呼び出されます
についてexchange.IO("decode", ...)
文字列を返します.dataFormat
数値が 1 つ以上ある場合,配列を返します.dataFormat
パラメーター
array、string について
exchange.IO(k,データ 形式,データ)
についてk
パラメータは,機能の設定に使用されますexchange.IO()
機能,そしてそれを設定"decode"
この関数はデータ解読に使用される.
k
本当
文字列
についてdataFormat
パラメータは,解読されたデータの種類と順序を指定するために使用されます.
data 形式
本当
文字列
についてdata
パラメーターは,解読されるデータを設定するために使用されます.
データ
本当
文字列
function main() {
var types = "tuple(a uint256,b uint8,c address),bytes"
var ret = exchange.IO("encode", types, {
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}, "0011")
Log("encode: ", ret)
var rawData = exchange.IO("decode", types, ret)
Log("decode:", rawData)
}
逆の操作exchange.IO("encode", ...)
機能:
function main() {
// register SwapRouter02 abi
var walletAddress = "0x398a93ca23CBdd2642a07445bCD2b8435e0a373f"
var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
exchange.IO("abi", routerAddress, abi) // abi only uses the contents of the local exactOutput method, the full abi can be searched on the Internet
// encode path
var fee = exchange.IO("encodePacked", "uint24", 3000)
var tokenInAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
var tokenOutAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"
var path = tokenInAddress.slice(2).toLowerCase()
path += fee + tokenOutAddress.slice(2).toLowerCase()
Log("path:", path)
var dataTuple = {
"path" : path,
"recipient" : walletAddress,
"amountOut" : 1000,
"amountInMaximum" : 1,
}
// encode SwapRouter02 exactOutput
var rawData = exchange.IO("encode", routerAddress, "exactOutput", dataTuple)
Log("method hash:", rawData.slice(0, 8)) // 09b81346
Log("params hash:", rawData.slice(8))
// decode exactOutput params
var decodeRaw = exchange.IO("decode", "tuple(path bytes,recipient address,amountOut uint256,amountInMaximum uint256)", rawData.slice(8))
Log("decodeRaw:", decodeRaw)
}
この例では,まずencodePacked
操作についてpath
パラメータ処理exactOutput
後で暗号化される必要がある方法呼び出しが必要です.path
設定されたパラメータです.encode
についてexactOutput
ルーティング契約の方法,タイプパラメータが1つだけtuple
方法名exactOutput
このコードは:0x09b81346
,そして,exchange.IO("decode", ...)
解読する方法decodeRaw
変数と一致するdataTuple
.
データ処理については,exchange.IO()
暗号化だけでなく解読もサポートします
についてexchange.IO("key", ...)
プライベートキーを切り替えるように呼びます
exchange.IO(k,キー)
パラメータk
機能を設定するために使用されます.exchange.IO()
設定されている"key"
この関数はプライベートキーを切り替えるのに使われます
k
本当
文字列
についてkey
パラメーターはプライベートキーを設定するために使用されます
キー
本当
文字列
function main() {
exchange.IO("key", "Private Key") // "Private Key" represents the private key string, which needs to be filled in specifically
}
についてexchange.IO()
この機能は,プライベートキーの切り替えをサポートし,複数のウォレットアドレスを操作できます.複数のウォレットアドレスを操作するために,複数の交換オブジェクトを追加することも可能です (参照: {@var/EXCHANGE/exchanges exchanges}).
についてexchange.IO("api", ...)
スマートコントラクトのメソッドを呼び出すのに使われます.
についてexchange.IO("api", ...)
この関数は"スマートコントラクト"と呼ばれるメソッドの返却値を返します.
文字列,数, bool,オブジェクト,配列,null,およびシステムでサポートされる他のすべてのタイプ
exchange.IO(k,住所,方法)exchange.IO(k,アドレス,方法,... args)exchange.IO(k,アドレス,方法,値,... args)
についてk
パラメータは,機能の設定に使用されますexchange.IO()
設定されている"api"
呼び出し要求を拡張するために使用されていることを示します.
k
本当
文字列
についてaddress
パラメータはスマートコントラクトのアドレスを指定するために使用されます.
アドレス
本当
文字列
についてmethod
このパラメータは,呼び出すスマートコントラクトのメソッドを指定するために使用されます.
方法
本当
文字列
についてvalue
送信されるETHの量を設定するために使用されます.stateMutability
実行されるスマートコントラクトメソッドの属性はpayable
そしてvalue
パラメータをパスする必要があります."stateMutability": "payable"
ABI から見ることができます.exchange.IO()
必要なパラメータを決定します.stateMutability
登録されたABIの属性.stateMutability
属性はnonpayable
そしてvalue
パラメータは渡す必要はありません.
価値
偽り
数、文字列
についてarg
パラメータは,呼び出されるスマートコントラクトのメソッドのパラメータを指定するために使用されます.arg
パラメータ,およびarg
呼び出すためのスマートコントラクトの方法に依存します
アルグ
偽り
文字列,数, bool,およびシステムによってサポートされる他のすべてのタイプ
function main(){
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302" // The contract address of the token, the token is 1INCH in the example
Log(exchange.IO("api", tokenAddress, "decimals")) // Query, print 1INCH tokens with precision index of 18
}
についてdecimals
方法としてconstant
ERC20 の方法で,ガス消費を発生せず,トークンの精度データをクエリすることができます.decimals
方法にはパラメータがない.返却値:トークンの精度データ.
function main(){
// The contract address of the token, in the example the token is 1INCH
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
// For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the wallet to which the current exchange object is bound has authorized 1 1INCH to the spender address
Log(exchange.IO("api", tokenAddress, "allowance", "owner", "spender"))
}
についてallowance
方法としてconstant
特定の契約アドレスに対するトークンの許可された金額をクエリすることができます.allowance
この方法には2つのパラメータがあります.最初のパラメータはウォレットアドレスで,もう1つは認証アドレスです.返却値:トークンの認証金額です.
owner
: 財布の住所,例は文字列spender
: 許可された契約の住所,例は文字列で置き換えられます Uniswap V3 router v1
address.
function main(){
// The contract address of the token, the token is 1INCH in the example
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
// The hexadecimal string of the authorization amount: 0xde0b6b3a7640000 , the corresponding decimal string: 1e18 , 1e18 divided by the precision unit of the token, i.e. 1 token amount, so this refers to the authorization of one token
Log(exchange.IO("api", tokenAddress, "approve", "spender", "0xde0b6b3a7640000"))
}```
The ```approve``` method is a non-```constant``` method of ERC20, which generates gas consumption and is used to authorize the operation amount of a token to a contract address. The ```approve``` method takes 2 parameters, the first one is the address to be authorized and the second one is the amount to be authorized. Return value: txid.
```spender```: the address of the authorized contract, the example is replaced by the string "spender", the actual use needs to fill in the specific address, for example, it can be ```Uniswap V3 router v1``` address. ```0xde0b6b3a7640000```: the number of authorizations, here is the hexadecimal string, the corresponding decimal value is 1e18, divided by the token precision unit in the example (i.e. 1e18). The result is that 1 token is authorized. The third parameter of the ```exchange.IO()``` function is passed to the method name ```approve```, which can also be written in the form of methodId, such as "0x571ac8b0". It is also possible to write the full standard method name, for example: "approve(address,uint256)".
```javascript
function main() {
var ContractV3SwapRouterV2 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
var tokenInName = "ETH"
var amountIn = 0.01
var options = {gasPrice: 5000000000, gasLimit: 21000, nonce: 100} // This is an example, depending on the actual scene settings
var data = "" // The encoded data, here is the empty string, depending on the actual scene settings
var tx = exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", (tokenInName == 'ETH' ? amountIn : 0), (new Date().getTime() / 1000) + 3600, data, options || {})
}
についてmulticall
この方法はconstant
方法Uniswap V3
複数の方法でトークンを換算するために使用されます
についてmulticall
方法にはパラメータをパスする様々な方法がある場合,特定の方法を含む ABI をチェックできます.メソッドを呼び出す前に ABI を登録する必要があります.返回値: txid.
具体例についてはmulticall
公開されているプラットフォームを参照できます.
いくつかの詳細は 擬似コードで説明されています
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: Uniswap V3のルーター v2のアドレスvalue
: 交換取引のトークンはETHでない場合,転送するETHの金額を0に設定します.deadline
: deadline
は,このパラメータです.multicall
(new Date().getTime() / 1000) + 3600 に設定できる方法で,1時間有効であることを示します.data
: data
は,このパラメータです.multicall
方法,行なわれる梱包作業のデータ
似たものexchange.IO("api", "eth", "send", "toAddress", toAmount)
についてgasLimit/gasPrice/nonce
呼び出すときに指定できます.multicall
方法について
偽コードを使って説明します
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})
パラメータ{gasPrice: 11, gasLimit: 111, nonce: 111}
特定の必要に応じて設定することができます.exchange.IO()
機能
省略してもいいnonce
システムデフォルト値を使用するgasLimit/gasPrice/nonce
システムデフォルト値をすべてに有効にします
についてexchange.IO("address")
この関数は, {@var/EXCHANGE exchange} exchange オブジェクトによって設定された財布のアドレスを取得するように呼び出されます.
についてexchange.IO("address")
設定されたウォレットアドレスを返します.
文字列
exchange.IO(k)
についてk
パラメータは,機能の設定に使用されますexchange.IO()
設定されている"address"
この関数は設定されたウォレットアドレスを取得するために使用されます.
k
本当
文字列
function main() {
Log(exchange.IO("address")) // Print the wallet address of the private key configured on the exchange object
}
についてexchange.IO("base", ...)
RPCノードアドレスを設定する方法で呼び出されます.
exchange.IO(k アドレス)
についてk
パラメータは,機能の設定に使用されますexchange.IO()
設定されている"base"
この関数は RPC ノードを切り替えるのに使われます.
k
本当
文字列
についてaddress
このパラメータは,RPCノードアドレスを設定するために使用されます.
アドレス
本当
文字列
function main() {
var chainRpc = "https://bsc-dataseed.binance.org"
e.IO("base", chainRpc) // Switching to BSC chain
}
についてTA.MACD()
計算するために使用されます.指数的な平滑した不類似性と類似性 MACD指標.
返金値がTA.MACD()
函数とは2次元配列で,構造は:[DIF, DEA, MACD]
- わかった
配列
TA.MACD (インリアル) TA.MACD ((inReal, optInFastPeriod, optInSlowPeriod, optInSignalPeriod) リアル,オプトインファストペリオド,オプトインスローペリオド,オプトインシグナルペリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInFastPeriod
パラメーターは,速度の設定に使用されます.
optInFastPeriod について
偽り
番号
についてoptInSlowPeriod
パラメータは遅い期間を設定するために使用されます.
optInSlowPeriod について
偽り
番号
についてoptInSignalPeriod
パラメータは信号期間を設定するために使用されます.
optInSignalPeriod (シグナル期間)
偽り
番号
function main(){
// You can fill in different k-line periods, such as PERIOD_M1,PERIOD_M30,PERIOD_H1...
var records = exchange.GetRecords(PERIOD_M15)
var macd = TA.MACD(records, 12, 26, 9)
// Watching the logs, you can see that three arrays are returned, corresponding to DIF, DEA and MACD.
Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2])
}
def main():
r = exchange.GetRecords(PERIOD_M15)
macd = TA.MACD(r, 12, 26, 9)
Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2])
void main() {
auto r = exchange.GetRecords(PERIOD_M15);
auto macd = TA.MACD(r, 12, 26, 9);
Log("DIF:", macd[0], "DEA:", macd[1], "MACD:", macd[2]);
}
についてTA
FMZ Quantの指標ライブラリ,一般的な指標アルゴリズムに最適化されています.JavaScript
, Python
, C++
言語戦略の呼びかけオープンソースのTAライブラリコード- わかった
標準値はoptInFastPeriod
, optInSlowPeriod
そしてoptInSignalPeriod
パラメータTA.MACD()
機能は次のとおりです12
, 26
そして9
.
{@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {
についてTA.KDJ()
計算するために使用されます.ストカスティック指標.
返金値がTA.KDJ()
函数とは2次元配列で,構造は:[K, D, J]
- わかった
配列
TA.KDJ (インリアル) TA.KDJ ((inReal, 期間, k 期間, d 期間)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてperiod
パラメータは,期間 1 を設定するために使用されます.
期間
偽り
番号
についてkPeriod
パラメータは,期間2を設定するために使用されます.
k 期間
偽り
番号
についてdPeriod
パラメータは,期間を設定するために使用されます.
d期間
偽り
番号
function main(){
var records = exchange.GetRecords(PERIOD_M15)
var kdj = TA.KDJ(records, 9, 3, 3)
Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2])
}
def main():
r = exchange.GetRecords(PERIOD_M15)
kdj = TA.KDJ(r, 9, 3, 3)
Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2])
void main() {
auto r = exchange.GetRecords();
auto kdj = TA.KDJ(r, 9, 3, 3);
Log("k:", kdj[0], "d:", kdj[1], "j:", kdj[2]);
}
標準値はperiod
, kPeriod
そしてdPeriod
パラメータTA.KDJ()
機能は次のとおりです9
, 3
そして3
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {
についてTA.RSI()
計算するために使用されます.強度指標.
返金値がTA.RSI()
機能は"次元配列です
配列
TA.RSI (インリアル) TA.RSI ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます.
optInTimePeriod について
偽り
番号
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var rsi = TA.RSI(records, 14)
Log(rsi)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
rsi = TA.RSI(r, 14)
Log(rsi)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto rsi = TA.RSI(r, 14);
Log(rsi);
}
標準値はoptInTimePeriod
パラメータTA.RSI()
機能は14
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {
についてTA.ATR()
計算するために使用されます.平均的な真価変動指数.
返金値がTA.ATR()
機能は"次元配列です
配列
TA.ATR ((インプライスHLC) TA.ATR ((inPriceHLC, optInTimePeriod) について
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます.
optInTimePeriod について
偽り
番号
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var atr = TA.ATR(records, 14)
Log(atr)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
atr = TA.ATR(r, 14)
Log(atr)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto atr = TA.ATR(r, 14);
Log(atr);
}
標準値はoptInTimePeriod
パラメータTA.ATR()
機能は14
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {
についてTA.OBV()
計算するために使用されます.エネルギー潮流指標.
返金値がTA.OBV()
機能は"次元配列です
配列
TA.OBV ((インリアル) TA.OBV ((インリアル,インプライスV)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてinPriceV
パラメータは,取引金額のデータを指定するために使用されます.
inPriceV について
偽り
{@struct/Record Record} 構造配列
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var obv = TA.OBV(records)
Log(obv)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
obv = TA.OBV(r)
Log(obv)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto obv = TA.OBV(r);
Log(obv);
}
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.MA}, {@fun/TA/TA.MA}, ほら,こっちがいいからTA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {
についてTA.MA()
計算するために使用されます.MACD インディケーター.
返金値がTA.MA()
機能は"次元配列です
配列
TA.MA(インリアル)TA.MA(inReal, optInTimePeriod) リアルタイム,オプトインタイム
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます.
optInTimePeriod について
偽り
番号
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var ma = TA.MA(records, 14)
Log(ma)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
ma = TA.MA(r, 14)
Log(ma)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto ma = TA.MA(r, 14);
Log(ma);
}
標準値はoptInTimePeriod
パラメータTA.MA()
機能は9
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CM TA.F.CMF}, {@fun/TA/TA.Highest.Hist}, {@fun/TA/TA.Lowest.TA.Lowest}, {@fun/TA/TA.Lowest.TA.Lowest}, [@fun/TA/TA.Lowest.TA.Lowest}, [@fun/TA/TA.Lowest.TA.Lowest}, [@fun/TA/TA.Lowest.
についてTA.EMA()
計算するために使用されます.指数平均指標.
返金値がTA.EMA()
機能は"次元配列です
配列
TA.EMA (インリアル) TA.EMA ((inReal, optInTimePeriod) リアルタイムで
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます.
optInTimePeriod について
偽り
番号
function main(){
var records = exchange.GetRecords()
// Determine if the number of K-line bars meets the calculation period of the indicator
if (records && records.length > 9) {
var ema = TA.EMA(records, 9)
Log(ema)
}
}
def main():
r = exchange.GetRecords()
if r and len(r) > 9:
ema = TA.EMA(r, 9)
Log(ema)
void main() {
auto r = exchange.GetRecords();
if(r.Valid && r.size() > 9) {
auto ema = TA.EMA(r, 9);
Log(ema);
}
}
標準値はoptInTimePeriod
パラメータTA.EMA()
機能は9
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}
についてTA.BOLL()
計算するために使用されます.Bollinger Band インディケーター.
返金値がTA.BOLL()
函数とは2次元配列で,構造は:[upLine, midLine, downLine]
- わかった
配列
TA.BOLL (インリアル) TA.BOLL ((inReal,点,倍数)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてperiod
パラメーターは,期間を設定するために使用されます.
期間
偽り
番号
についてmultiplier
パラメータは倍数を設定するために使用されます.
マルチプリキュア
偽り
番号
function main() {
var records = exchange.GetRecords()
if(records && records.length > 20) {
var boll = TA.BOLL(records, 20, 2)
var upLine = boll[0]
var midLine = boll[1]
var downLine = boll[2]
Log(upLine)
Log(midLine)
Log(downLine)
}
}
def main():
r = exchange.GetRecords()
if r and len(r) > 20:
boll = TA.BOLL(r, 20, 2)
upLine = boll[0]
midLine = boll[1]
downLine = boll[2]
Log(upLine)
Log(midLine)
Log(downLine)
void main() {
auto r = exchange.GetRecords();
if(r.Valid && r.size() > 20) {
auto boll = TA.BOLL(r, 20, 2);
auto upLine = boll[0];
auto midLine = boll[1];
auto downLine = boll[2];
Log(upLine);
Log(midLine);
Log(downLine);
}
}
標準値はperiod
そしてmultiplier
パラメータTA.BOLL()
機能は次のとおりです20
そして2
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.
についてTA.Alligator()
計算するために使用されます.ワニの指標.
返金値がTA.Alligator()
函数とは2次元配列で,構造は:[jawLine, teethLine, lipsLine]
- わかった
配列
TA.アリガター (inReal) TA.アリゴーター ((inReal, jaw長さ,歯長さ,唇長さ)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてjawLength
パラメーターは,teethLength
パラメーターは歯の期間を設定するために使用されます.
歯 長さ
偽り
番号
についてlipsLength
上唇のピリオドを設定するパラメータです.
唇の長さ
偽り
番号
function main(){
var records = exchange.GetRecords()
var alligator = TA.Alligator(records)
Log("jawLine:", alligator[0])
Log("teethLine:", alligator[1])
Log("lipsLine:", alligator[2])
}
def main():
records = exchange.GetRecords()
alligator = TA.Alligator(records)
Log("jawLine:", alligator[0])
Log("teethLine:", alligator[1])
Log("lipsLine:", alligator[2])
void main() {
auto records = exchange.GetRecords();
auto alligator = TA.Alligator(records);
Log("jawLine:", alligator[0]);
Log("teethLine:", alligator[1]);
Log("lipsLine:", alligator[2]);
}
標準値はjawLength
, teethLength
そしてlipsLength
パラメータTA.Alligator()
機能は次のとおりです13
, 8
そして5
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}
についてTA.CMF()
計算するために使用されます.チャイキン・マネー・フロー・インディケーター.
返金値がTA.CMF()
機能は"次元配列です
配列
TA.CMF (インリアル) TA.CMF ((インリアル,インプライスV)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてinPriceV
パラメータは,ボリュームデータを指定するために使用されます.
inPriceV について
偽り
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var cmf = TA.CMF(records)
Log(cmf)
}
def main():
records = exchange.GetRecords()
cmf = TA.CMF(records)
Log(cmf)
void main() {
auto records = exchange.GetRecords();
auto cmf = TA.CMF(records);
Log(cmf);
}
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}
についてTA.Highest()
計算するために使用されます.期間の最高価格.
についてTA.Highest()
この関数は,現在の Bar を除く,最後の特定の期間の属性の最大値を返します.
番号
TA.最高 (inReal) TA.最高 (実物,周期,アト)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてperiod
パラメーターは,期間を設定するために使用されます.
期間
偽り
番号
についてattr
パラメータは属性を設定するために使用されます.オプションとして:Open
, Close
, Low
, High
, Volume
, OpenInterest
- わかった
アトール
偽り
文字列
function main() {
var records = exchange.GetRecords()
var highestForOpen = TA.Highest(records, 10, "Open")
Log(highestForOpen)
}
def main():
records = exchange.GetRecords()
highestForOpen = TA.Highest(records, 10, "Open")
Log(highestForOpen)
void main() {
auto records = exchange.GetRecords();
auto highestForOpen = TA.Highest(records.Open(), 10);
Log(highestForOpen);
}
例えば,TA.Highest(records, 30, "High")
周期パラメータが呼び出されれば,period
設定されています.0
計算するということですBars
K線データからinReal
パラメータ: 属性パラメータattr
指定されていない場合,K線データinReal
パラメータは通常の配列とみなされます.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.CMF}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA.TA.Lowest TA.Lowest}
についてTA.Lowest()
計算するために使用されます.最低価格.
についてTA.Lowest()
この関数は,現在の Bar を除いて,最後の特定の期間の属性の最小値を返します.
番号
TA.Lowest ((インリアル) TA.最低 (実数,周期,アト)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてperiod
パラメーターは,期間を設定するために使用されます.
期間
偽り
番号
についてattr
パラメータは属性を設定するために使用されます.オプションとして:Open
, Close
, Low
, High
, Volume
, OpenInterest
- わかった
アトール
偽り
文字列
function main() {
var records = exchange.GetRecords()
var lowestForOpen = TA.Lowest(records, 10, "Open")
Log(lowestForOpen)
}
def main():
records = exchange.GetRecords()
lowestForOpen = TA.Lowest(records, 10, "Open")
Log(lowestForOpen)
void main() {
auto records = exchange.GetRecords();
auto lowestForOpen = TA.Lowest(records.Open(), 10);
Log(lowestForOpen);
}
例えば,TA.Lowest(records, 30, "Low")
周期パラメータが呼び出されれば,period
設定されています.0
計算するということですBars
K線データからinReal
パラメータ: 属性パラメータattr
指定されていない場合,K線データinReal
パラメータは通常の配列とみなされます.
薬剤の使用についてTA.Highest()
そしてTA.Lowest()
機能についてC++
戦略は,Highest()
そしてLowest()
2つのパラメータしかありません.
K線データではありません.r
この関数で得られるauto r = exchange.GetRecords()
呼び出されました
呼び出す必要があるr
特定の属性データにパスします.r.Close()
決済価格データClose
, High
, Low
, Open
, Volume
ともかく,r.Close()
呼び出し方法
試験の例C++
言語戦略
void main() {
Records r;
r.Valid = true;
for (auto i = 0; i < 10; i++) {
Record ele;
ele.Time = i * 100000;
ele.High = i * 10000;
ele.Low = i * 1000;
ele.Close = i * 100;
ele.Open = i * 10;
ele.Volume = i * 1;
r.push_back(ele);
}
for(int j = 0; j < r.size(); j++){
Log(r[j]);
}
// Note: the first parameter passed is not r, you need to call r.Close()
auto highest = TA.Highest(r.Close(), 8);
Log(highest);
}
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.TA.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA.TA.Highest TA.Highest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.TA
についてTA.SMA()
計算するために使用されます.単純な移動平均指標.
返金値がTA.SMA()
機能は"次元配列です
配列
TA.SMA (インリアル) TA.SMA ((inReal, optInTimePeriod) リアルで,オプションで
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます.
optInTimePeriod について
偽り
番号
function main(){
var records = exchange.GetRecords(PERIOD_M30)
var sma = TA.SMA(records, 14)
Log(sma)
}
def main():
r = exchange.GetRecords(PERIOD_M30)
sma = TA.SMA(r, 14)
Log(sma)
void main() {
auto r = exchange.GetRecords(PERIOD_M30);
auto sma = TA.SMA(r, 14);
Log(sma);
}
標準値はoptInTimePeriod
パラメータTA.SMA()
機能は9
.
{@fun/TA/TA.MACD TA.MACD}, {@fun/TA/TA.KDJ TA.KDJ}, {@fun/TA/TA.RSI TA.RSI}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV}, {@fun/TA/TA.MA}, {@fun/TA/TA.ATR TA.ATR}, {@fun/TA/TA.OBV TA.OBV},TA.MA{@fun/TA/TA.EMA TA.EMA}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Lowest TA.Lowest}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.BOLL TA.BOLL}, {@fun/TA/TA.Alligator TA.Alligator TA.Alligator}, {@fun/TA/TA.CMF TA.CMF}, {@fun/TA/TA.Highest TA.Highest}, {@fun/TA/TA.Lowest TA.Lowest TA.Lowest}, {
についてtalib.CDL2CROWS()
計算するために使用されます.2 カラス (K線図 - 2 カラス).
返金値がtalib.CDL2CROWS()
この関数は1次元の配列です
配列
タリブ.CDL2CROWS ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL2CROWS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL2CROWS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL2CROWS(records);
Log(ret);
}
についてCDL2CROWS()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDL2CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
携帯電話の電話はPython
言語,通過パラメータは異なっており,上記の記述に基づかなければならない.Records[Open,High,Low,Close]
.
変数を分割する例records
(つまりパラメータ)inPriceOHLC
, {@struct/Record Record} 構造の配列をタイプする:Open
リスト: Python でrecords.Open
.
High
リスト:records.High
PythonでLow
リスト: Python でrecords.Low
.
Close
リスト: Python でrecords.Close
.
Python 戦略コードで呼び出す:
talib.CDL2CROWS(records.Open, records.High, records.Low, records.Close)
もう一つはtalib
指標は同じ方法で記述され,繰り返されません.
についてtalib.CDL3BLACKCROWS()
計算するために使用されます.3つの黒いカラスは (K線図 - 3つの黒いカラスは).
返金値がtalib.CDL3BLACKCROWS()
機能は"次元配列です
配列
タリブ.CDL3BLACKCROWS ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3BLACKCROWS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3BLACKCROWS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3BLACKCROWS(records);
Log(ret);
}
についてCDL3BLACKCROWS()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDL3BLACKCROWS(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDL3INSIDE()
計算するために使用されます.3 インサイドアップ/ダウン (K線グラフ: 3 インサイドアップ/ダウン).
返金値がtalib.CDL3INSIDE()
機能は"次元配列です
配列
タリブ.CDL3INSIDE ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3INSIDE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3INSIDE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3INSIDE(records);
Log(ret);
}
についてCDL3INSIDE()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDL3INSIDE(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDL3LINESTRIKE()
計算するために使用されます.3線ストライク (K線グラフ: 3線ストライク).
返金値がtalib.CDL3LINESTRIKE()
機能は"次元配列です
配列
タリブ.CDL3LINESTRIKE (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3LINESTRIKE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3LINESTRIKE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3LINESTRIKE(records);
Log(ret);
}
についてCDL3LINESTRIKE()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDL3LINESTRIKE(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDL3OUTSIDE()
計算するために使用されます.3 外側上下 (K線図: 3 外側上下).
返金値がtalib.CDL3OUTSIDE()
機能は"次元配列です
配列
タリブ.CDL3OUTSIDE ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3OUTSIDE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3OUTSIDE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3OUTSIDE(records);
Log(ret);
}
についてCDL3OUTSIDE()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDL3OUTSIDE(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDL3STARSINSOUTH()
計算するために使用されます.三つ星南 (K線図:三つ星南).
返金値がtalib.CDL3STARSINSOUTH()
機能は"次元配列です
配列
タリブ.CDL3STARSINSOUTH ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3STARSINSOUTH(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3STARSINSOUTH(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3STARSINSOUTH(records);
Log(ret);
}
についてCDL3STARSINSOUTH()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDL3STARSINSOUTH(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDL3WHITESOLDIERS()
計算するために使用されます.3 人 の 白兵 が 前進 し て いる (K 線 の 図: 3 人 の 白兵 が 前進 し て いる).
返金値がtalib.CDL3WHITESOLDIERS()
機能は"次元配列です
配列
タリブ.CDL3WHITESOLDIERS ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDL3WHITESOLDIERS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDL3WHITESOLDIERS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDL3WHITESOLDIERS(records);
Log(ret);
}
についてCDL3WHITESOLDIERS()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDL3WHITESOLDIERS(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLABANDONEDBABY()
計算するために使用されます.捨てられた赤ちゃん (K線図:捨てられた赤ちゃん).
返金値がtalib.CDLABANDONEDBABY()
機能は"次元配列です
配列
タリブ.CDLABANDONEDBABY ((インプライスOHLC) タリブ.CDLABANDONEDBABY ((インプライスOHLC,オプトインペネトレーション)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
についてoptInPenetration
パラメータは Penetration を設定するために使用され,デフォルト値は 0.3 です.
optInPenetration について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLABANDONEDBABY(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLABANDONEDBABY(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLABANDONEDBABY(records);
Log(ret);
}
についてCDLABANDONEDBABY()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLABANDONEDBABY(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
についてtalib.CDLADVANCEBLOCK()
計算するために使用されます.アドバンスブロック (K線図: アドバンス).
返金値がtalib.CDLADVANCEBLOCK()
この関数は1次元の配列です
配列
タリブ.CDLADVANCEBLOCK ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLADVANCEBLOCK(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLADVANCEBLOCK(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLADVANCEBLOCK(records);
Log(ret);
}
についてCDLADVANCEBLOCK()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLADVANCEBLOCK(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLBELTHOLD()
計算するために使用されます.ベルト保持 (K線図:ベルト保持).
返金値がtalib.CDLBELTHOLD()
機能は"次元配列です
配列
タリブ.CDLBELTHOLD (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLBELTHOLD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLBELTHOLD(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLBELTHOLD(records);
Log(ret);
}
についてCDLBELTHOLD()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLBELTHOLD(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLBREAKAWAY()
計算するために使用されます.ブレイクウェイ (K線図: ブレイクウェイ).
返金値がtalib.CDLBREAKAWAY()
機能は"次元配列です
配列
タリブ.CDLBBRAKAWAY ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLBREAKAWAY(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLBREAKAWAY(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLBREAKAWAY(records);
Log(ret);
}
CDLBREAKAWAY()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLBREAKAWAY(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLCLOSINGMARUBOZU()
計算するために使用されます.マルボツーの閉幕 (K線図:赤頭で赤脚で閉幕).
返金値がtalib.CDLCLOSINGMARUBOZU()
機能は"次元配列です
配列
タリブ.CDLCLOSINGMARUBOZU ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLCLOSINGMARUBOZU(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLCLOSINGMARUBOZU(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLCLOSINGMARUBOZU(records);
Log(ret);
}
についてCDLCLOSINGMARUBOZU()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLCLOSINGMARUBOZU(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLCONCEALBABYSWALL()
計算するために使用されます.ベビースロウを隠す (K線図: ベビースロウを隠すパターン).
返金値がtalib.CDLCONCEALBABYSWALL()
機能は"次元配列です
配列
タリブ.CDLCONCEALBABYSWALL (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLCONCEALBABYSWALL(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLCONCEALBABYSWALL(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLCONCEALBABYSWALL(records);
Log(ret);
}
についてCDLCONCEALBABYSWALL()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLCONCEALBABYSWALL(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLCOUNTERATTACK()
計算するために使用されます.逆襲 (K線図:逆襲).
返金値がtalib.CDLCOUNTERATTACK()
この関数は1次元の配列です
配列
タリブ.CDL対抗攻撃 (inPriceOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLCOUNTERATTACK(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLCOUNTERATTACK(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLCOUNTERATTACK(records);
Log(ret);
}
についてCDLCOUNTERATTACK()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLCOUNTERATTACK(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLDARKCLOUDCOVER()
計算するために使用されます.ダーククラウドカバー (K線図:ダーククラウドカバー).
返金値がtalib.CDLDARKCLOUDCOVER()
この関数は1次元の配列です
配列
タリブ.CDDARKCLOUDCOVER (インプライスOHLC) タリブ.CDDARKCLOUDCOVER ((インプライスOHLC,オプトインペネトレーション)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
についてoptInPenetration
パラメータは Penetration を設定するために使用され,デフォルト値は 0.5 です.
optInPenetration について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLDARKCLOUDCOVER(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLDARKCLOUDCOVER(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLDARKCLOUDCOVER(records);
Log(ret);
}
についてCDLDARKCLOUDCOVER()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLDARKCLOUDCOVER(Records[Open,High,Low,Close],Penetration = 0.5) = Array(outInteger)
についてtalib.CDLDOJI()
計算するために使用されます.ドジ (K線図: ドジ).
返金値がtalib.CDLDOJI()
機能は"次元配列です
配列
タリブ.CDLDOJI ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLDOJI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLDOJI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLDOJI(records);
Log(ret);
}
についてCDLDOJI()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLDOJISTAR()
計算するために使用されます.ドジスター (K線図:ドジスター).
返金値がtalib.CDLDOJISTAR()
機能は"次元配列です
配列
タリブ.CDLDOJISTAR ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLDOJISTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLDOJISTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLDOJISTAR(records);
Log(ret);
}
についてCDLDOJISTAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLDOJISTAR(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLDRAGONFLYDOJI()
計算するために使用されます.ドラゴンフライ・ドジ (K線図: ドラゴンフライ・ドジ).
返金値がtalib.CDLDRAGONFLYDOJI()
機能は"次元配列です
配列
タリブ.CDLDRAGONFLYDOJI (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLDRAGONFLYDOJI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLDRAGONFLYDOJI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLDRAGONFLYDOJI(records);
Log(ret);
}
についてCDLDRAGONFLYDOJI()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLDRAGONFLYDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLENGULFING()
計算するために使用されます.浸透パターン (K線図:浸透).
返金値がtalib.CDLENGULFING()
この関数は1次元の配列です
配列
タリブ.CDLENGULFING ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLENGULFING(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLENGULFING(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLENGULFING(records);
Log(ret);
}
についてCDLENGULFING()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLENGULFING(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLEVENINGDOJISTAR()
計算するために使用されます.夕日星 (K線図:夕日星).
返金値がtalib.CDLEVENINGDOJISTAR()
機能は"次元配列です
配列
タリブ.CDLEVENINGDOJISTAR ((インプライスOHLC) タリブ.CDLEVENINGDOJISTAR ((インプライスOHLC,オプトインペネトレーション)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
についてoptInPenetration
パラメータは Penetration を設定するために使用され,デフォルト値は 0.3 です.
optInPenetration について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLEVENINGDOJISTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLEVENINGDOJISTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLEVENINGDOJISTAR(records);
Log(ret);
}
についてCDLEVENINGDOJISTAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLEVENINGDOJISTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
についてtalib.CDLEVENINGSTAR()
計算するために使用されます.イブニングスター (K線図: イブニングスター).
返金値がtalib.CDLEVENINGSTAR()
機能は"次元配列です
配列
タリブ.CDLEVENINGSTAR ((インプライスOHLC) タリブ.CDLEVENINGSTAR ((インプライスOHLC,オプトインペネトレーション)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
についてoptInPenetration
パラメータは Penetration を設定するために使用され,デフォルト値は 0.3 です.
optInPenetration について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLEVENINGSTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLEVENINGSTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLEVENINGSTAR(records);
Log(ret);
}
についてCDLEVENINGSTAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLEVENINGSTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
についてtalib.CDLGAPSIDESIDEWHITE()
計算するために使用されます.上下間隔の横の白い線 (K線図:上下間隔の横の白い線).
返金値がtalib.CDLGAPSIDESIDEWHITE()
機能は"次元配列です
配列
タリブ.CDLGAPSIDESIDEWHITE (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLGAPSIDESIDEWHITE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLGAPSIDESIDEWHITE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLGAPSIDESIDEWHITE(records);
Log(ret);
}
についてCDLGAPSIDESIDEWHITE()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLGAPSIDESIDEWHITE(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLGRAVESTONEDOJI()
計算するために使用されます.墓石ドジ (K線図:墓石ドジ).
返金値がtalib.CDLGRAVESTONEDOJI()
機能は"次元配列です
配列
タリブ.CDL グラベストンドジ (InPriceOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLGRAVESTONEDOJI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLGRAVESTONEDOJI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLGRAVESTONEDOJI(records);
Log(ret);
}
についてCDLGRAVESTONEDOJI()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLGRAVESTONEDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLHAMMER()
計算するために使用されます.ハンマー (K線図: ハンマー).
返金値がtalib.CDLHAMMER()
機能は"次元配列です
配列
タリブ.CDLHAMMER ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHAMMER(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHAMMER(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHAMMER(records);
Log(ret);
}
についてCDLHAMMER()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLHAMMER(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLHANGINGMAN()
計算するために使用されます.ハンギングマン (K線図: ハンギングマン).
返金値がtalib.CDLHANGINGMAN()
この関数は1次元の配列です
配列
タリブ.CDLHANGINGMAN ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHANGINGMAN(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHANGINGMAN(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHANGINGMAN(records);
Log(ret);
}
についてCDLHANGINGMAN()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLHANGINGMAN(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLHARAMI()
計算するために使用されます.ハラミパターン (K線図:負線と正線).
返金値がtalib.CDLHARAMI()
この関数は1次元の配列です
配列
タリブ.CDLHARAMI (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHARAMI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHARAMI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHARAMI(records);
Log(ret);
}
についてCDLHARAMI()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLHARAMI(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLHARAMICROSS()
計算するために使用されます.ハラミ・クロス・パターン (K線図:負線と正線を交差する).
返金値がtalib.CDLHARAMICROSS()
機能は"次元配列です
配列
タリブ.CDLHARAMICROSS (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHARAMICROSS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHARAMICROSS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHARAMICROSS(records);
Log(ret);
}
についてCDLHARAMICROSS()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLHARAMICROSS(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLHIGHWAVE()
計算するために使用されます.高波のキャンドル (K線図: 長足のクロス).
返金値がtalib.CDLHIGHWAVE()
この関数は1次元の配列です
配列
タリブ.CDLHIGHWAVE ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHIGHWAVE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHIGHWAVE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHIGHWAVE(records);
Log(ret);
}
についてCDLHIGHWAVE()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLHIGHWAVE(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLHIKKAKE()
計算するために使用されます.ヒッカケパターン (K線図:罠).
返金値がtalib.CDLHIKKAKE()
この関数は1次元の配列です
配列
タリブ.CDLHIKKAKE ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHIKKAKE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHIKKAKE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHIKKAKE(records);
Log(ret);
}
についてCDLHIKKAKE()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLHIKKAKE(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLHIKKAKEMOD()
計算するために使用されます.修正されたヒッカケパターン (K線図:修正された罠).
返金値がtalib.CDLHIKKAKEMOD()
機能は"次元配列です
配列
タリブ.CDLHIKKAKEMOD ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHIKKAKEMOD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHIKKAKEMOD(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHIKKAKEMOD(records);
Log(ret);
}
についてCDLHIKKAKEMOD()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLHIKKAKEMOD(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLHOMINGPIGEON()
計算するために使用されます.ホーミング・ピエゴン (K線図:ピエゴン).
返金値がtalib.CDLHOMINGPIGEON()
機能は"次元配列です
配列
タリブ.CDLHOMINGPIGEON (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLHOMINGPIGEON(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLHOMINGPIGEON(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLHOMINGPIGEON(records);
Log(ret);
}
についてCDLHOMINGPIGEON()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLHOMINGPIGEON(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLIDENTICAL3CROWS()
計算するために使用されます.同じ3つのカラスは (K線図:同じ3つのカラスは).
返金値がtalib.CDLIDENTICAL3CROWS()
機能は"次元配列です
配列
タリブ.CDIDENTICAL3CROWS (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLIDENTICAL3CROWS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLIDENTICAL3CROWS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLIDENTICAL3CROWS(records);
Log(ret);
}
についてCDLIDENTICAL3CROWS()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLIDENTICAL3CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLINNECK()
計算するために使用されます.首内パターン (K線グラフ:首の切り口).
返金値がtalib.CDLINNECK()
機能は"次元配列です
配列
タリブ.CDLINNECK ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLINNECK(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLINNECK(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLINNECK(records);
Log(ret);
}
についてCDLINNECK()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLINNECK(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLINVERTEDHAMMER()
計算するために使用されます.逆のハンマー (K線図:逆のハンマー).
返金値がtalib.CDLINVERTEDHAMMER()
機能は"次元配列です
配列
タリブ.CD リバーテッドハンマー (InPriceOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLINVERTEDHAMMER(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLINVERTEDHAMMER(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLINVERTEDHAMMER(records);
Log(ret);
}
についてCDLINVERTEDHAMMER()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLINVERTEDHAMMER(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLKICKING()
計算するために使用されます.キック (K線図:キック).
返金値がtalib.CDLKICKING()
この関数は1次元の配列です
配列
タリブ.CDL キッキング (InPriceOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLKICKING(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLKICKING(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLKICKING(records);
Log(ret);
}
についてCDLKICKING()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLKICKING(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLKICKINGBYLENGTH()
計算するために使用されます.キック - 長いマルーボツーによって決定された雄牛/熊 (K線図:キック・ブル/キック・熊).
返金値がtalib.CDLKICKINGBYLENGTH()
機能は"次元配列です
配列
タリブ.CDLKICKINGBYLENGTH (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLKICKINGBYLENGTH(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLKICKINGBYLENGTH(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLKICKINGBYLENGTH(records);
Log(ret);
}
についてCDLKICKINGBYLENGTH()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLKICKINGBYLENGTH(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLLADDERBOTTOM()
計算するために使用されます.梯子の底 (K線図:梯子の底).
返金値がtalib.CDLLADDERBOTTOM()
機能は"次元配列です
配列
タリブ.CDLLADDERBOTTOM ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLLADDERBOTTOM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLLADDERBOTTOM(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLLADDERBOTTOM(records);
Log(ret);
}
についてCDLLADDERBOTTOM()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLLADDERBOTTOM(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLLONGLEGGEDDOJI()
計算するために使用されます.長足ドジ (K線図:長足ドジ).
返金値がtalib.CDLLONGLEGGEDDOJI()
機能は"次元配列です
配列
タリブ.CDLLONGLEGGEDDOJI (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLLONGLEGGEDDOJI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLLONGLEGGEDDOJI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLLONGLEGGEDDOJI(records);
Log(ret);
}
についてCDLLONGLEGGEDDOJI()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLLONGLEGGEDDOJI(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLLONGLINE()
計算するために使用されます.ロングラインキャンドル (K線図: ロングライン).
返金値がtalib.CDLLONGLINE()
機能は"次元配列です
配列
タリブ.CDLLONGLINE ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLLONGLINE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLLONGLINE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLLONGLINE(records);
Log(ret);
}
についてCDLLONGLINE()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLLONGLINE(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLMARUBOZU()
計算するために使用されます.マルボズ (K線図:頭と足が裸).
返金値がtalib.CDLMARUBOZU()
この関数は1次元の配列です
配列
タリブ.CDLMARUBOZU ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMARUBOZU(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMARUBOZU(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMARUBOZU(records);
Log(ret);
}
についてCDLMARUBOZU()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLMARUBOZU(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLMATCHINGLOW()
計算するために使用されます.マッチングロー (K線図:マッチングロー).
返金値がtalib.CDLMATCHINGLOW()
機能は"次元配列です
配列
タリブ.CDLMマッチングLOW ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMATCHINGLOW(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMATCHINGLOW(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMATCHINGLOW(records);
Log(ret);
}
についてCDLMATCHINGLOW()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLMATCHINGLOW(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLMATHOLD()
計算するために使用されます.マット・ホール (K線図: マット・ホール).
返金値がtalib.CDLMATHOLD()
機能は"次元配列です
配列
タリブ.CDLMATHOLD ((インプライスOHLC) タリブ.CDLMATHOLD ((インプライスOHLC,オプトインペネトレーション)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
についてoptInPenetration
このパラメータはオプションで,上昇/下降傾向線の幅の割合を指定するために使用されます.デフォルト値は0.5です.
optInPenetration について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMATHOLD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMATHOLD(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMATHOLD(records);
Log(ret);
}
についてCDLMATHOLD()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLMATHOLD(Records[Open,High,Low,Close],Penetration = 0.5) = Array(outInteger)
についてtalib.CDLMORNINGDOJISTAR()
計算するために使用されます.朝のドジ星 (K線図:朝のドジ星).
返金値がtalib.CDLMORNINGDOJISTAR()
機能は"次元配列です
配列
タリブ.CD モーニングDOJISTAR (インプライスOHLC) タリブ.CDLMORNINGDOJISTAR ((インプライスOHLC,オプトインペネトレーション)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
についてoptInPenetration
このパラメータは,検証開始価格と固体部分の重複度を示すために使用され,デフォルト値は0.3です.
optInPenetration について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMORNINGDOJISTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMORNINGDOJISTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMORNINGDOJISTAR(records);
Log(ret);
}
についてCDLMORNINGDOJISTAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLMORNINGDOJISTAR(Records[Open,High,Low,Close],Penetration = 0.3) = Array(outInteger)
についてtalib.CDLMORNINGSTAR()
計算するために使用されます.モーニングスター (K線図:モーニングスター).
返金値がtalib.CDLMORNINGSTAR()
機能は"次元配列です
配列
タリブ.CDLMORNINGSTAR ((インプライスOHLC) タリブ.CDLMORNINGSTAR ((インプライスOHLC,オプトインペネトレーション)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
についてoptInPenetration
パラメータは,トレンド確認に必要な価格浮動パーセントの限界値で,デフォルト値は0.3で,範囲 [0,1] の値を取る.
optInPenetration について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLMORNINGSTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLMORNINGSTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLMORNINGSTAR(records);
Log(ret);
}
についてCDLMORNINGSTAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLMORNINGSTAR(Records[Open,High,Low,Close],Penetration=0.3) = Array(outInteger)
についてtalib.CDLONNECK()
計算するために使用されます.首上パターン (K線図:首上パターン).
返金値がtalib.CDLONNECK()
この関数は1次元の配列です
配列
タリブ.CDLONNECK ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLONNECK(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLONNECK(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLONNECK(records);
Log(ret);
}
についてCDLONNECK()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLONNECK(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLPIERCING()
計算するために使用されます.ピアスパターン (K線図:ピアスパターン).
返金値がtalib.CDLPIERCING()
この関数は1次元の配列です
配列
タリブ.CDLPIERCING ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLPIERCING(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLPIERCING(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLPIERCING(records);
Log(ret);
}
についてCDLPIERCING()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLPIERCING(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLRICKSHAWMAN()
計算するために使用されます.リクショマン (K線図:リクショマン).
返金値がtalib.CDLRICKSHAWMAN()
機能は"次元配列です
配列
タリブ.CDLRICKSHAWMAN (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLRICKSHAWMAN(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLRICKSHAWMAN(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLRICKSHAWMAN(records);
Log(ret);
}
についてCDLRICKSHAWMAN()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLRICKSHAWMAN(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLRISEFALL3METHODS()
計算するために使用されます.3つの上昇/下落方法 (K線図:上昇/下落の3つの方法).
返金値がtalib.CDLRISEFALL3METHODS()
機能は"次元配列です
配列
talib.CDLRISEFALL3METHODS (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLRISEFALL3METHODS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLRISEFALL3METHODS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLRISEFALL3METHODS(records);
Log(ret);
}
についてCDLRISEFALL3METHODS()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLRISEFALL3METHODS(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLSEPARATINGLINES()
計算するために使用されます.分離線 (K線図: 分離線).
返金値がtalib.CDLSEPARATINGLINES()
この関数は1次元の配列です
配列
タリブ.CDLSEPARATINGLINES (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSEPARATINGLINES(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSEPARATINGLINES(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSEPARATINGLINES(records);
Log(ret);
}
についてCDLSEPARATINGLINES()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLSEPARATINGLINES(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLSHOOTINGSTAR()
計算するために使用されます.射星 (K線図:射星).
返金値がtalib.CDLSHOOTINGSTAR()
この関数は1次元の配列です
配列
タリブ.CDSHOOTINGSTAR ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSHOOTINGSTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSHOOTINGSTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSHOOTINGSTAR(records);
Log(ret);
}
についてCDLSHOOTINGSTAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLSHOOTINGSTAR(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLSHORTLINE()
計算するために使用されます.ショートラインキャンドル (K線図:ショートライン).
返金値がtalib.CDLSHORTLINE()
機能は"次元配列です
配列
タリブ.CDLSショートライン (inPriceOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSHORTLINE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSHORTLINE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSHORTLINE(records);
Log(ret);
}
についてCDLSHORTLINE()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLSHORTLINE(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLSPINNINGTOP()
計算するために使用されます.スピンニング・トップ (K線図: スピンニング・トップ).
返金値がtalib.CDLSPINNINGTOP()
機能は"次元配列です
配列
タリブ.CDLSPINNINGTOP ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSPINNINGTOP(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSPINNINGTOP(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSPINNINGTOP(records);
Log(ret);
}
についてCDLSPINNINGTOP()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLSPINNINGTOP(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLSTALLEDPATTERN()
計算するために使用されます.止まったパターン (K線図:止まったパターン).
返金値がtalib.CDLSTALLEDPATTERN()
機能は"次元配列です
配列
タリブ.CDLSTALLEDPATTERN (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSTALLEDPATTERN(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSTALLEDPATTERN(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSTALLEDPATTERN(records);
Log(ret);
}
についてCDLSTALLEDPATTERN()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLSTALLEDPATTERN(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLSTICKSANDWICH()
計算するために使用されます.スティック・サンドウィッチ (K線図: スティック・サンドウィッチ).
返金値がtalib.CDLSTICKSANDWICH()
この関数は1次元の配列です
配列
タリブ.CDLSTICKSANDWICH (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLSTICKSANDWICH(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLSTICKSANDWICH(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLSTICKSANDWICH(records);
Log(ret);
}
についてCDLSTICKSANDWICH()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLSTICKSANDWICH(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLTAKURI()
計算するために使用されます.タキュリ (非常に長い下の影線を持つドラゴンフライドージ) (K線図:タキュリ).
返金値がtalib.CDLTAKURI()
この関数は1次元の配列です
配列
タリブ.CDLTAKURI ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLTAKURI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLTAKURI(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLTAKURI(records);
Log(ret);
}
についてCDLTAKURI()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLTAKURI(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLTASUKIGAP()
計算するために使用されます.タスキギャップ (K線図:タスキギャップ).
返金値がtalib.CDLTASUKIGAP()
この関数は1次元の配列です
配列
タリブ.CDLTASUKIGAP ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLTASUKIGAP(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLTASUKIGAP(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLTASUKIGAP(records);
Log(ret);
}
についてCDLTASUKIGAP()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLTASUKIGAP(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLTHRUSTING()
計算するために使用されます.推力パターン (K線図:推力パターン).
返金値がtalib.CDLTHRUSTING()
機能は"次元配列です
配列
タリブ.CDLTHRUSTING ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLTHRUSTING(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLTHRUSTING(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLTHRUSTING(records);
Log(ret);
}
についてCDLTHRUSTING()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLTHRUSTING(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLTRISTAR()
計算するために使用されます.トリスターパターン (K線図: トリスターパターン).
返金値がtalib.CDLTRISTAR()
機能は"次元配列です
配列
タリブ.CDLTRISTAR ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLTRISTAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLTRISTAR(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLTRISTAR(records);
Log(ret);
}
についてCDLTRISTAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLTRISTAR(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLUNIQUE3RIVER()
計算するために使用されます.ユニーク3川 (K線図:ユニーク3川).
返金値がtalib.CDLUNIQUE3RIVER()
機能は"次元配列です
配列
タリブ.CDLUNIQUE3RIVER ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLUNIQUE3RIVER(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLUNIQUE3RIVER(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLUNIQUE3RIVER(records);
Log(ret);
}
についてCDLUNIQUE3RIVER()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLUNIQUE3RIVER(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLUPSIDEGAP2CROWS()
計算するために使用されます.上方ギャップ 2 カラス (K線図: 上方ギャップ 2 カラス).
返金値がtalib.CDLUPSIDEGAP2CROWS()
機能は"次元配列です
配列
タリブ.CDLUPSIDEGAP2CROWS (インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLUPSIDEGAP2CROWS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLUPSIDEGAP2CROWS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLUPSIDEGAP2CROWS(records);
Log(ret);
}
についてCDLUPSIDEGAP2CROWS()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLUPSIDEGAP2CROWS(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.CDLXSIDEGAP3METHODS()
計算するために使用されます.上下差の3つの方法 (K線図:上下差の3つの方法).
返金値がtalib.CDLXSIDEGAP3METHODS()
機能は"次元配列です
配列
talib.CDLXSIDEGAP3METHODS ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CDLXSIDEGAP3METHODS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CDLXSIDEGAP3METHODS(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CDLXSIDEGAP3METHODS(records);
Log(ret);
}
についてCDLXSIDEGAP3METHODS()
タリブ図書館のドキュメントでは,次の機能が記述されています.CDLXSIDEGAP3METHODS(Records[Open,High,Low,Close]) = Array(outInteger)
についてtalib.AD()
計算するために使用されます.Chaikin A/D Line (ラインストキャスト指標).
返金値がtalib.AD()
機能は"次元配列です
配列
talib.AD(PriceHLCVで)
についてinPriceHLCV
パラメータはK線データを指定するために使用されます.
inPriceHLCV について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.AD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.AD(records.High, records.Low, records.Close, records.Volume)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.AD(records);
Log(ret);
}
についてAD()
タリブ図書館のドキュメントでは,次の機能が記述されています.AD(Records[High,Low,Close,Volume]) = Array(outReal)
についてtalib.ADOSC()
計算するために使用されます.チェイキン A/D オシレーター (チェイキン オシレーター).
返金値がtalib.ADOSC()
この関数は1次元の配列です
配列
タリブ.ADOSC ((インプライスHLCV) タリブ.ADOSC ((inPriceHLCV, optInFastPeriod, optInSlowPeriod) 価格について
についてinPriceHLCV
パラメータはK線データを指定するために使用されます.
inPriceHLCV について
本当
{@struct/Record Record} 構造配列
についてoptInFastPeriod
パラメーターは,速度の設定に使用されます.
optInFastPeriod について
偽り
番号
についてoptInSlowPeriod
パラメータは遅い期間を設定するために使用されます.
optInSlowPeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ADOSC(records, 3, 10)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ADOSC(records.High, records.Low, records.Close, records.Volume, 3, 10)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ADOSC(records, 3, 10);
Log(ret);
}
についてADOSC()
タリブ図書館のドキュメントでは,次の機能が記述されています.ADOSC(Records[High,Low,Close,Volume],Fast Period = 3,Slow Period = 10) = Array(outReal)
についてtalib.OBV()
計算するために使用されます.バランスボリューム (エネルギー潮).
返金値がtalib.OBV()
この関数は1次元の配列です
配列
タリブ.OBV (inReal) タリブ.OBV ((インリアル,インプライスV)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてinPriceV
パラメータはK線データを指定するために使用されます.
inPriceV について
偽り
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.OBV(records, records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.OBV(records.Close, records.Volume)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.OBV(records);
Log(ret);
}
についてOBV()
タリブ図書館のドキュメントでは,次の機能が記述されています.OBV(Records[Close],Records[Volume]) = Array(outReal)
についてtalib.ACOS()
計算するために使用されます.矢量三角形 ACos (逆のコシノス関数).
返金値がtalib.ACOS()
この関数は1次元の配列です
配列
タリブ.ACOS (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-1, 0, 1]
var ret = talib.ACOS(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.ACOS(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.ACOS(data);
Log(ret);
}
についてACOS()
タリブ図書館のドキュメントでは,次の機能が記述されています.ACOS(Records[Close]) = Array(outReal)
についてtalib.ASIN()
計算するために使用されます.矢量三角形 ASin (逆正弦関数).
返金値がtalib.ASIN()
この関数は1次元の配列です
配列
タリブ.ASIN (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-1, 0, 1]
var ret = talib.ASIN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.ASIN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.ASIN(data);
Log(ret);
}
についてASIN()
タリブ図書館のドキュメントでは,次の機能が記述されています.ASIN(Records[Close]) = Array(outReal)
についてtalib.ATAN()
計算するために使用されます.矢量三角形 ATan (逆関数関数).
返金値がtalib.ATAN()
機能は"次元配列です
配列
タリブ.ATAN (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-3.14/2, 0, 3.14/2]
var ret = talib.ATAN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-3.14/2, 0, 3.14/2]
ret = talib.ATAN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-3.14/2, 0, 3.14/2};
auto ret = talib.ATAN(data);
Log(ret);
}
についてATAN()
タリブ図書館のドキュメントでは,次の機能が記述されています.ATAN(Records[Close]) = Array(outReal)
についてtalib.CEIL()
計算するために使用されます.ベクトル上限 (丸める関数).
返金値がtalib.CEIL()
この関数は1次元の配列です
配列
タリブ.CEIL (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var records = exchange.GetRecords()
var ret = talib.CEIL(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CEIL(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CEIL(records);
Log(ret);
}
についてCEIL()
タリブ図書館のドキュメントでは,次の機能が記述されています.CEIL(Records[Close]) = Array(outReal)
についてtalib.COS()
計算するために使用されます.矢量三角関数 Cos (コシナス関数).
返金値がtalib.COS()
機能は"次元配列です
配列
タリブ.COS (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-3.14, 0, 3.14]
var ret = talib.COS(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-3.14, 0, 3.14]
ret = talib.COS(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-3.14, 0, 3.14};
auto ret = talib.COS(data);
Log(ret);
}
についてCOS()
タリブ図書館のドキュメントでは,次の機能が記述されています.COS(Records[Close]) = Array(outReal)
についてtalib.COSH()
計算するために使用されます.矢量三角形コシュ (ハイパーボリックコシナス値).
返金値がtalib.COSH()
この関数は1次元の配列です
配列
タリブ.COSH (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-1, 0, 1]
var ret = talib.COSH(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.COSH(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.COSH(data);
Log(ret);
}
についてCOSH()
タリブ図書館のドキュメントでは,次の機能が記述されています.COSH(Records[Close]) = Array(outReal)
についてtalib.EXP()
計算するために使用されます.ベクトル算術 Exp (指数関数).
返金値がtalib.EXP()
機能は"次元配列です
配列
タリブ.EXP (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [0, 1, 2]
var ret = talib.EXP(data) // e^0, e^1, e^2
Log(ret)
}
import talib
import numpy as np
def main():
data = [0, 1.0, 2.0]
ret = talib.EXP(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {0, 1.0, 2.0};
auto ret = talib.EXP(data);
Log(ret);
}
についてEXP()
タリブ図書館のドキュメントでは,次の機能が記述されています.EXP(Records[Close]) = Array(outReal)
についてtalib.FLOOR()
計算するために使用されます.ベクトル・フロア (下方から丸める).
返金値がtalib.FLOOR()
この関数は1次元の配列です
配列
タリブ・フロア (inReal)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var records = exchange.GetRecords()
var ret = talib.FLOOR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.FLOOR(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.FLOOR(records);
Log(ret);
}
についてFLOOR()
タリブ図書館のドキュメントでは,次の機能が記述されています.FLOOR(Records[Close]) = Array(outReal)
についてtalib.LN()
計算するために使用されます.ベクトルログ自然 (自然対数).
返金値がtalib.LN()
この関数は1次元の配列です
配列
タリブ.LN (inReal)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [1, 2, 3]
var ret = talib.LN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [1.0, 2.0, 3.0]
ret = talib.LN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {1, 2, 3};
auto ret = talib.LN(data);
Log(ret);
}
についてLN()
タリブ図書館のドキュメントでは,次の機能が記述されています.LN(Records[Close]) = Array(outReal)
についてtalib.LOG10()
計算するために使用されます.ベクトル ログ10 (対数関数).
返金値がtalib.LOG10()
この関数は1次元の配列です
配列
タリブ.LOG10 (inReal)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [10, 100, 1000]
var ret = talib.LOG10(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [10.0, 100.0, 1000.0]
ret = talib.LOG10(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {10, 100, 1000};
auto ret = talib.LOG10(data);
Log(ret);
}
についてLOG10()
タリブ図書館のドキュメントでは,次の機能が記述されています.LOG10(Records[Close]) = Array(outReal)
についてtalib.SIN()
計算するために使用されます.矢量三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角三角.
返金値がtalib.SIN()
この関数は1次元の配列です
配列
タリブ.SIN (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-3.14/2, 0, 3.14/2]
var ret = talib.SIN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-3.14/2, 0, 3.14/2]
ret = talib.SIN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-3.14/2, 0, 3.14/2};
auto ret = talib.SIN(data);
Log(ret);
}
についてSIN()
タリブ図書館のドキュメントでは,次の機能が記述されています.SIN(Records[Close]) = Array(outReal)
についてtalib.SINH()
計算するために使用されます.矢量三角形シーン (ハイパーボリックシーン関数).
返金値がtalib.SINH()
機能は"次元配列です
配列
タリブ・シン (inReal)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-1, 0, 1]
var ret = talib.SINH(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.SINH(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.SINH(data);
Log(ret);
}
についてSINH()
タリブ図書館のドキュメントでは,次の機能が記述されています.SINH(Records[Close]) = Array(outReal)
についてtalib.SQRT()
計算するために使用されます.ベクトル平方根 (平方根).
返金値がtalib.SQRT()
機能は"次元配列です
配列
タリブ.SQRT (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [4, 64, 100]
var ret = talib.SQRT(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [4.0, 64.0, 100.0]
ret = talib.SQRT(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {4, 64, 100};
auto ret = talib.SQRT(data);
Log(ret);
}
についてSQRT()
タリブ図書館のドキュメントでは,次の機能が記述されています.SQRT(Records[Close]) = Array(outReal)
についてtalib.TAN()
計算するために使用されます.ベクトル三角数式タン (タンゲント).
返金値がtalib.TAN()
この関数は1次元の配列です
配列
タリブ.TAN (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-1, 0, 1]
var ret = talib.TAN(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.TAN(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.TAN(data);
Log(ret);
}
についてTAN()
タリブ図書館のドキュメントでは,次の機能が記述されています.TAN(Records[Close]) = Array(outReal)
についてtalib.TANH()
計算するために使用されます.矢量三角関数タン (ハイパーボリック触角関数).
返金値がtalib.TANH()
機能は"次元配列です
配列
タリブ.TANH (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var data = [-1, 0, 1]
var ret = talib.TANH(data)
Log(ret)
}
import talib
import numpy as np
def main():
data = [-1.0, 0, 1.0]
ret = talib.TANH(np.array(data))
Log(ret)
void main() {
std::vector<double> data = {-1, 0, 1};
auto ret = talib.TANH(data);
Log(ret);
}
についてTANH()
タリブ図書館のドキュメントでは,次の機能が記述されています.TANH(Records[Close]) = Array(outReal)
についてtalib.MAX()
この関数は,最大値を計算するために使用されます.特定期間.
返金値がtalib.MAX()
機能は"次元配列です
配列
タリブ.MAX (インリアル) タリブ.MAX ((インリアル,オプトインタイムペリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MAX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MAX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MAX(records);
Log(ret);
}
についてMAX()
タリブ図書館のドキュメントでは,次の機能が記述されています.MAX(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.MAXINDEX()
計算するために使用されます.指定された期間の最高値のインデックス (最大インデックス).
返金値がtalib.MAXINDEX()
機能は"次元配列です
配列
タリブ.MAXINDEX ((インリアル) タリブ.MAXINDEX ((inReal, optInTimePeriod) タイムピリオドを選択する)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MAXINDEX(records, 5)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MAXINDEX(records.Close, 5)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MAXINDEX(records, 5);
Log(ret);
}
についてMAXINDEX()
タリブ図書館のドキュメントでは,次の機能が記述されています.MAXINDEX(Records[Close],Time Period = 30) = Array(outInteger)
についてtalib.MIN()
この関数は,指定された期間の最低値 (最小値) ** を計算するために使用されます.
返金値がtalib.MIN()
機能は"次元配列です
配列
タリブ.MIN (インリアル) タリブ.MIN (インリアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MIN(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MIN(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MIN(records);
Log(ret);
}
についてMIN()
タリブ図書館のドキュメントでは,次の機能が記述されています.MIN(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.MININDEX()
計算するために使用されます.最低値指数 (最低値指数)指定期間について
返金値がtalib.MININDEX()
機能は"次元配列です
配列
タリブ.MININDEX (インリアル) タリブ.MININDEX ((inReal, optInTimePeriod) タイムピリオドを選択する)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MININDEX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MININDEX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MININDEX(records);
Log(ret);
}
についてMININDEX()
タリブ図書館のドキュメントでは,次の機能が記述されています.MININDEX(Records[Close],Time Period = 30) = Array(outInteger)
についてtalib.MINMAX()
計算するために使用されます.指定期間における最低値と最高値 (最低値と最大値).
返金値がtalib.MINMAX()
この二次元配列の最初の要素は最小値の配列であり,第二の要素は最大値の配列です.
配列
タリブ.MINMAX (インリアル) タリブ.MINMAX (インリアル,オプトインタイムペリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MINMAX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MINMAX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MINMAX(records);
Log(ret);
}
についてMINMAX()
タリブ図書館のドキュメントでは,次の機能が記述されています.MINMAX(Records[Close],Time Period = 30) = [Array(outMin),Array(outMax)]
についてtalib.MINMAXINDEX()
計算するために使用されます.指定された期間の最低値と最高値 (最低値と最大値) のインデックス.
返金値がtalib.MINMAXINDEX()
この二次元配列の最初の要素は最小のインデックス配列で,第二の要素は最大のインデックス配列です.
配列
タリブ.MINMAXINDEX (インリアル) タリブ.MINMAXINDEX ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MINMAXINDEX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MINMAXINDEX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MINMAXINDEX(records);
Log(ret);
}
についてMINMAXINDEX()
タリブ図書館のドキュメントでは,次の機能が記述されています.MINMAXINDEX(Records[Close],Time Period = 30) = [Array(outMinIdx),Array(outMaxIdx)]
についてtalib.SUM()
計算するために使用されます.概要.
返金値がtalib.SUM()
機能は"次元配列です
配列
タリブ.SUM ((inReal) talib.SUM ((inReal, optInTimePeriod) リアル,オプトインタイム
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.SUM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.SUM(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.SUM(records);
Log(ret);
}
についてSUM()
タリブ図書館のドキュメントでは,次の機能が記述されています.SUM(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.HT_DCPERIOD()
計算するために使用されます.ヒルバート変換 - 主要周期期 (ヒルバート変換, 主要周期期).
返金値がtalib.HT_DCPERIOD()
機能は"次元配列です
配列
タリブ.HT_DCPERIOD (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_DCPERIOD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_DCPERIOD(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_DCPERIOD(records);
Log(ret);
}
についてHT_DCPERIOD()
タリブ図書館のドキュメントでは,次の機能が記述されています.HT_DCPERIOD(Records[Close]) = Array(outReal)
についてtalib.HT_DCPHASE()
計算するために使用されます.ヒルバート変換 - 主要サイクル段階 (ヒルバート変換, 主要サイクル段階).
返金値がtalib.HT_DCPHASE()
機能は"次元配列です
配列
タリブ.HT_DCPHASE ((インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_DCPHASE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_DCPHASE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_DCPHASE(records);
Log(ret);
}
についてHT_DCPHASE()
タリブ図書館のドキュメントでは,次の機能が記述されています.HT_DCPHASE(Records[Close]) = Array(outReal)
についてtalib.HT_PHASOR()
計算するために使用されます.ヒルバート変換 - ファソール構成要素 (ヒルバート変換,相構成要素).
返金値がtalib.HT_PHASOR()
この関数は2次元配列です
配列
タリブ.HT_PHASOR (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_PHASOR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_PHASOR(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_PHASOR(records);
Log(ret);
}
についてHT_PHASOR()
タリブ図書館のドキュメントでは,次の機能が記述されています.HT_PHASOR(Records[Close]) = [Array(outInPhase),Array(outQuadrature)]
についてtalib.HT_SINE()
計算するために使用されます.ヒルバート変換 - サイヌ波 (ヒルバート変換,サイヌ波).
返金値がtalib.HT_SINE()
2次元の配列です
配列
タリブ.HT_SINE (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_SINE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_SINE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_SINE(records);
Log(ret);
}
についてHT_SINE()
タリブ図書館のドキュメントでは,次の機能が記述されています.HT_SINE(Records[Close]) = [Array(outSine),Array(outLeadSine)]
についてtalib.HT_TRENDMODE()
計算するために使用されます.ヒルベルト変換 - 傾向とサイクルモード.
返金値がtalib.HT_TRENDMODE()
機能は"次元配列です
配列
タリブ.HT_TRENDMODE (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_TRENDMODE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_TRENDMODE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_TRENDMODE(records);
Log(ret);
}
についてHT_TRENDMODE()
タリブ図書館のドキュメントでは,次の機能が記述されています.HT_TRENDMODE(Records[Close]) = Array(outInteger)
についてtalib.ATR()
計算するために使用されます.平均的な実範囲.
返金値がtalib.ATR()
この関数は1次元の配列です
配列
タリブ.ATR (inPriceHLC) タリブ.ATR ((インプライスHLC,オプトインタイムピリオド)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ATR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ATR(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ATR(records);
Log(ret);
}
についてATR()
タリブ図書館のドキュメントでは,次の機能が記述されています.ATR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
についてtalib.NATR()
計算するために使用されます.標準化された平均真域.
返金値がtalib.NATR()
この関数は1次元の配列です
配列
タリブ.NATR ((インプライスHLC) タリブ.NATR ((インプライスHLC,オプトインタイムピリオド)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.NATR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.NATR(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.NATR(records);
Log(ret);
}
についてNATR()
タリブ図書館のドキュメントでは,次の機能が記述されています.NATR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
についてtalib.TRANGE()
計算するために使用されます.真の範囲.
返金値がtalib.TRANGE()
機能は"次元配列です
配列
タリブ.TRANGE ((インプライスHLC)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.TRANGE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TRANGE(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TRANGE(records);
Log(ret);
}
についてTRANGE()
タリブ図書館のドキュメントでは,次の機能が記述されています.TRANGE(Records[High,Low,Close]) = Array(outReal)
についてtalib.BBANDS()
計算するために使用されます.ボリンジャー・バンド.
返金値がtalib.BBANDS()
配列は2次元配列である.配列には,3つの要素が含まれます.上行配列,中行配列,下行配列です.
配列
タリブ.BBANDS (インリアル) タリブ.BBBANDs (リアル,オプトインタイムピリオド) talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp) リアルで,タイムピリオドで,タイムピリオドで talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp, optInNbDevDn) リアル,オプトインタイムピリオド,オプトインNbDevUp,オプトインNbDevDn) talib.BBANDS ((inReal, optInTimePeriod, optInNbDevUp, optInNbDevDn, optInMAType) について
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は5です.
optInTimePeriod について
偽り
番号
についてoptInNbDevUp
このパラメータは,アップライン倍数を設定するために使用されます. デフォルト値は2です.
オプトインNbDevUp
偽り
番号
についてoptInNbDevDn
このパラメータは,下行倍数を設定するために使用されます. デフォルト値は2です.
オプトインnbDevDn
偽り
番号
についてoptInMAType
このパラメータは平均型を設定するために使用され,デフォルト値は0です.
optInMAType を選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.BBANDS(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.BBANDS(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.BBANDS(records);
Log(ret);
}
についてBBANDS()
タリブ図書館のドキュメントでは,次の機能が記述されています.BBANDS(Records[Close],Time Period = 5,Deviations up = 2,Deviations down = 2,MA Type = 0) = [Array(outRealUpperBand),Array(outRealMiddleBand),Array(outRealLowerBand)]
についてtalib.DEMA()
計算するために使用されます.2倍指数関数移動平均.
返金値がtalib.DEMA()
この関数は1次元の配列です
配列
タリブ.DEMA (インリアル) タリブ.DEMA ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.DEMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.DEMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.DEMA(records);
Log(ret);
}
についてDEMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.DEMA(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.EMA()
計算するために使用されます.指数関数移動平均.
返金値がtalib.EMA()
この関数は1次元の配列です
配列
タリブ.EMA (インリアル) タリブ.EMA (inReal, optInTimePeriod) (リアルタイム,オプトインタイム)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.EMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.EMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.EMA(records);
Log(ret);
}
についてEMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.EMA(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.HT_TRENDLINE()
計算するために使用されます.ヒルバート変換 - 即時トレンドライン (ヒルバート変換,即時トレンド).
返金値がtalib.HT_TRENDLINE()
機能は"次元配列です
配列
タリブ.HT_TRENDLINE (インリアル)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
function main() {
var records = exchange.GetRecords()
var ret = talib.HT_TRENDLINE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.HT_TRENDLINE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.HT_TRENDLINE(records);
Log(ret);
}
についてHT_TRENDLINE()
タリブ図書館のドキュメントでは,次の機能が記述されています.HT_TRENDLINE(Records[Close]) = Array(outReal)
についてtalib.KAMA()
計算するために使用されます.カウフマンの適応移動平均.
返金値がtalib.KAMA()
機能は"次元配列です
配列
タリブ.カマ (inReal) タリブ.カマ (inReal, optInTimePeriod)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.KAMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.KAMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.KAMA(records);
Log(ret);
}
についてKAMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.KAMA(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.MA()
計算するために使用されます.移動平均.
返金値がtalib.MA()
機能は"次元配列です
配列
talib.MA(インリアル)talib.MA(inReal, optInTimePeriod) リアルタイム,オプトインタイムtalib.MA(inReal, optInTimePeriod, optInMAType) この2つのタイプは,
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
についてoptInMAType
このパラメータは平均型を設定するために使用され,デフォルト値は0です.
optInMAType を選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MA(records);
Log(ret);
}
についてMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.MA(Records[Close],Time Period = 30,MA Type = 0) = Array(outReal)
についてtalib.MAMA()
計算するために使用されます.MESA アダプティブ移動平均.
返金値がtalib.MAMA()
2次元の配列です
配列
タリブ ママ (inReal) タリブ ママ (inReal, optInFastLimit) タリブ.ママ (inReal, optInFastLimit, optInSlowLimit) オンラインで
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInFastLimit
パラメータは,Fast Limit を設定するために使用されます.デフォルト値は0.5です.
optInFastLimit を選択する
偽り
番号
についてoptInSlowLimit
パラメータはスローリーミットを設定するために使用されます. 既定値は0.05です.
optInSlowLimit を選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MAMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MAMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MAMA(records);
Log(ret);
}
についてMAMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.MAMA(Records[Close],Fast Limit = 0.5,Slow Limit = 0.05) = [Array(outMAMA),Array(outFAMA)]
についてtalib.MIDPOINT()
計算するために使用されます.期間の中点 (中点).
返金値がtalib.MIDPOINT()
この関数は1次元の配列です
配列
タリブ.ミッドポイント (inReal) タリブ.ミッドポイント (inReal, optInTimePeriod)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MIDPOINT(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MIDPOINT(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MIDPOINT(records);
Log(ret);
}
についてMIDPOINT()
タリブ図書館のドキュメントでは,次の機能が記述されています.MIDPOINT(Records[Close],Time Period = 14) = Array(outReal)
についてtalib.MIDPRICE()
計算するために使用されます.期間の中間価格 (中間価格).
返金値がtalib.MIDPRICE()
この関数は1次元の配列です
配列
タリブ.MIDPRICE ((インプライスHL) タリブ.MIDPRICE (中価格)
についてinPriceHL
パラメータはK線データを指定するために使用されます.
inPriceHL について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MIDPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MIDPRICE(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MIDPRICE(records);
Log(ret);
}
についてMIDPRICE()
タリブ図書館のドキュメントでは,次の機能が記述されています.MIDPRICE(Records[High,Low],Time Period = 14) = Array(outReal)
についてtalib.SAR()
計算するために使用されます.パラボリック SAR.
返金値がtalib.SAR()
機能は"次元配列です
配列
タリブ.SAR (inPriceHL) タリブ.SAR ((インプライスHL,オプトインアクセラレーション) タリブ.SAR ((inPriceHL, optInAcceleration, optInMaximum) 価格で,加速で,最大で
についてinPriceHL
パラメータはK線データを指定するために使用されます.
inPriceHL について
本当
{@struct/Record Record} 構造配列
についてoptInAcceleration
パラメータは加速因子を設定するために使用され,デフォルト値は0.02です.
オプトイン加速
偽り
番号
についてoptInMaximum
AF 最大値を設定するために使用されるパラメータで,デフォルト値は0.2です.
optIn最大
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.SAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.SAR(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.SAR(records);
Log(ret);
}
についてSAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.SAR(Records[High,Low],Acceleration Factor = 0.02,AF Maximum = 0.2) = Array(outReal)
についてtalib.SAREXT()
計算するために使用されます.パラボリック SAR - 拡張 (強化されたパラボリックステアリング).
返金値がtalib.SAREXT()
この関数は1次元の配列です
配列
タリブ.SAREXT ((インプライスHL) talib.SAREXT ((inPriceHL, optInStartValue) について talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse) は,この2つの要素を表示しています. talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong) について説明します talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong) 選択してください. 選択してください. 選択してください. talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong) 選択してください. 選択してください. 選択してください. talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort) 選択してください.このビデオでは,この2つの要素が表示されています. talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort, optInAccelerationShort) 選択してください.このビデオでは,この2つの要素について説明します. talib.SAREXT ((inPriceHL, optInStartValue, optInOffsetOnReverse, optInAccelerationInitLong, optInAccelerationLong, optInAccelerationMaxLong, optInAccelerationInitShort, optInAccelerationShort, optInAccelerationMaxShort) 選択してください.このリストは,このリストのリストから選べます.
についてinPriceHL
パラメータはK線データを指定するために使用されます.
inPriceHL について
本当
{@struct/Record Record} 構造配列
についてoptInStartValue
パラメータはスタート値を設定するために使用され,デフォルト値は0です.
optInStartValue を選択する
偽り
番号
についてoptInOffsetOnReverse
オフセットをリバースに設定するパラメータが使用されます 既定値は0です
optInOffsetOnReverse を選択する
偽り
番号
についてoptInAccelerationInitLong
AF Init Longを設定するために使用されるパラメータで,デフォルト値は0.02です.
オプトInAccelerationInitLong について
偽り
番号
についてoptInAccelerationLong
AF Long を設定するパラメータは,デフォルト値は 0.02 です.
オプトイン加速長
偽り
番号
についてoptInAccelerationMaxLong
AF Max Long を設定するパラメータは,デフォルト値は 0.2 です.
オプトイン加速MaxLong
偽り
番号
についてoptInAccelerationInitShort
AF Init Short を設定するパラメータで,デフォルト値は 0.02 です.
オプトInAccelerationInitShort について
偽り
番号
についてoptInAccelerationShort
AF Short を設定するパラメータは,デフォルト値は 0.02 です.
オプトインアクセレレーションショート
偽り
番号
についてoptInAccelerationMaxShort
AF Max Short を設定するパラメータで,デフォルト値は 0.2 です.
optInAccelerationMaxShort 選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.SAREXT(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.SAREXT(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.SAREXT(records);
Log(ret);
}
についてSAREXT()
タリブ図書館のドキュメントでは,次の機能が記述されています.SAREXT(Records[High,Low],Start Value = 0,Offset on Reverse = 0,AF Init Long = 0.02,AF Long = 0.02,AF Max Long = 0.2,AF Init Short = 0.02,AF Short = 0.02,AF Max Short = 0.2) = Array(outReal)
についてtalib.SMA()
計算するために使用されます.単純な移動平均.
返金値がtalib.SMA()
機能は"次元配列です
配列
タリブ.SMA (インリアル) タリブ.SMA ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.SMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.SMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.SMA(records);
Log(ret);
}
についてSMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.SMA(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.T3()
計算するために使用されます.三倍指数関数移動平均 (T3) (三倍指数関数移動平均).
返金値がtalib.T3()
この関数は1次元の配列です
配列
タリブ.T3 (inReal) タリブ.T3 ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド) talib.T3 ((inReal, optInTimePeriod, optInVFactor) について
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は5です.
optInTimePeriod について
偽り
番号
についてoptInVFactor
パラメータはボリュームファクタを設定するために使用されます.デフォルト値は0.7です.
optInVFactor を選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.T3(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.T3(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.T3(records);
Log(ret);
}
についてT3()
タリブ図書館のドキュメントでは,次の機能が記述されています.T3(Records[Close],Time Period = 5,Volume Factor = 0.7) = Array(outReal)
についてtalib.TEMA()
計算するために使用されます.3倍指数関数移動平均.
返金値がtalib.TEMA()
この関数は1次元の配列です
配列
タリブ.TEMA (インリアル) タリブ.TEMA ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.TEMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TEMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TEMA(records);
Log(ret);
}
についてTEMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.TEMA(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.TRIMA()
計算するために使用されます.三角移動平均 (三指数移動平均).
返金値がtalib.TRIMA()
この関数は1次元の配列です
配列
タリブ.TRIMA (インリアル) タリブ.TRIMA ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.TRIMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TRIMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TRIMA(records);
Log(ret);
}
についてTRIMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.TRIMA(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.WMA()
計算するために使用されます.振込金について.
返金値がtalib.WMA()
この関数は1次元の配列です
配列
タリブ.WMA (インリアル) タリブ.WMA ((inReal, optInTimePeriod) リアルタイムで
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.WMA(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.WMA(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.WMA(records);
Log(ret);
}
についてWMA()
タリブ図書館のドキュメントでは,次の機能が記述されています.WMA(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.LINEARREG()
計算するために使用されます.線形回帰.
返金値がtalib.LINEARREG()
この関数は1次元の配列です
配列
タリブ.LINEARREG (インリアル) talib.LINEARREG ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド) リアル,オプトインタイムピリオド
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.LINEARREG(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.LINEARREG(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.LINEARREG(records);
Log(ret);
}
についてLINEARREG()
タリブ図書館のドキュメントでは,次の機能が記述されています.LINEARREG(Records[Close],Time Period = 14) = Array(outReal)
についてtalib.LINEARREG_ANGLE()
計算するために使用されます.線形回帰角.
返金値がtalib.LINEARREG_ANGLE()
機能は"次元配列です
配列
タリブ.LINEARREG_ANGLE (インリアル) talib.LINEARREG_ANGLE ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.LINEARREG_ANGLE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.LINEARREG_ANGLE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.LINEARREG_ANGLE(records);
Log(ret);
}
についてLINEARREG_ANGLE()
タリブ図書館のドキュメントでは,次の機能が記述されています.LINEARREG_ANGLE(Records[Close],Time Period = 14) = Array(outReal)
についてtalib.LINEARREG_INTERCEPT()
計算するために使用されます.線形回帰インターセプト.
返金値がtalib.LINEARREG_INTERCEPT()
機能は"次元配列です
配列
タリブ.LINEARREG_INTERCEPT (インリアル) talib.LINEARREG_INTERCEPT ((inReal, optInTimePeriod) タイムピリオドを選択する)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.LINEARREG_INTERCEPT(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.LINEARREG_INTERCEPT(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.LINEARREG_INTERCEPT(records);
Log(ret);
}
についてLINEARREG_INTERCEPT()
タリブ図書館のドキュメントでは,次の機能が記述されています.LINEARREG_INTERCEPT(Records[Close],Time Period = 14) = Array(outReal)
についてtalib.LINEARREG_SLOPE()
計算するために使用されます.線形回帰傾き.
返金値がtalib.LINEARREG_SLOPE()
機能は"次元配列です
配列
タリブ.LINEARREG_SLOPE (インリアル) talib.LINEARREG_SLOPE ((inReal, optInTimePeriod) タイムピリオドを選択する)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.LINEARREG_SLOPE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.LINEARREG_SLOPE(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.LINEARREG_SLOPE(records);
Log(ret);
}
についてLINEARREG_SLOPE()
タリブ図書館のドキュメントでは,次の機能が記述されています.LINEARREG_SLOPE(Records[Close],Time Period = 14) = Array(outReal)
についてtalib.STDDEV()
計算するために使用されます.標準偏差.
返金値がtalib.STDDEV()
機能は"次元配列です
配列
タリブ.STDDEV (インリアル) タリブ.STDDEV ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド) タリブ.STDDEV ((inReal, optInTimePeriod, optInNbDev) リアル,オプトインタイムペリオド,オプトインNbDev)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は5です.
optInTimePeriod について
偽り
番号
についてoptInNbDev
偏差を設定するために使用されるパラメータで,デフォルト値は1です.
オプトインNbDev
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.STDDEV(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.STDDEV(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.STDDEV(records);
Log(ret);
}
についてSTDDEV()
タリブ図書館のドキュメントでは,次の機能が記述されています.STDDEV(Records[Close],Time Period = 5,Deviations = 1) = Array(outReal)
についてtalib.TSF()
計算するために使用されます.タイム シリーズ 予測.
返金値がtalib.TSF()
この関数は1次元の配列です
配列
タリブ.TSF (inReal) タリブ.TSF ((inReal, optInTimePeriod) タイムピリオドを選択する)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.TSF(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TSF(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TSF(records);
Log(ret);
}
についてTSF()
タリブ図書館のドキュメントでは,次の機能が記述されています.TSF(Records[Close],Time Period = 14) = Array(outReal)
についてtalib.VAR()
計算するために使用されます.バランス.
返金値がtalib.VAR()
機能は"次元配列です
配列
タリブ.VAR (inReal) talib.VAR ((inReal, optInTimePeriod) リアルタイムで talib.VAR ((inReal, optInTimePeriod, optInNbDev) について
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は5です.
optInTimePeriod について
偽り
番号
についてoptInNbDev
偏差を設定するために使用されるパラメータで,デフォルト値は1です.
オプトインNbDev
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.VAR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.VAR(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.VAR(records);
Log(ret);
}
についてVAR()
タリブ図書館のドキュメントでは,次の機能が記述されています.VAR(Records[Close],Time Period = 5,Deviations = 1) = Array(outReal)
についてtalib.ADX()
計算するために使用されます.平均方向動向指数.
返金値がtalib.ADX()
この関数は1次元の配列です
配列
タリブ.ADX ((インプライスHLC) タリブ.ADX (inPriceHLC, optInTimePeriod)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ADX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ADX(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ADX(records);
Log(ret);
}
についてADX()
タリブ図書館のドキュメントでは,次の機能が記述されています.ADX(Records[High,Low,Close],Time Period = 14) = Array(outReal)
についてtalib.ADXR()
計算するために使用されます.平均指数 (評価指数).
返金値がtalib.ADXR()
この関数は1次元の配列です
配列
タリブ.ADXR ((インプライスHLC) タリブ.ADXR ((inPriceHLC, optInTimePeriod) について
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ADXR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ADXR(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ADXR(records);
Log(ret);
}
についてADXR()
タリブ図書館のドキュメントでは,次の機能が記述されています.ADXR(Records[High,Low,Close],Time Period = 14) = Array(outReal)
についてtalib.APO()
計算するために使用されます.絶対価格オシレーター.
返金値がtalib.APO()
機能は"次元配列です
配列
タリブ.APO (インリアル) タリブ.APO ((inReal, optInFastPeriod) リアル,オプトインファストペリオド) talib.APO ((inReal, optInFastPeriod, optInSlowPeriod) リアル,オプトインファストペリオド,オプトインスローペリオド) talib.APO ((inReal, optInFastPeriod, optInSlowPeriod, optInMAType) は,この2つのタイプを表示しています.
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInFastPeriod
パラメーターは,速度の期間を設定するために使用され,デフォルト値は12です.
optInFastPeriod について
偽り
番号
についてoptInSlowPeriod
パラメータは遅い期間を設定するために使用されます デフォルト値は26です
optInSlowPeriod について
偽り
番号
についてoptInMAType
このパラメータは平均型を設定するために使用され,デフォルト値は0です.
optInMAType を選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.APO(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.APO(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.APO(records);
Log(ret);
}
についてAPO()
タリブ図書館のドキュメントでは,次の機能が記述されています.APO(Records[Close],Fast Period = 12,Slow Period = 26,MA Type = 0) = Array(outReal)
についてtalib.AROON()
計算するために使用されます.アルーン (アルーン指標).
返金値がtalib.AROON()
この関数は2次元配列です
配列
タリブ・アルーン (inPriceHL) タリブ・アルーン (inPriceHL, optInTimePeriod)
についてinPriceHL
パラメータはK線データを指定するために使用されます.
inPriceHL について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.AROON(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.AROON(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.AROON(records);
Log(ret);
}
についてAROON()
タリブ図書館のドキュメントでは,次の機能が記述されています.AROON(Records[High,Low],Time Period = 14) = [Array(outAroonDown),Array(outAroonUp)]
についてtalib.AROONOSC()
計算するために使用されます.アルーン振動器.
返金値がtalib.AROONOSC()
機能は"次元配列です
配列
タリブ.AROONOSC ((インプライスHL) タリブ.アロノスC (inPriceHl, optInTimePeriod)
についてinPriceHL
パラメータはK線データを指定するために使用されます.
inPriceHL について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.AROONOSC(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.AROONOSC(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.AROONOSC(records);
Log(ret);
}
についてAROONOSC()
タリブ図書館のドキュメントでは,次の機能が記述されています.AROONOSC(Records[High,Low],Time Period = 14) = Array(outReal)
についてtalib.BOP()
計算するために使用されます.権力 の 均衡.
返金値がtalib.BOP()
この関数は1次元の配列です
配列
タリブ.BOP ((インプライスOHLC)
についてinPriceOHLC
パラメータはK線データを指定するために使用されます.
inPriceOHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.BOP(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.BOP(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.BOP(records);
Log(ret);
}
についてBOP()
タリブ図書館のドキュメントでは,次の機能が記述されています.BOP(Records[Open,High,Low,Close]) = Array(outReal)
についてtalib.CCI()
計算するために使用されます.商品チャネルインデックス (ホメオパシー指標).
返金値がtalib.CCI()
この関数は1次元の配列です
配列
タリブ.CCI ((インプライスHLC) talib.CCI ((インプライスHLC,オプトインタイムピリオド)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CCI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CCI(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CCI(records);
Log(ret);
}
についてCCI()
タリブ図書館のドキュメントでは,次の機能が記述されています.CCI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
についてtalib.CMO()
計算するために使用されます.チャンデ・モメント・オシレーター (CMO).
返金値がtalib.CMO()
機能は"次元配列です
配列
タリブ.CMO (インリアル) タリブ.CMO (inReal, optInTimePeriod)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.CMO(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.CMO(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.CMO(records);
Log(ret);
}
についてCMO()
タリブ図書館のドキュメントでは,次の機能が記述されています.CMO(Records[Close],Time Period = 14) = Array(outReal)
についてtalib.DX()
計算するために使用されます.方向移動指数.
返金値がtalib.DX()
機能は"次元配列です
配列
タリブ.DX (inPriceHLC) talib.DX ((inPriceHLC, optInTimePeriod) について
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.DX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.DX(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.DX(records);
Log(ret);
}
についてDX()
タリブ図書館のドキュメントでは,次の機能が記述されています.DX(Records[High,Low,Close],Time Period = 14) = Array(outReal)
についてtalib.MACD()
計算するために使用されます.移動平均の収束/離散 (指数関数的に平滑した移動平均).
返金値がtalib.MACD()
2次元の配列です
配列
タリブ.MACD (インリアル) タリブ.MACD ((inReal, optInFastPeriod) について talib.MACD ((inReal, optInFastPeriod, optInSlowPeriod) リアル,オプトインファストペリオド,オプトインスローペリオド) talib.MACD ((inReal, optInFastPeriod, optInSlowPeriod, optInSignalPeriod) リアル,オプトインファストペリオド,オプトインスローペリオド,オプトインシグナルペリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInFastPeriod
パラメーターは,速度の期間を設定するために使用され,デフォルト値は12です.
optInFastPeriod について
偽り
番号
についてoptInSlowPeriod
パラメータは遅い期間を設定するために使用されます デフォルト値は26です
optInSlowPeriod について
偽り
番号
についてoptInSignalPeriod
パラメータは信号期間を設定するために使用されます 既定値は9です
optInSignalPeriod (シグナル期間)
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MACD(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MACD(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MACD(records);
Log(ret);
}
についてMACD()
タリブ図書館のドキュメントでは,次の機能が記述されています.MACD(Records[Close],Fast Period = 12,Slow Period = 26,Signal Period = 9) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]
についてtalib.MACDEXT()
計算するために使用されます.制御可能なMA型MACD.
返金値がtalib.MACDEXT()
この関数は2次元配列です
配列
タリブ.マックデックス (inReal) タリブ.マックデックス (inReal, optInFastPeriod) talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType) について talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod) について talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType) 参照してください talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType, optInSignalPeriod) 選択してください. 選択してください. talib.MACDEXT ((inReal, optInFastPeriod, optInFastMAType, optInSlowPeriod, optInSlowMAType, optInSignalPeriod, optInSignalMAType) この2つのタイプは,
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInFastPeriod
パラメーターは,速度の期間を設定するために使用され,デフォルト値は12です.
optInFastPeriod について
偽り
番号
についてoptInFastMAType
パラメータは,高速平均型を設定するために使用されます. デフォルト値は0です.
optInFastMAType を選択する
偽り
番号
についてoptInSlowPeriod
パラメータは遅い期間を設定するために使用されます デフォルト値は26です
optInSlowPeriod について
偽り
番号
についてoptInSlowMAType
パラメータはスロー・ミニアンタイプを設定するために使用され,デフォルト値は0です.
optInSlowMAType を選択する
偽り
番号
についてoptInSignalPeriod
パラメータは信号期間を設定するために使用されます 既定値は9です
optInSignalPeriod (シグナル期間)
偽り
番号
についてoptInSignalMAType
パラメータは信号の中間値のタイプを設定するために使用されます.デフォルト値は0です.
optInSignalMAType を選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MACDEXT(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MACDEXT(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MACDEXT(records);
Log(ret);
}
についてMACDEXT()
タリブ図書館のドキュメントでは,次の機能が記述されています.MACDEXT(Records[Close],Fast Period = 12,Fast MA = 0,Slow Period = 26,Slow MA = 0,Signal Period = 9,Signal MA = 0) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]
についてtalib.MACDFIX()
計算するために使用されます.移動平均収束/離散修正 12/26.
返金値がtalib.MACDFIX()
この関数は2次元配列です
配列
タリブ.MACDFIX (インリアル) タリブ.MACDFIX ((インリアル,オプトインシグナルPeriod)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInSignalPeriod
パラメータは信号期間を設定するために使用されます 既定値は9です
optInSignalPeriod (シグナル期間)
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MACDFIX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MACDFIX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MACDFIX(records);
Log(ret);
}
についてMACDFIX()
タリブ図書館のドキュメントでは,次の機能が記述されています.MACDFIX(Records[Close],Signal Period = 9) = [Array(outMACD),Array(outMACDSignal),Array(outMACDHist)]
についてtalib.MFI()
計算するために使用されます.貨幣流量指数.
返金値がtalib.MFI()
この関数は1次元の配列です
配列
talib.MFI ((インプライスHLCV) talib.MFI ((inPriceHLCV, optInTimePeriod) について
についてinPriceHLCV
パラメータはK線データを指定するために使用されます.
inPriceHLCV について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MFI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MFI(records.High, records.Low, records.Close, records.Volume)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MFI(records);
Log(ret);
}
についてMFI()
タリブ図書館のドキュメントでは,次の機能が記述されています.MFI(Records[High,Low,Close,Volume],Time Period = 14) = Array(outReal)
についてtalib.MINUS_DI()
計算するために使用されます.マイナス方向指標 (マイナス指標).
返金値がtalib.MINUS_DI()
この関数は1次元の配列です
配列
タリブ.MINUS_DI ((インプライスHLC) talib.MINUS_DI ((inPriceHLC, optInTimePeriod) 価格について
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MINUS_DI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MINUS_DI(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MINUS_DI(records);
Log(ret);
}
についてMINUS_DI()
タリブ図書館のドキュメントでは,次の機能が記述されています.MINUS_DI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
についてtalib.MINUS_DM()
計算するために使用されます.マイナス方向移動 (否定的な動き).
返金値がtalib.MINUS_DM()
この関数は1次元の配列です
配列
タリブ.MINUS_DM ((インプライスHL) talib.MINUS_DM ((インプライスHL,オプトインタイムPeriod)
についてinPriceHL
パラメータはK線データを指定するために使用されます.
inPriceHL について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MINUS_DM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MINUS_DM(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MINUS_DM(records);
Log(ret);
}
についてMINUS_DM()
タリブ図書館のドキュメントでは,次の機能が記述されています.MINUS_DM(Records[High,Low],Time Period = 14) = Array(outReal)
についてtalib.MOM()
計算するために使用されます.勢い.
返金値がtalib.MOM()
この関数は1次元の配列です
配列
タリブ.マム (inReal) タリブ.マム (inReal, optInTimePeriod)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は10です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.MOM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MOM(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MOM(records);
Log(ret);
}
についてMOM()
タリブ図書館のドキュメントでは,次の機能が記述されています.MOM(Records[Close],Time Period = 10) = Array(outReal)
についてtalib.PLUS_DI()
計算するために使用されます.プラス方向指示.
返金値がtalib.PLUS_DI()
機能は"次元配列です
配列
タリブ.PLUS_DI (インプライスHLC) talib.PLUS_DI ((inPriceHLC, optInTimePeriod) 価格について
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.PLUS_DI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.PLUS_DI(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.PLUS_DI(records);
Log(ret);
}
についてPLUS_DI()
タリブ図書館のドキュメントでは,次の機能が記述されています.PLUS_DI(Records[High,Low,Close],Time Period = 14) = Array(outReal)
についてtalib.PLUS_DM()
計算するために使用されます.プラス方向移動.
返金値がtalib.PLUS_DM()
この関数は1次元の配列です
配列
タリブ.PLUS_DM ((インプライスHL) talib.PLUS_DM ((inPriceHL, optInTimePeriod) 価格について
についてinPriceHL
パラメータはK線データを指定するために使用されます.
inPriceHL について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.PLUS_DM(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.PLUS_DM(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.PLUS_DM(records);
Log(ret);
}
についてPLUS_DM()
タリブ図書館のドキュメントでは,次の機能が記述されています.PLUS_DM(Records[High,Low],Time Period = 14) = Array(outReal)
についてtalib.PPO()
計算するために使用されます.% 価格オシレーター.
返金値がtalib.PPO()
この関数は1次元の配列です
配列
タリブ.PPO (インリアル) タリブ.PPO ((inReal, optInFastPeriod) リアル,オプトインファストペリオド) タリブ.PPO ((inReal, optInFastPeriod, optInSlowPeriod) リアル,オプトインファストペリオド,オプトインスローペリオド) talib.PPO ((inReal, optInFastPeriod, optInSlowPeriod, optInMAType) について
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInFastPeriod
パラメーターは,速度の期間を設定するために使用され,デフォルト値は12です.
optInFastPeriod について
偽り
番号
についてoptInSlowPeriod
パラメータは遅い期間を設定するために使用されます デフォルト値は26です
optInSlowPeriod について
偽り
番号
についてoptInMAType
このパラメータは平均型を設定するために使用され,デフォルト値は0です.
optInMAType を選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.PPO(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.PPO(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.PPO(records);
Log(ret);
}
についてPPO()
タリブ図書館のドキュメントでは,次の機能が記述されています.PPO(Records[Close],Fast Period = 12,Slow Period = 26,MA Type = 0) = Array(outReal)
についてtalib.ROC()
計算するために使用されます.変化率: ((価格/前価格) -1) *100 (変化率指標).
返金値がtalib.ROC()
この関数は1次元の配列です
配列
タリブ.ROC ((インリアル) タリブ.ROC ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は10です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ROC(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ROC(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ROC(records);
Log(ret);
}
についてROC()
タリブ図書館のドキュメントでは,次の機能が記述されています.ROC(Records[Close],Time Period = 10) = Array(outReal)
についてtalib.ROCP()
計算するために使用されます.変化率 パーセント: (価格前Price) /prevPrice (価格変化率).
返金値がtalib.ROCP()
機能は"次元配列です
配列
タリブ.ROCP (インリアル) タリブ.ROCP ((inReal, optInTimePeriod) タイムピリオドを選択する
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は10です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ROCP(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ROCP(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ROCP(records);
Log(ret);
}
についてROCP()
タリブ図書館のドキュメントでは,次の機能が記述されています.ROCP(Records[Close],Time Period = 10) = Array(outReal)
についてtalib.ROCR()
計算するために使用されます.変化率比: (価格/前価格) (価格変化比).
返金値がtalib.ROCR()
この関数は1次元の配列です
配列
タリブ.ROCR (インリアル) タリブ.ROCR ((inReal, optInTimePeriod) リアルタイムで
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は10です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ROCR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ROCR(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ROCR(records);
Log(ret);
}
についてROCR()
タリブ図書館のドキュメントでは,次の機能が記述されています.ROCR(Records[Close],Time Period = 10) = Array(outReal)
についてtalib.ROCR100()
計算するために使用されます.変化率比100スケール: (価格/prevPrice) *100 (価格変化比).
返金値がtalib.ROCR100()
機能は"次元配列です
配列
タリブ.ROCR100 (インリアル) タリブ.ROCR100 ((inReal, optInTimePeriod) リアルタイムで
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は10です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ROCR100(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ROCR100(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ROCR100(records);
Log(ret);
}
についてROCR100()
タリブ図書館のドキュメントでは,次の機能が記述されています.ROCR100(Records[Close],Time Period = 10) = Array(outReal)
についてtalib.RSI()
計算するために使用されます.相対強度指数.
返金値がtalib.RSI()
この関数は1次元の配列です
配列
タリブ.RSI (インリアル) talib.RSI ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.RSI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.RSI(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.RSI(records);
Log(ret);
}
についてRSI()
タリブ図書館のドキュメントでは,次の機能が記述されています.RSI(Records[Close],Time Period = 14) = Array(outReal)
についてtalib.STOCH()
計算するために使用されます.ストカスティック (STOCH指標).
返金値がtalib.STOCH()
この関数は2次元配列です
配列
タリブ.ストック (inPriceHLC) talib.STOCH ((inPriceHLC, optInFastK_Period) ストック (inPriceHLC, optInFastK_Period) ストック (inPriceHLC, optInFastK_Period) ストック talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period) について talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType) について talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType, optInSlowD_Period) について talib.STOCH ((inPriceHLC, optInFastK_Period, optInSlowK_Period, optInSlowK_MAType, optInSlowD_Period, optInSlowD_MAType) は,この2つの要素を表示しています.
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInFastK_Period
Fast-K 期間を設定するパラメータで,デフォルト値は 5 です.
optInFastK_Period を選択する
偽り
番号
についてoptInSlowK_Period
このパラメータはSlow-K周期を設定するために使用され,デフォルト値は3です.
optInSlowK_Period を選択する
偽り
番号
についてoptInSlowK_MAType
パラメータはSlow-K平均型を設定するために使用され,デフォルト値は0です.
optInSlowK_MAType を選択する
偽り
番号
についてoptInSlowD_Period
このパラメータはSlow-D期間を設定するために使用され,デフォルト値は3です.
optInSlowD_Period を選択する
偽り
番号
についてoptInSlowD_MAType
このパラメータはSlow-D平均型を設定するために使用されます.デフォルト値は0です.
optInSlowD_MAType を選択する
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.STOCH(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.STOCH(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.STOCH(records);
Log(ret);
}
についてSTOCH()
タリブ図書館のドキュメントでは,次の機能が記述されています.STOCH(Records[High,Low,Close],Fast-K Period = 5,Slow-K Period = 3,Slow-K MA = 0,Slow-D Period = 3,Slow-D MA = 0) = [Array(outSlowK),Array(outSlowD)]
についてtalib.STOCHF()
計算するために使用されます.ストキャスティック・ファスト (速度の高いSTOCH指標).
返金値がtalib.STOCHF()
この関数は2次元配列です
配列
タリブ.STOCHF ((インプライスHLC) talib.STOCHF ((inPriceHLC, optInFastK_Period) について talib.STOCHF ((inPriceHLC, optInFastK_Period, optInFastD_Period) について talib.STOCHF ((inPriceHLC, optInFastK_Period, optInFastD_Period, optInFastD_MAType) について
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInFastK_Period
Fast-K 期間を設定するパラメータで,デフォルト値は 5 です.
optInFastK_Period を選択する
偽り
番号
についてoptInFastD_Period
Fast-D 期間を設定するパラメータは 3 です
optInFastD_Period を選択する
偽り
番号
についてoptInFastD_MAType
パラメータはFast-D平均型を設定するために使用され,デフォルト値は0です.
optInFastD_MAType について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.STOCHF(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.STOCHF(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.STOCHF(records);
Log(ret);
}
についてSTOCHF()
タリブ図書館のドキュメントでは,次の機能が記述されています.STOCHF(Records[High,Low,Close],Fast-K Period = 5,Fast-D Period = 3,Fast-D MA = 0) = [Array(outFastK),Array(outFastD)]
についてtalib.STOCHRSI()
計算するために使用されます.ストカスティック相対強度指数.
返金値がtalib.STOCHRSI()
2次元の配列です
配列
タリブ・ストックルシ (inReal) タリブ.STOCHRSI (inReal, optInTimePeriod) (リアル,オプトインタイムピリオド) talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period) リアルタイム,オプトインタイムピリオド,オプトインファストK_ピリオド) talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period, optInFastD_Period) について talib.STOCHRSI ((inReal, optInTimePeriod, optInFastK_Period, optInFastD_Period, optInFastD_MAType) について
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
についてoptInFastK_Period
Fast-K 期間を設定するパラメータで,デフォルト値は 5 です.
optInFastK_Period を選択する
偽り
番号
についてoptInFastD_Period
Fast-D 期間を設定するパラメータは 3 です
optInFastD_Period を選択する
偽り
番号
についてoptInFastD_MAType
パラメータはFast-D平均型を設定するために使用され,デフォルト値は0です.
optInFastD_MAType について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.STOCHRSI(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.STOCHRSI(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.STOCHRSI(records);
Log(ret);
}
についてSTOCHRSI()
タリブ図書館のドキュメントでは,次の機能が記述されています.STOCHRSI(Records[Close],Time Period = 14,Fast-K Period = 5,Fast-D Period = 3,Fast-D MA = 0) = [Array(outFastK),Array(outFastD)]
についてtalib.TRIX()
計算するために使用されます.1日間の変化率 (ROC) の3回間スムーズEMA.
返金値がtalib.TRIX()
機能は"次元配列です
配列
タリブ.TRIX (インリアル) タリブ.TRIX ((inReal, optInTimePeriod) リアル,オプトインタイムピリオド)
についてinReal
パラメータはK線データを指定するために使用されます.
リアル
本当
{@struct/Record Record} 構造配列,数値配列
についてoptInTimePeriod
パラメータは,期間を設定するために使用されます. デフォルト値は30です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.TRIX(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TRIX(records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TRIX(records);
Log(ret);
}
についてTRIX()
タリブ図書館のドキュメントでは,次の機能が記述されています.TRIX(Records[Close],Time Period = 30) = Array(outReal)
についてtalib.ULTOSC()
計算するために使用されます.究極のオシレーター.
返金値がtalib.ULTOSC()
この関数は1次元の配列です
配列
タリブ.ULTOSC ((インプライスHLC) タリブ.ULTOSC ((インプライスHLC,オプトインタイムPeriod1) talib.ULTOSC ((inPriceHLC, optInTimePeriod1, optInTimePeriod2) 価格について タリブ.ULTOSC ((inPriceHLC, optInTimePeriod1, optInTimePeriod2, optInTimePeriod3)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod1
パラメータが最初の周期を設定するために使用され,デフォルト値は7です.
optInTimePeriod1 について
偽り
番号
についてoptInTimePeriod2
このパラメータは第2周期を設定するために使用され,デフォルト値は14です.
optInTimePeriod2 について
偽り
番号
についてoptInTimePeriod3
このパラメータは第3周期を設定するために使用され,デフォルト値は28です.
optInTimePeriod3 について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.ULTOSC(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.ULTOSC(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.ULTOSC(records);
Log(ret);
}
についてULTOSC()
タリブ図書館のドキュメントでは,次の機能が記述されています.ULTOSC(Records[High,Low,Close],First Period = 7,Second Period = 14,Third Period = 28) = Array(outReal)
についてtalib.WILLR()
計算するために使用されます.ウィリアムズ
返金値がtalib.WILLR()
機能は"次元配列です
配列
タリブ.WILLR ((インプライスHLC) タリブ.WILLR ((inPriceHLC, optInTimePeriod) タイムピリオドを選択する)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
についてoptInTimePeriod
パラメーターは,期間を設定するために使用されます. デフォルト値は14です.
optInTimePeriod について
偽り
番号
function main() {
var records = exchange.GetRecords()
var ret = talib.WILLR(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.WILLR(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.WILLR(records);
Log(ret);
}```
The ```WILLR()``` function is described in the talib library documentation as: ```WILLR(Records[High,Low,Close],Time Period = 14) = Array(outReal)```
### talib.AVGPRICE
The ```talib.AVGPRICE()``` function is used to calculate **Average Price**.
The return value of the ```talib.AVGPRICE()``` function is a one-dimensional array.
array
talib.AVGPRICE(inPriceOHLC)
The ```inPriceOHLC``` parameter is used to specify the K-line data.
inPriceOHLC
true
{@struct/Record Record} structure array
```javascript
function main() {
var records = exchange.GetRecords()
var ret = talib.AVGPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.AVGPRICE(records.Open, records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.AVGPRICE(records);
Log(ret);
}
についてAVGPRICE()
タリブ図書館のドキュメントでは,次の機能が記述されています.AVGPRICE(Records[Open,High,Low,Close]) = Array(outReal)
についてtalib.MEDPRICE()
計算するために使用されます.中間価格.
返金値がtalib.MEDPRICE()
この関数は1次元の配列です
配列
タリブ.MEDPRICE ((インプライスHL)
についてinPriceHL
パラメータはK線データを指定するために使用されます.
inPriceHL について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.MEDPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.MEDPRICE(records.High, records.Low)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.MEDPRICE(records);
Log(ret);
}
についてMEDPRICE()
タリブ図書館のドキュメントでは,次の機能が記述されています.MEDPRICE(Records[High,Low]) = Array(outReal)
についてtalib.TYPPRICE()
計算するために使用されます.典型的な価格.
返金値がtalib.TYPPRICE()
この関数は1次元の配列です
配列
タリブ.TYPPRICE ((インプライスHLC)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.TYPPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.TYPPRICE(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.TYPPRICE(records);
Log(ret);
}
についてTYPPRICE()
タリブ図書館のドキュメントでは,次の機能が記述されています.TYPPRICE(Records[High,Low,Close]) = Array(outReal)
についてtalib.WCLPRICE()
計算するために使用されます.重要度の高い閉店価格.
返金値がtalib.WCLPRICE()
この関数は1次元の配列です
配列
タリブ.WCLPRICE ((インプライスHLC)
についてinPriceHLC
パラメータはK線データを指定するために使用されます.
inPriceHLC について
本当
{@struct/Record Record} 構造配列
function main() {
var records = exchange.GetRecords()
var ret = talib.WCLPRICE(records)
Log(ret)
}
import talib
def main():
records = exchange.GetRecords()
ret = talib.WCLPRICE(records.High, records.Low, records.Close)
Log(ret)
void main() {
auto records = exchange.GetRecords();
auto ret = talib.WCLPRICE(records);
Log(ret);
}
についてWCLPRICE()
タリブ図書館のドキュメントでは,次の機能が記述されています.WCLPRICE(Records[High,Low,Close]) = Array(outReal)