データ再生機能に基づいて開発された線形待機オーダーフロー戦略

作者: リン・ハーンリディア作成日:2022-12-23 20:06:04 更新日:2023-09-20 09:41:28 更新日:2023-09-20 更新日:2020-09-20 09:41:28 更新日:2020-09-20 更新日:2020-09-20 更新日:2021-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20 更新日:2020-09-20

img

データ再生機能に基づいて開発された線形待機オーダーフロー戦略

前言

貿易は芸術であり,芸術はインスピレーションから生まれると言われています. だから今日は,私のトレードインスピレーションを探索するために,FMZ Quantデータ再生機能を使用する方法をお話ししたいと思います.

取引のインスピレーションと市場感覚

通常,インスピレーションと呼ぶものは,人々が思考過程で生み出す創造的な状態を指します.トレーダーにとって,私たちの脳の左脳は,戦略書き,資本配置,パラメータ設定などの一連の規則の形成を完了しました. 取引のインスピレーションと市場感覚は,脳の右脳から来ます.

市場感覚は,この時点で起こっていることのデジャブーのような曖昧な感覚である.取引における直感のようなこの第6感は論理的に推論され,分析されていないが,市場の将来の傾向を予測することは,トレーダーに購入または販売の決定を下すよう促す.

インスピレーションを得る方法

市場感覚は,一般人の目には謎めいたものです. それは謎めいた才能です. それによって,あなたは市場で立つことができます. 実際には,それは脳による主観的な取引経験の要約です. それは市場を観察して何年も実現した曖昧な偏見の感覚です.

厳密に言えば,インスピレーションとは市場感覚とはまったく同じではありませんが,私たちは何千回もの市場精製の後,市場をより深く理解し,戦略を容易に開発できると信じています. ですから,この才能を獲得し,より多くの取引戦略を開発したい場合は. 多くの取引を通じてのみ,私たちは取引システムを改善することができます.

しかし,国内商品先物や株式は,1日数時間の取引時間しか持っていないため,市場を観察し,独自の利益パターンと取引規則を形成し,直接取引のみから意識下での条件反射を訓練する経験を改善することは圧倒的であろう.長期間のコストを支払うことに加えて,ほとんどのトレーダーは資本損失のコストも負担する.この問題を解決するために,FMZ Quantはデータ再生機能を開発した.

データ再生の使い方

データ再生機能は,取引時間に関係なく訓練することができ,さまざまな商品先物やデジタル通貨の種類をサポートしています.市場は手動または自動で再生され,歴史的な市場の開始と終了時間および再生速度を自由に設定できます.他のソフトウェアと比較して,Kラインデータ再生モードが広く使用されています.FMZ Quantは,実際のボット取引のバックテスト環境に本当に近いTickレベルのデータ再生モードを採用し,市場の価格量データを再現し,トレーダーが現実世界に浸透できるようにします.

FMZ Quantの公式サイトを開く (fmz.com) を登録してログインし,ダッシュボードのデータベースをクリックすると,データ再生機能ページが表示されます.オプションボックス4つと選択ボタンが1つあります.まず,選択ボタンをクリックすると,実際のボット再生をサポートする種類のみが表示されます.次に左上部で再生される種類を選択し,次に次の2つのオプションボックスでデータの開始と終了時間を選択し,次にデータの時間期間を実際のボット再生として選択し,最後に,データ再生機能を開始するために右端のGoボタンをクリックします.

img

データラベルの下には3つのセクションがあります.左側は取引履歴があり,閉じたすべてのオーダーは時間順に表示されています.中央には各購入および販売オーダーの20ポジションの深さがあります.右側はデータ再生の制御エリアで,メディアプレーヤーのように手動および自動データ再生方法を選択できます.

img

位置インデックスはカーソルを左から右に前後をドラッグして データを再生する開始時間を 素早く選択できます

img

データ再生の速度は,下部でカーソルを右から左に移動してミリ秒で制御できます.

img

戦略の論理を構築する

価格の上昇と減少に影響を与える要因は,世界経済環境,国家マクロ政策,関連産業政策,供給と需要関係,国際イベント,金利と為替レート,インフレとデフレ,市場心理,未知の要因など,多くの要因があるが,市場の最終価格は,さまざまな当事者との競争とショートポジション側による結果である.より多くの人が販売するよりも購入するならば,価格は上昇する.逆に,より多くの人が購入するよりも販売するならば,価格は減少する.その後,我々は取引戦略を作成するために価格を分析するだけで必要である.

最近の月のBinance取引所のBTC_USDT取引ペアのFMZ Quant再生を通じて,市場は急激に上昇し,減少したとき,Tickのオーダーブックデータは,ロングとショートポジション間のオーダー量の点で明らかに不対称であることを発見しました.市場は増加しているとき,進行中のロングオーダーの数は,明らかに走るショートオーダーの数よりも多いです.市場は増加しているとき,進行中のショートオーダーの数は,明らかに進行中のロングオーダーの数よりも多いです.したがって,注文簿内の待機中のオーダーの量に基づいて,短期間に価格の増加と減少を予測できますか?

答えはイエスです

img

市場が拡大しているとき, 長期順番の数は 短期順番よりも多いのです.

img

市場が減っているとき ショートオーダーの数は ロングオーダーの数より多いのです

長期・短期間の待機注文を計算し,比較するために,深層Tickデータを収集し,長期・短期間の待機注文の組み合わせが非常に異なる場合,潜在的な取引機会となる可能性があります.例えば,長期ポジションオーダーの数はショートポジションオーダーのN倍である場合,市場のほとんどの人が上昇傾向にあり,将来的に短期間に価格上昇の可能性が増加すると考えることができます.ショートセラーの数はロングセラーのN倍である場合,市場のほとんどの人が下落傾向にあり,近い将来に価格減少の可能性が増加すると考えることができます.

取引戦略を書いて

上記の戦略論理に従って,コードで実装され始めます.fmz.com> ログイン > ダッシュボード > 戦略 > 戦略を追加 > 右上角にあるドロップダウンメニューをクリックして Python 言語を選択し,戦略を書くことを開始します. この戦略は教えに導入として機能します.

ステップ1: 戦略の枠組みを書き出す

# Strategy main function
def onTick():
    pass


# Program entry
def main():
    while True:  # Enter the infinite loop mode
        onTick()  # Execute the strategy main function
        Sleep(1000)  # Sleep for 1 second

このフレームワークでは,2つの関数を使用します.メイン関数とオンティック関数です.メイン関数はプログラムの入力です.つまり,プログラムはここから実行します.その後,無限ループモードに入り,オンティック関数を繰り返し実行します.その後,戦略コンテンツをオンティック関数に書き込むだけです.

ステップ2: グローバル変数を書く

vol_ratio_arr = []  # Long/Short positions pending order ratio array
mp = 0  # Virtual positions

vol_ratio_arrがグローバル変数として定義される理由は,私の戦略がTickデータの一部の待機中のロングとショートポジションの比率を収集する必要があるからです. vol_ratio_arr変数をonTick関数に入れた場合,ループで実行することは明らかに不合理です.特定の条件を満たしたときにループモードで変数の値を変更する必要があります.最も合理的な方法は変数をループの外に置くことです.

ポジションマネジメントは,取引論理に関連しているため,非常に必要である.一般的に,我々はスポット取引で口座を取得することによって保有する通貨ペアを計算する.コードを簡素化するために,グローバル仮想ポジション変数は,取引論理を制御するために直接定義される.

ステップ3:現在の空の倍数比を計算する

depth = exchange.GetDepth()  # Get depth data
asks = depth['Asks']  # Get asks array
bids = depth['Bids']  # Get bids array
asks_vol = 0  # All pending orders at ask price
bids_vol = 0  # All pending orders at bid price
for index, ask in enumerate(asks):  # Iterate through the ask price array
    # Linear calculation of all pending orders at the ask price
    asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids):  # Iterate through the bid price array
    # Linear calculation of all pending orders at the bid price
    bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol  # Calculate long/short position ratio

デジタル通貨は通常20レベルのディープデータなので,ロングとショートポジションの比率を計算するために,ロングとショートポジションの注文数を足し合わせることができます. この値が1を超えると,上昇傾向が低迷傾向よりも大きいことを意味します. この値が1未満の場合,上昇傾向が低迷傾向よりも大きいことを意味します.

しかし,区別すべき点があります.待機中のオーダーは開拓市場に近いほど,上昇またはバリッシュへの欲求が強くなります.例えば,第1レベルのオーダーは,20レベルよりも間違いなく上昇する傾向があります.したがって,待機中のオーダーを蓄積するときに,私たちは20レベルのオーダーに線形的に異なる重量を与えなければなりません.これはより合理的です.

ステップ4: 長期・短期ポジション比を一定期間で線形で計算する

global vol_ratio_arr, mp  # Introduce global variables
vol_ratio_arr.insert(0, bidask_ratio)  # Put the long/short position ratio into the global variable array
if len(vol_ratio_arr) > 20:  # If the array exceeds the specified length
    vol_ratio_arr.pop()  # Delete the oldest elements
all_ratio = 0  # Temporary variable, ratio of all long and short position pending orders
all_num = 0  # Temporary variables, all linear multipliers
for index, vol_ratio in enumerate(vol_ratio_arr):  # Variable global variable arrays
    num = 20 - index  # Linear multiplier
    all_num = all_num + num  # Linear multiplier accumulation
    all_ratio = all_ratio + vol_ratio * num  # Accumulation of all long and short position pending orders ratio
ratio = all_ratio / all_num  # Linear long and short position pending order ratio

ロング・ショートポジション比は,長い累積的な待機注文を短い累積的な待機注文で割ることで得ることができる.しかし,これは単なるティックデータである.ただ1つのティックデータしか使用されていない場合,迅速に変化する市場で,1つのティックデータが説得力がないため,売買取引を決定するのは賢明ではないかもしれません.したがって,固定的なティックデータを収集し,最終的に線形計算を通じてフェアバリューを計算する必要があります.

ステップ 5: 注文

last_ask_price = asks[0]['Price']  # Latest buy one price for asks
last_bid_price = bids[0]['Price']  # Latest sell one price for bids
if mp == 0 and ratio > buy_threshold:  # If no currency is held currently, and the ratio is greater than the specified value
    exchange.Buy(last_ask_price, 0.01)  # Buy
    mp = 1  # Set the value of virtual position
if mp == 1 and ratio < sell_threshold:  # If there is currency held currently, and the ratio is less than the specified value
    exchange.Sell(last_bid_price, 0.01)  # Sell
    mp = 0  # Reset the value of virtual position

注文をするときに価格を指定する必要があるため,購入するときに直接最新のセール・ワン価格を使用できます. 販売するときに,直接最新のセール・ワン価格を使用できます. 最後に,注文した後に仮想ポジションの値をリセットします.

結論

上記は,データ再生機能に基づいて開発された線形待機注文フロー戦略のコード分析です.量的な取引の初心者であれば,データ再生機能はゼロコストで取引を学び,取引を理解する時間を短縮することができます.実際のボットまたはシミュレーションされた取引が初期結果を達成するのに通常数年がかかります.データ再生機能が同じ効果を達成するのに数週間かかります.時間を無駄にしない前提で,最小限の損失で取引を学ぶことができます. 先進的なトレーダーにとって,ダイナミック・リプレイは過去の問題を解決し,取引戦略を検証し,改善し,トレーダーの戦略への信頼を向上させ,新しい戦略的インスピレーションを生み出すのに役立ちます.


関連性

もっと