このJSON構造は,HttpQuery関数とHttpQuery_Go関数のパラメータを設定するために使用されます.
要求方法,例えば:GET
, POST
など
方法
文字列
リクエストボディ.例えば,POST リクエストでは,ボディにはフォームデータ,JSON,テキストなどが含まれます.
身体
文字列
文字セットのエンコーディング.例えば,ボディ内のテキストデータのエンコーディングを以下のように指定する."UTF-8"
- わかった
カーセット
文字列
クッキーは,クライアント (通常はブラウザー) とサーバーの間に状態情報を保存し交換するために使用される小さなデータです.
クッキー
文字列
ブラウザの指紋をシミュレートするために使われます
プロフィール
文字列
true に設定すると,HttpQuery 関数呼び出しは完全な応答メッセージを返します. false に設定すると,応答メッセージ Body のデータのみが返されます.
debugする
ボール
リクエストヘッダ情報はキー値ペア (JSON構造) の形で存在し,コンテンツタイプ,認証情報,キャッシュ制御など様々な情報を送信するために使用されます.
ヘッダ
JSON
タイムアウト設定 1000を設定すると,1秒のタイムアウトになります
タイムアウト
番号
使用例:
function main() {
var options = {
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
}
var ret = HttpQuery("http://127.0.0.1:8080", options)
Log(ret)
}
上記コードを実行すると送信される http メッセージ:
POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=12345; lang=en
Host: 127.0.0.1:8080
Test-Http-Query: 123
Transfer-Encoding: chunked
User-Agent: Mozilla/5.0 (Macintosh; ...
Accept-Encoding: gzip, deflate, br
e
a=10&b=20&c=30
0
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go} ウェブ上で検索するサイト
このJSON構造は,デバッグモードでHttpQuery関数によって返されるデータ構造です.options
構造パラメータは正です
http ステータスコード ステータスコード 番号 ヘッダ情報を要求する. タイトル JSON クッキーの情報 クッキー 配列 リクエストの完全なパス情報 トレース JSON メッセージの長さ 長さ 番号 メッセージの内容 身体 文字列
返されたJSONデータ構造の例は:
{
"StatusCode": 302,
"Header": {
"Content-Type": ["text/html"],
// ...
},
"Cookies": [{
// ...
}],
"Trace": {},
"Length": 154,
"Body": "..."
}
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go} ウェブ上で検索するサイト
このJSON構造は,戦略状態バーで表示されるテーブルコンテンツを構成するために使用されます.
解析および表示される UI とコントロールのタイプを設定するために使用されます.状態バーテーブルでは,固定設定で:table
- わかった
タイプ
文字列
ステータスバー表のタイトルを設定するために使用されます.
タイトル
文字列
状態バー表の列タイトルを設定するために使用する.配列の最初の要素は最初の列のタイトルである.
コール
配列
状態バーテーブルの行データを設定するために使用されます.行配列 (二次元配列) の最初の要素は,配列構造でもあります.この配列構造の長さは,表の列数 (配列構造の要素は,表の列名に一つずつ対応します) と一致する必要があります.すなわち,表の最初の列のデータです.
列
配列
function main() {
var tbl = {
type: "table",
title: "title",
cols: ["Column 1", "Column 2", "Column 3"],
rows: [
["Row 1 Column 1", "Row 1 Column 2", "Row 1 Column 3"],
["Row 2 Column 1", "Row 2 Column 2", "Row 2 Column 3"],
["Row 3 Column 1", "Row 3 Column 2", "Row 3 Column 3"],
]
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
{@fun/Log/LogStatus ログステータス}
このJSON構造は,ステータスバーのボタン制御を構成するために使用されます. ボタン制御JSON構造は,ステータスバーテーブルJSON構造に埋め込むことができます. この構造は古いバージョンの構造であり,プラットフォームはまだ互換性があります. ボタンJSON構造の最新バージョンを使用することをお勧めします. ステータスバー ボタン コントロールを構成する例 (ボタンが起動してクリックされた後,ポップアップ ボックスは入力フィールドを通じて構成される単一の入力 コントロールを含みます):
{
"type": "button",
"cmd": "open",
"name": "opening a position",
"input": {
"name": "number of opening positions",
"type": "number",
"defValue": 1
}
}
状態バーボタンをクリックすると起動するポップアップボックスのコントロールは,input
またはgroup
.
ボタンのコントロールでは,固定設定は:button
- わかった
タイプ
文字列
ボタンタイプ設定
クラス
文字列
ボタンのコントロールのテキスト つまり ボタンの名前です
名前
文字列
ボタン制御がクリック操作を誘発するときに戦略に送信されるインタラクティブなコマンドコンテンツ.
cmd
文字列
ボタン制御の記述. 記述は,マウスがステータスバーのボタンを押したときに表示されます.
記述
文字列
ボタンを disabled (true) / enabled (false) に設定する.
障害者
ボール
インタラクション用のステータスバーボタンを構築する際には,データ入力もサポートされます.インタラクションコマンドは最終的にGetCommand()
追加するinput
状態バーのボタン制御のJSONデータ構造への項目を入力します. ボタンを起動すると表示されるポップアップボックスに入力制御を設定します.
例えば,値を設定するにはinput
フィールド:
{
"name": "Number of opening positions",
"type": "number",
"defValue": 1,
"description": "test",
}
上記のJSON構造の各フィールドの記述:
"number"
:数値入力制御"string"
文字列入力制御"selected"
:ドロップダウンボックス制御."boolean"
制御を切り替える"input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}
,ドロップダウンボックスオプションのテキスト記述はA,B,Cに設定されています.ドロップダウンボックス型制御で拡張されたフィールドでは:
{text: "description", value: "value"}
デフォルトオプションを設定するために defValue フィールドを使用します.インプット
JSON
についてinput
状態バーボタンをクリックすると起動します.group
そしてinput
コントロールのグループを構成します.group
データの構造はinput
フィールドの値. フィールドの適切な説明を参照してくださいinput
field.
グループ 配列
この例はclass
ステータスバーのボタンのJSON構造の値:
function main() {
var table = {
type: "table",
title: "Status bar button style",
cols: ["Default", "Original", "Success", "Information", "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": "Information"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "Warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "Danger"}
]
]
}
LogStatus("`" + JSON.stringify(table) + "`")
}
この例では,group
フィールドとinput
フィールド:
function main() {
// The drop-down box control in the page triggered by the testBtn1 button uses the options field to set options and the defValue field to set the default options. This is different from other examples in this chapter that directly use defValue to set options.
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,
it also supports the use of ```{text: "description", value: "value"}``` structure. Use the defValue field to set the default option. The default option can be multiple selection (multiple selection is achieved through an array structure). Multiple selection requires setting the additional field multiple to true.
*/
var testBtn2 = {
type: "button",
name: "testBtn2",
cmd: "cmdTestBtn2",
input: {
name: "testBtn2MultiComboBox",
type: "selected",
description: "Implementing multiple selection in drop-down box",
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: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down 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)
}
}
{@fun/Log/LogStatus ログステータス}
このJSON構造は,ステータスバーのボタン制御を構成するために使用されます. ボタン制御JSON構造は,ステータスバーテーブルJSON構造に埋め込むことができます. ボタンJSON構造の最新バージョン. ステータスバー ボタン コントロールを構成する例 (ボタンが起動してクリックされた後,ポップアップ ボックスは複数の入力 コントロールを含み,グループフィールドを通じて構成されます):
{
"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": "order price",
"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,
}
}],
}
状態バーボタンをクリックすると起動するポップアップボックスのコントロールは,input
またはgroup
.
ボタンのコントロールでは,固定設定は:button
- わかった
タイプ
文字列
ボタンのコントロールのテキスト つまり ボタンの名前です
名前
文字列
ボタン制御がクリック操作を誘発するときに戦略に送信されるインタラクティブなコマンドコンテンツ.
cmd
文字列
インタラクション用のステータスバーボタンを構築する際には,データ入力もサポートされます.インタラクションコマンドは最終的にGetCommand()
追加するinput
状態バーのボタン制御のJSONデータ構造への項目を入力します. ボタンを起動すると表示されるポップアップボックスに入力制御を設定します.
古いバージョンの入力構造と比較して,新しいバージョンにはいくつかの新しいフィールドと変更があります:
{
"type": "selected",
"name": "test",
"label": "topic",
"description": "desc",
"default": 1,
"filter": "a>1",
"group": "group1",
"settings": { ... }, // Component configuration
}
上記のJSON構造の各フィールドの説明と説明:
タイプ
コントロールタイプ (必須フィールド) は,次の設定をサポートします."number"
数値入力ボックス"string"
文字列入力ボックス"selected"
ドロップダウンボックス"boolean"
コントロールを切り替える
名前 現在の JSON 構造が入力フィールドのフィールド値である場合,レーベルフィールドが設定されていない場合,name は状態バーボタンをクリックした後にポップアップボックスにポップアップされるコントロールタイトルです. 現在の JSON 構造がグループフィールドのフィールド値 (配列構造) の要素である場合,名字は制御タイトルとして使用されません.名字フィールドは制御入力コンテンツのフィールド名を表示するために使用されます.例えば,グループフィールドの抜粋は例として使用されます:
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down 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"}]
}
]
}
このスニペットによると,ステータスバーボタンがインタラクションを誘発した場合,ポップアップボックスは4つのコントロールでポップアップします.これらはすべてドロップダウンボックスのコントロールです.各コントロールのオプションを設定し,インタラクションメッセージを送信するためにOKをクリックした後,戦略のGetCommand関数は受信します.cmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}
- わかった
JSON構造の名前の値は,返されたインタラクティブな情報のフィールド名として使用されます.例えば:comboBox1,comboBox2,など.
ラベル コントロールのタイトルを設定するために使われます
記述 コントロールの記述.現在の JSON 構造がグループフィールドのフィールド値 (配列構造) の要素であり,レーベルフィールドが設定されていない場合,記述は,状態バーボタンをクリックした後にポップアップボックスに表示されるコントロールタイトルです.
デフォルト 制御装置のデフォルト値
フィルター 選択器,制御を隠すのに使用する.このフィールドを設定しないことは,フィルタリング (コントロールを表示する) が行われないことを意味します.このフィールドを設定すると,表現が真であるときフィルタリング (コントロールを表示する) が行われません.表現が偽であるときフィルタリング (コントロールを表示しない) が行われます.
グループ 折りたたむことができるコントロールのグループを制御するために使用されます.
設定 コンポーネント設定,コントロールには様々なUIオプションがあります.このオプションを使用して特定の設定を行います.例えば:
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
設定:
setings.required: 設定が必要かどうか
settings.disabled: 設定を無効にするか否か
settings.min: type=number で有効で,文字列の最小値または最小長を示します.
settings.max: type=number で有効で,文字列の最大値または最大長を示します.
settings.step: type=number と render=slider で有効で,ステップ長さを表示する.
settings.multiple: type=が選択されている場合有効で,複数選択がサポートされていることを示します.
settings.customizable: type=が選択されたときに有効で,カスタマイゼーションがサポートされていることを示す.ユーザーはドロップダウンボックスのコントロールで直接編集し,新しいオプションを追加することができます.新しく編集されたオプションが選択された場合,インタラクションが起動するときにオプションが表示する値の代わりにオプションの名前を使用します.
settings.options: type=選択された場合有効で,選択オプションのデータ形式を表示します: [
インプット
JSON
についてinput
状態バーボタンをクリックすると起動します.group
そしてinput
コントロールのグループを構成します.group
データの構造はinput
フィールドの値. 上の記述を参照してくださいinput
field.
グループ 配列
バイリンガル設定をサポート:
{
type:'selected',
name:'test',
label:'选项|options',
description:'描述|description',
default:0, // Here, the default value is set to 0, which means the value in the option {name:'xxx|yyy',value:0}
filter:'a>1&&a<10',
group:'分组|group',
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
}
{@fun/Log/LogStatus ログステータス}
このJSONは,カスタム・ドラッグ関数のチャート構成情報を設定するために使用されます.Chart()
. 使用されているチャートライブラリはHighchartsです.ここにはいくつかの基本的な設定フィールドのみがリストされています.
プラットフォーム拡張フィールド.Highstocksチャートを使用するには true に設定; Highchartsチャートを使用するには false に設定.
__is ストック 文字列
{
layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
height: 300, // Specify height
}
延長 JSON グラフのタイトル タイトル 文字列 X軸の配置 x軸 JSON Y軸の配置 y軸 JSON グラフデータシリーズ シリーズ JSON
簡単な図面の例です
// This chart is an object in JavaScript language. 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. If you are interested, you can change it to false and run it.
__isStock: true,
// Zoom tool
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
// title
title : { text : 'Price difference analysis chart'},
// Select 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
},
// The horizontal axis of the coordinate axis is: x-axis, and the current setting type is: time
xAxis: { type: 'datetime'},
// The vertical axis of the coordinate axis is: the y-axis, the default value is adjusted according to the data size
yAxis : {
// title
title: {text: 'Price difference'},
// Whether to enable the right vertical axis
opposite: false
},
// Data series, this property saves each data series (line, K-line chart, label, etc.)
series : [
// The index is 0, and the data array stores the data of the index series.
{name : "line1", id : "line 1,buy1Price", data : []},
// The index is 1, dashStyle:'shortdash' is set, that is, a dashed line is set
{name : "line2", id : "line 2,lastPrice", dashStyle : 'shortdash', data : []}
]
}
function main(){
// Call the Chart function to initialize the chart
var ObjChart = Chart(chart)
// Clear
ObjChart.reset()
while(true){
// Get the timestamp of this poll, which is a millisecond timestamp. Used to determine the position of the X-axis written to the chart
var nowTime = new Date().getTime()
// Get market data
var ticker = _C(exchange.GetTicker)
// Get the buy price from the return value of the market data
var buy1Price = ticker.Buy
// Get the last transaction price. In order to prevent the two lines from overlapping, we add 1.
var lastPrice = ticker.Last + 1
// Use the timestamp as the X value and the buy price as the Y value to pass into the data sequence of index 0
ObjChart.add(0, [nowTime, buy1Price])
// Same as above
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
}
}
{@fun/Log/チャート・チャート}
このJSONは,カスタム・ドラッグ関数のチャート構成情報を設定するために使用されます.KLineChart
基本的な設定フィールドがいくつかだけリストされています.
メインチャートで描くかどうか オーバーレイ ボール X軸の配置 x軸 JSON Y軸の配置 y軸 JSON カンドルスタイク・チャート設定 ろうそく JSON
参照してくださいKLineChart 関数を用いたグラフの描画に関する特別記事.
{@fun/Log/KLineChartKLineChart} クライン・チャート クライン・チャート
JSON は,JSON が読み込むデータを設定するために使用されます.exchange.SetData()
JSONデータは配列構造で,各要素も配列である.[time, data]
.
データのタイムスタンプで,このデータの時刻を表示します.
時間
番号
コンピュータで読み込まれるデータの中で特定の時間に対応するデータの一部です.exchange.SetData()
戦略が実行されているとき,exchange.GetData()
この関数は,現在の時間に応じて,対応するタイムスタンプでデータを取得します.
データ 文字列,数, bool,オブジェクト,配列など
バックテストシステムにデータをロードし,戦略バックテストを実行しているときにデータを取得する例:
/*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)
}
}
{@funSetData}, {@funGetData} 面白いデータがある
このJSONは JSONが返したデータ構造ですEventLoop()
機能EventLoop()
機能モニター: 1. WebSocket に読み取れるデータイベント 2. Exchange.Go (※) と HttpQuery_Go (※) の関数と並行するタスク完了イベント 3. メッセージイベントは,WebSocket が作成したスレッドで送信されます.threading.Thread()
JavaScript 言語の戦略で機能します
イベントシーケンス番号 第2条 番号 イベント名 イベント 文字列 イベントスレッドID スレッド 番号 イベントインデックス インデックス 番号 ナノタイムスタンプ ナノ 番号
試しにexchange.Go()
プログラムによって返されるイベントデータ構造EventLoop()
function.
{
"Seq":1,
"Event":"Exchange_GetTrades",
"ThreadId":0,
"Index":3,
"Nano":1682068771309583400
}
JavaScript 言語戦略の同時実行スレッド (JavaScript 言語戦略の同時実行スレッド) でthreading.Thread()
機能) がpostMessage()
メッセージを送信するために使用されます.EventLoop()
メッセージを受信するスレッド内の関数は,次のイベントデータ構造を監視します.
{
"Seq":4,
"Event":"thread",
"ThreadId":1,
"Index":0,
"Nano":1727592066508674000
}
{@fun/Global/EventLoop イベントループ}
このJSONは JSONが返したデータ構造ですDBExec()
SQL 文を実行するときに返されます.exec()
方法によって作成されたオブジェクトのDial()
function.
検索するデータの列名,文字列数列 コラム 配列 特定のデータがクエリされ,各データが列名に対応する. 値フィールドの値は2次元の配列であり,各要素は配列とデータレコードである. 値 配列
データベース内のデータをクエリする例:
{
"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
"values":[
[1518970320000,100,99.1,90,100,12345.6],
[1518960320000,100,99.1,90,100,12345.6]
]
}
{@fun/Global/DBExec DBExec}, {@fun/Global/Dial Dial} ダイヤルする
このJSONは,メンバー関数によって返されるデータ構造です.join()
についてThread
ファイルに並行するスレッドに関する情報を保存します.JavaScript
言語戦略Thread
糸のオブジェクトを指します.threading.Thread()
.
スレッドID id 番号 糸が締めくくられるかどうかです 終了 ボール ナノ秒で糸の走行時間 経過した 番号 スレッド関数の返し値 レット 番号
次のコードは,タイムアウトメカニズムをテストします.join()
機能についてThread
返回値を印刷するjoin()
function.
function testFunc() {
for (var i = 0; i < 5; i++) {
Log(i)
Sleep(300)
}
}
function main() {
var t1 = threading.Thread(testFunc)
Log(t1.join(1000)) // undefined
Log(t1.join()) // {"id":1,"terminated":false,"elapsed":1506864000}
} ```
{@fun/Threads/Thread/join join}
資金提供
内蔵変数