タイムシーケンスデータ分析とTickデータ復習

作者: リン・ハーン優しさ作成日:2019年08月08日 10:05:45 更新日:2023年10月20日 20:11:54

img

タイムシーケンスデータ

タイムシーケンスとは,連続した等間隔の時間段に取得されたデータシーケンスである.量化投資では,これらのデータは主に価格と追跡されている投資標識のデータポイントの動きとして表現される.例えば,株式価格,指定された時間段に定期的に記録されるタイムシーケンスデータは,以下の図を参照して,読者がより明確な認識を得ることができる.

img

この例では,の連続時間間隔は,x軸の14日間の日数を意味している: 2005年3月7日と次の点,2005年3月31日,2005年4月5日,2005年4月19日の差を注意する.

しかし,タイムシーケンスデータを使用すると,通常,日付と価格の2つの列のみを含むデータだけではありません. ほとんどの場合,あなたはデータサイクルの5列を含むデータを使用します. オープニング価格,最高価格,最低価格,閉じる価格. つまり,あなたのデータサイクルは日経レベルに設定されている場合,その日の高,低,閉じる価格の変化は,このタイムシーケンス内のデータに反映されます.

Tick のデータとは

ティックデータは,取引所の最も詳細な取引データ構造である. また,上記のような時間系列データの拡張形式である. オープン価格,最高価格,最低価格,最新の価格,取引量,取引額を含む. 取引データを川に例えれば,ティックデータは川が横断したデータである.

img

上記の図のように,国外取引所では,すべての動きがリアルタイムで市場に推し出されます. 一方,国内取引所では,毎秒2回チェックを行い,その間に動きがある場合は,スナップショットを生成して推し出します. 対照的に,データのプッシュ充電量はOnTimeとしてのみカウントされ,OnTickと呼ばれるものではありません.

このチュートリアルのすべてのコードとタイムシーンのデータは,発明者の量化プラットフォームで取得されています.

発明者によって量化されたTickデータ

国内Tickデータは本当の意味でのTickではないが,このデータを使って再測を行うことは,少なくとも無限に接近し,現実を復元できる.各Tickは,当時の市場におけるこの商品の主要なパラメータを示し,実際の盤に我々のコードが,理論的に2秒間に2回のTickに従って計算されていることを示す.

img

それだけでなく,発明者の量化では,1時間サイクルのデータが載せられている場合でも,データ粒子を調整することができる.例えば,1分に調整する.この時点で,1時間K線は,1分データで構成されている.もちろん,粒子が小さいほど精度が高い.さらに強力なのは,データをリアルディスクレベルのTickに切り替えた場合,リアルディスク環境をシームレスに復元できる.つまり,1秒2回のTick取引所のリアルデータである.

img

このチュートリアルで学ぶべき基本的な概念は既に理解しています. これらのコンセプトはすぐに戻ってきます.

この記事へのトラックバック一覧です.https://www.fmz.com/bbs-topic/1651詳細を見る

職場環境の設定

管理者について,プログラミング経験のある読者は,これを公式に包装されたDockerシステムとして想像することができます. このシステムには,様々な主流取引所の公開APIインタフェースと,戦略の書き込みと復習のための細かい部分の技術的な詳細が包装されています. このシステムの最初の意図は,様々な交易者が発明者の定量化プラットフォームを使用するときに,戦略の書き込みと設計に力を注ぐことを防ぐことです. これらの技術は,策略の詳細をパッケージ化して策略の作成者に提示して,多くの時間と労力を節約します.

  • 発明者による定量化プラットフォームの托管システムの展開

管理者の配備には2つの方法があります

A方法:ユーザが自己レンタルまたは購入したサーバーを,AWS,Ali Cloud,Digital Ocean,Google Cloudなどの各大クラウドプラットフォームに展開する.利点としては,戦略的セキュリティとシステムセキュリティの両方が保証されている.発明者にとって,プラットフォームの量化については,ユーザーをこの方法を使用するよう奨励し,このような分散型展開は,サーバが攻撃される (クライアントであろうとプラットフォーム自体であろうと) 隠された危険から免れる).

この記事へのトラックバック一覧です.https://www.fmz.com/bbs-topic/2848

B方法:発明者の定量化プラットフォームを使用した公共サーバーの展開.プラットフォームは香港,ロンドン,杭州を3つの場所に展開し,ユーザーは取引したい取引所の位置に応じて,近接原則で展開することができます.この点で,優点はシンプルで簡単であり,一鍵で完了し,特に初心者向けに適しています.

img

この記事では,初心者の理解のために,B方法を使用します.

具体的には:登陆FMZ.COM管理者ページで,レンタル管理者をクリックします.

暗号を入力し,成功して展開すると,次の図が表示されます.

img

  • ロボットシステムの概念と管理者の関係

管理者はドッカーシステムのようなもので,ドッカーシステムは標準のセットのようなもので,この標準を展開すると,その標準のためにの例を生成する必要があります.このの例はロボットです.

ボットを作成するのは簡単です.良いホストを展開した後,左側のボットタブをクリックし, create botをクリックし,タブの名前に名前を記入し,ホストの中からちょうど展開した良いホストを選択します. 下のダイアログボックスのパラメータ選択やK線周期などの選択は,主に取引戦略の選択に対応して,特定の状況に応じて選択することができます.

img

この時点で,私たちの作業環境は完成しており,とてもシンプルで効率的で,各機能がそれぞれ機能しています. 次に,戦略を量的に書き始めます.

Pythonで簡単な均線戦略を実現します.

上記では,Tick Data と Time Sequence Data の概念について述べていますが,次に,簡単な均線戦略で,この2つの概念をリンクします.

  • 均線戦略の基本原理

7日間線のような慢周期均線と 3日間線のような快周期均線を同じK線図に適用すると,快周期均線が慢周期均線を横切ると金と呼ばれます.

オープン取引の基本は金叉開多单,死叉開空单,平仓の理念が同じである.

让我们打开FMZ.COM管理センター,ポリシーバックリ,新しいポリシー,左上角のポリシー記述言語で,Pythonを選択します. 以下は,この戦略のコードです. 各行には非常に詳細な注釈があります. 読者はゆっくりと理解してください.

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型

def main(): # 主函数,策略逻辑从这里开始
    STATE_IDLE = -1 # 标记持仓状态变量
    state = STATE_IDLE # 标记当前持仓状态
    initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
    while True: # 进入循环
        if state == STATE_IDLE : # 这里开始开仓逻辑
            n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
            if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                    Log("开仓详情",Dict,"交叉周期",n) # 日志信息
        else: # 这里开始平仓逻辑
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                state = STATE_IDLE # 标记平仓后持仓状态。
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
        Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。

  • 均線戦略の再評価

戦略編集のページでは,戦略の書き込みを完了し,次に,戦略を歴史上どのように表現しているかを見直す. 復習は,いかなる量化戦略開発においても重要な役割を果たしますが,同時に重要な参照としてのみ使用できます. 復習は利益保証とは等しくありません. 市場は常に変化しており,復習は,後世的な行為に過ぎません.

模擬復習をクリックすると,多くの調整可能なパラメータがあり,直接内部で変更することができます. 以後の戦略が複雑になり,パラメータが増えるために,この方法で変更することは,ユーザーがコードに個々の変更を繰り返すのを避け,便利で迅速で,構造が明確であるのを助けます.

img

後ろの最適化オプションは,設定されたパラメータを自動的に最適化し,システムはさまざまな最適化パラメータを試し,戦略開発者が最適な選択肢を見つけるのを助けます.

上記の例から,定量化取引の基礎は,時間配列データの分析,およびティックデータの再測定の相互作用によって行われる,さらに複雑な論理が,この2つの基本的な要素を分離できないことを見ることができる. 差異は次元の差異である. 例えば高周波取引では,より詳細なデータ横断,より豊かな時間配列データが必要である. また,利息取引では,再検査サンプルに対するデータ要求が比較的大きいため,利益拡大と小差縮小の結果統計を明らかにするために,いくつかの取引指標の10年間の連続した深度データが必要かもしれない. 以後の記事では,次々と高周波取引のセットを紹介し,利息取引の戦略を期待してください.


関連性

もっと