そして,第2章にたどり着きました. 先の章のツアーを通して,発明者による量化に関する様々な機能について少し理解すべきです. 次にコードを書くことにしましょう.
第1章のツアーの途中で,管理者,取引所が追加されたと仮定すると,もちろん,私たちは発明者定量化シミュレーション盤を使ってコードテストを行うことができます.
まず,テスト1と呼ぶ戦略を作ります.
戦略編集インターフェース
コーデは以下の通りです.
function main() {
Log(exchange.GetAccount()); // 看过API 文档后知道, exchange就是交易所对象,实际上策略有个全局变量
// exchanges 数组,这个数组存放的就是你创建机器人或者回测时添加的交易所(可以是多个)
// 添加1个交易所 exchanges 数组就只包含1个交易所对象,即添加的交易所对象。
// 那么 exchange 和 exchanges 是什么关系呢? 其实 exchange 就是 exchanges[0] ,
// exchange 就是 exchanges 数组的第一个元素(这里这个元素是交易所对象)。
// Log()函数应该也不陌生吧,这个API 就是输出一条日志,日志内容就是Log括号里面的参数。
}
ロボットを作るのは,TEST1というバインドネームで,発明者によって定量化され,模擬盤でテストされるキットテスト1という戦略です.
実行が完了すると,アカウントの情報が表示されます.
模擬ディスクのアカウント情報と比較してみましょう.
function main() {
Log(exchange.GetAccount()); // 已经知道怎么获取 主交易所 账户信息了
//下面我们来试试 不停的获取行情数据。
while(true){ // 这里用一个无限循环的结构来不停的获取 交易所行情数据。
Log("行情数据:", exchange.GetTicker()); // 哇! Log() 函数的括号里面可以写2个参数,第一个参数是: "行情数据:"
// 第二个参数是 exchange.GetTicker() 这个函数的返回值。就是主交易所的行情数据。
// 注意 Log() 函数的参数要用 逗号分隔。
Sleep(1000); // 咦~ 这个又是什么? 答:机器人程序 执行循环也需要休息!它可是执行很快的哦!(一秒N次)
// Sleep 函数的作用就是让程序暂停一会儿,括号里面的参数 1000 是 毫秒数, 1秒 = 1000毫秒。Sleep(1000);就是暂停1000毫秒。
// 不要小看这个参数,这个参数控制了程序的轮询频率,间接影响访问 交易所API 的频率,有些交易所API访问过于频繁可是会拒绝访问的。
}
}
フォローするGetTicker関数によって得られたデータでは,最高価格と最低価格の差が大きいことがわかります. GetTickerが返した市場データのHigh,Lowは,取引所が設定した周期内の最高価格,最低価格です. 上記のテストは,発明者の量化模板,発明者の量化模板です.
GetRecords(Period) 返回一个K线历史, K线周期在创建机器人时指定, Record数组结构
不加参数, 默认返回添加机器人时时指量的K线周期, 但也可以自定义K线周期
支持: PERIOD_M1 指1分钟, PERIOD_M5 指5分钟, PERIOD_M15 指15分钟, PERIOD_M30 指30分钟, PERIOD_H1 指1小时, PERIOD_D1 指一天
標準周期 (約5分) のK線データを取得するテストコードを書きました.
function main() {
Log(exchange.GetAccount()); // 已经知道怎么获取 主交易所 账户信息了
//下面我们来试试 不停的获取行情数据。
var records = exchanges[0].GetRecords(); // 按照默认周期获取K线数据
Log("records:", records); // 在日志中输出 获取到的K线数据。
}
画像の出力:
記録:
[{
変数 records は,K 行の時間順序で,遠くから近くまで順序付けされている構造の配列である. K線について,例の通り,以下のように説明します: (いくつかのグラフでは,赤は陽線,緑は陰線,そして,他のグラフでは,反対の色が示されています.)プラットフォームの5分周期のK線例図をご覧ください. 警告:K線周期が完了した後,その値は決定される.実用ではvar records = exchanges[0].GetRecords (GetRecords)) と呼ぶ.返されるデータrecordsの最後の要素である records[records.length - 1] は,周期が完了するまで絶えず変化している.
GetRecords は,パラメータを追加しない場合,ポリシー設定のデフォルト周期データに戻します. また,パラメータを入力して,K行の周期を指定することもできます. 現在,リトークシステムではGetRecords のパラメータ転送をサポートし,周期を指定します. (パラメータを追加しない場合,デフォルト周期データに戻します).
function main() {
var depth = exchanges[0].GetDepth(); //获取市场深度信息, 返回订单薄信息,一个对象包含2个属性,每个属性是一个对象数组。
Log("depth:", depth); // 日志中输出,一下的输出是 整理过的格式,是方便读者理解,实际上是所有内容都在一行显示的。
}
このコードの復習は以下の通りです.
depth:
{"Asks":[{"Price":4726.07,"Amount":15}, // 卖单数组,回测时,数据都是模拟出来的,所以Amount 都是 15,索引为0的是卖一,依次类推。
{"Price":4726.08,"Amount":15},
{"Price":4726.09,"Amount":15},
{"Price":4726.1,"Amount":15},
{"Price":4726.11,"Amount":15},
{"Price":4726.12,"Amount":15},
{"Price":4726.13,"Amount":15},
{"Price":4726.14,"Amount":15},
{"Price":4726.15,"Amount":15},
{"Price":4726.16,"Amount":15},
{"Price":4726.17,"Amount":15}],
"Bids":[{"Price":4726.05,"Amount":15}, // 买单数组,索引为0的是买一, 向后依次类推。
{"Price":4726.04,"Amount":15},
{"Price":4726.03,"Amount":15},
{"Price":4726.02,"Amount":15},
{"Price":4726.01,"Amount":15},
{"Price":4726,"Amount":15},
{"Price":4725.99,"Amount":15},
{"Price":4725.98,"Amount":15},
{"Price":4725.97,"Amount":15},
{"Price":4725.96,"Amount":15},
{"Price":4725.95,"Amount":15}]
}
関連オーダー薄はこんな感じです (OKCoinの実際のデータです). 実際のプロセスにおける市場深さの情報は (OKCoinのオーダー薄は) 急速に変化し,興味のある生徒はOKCoinを登録し,ログインして見ることができます.
市場詳細情報 (営業データ) は,どのように使用されますか?営業データは,多くの用途があります. 例えば,食事の予約 (もちろん,リストアップもあります).
function main() {
var depth = exchanges[0].GetDepth(); // 获取市场深度
Log("depth:", depth); // 日志输出显示
Log(exchanges[0].GetAccount()); // 输出 吃单前的 账户信息
var buyPrice = depth.Asks[0].Price; // 设置吃卖单的价格,即卖一,
// 有时为确保吃单成功,这样处理:var buyPrice = depth.Asks[0].Price + slidePrice;
var buyAmount = depth.Asks[0].Amount; // 吃卖单的量
exchanges[0].Buy(buyPrice, buyAmount); // 执行买入操作, 吃掉卖一 这个单子
Log(exchanges[0].GetAccount()); // 显示买入后的 账户信息,对比初始账户信息。可以对比出 买入操作的成交的数量。
}
発明者の定量化模擬ディスクの実行結果:
フライドッグ2つ目の発見は,私がアメリカの公共管理者を選んだとき, ロボットのリストには警告符がありませんでしたが,実行すると, ログには何も出ていません. ログには何も出ていません.
フライドッグこの問題への補足は,ロボットのリストの状態は,赤色の上方三角形に驚嘆符が表示され,異常提示のように見える.
フライドッグ小小夢,こんにちは,私はプラットフォームでシミュレーションテストを行っています. 最初のステップはアカウント情報をテストし,ログ出力がなく,エラーが提示され,問題がどこから来ているのかわかりません. ロボットテストコード: main ((() {の関数について ログ (exchange.GetAccount) ログ (("テスト"); {cH00ffff} 結論は テスト1 戦略:テスト1 (最終更新 2018-09-13 14:25:33) 日付: 2018-09-13 14:07:57 に作成 最近は 2018-09-13 14:40:24 に終了しました 2018-09-13 14:40:25 状態:K線周期 1分 誤り 中国にホスト: 42.236.82.38 - linux/amd64 (公開), ID: 118025 取引プラットフォーム:BotVS/BTC_USD
フライドッグ小小夢,こんにちは,私はプラットフォームでシミュレーションテストを行っています. 最初のステップはアカウント情報をテストし,ログ出力がなく,エラーが提示され,問題がどこから来ているのかわかりません. ロボットテストコード: main ((() {の関数について ログ (exchange.GetAccount) ログ (("テスト"); {cH00ffff} 結論は テスト1 戦略:テスト1 (最終更新 2018-09-13 14:25:33) 日付: 2018-09-13 14:07:57 に作成 最近は 2018-09-13 14:40:24 に終了しました 2018-09-13 14:40:25 状態:K線周期 1分 誤り 中国にホスト: 42.236.82.38 - linux/amd64 (公開), ID: 118025 取引プラットフォーム:BotVS/BTC_USD
ホクシェラト模擬時に呼び出し `exchange.GetTicker() `,よく出てくる **GetTicker: timeout**,なぜですか?
ほらこんにちは. リアルタイムシミュレーションは,その取引所のリアルタイムデータを使っていますか?
ビジアスオチェイシゾング
シャンディアンリユexchange.GetDepth ((() は,現在の取引所のすべての挂字情報を返しますか?
マオバオGetRecords (Period) は,K行の歴史を返します.しかし,このK行の歴史は,どの数行バーを含んでいるのでしょうか.
ペンギン鍵が間違っていたので 修正しました
ペンギンGetAccount: 署名が一致していない どうしたんだ?
アンディ2シンプル模擬ディスクの深さのamountはなぜ15になるのか?模擬ディスクは過去データか,ランダムに生成されたデータか.過去データであればamountは値を持つことができる.
cjz140record は関数で,length は何ですか?depth はオブジェクトですか?オブジェクトと関数はどのように区別されますか?例えば,depth はオブジェクトで,asks は配列です.price とamount は属性です.
ファングベイSlidePriceとは何か
発明者 量化 - 微かな夢QQの公式グループ @administratorで,問題があれば追加できます.
フライドッグありがとうございました. 指示通り,もう一度試してみます.
発明者 量化 - 微かな夢パブリックホストの問題なのかはわかりませんが,プライベートホストでテストできます. プライベートホストは可能でなければなりません.
発明者 量化 - 微かな夢ブログのページをご覧の皆様には,
発明者 量化 - 微かな夢これは,戦略がどのような実行論理であるか,または,戦略が正常に動作する,ただし,いかなる操作も触発しないかを具体的に示す可能性があります.
発明者 量化 - 微かな夢ロボットが動いていると赤色で表示される. ロボットのログ,または管理者のログの情報を確認する必要があります.
発明者 量化 - 微かな夢最近のネットワーク上の問題は,また,模擬ディスクの行列が更新されていないときに遅刻しているため,exchange.IO ("mode") を使用して行列取得モードを調整できます.
発明者 量化 - 微かな夢実盤模擬は24時間稼働する模擬盤であり,いくつかの主流取引所の市場をフォローしている. 走行,模擬盤を使用するすべてのユーザーはこの模擬盤の参加者である. 市場は参照取引所と完全に一致しないが,おそらく動向は一致している.
シャンディアンリユ分かりました ありがとうございました
発明者 量化 - 微かな夢リアル・プレート・レベル回計,買取・売却1段がリアルデータである.
シャンディアンリユありがとうございました.また,模擬復習のリアルディスクレベルのシミュレーションでは,exchange.GetDepth (() は,BotVSに適合したデータか,実際の歴史的データですか? 返した状況に応じて,実際の歴史的データとはあまり似ていません.
発明者 量化 - 微かな夢返却するファイル数 具体的にはどれぐらいか見てみてください. 取引所のAPIインターフェイスが提供されている. いくつかの取引所は返却するものが多く,少なめ,そしてある取引所はインターフェースがサポートされています. 深度結合,サポートがないものは,具体的には取引所の実装によって,BotVSはデフォルトで返却されたデータで包装されています.
発明者 量化 - 微かな夢これは指定できない. 返回するK行の数が取引所によって推し進める. 各取引所によって推し進める数は異なる可能性があります. 他の取引所ではK行インターフェイスが提供されていません. 托管者は自力で取引所の取引記録を収集し,K行を生成します. このK行は最初の根から開始して累積されます.
発明者 量化 - 微かな夢初めは私も間違っていました
発明者 量化 - 微かな夢この問題について考えてみると 2つのポイントがあります. 1,深層データ量は非常に巨大で,毎秒変化し,急速に変化し,実際に私たちが見ているのはデータ片段だけです. - 2,実際の深度データを作っても,この時点で回測の参加者は私たち自身であり,他の参加者はいませんので,注文の薄深度環境を正確にシミュレートすることはできません. 実際,現在の回測システムとはほとんど異なります. しかし,我々は,可能な限り現実に近いものを最適化することを検討します.
アンディ2シンプルディープデータはまだ起こっていないし,価格曲線は過去にも起こっていた. 個人としては,過去と将来のデータを組み合わせて現在の買い買いを判断する方が信頼性が高いと考えている. ディープデータも記録することを強く推奨している.
発明者 量化 - 微かな夢深度データ 大きすぎる.全部記録すれば,非常に多くなる.だから,深度データは,第1階層を除いて,他のものは模擬数値である.
発明者 量化 - 微かな夢records は API 関数 GetRecords が返した K 線データを受け取る変数で, length は JS 言語における数列型変数の長さ属性であり,数列の長さ (すなわち,その要素の数) を表しています. depth は GetDepth 関数が返した深さデータを受け取る変数であり,これらの records、depth、ticker のデータ構造は API 文書で確認できます.
発明者 量化 - 微かな夢滑り価格,翻訳すると少し直言的に,単価を少し追加して食べるため,取引が容易である.