Python での価格動向分析による定量的な取引戦略

作者: リン・ハーンリディア, 作成日:2023-01-11 11:35:36, 更新日:2023-09-20 11:20:06

img

Python での価格動向分析による定量的な取引戦略

価格動向取引戦略の紹介

モメントーム・トレーディング戦略は,特定の期間における開口価格,最高価格,最低価格の関係を通じて,ロングとショートポジションの力を比較して分析し,市場におけるロングとショートフォースの現在の分布を間接的に理解することを可能にします.価格変動の分析は,将来の価格動きを追跡するために使用されます.

価格動向分析は,伝統的な手動投機注文で広く使用されており,特に日々の一方的な傾向を決定する際に使用されています.古い Klischee,状況の恩恵を受けるためには何が必要ですか.状況の最良の定量化は,ロングとショートポジションの間の強度比較の定量化です.価格動向分析は最高の指標の一つです.

デジタル通貨の自動スポット取引プログラムを開発するハウビー.

価格動向の計算式

AR = [N日間のすべての (High-Open) の合計/N日間のすべての (Open-Low) の合計] * 100

その 中 に は:

  • N: 日々の時間サイクルの統計窓は通常,デフォルトで30日です.なぜなら,月の有効な取引日は約30日です (デジタル通貨の24/7取引は保守的かもしれません)

  • 高値: 1 日間の最高値

  • オープン: 1 日間の開場価格

  • 低値: 1 日間の最低値

価格の勢いをどう使うか

価格動向は,開通価格が一定期間で最も高い価格と最も低い価格の間の位置を反映しています.この位置は,両者の力を判断するための基盤です.

  • この値が100くらいだと仮定します. 100以上であれば,ロングポジションフォースが増加し始めます. 100未満であれば,ショートポジションフォースが集まるようになります.
  • AR値が上昇すると,市場は活発で人気があり,ロングポジションが急上昇していることを意味しますが,価格が高すぎると,価格は過買い領域に入っており,ポジションを閉じる時間を選択する必要があります.AR値の高さの特定の基準はありません.一般的に,AR値が120に上昇すると,価格は戻る可能性があります.
  • AR値が下がると,市場は下落しており,ショートポジションが満開であることを示し,ロングポジションの努力が必要である.AR値が低すぎると,価格は過売り領域に落ちた可能性があることを示し,ロングに行く機会を待つことを検討することができます.一般的に,AR値が50を下回ると,価格はいつでも下がり止まり上昇します.

注:上記の数字はすべてデフォルト値であり,真実の公式ではありません.実際の取引のプロセスでは,市場の変化に応じて現在の市場状態に適応するためにこの範囲を調整する必要があります.

Python で価格動向に関する定量的な取引戦略の実施

いつものように オープンしますFMZ.COMドーカーとロボットを展開します. そして,ドーカーとロボットを起動します.

ドッカーとロボットの展開について 私の前の記事を参照してください:https://www.fmz.com/bbs-topic/9864.

ドーカーを展開するために独自のクラウドコンピューティングサーバを購入したい読者は,この記事を参照してください:https://www.fmz.com/digest-topic/5711.

戦略を追加するボタンをクリックします.

図のように,戦略編集ページの右上隅に Python のようにプログラミング言語を選択してください.

img

次に,我々はコード編集ページにPythonコードを書きます. 次のコードには非常に詳細な行ごとにコメントがあります.読者は理解するのに時間をかけることができます. さらに重要なのは,この戦略はスポット取引に基づいて書かれていますが,以下のコードの拡張性はフューチャー取引も考慮に入れます. 興味のある読者は,次のコードをフューチャー取引に書き直してみることができます. 戦略そのものの論理は普遍的です. FMZ Quantプラットフォームでは,主要なスポットフューチャーおよび取引所のAPIインターフェースを用意しました. そのため書き直しは非常に簡単で便利になります.

Huobiのビットコインスポットを 取引対象として利用し この戦略を実装します

import types # Import the Types module library, which is designed to handle the various data types that will be used in the code.
def main(): # The main function, where the strategy logic begins.
    IDLE = 0 # It is used to mark the position status, which can be understood as 0, that is, idle status, i.e. short position status.
    LONG = 1 # Long positions
    SHORT = 2 # Short position. Note that this strategy is applied to the spot market, so there is no short opening or position. This is written here to facilitate understanding of the strategy and future expansion (such as extending to the futures market).
    state = IDLE # Variables that mark the status of a position
    while True: # Enter the loop
        r = exchange.GetRecords() # GetRecords is the official API of the FMZ Quant Platform, for detailed usage please refer to: https://www.fmz.com/api.
        if len(r) <= 1: # Judge whether the K-line is larger than one, that is, whether it is currently in the open state, or it may enter an endless loop. Here, it is also convenient for readers to expand, and the trend state of a larger K-line period is more stable.
           Log("The number of bars is not enough, wait for the next bar...") # Output logs
           continue # Python loop control statement, continuing with the next part of the loop.

        # Begin quantitative analysis of price momentum
        ar = sum(r.High - r.Open) / sum(r.Open - r.Low) * 100 # Calculation formula

        account = _C(exchange.GetAccount) # Get account information, _C is also the official API of the FMZ Quant platform, for usage, please refer to: https://www.fmz.com/api.

        if ar < 95 and (state == IDLE or state == SHORT) :  # If the AR value is less than the oversold line and the account has funds, then buy all positions.
           
           if account["Balance"] > 50:
                exchange.Buy(-1, account["Balance"] * 0.9) # Buy all positions of the market order
                state = LONG # Change the position status to LONG
                  
        elif ar > 80 and (state == IDLE or state == LONG):  # If the AR value is greater than the overbought line and the account has a position, sell the whole position.
            
           if account["Stocks"] > 0.01:
                exchange.Sell(-1, account["Stocks"] * 0.9) # Sell all positions market order
                state = SHORT # Change the position status to SHORT
                      
        LogStatus(_D(), exchange.GetAccount() , state) # Update log information

戦略のバックテスト

戦略を書いた後,まず最初に行うべきことは,歴史的なデータでどのように振る舞うかをテストすることです.しかし,バックテストの結果が将来の予測に等しくないことに注意してください.バックテストは,当社の戦略の有効性を考慮するための参照としてのみ使用できます.市場が変化し,戦略が大きな損失を起こすと,私たちは時間内に問題を発見し,上記の値などの新しい市場環境に適応するために戦略を変更する必要があります.戦略が10%以上の損失を抱えている場合,私たちはすぐに戦略の運用を停止し,その後問題を見つけることができます.私たちは値調整から始めることができます.

戦略編集ページでバックテストをクリックします. バックテストページでは,異なるニーズに応じてパラメータの調整を便利かつ迅速に実行できます. 特に複雑な論理と多くのパラメータを持つ戦略では,ソースコードページに戻り,一つずつ修正する必要はありません.

バックテストの時間は最後の月です. Huobi スポット取引所と BTC トレーディングターゲットを追加するにはクリックします.

img

バックテスト結果:

img

この月のバックテストでは 戦略がうまく機能しているのがわかります

価格動向戦略の利点とデメリット

  • 利点 他の伝統的な技術指標と比較して,価格モメンタムの利点は,単一の開盤価格または閉盤価格を使用せず,最高価格と最低価格を導入することである.それらは動的に比較され,市場情報は日中の価格変動を通じてより包括的で,反応性があり,マクロになります.

  • デメリット 価格動向値を独立して価格が高くすぎるか低くすぎるか判断するために使用し,長/短を判断するには,主要なトレンドの波の初期にオフになる可能性が高いか,または主要なダウン市場の波の初期に底を釣る可能性があります. 一般的には,戦略は依然としてショック効果戦略です.

戦略の値設定も取引対象の特徴に応じて決定する必要があります.デジタル通貨市場の価格変動は比較的大きく,取引量は巨大で,特にビットコインなどの主流通貨では上昇と落ち込みに制限はありません.したがって,値は伝統的な株式市場よりも高いです.80超売り線は通常触れるのが困難で,購入信号は少ないです. 170の超買い線はしばしば値以下ですが,販売信号は頻繁に行動されます. これにより,戦略はほとんどの時間をショートポジションに過ごし,資金利用量は非常に低くなります.例えば,今年1月以降,ビットコインの価格は牛市の波で3500からほぼ13000に上昇しました. 値値は非常に早く170を超え,非常に高い状態にあります.従来の線によると,170を超えて売れば,非常に小さな部分しか得られないし,ブール市場の開場後に利益を得る信号があります.

したがって,市場には決して聖杯の取引戦略はありません.バックテストとデバッグなしで常に利益を得ることはできません.主観的なトレーダーと同様に,私たちは定量的なトレーダーが異なる方法で同じ目標にたどり着きます.私たちは市場の変化に応じて地元の状況に適応し,市場の変化に反応する必要があります.戦略が非効率である場合,私たちはそれを間に合わせなければなりません.

メッセージを残してください.https://www.fmz.com/bbsプラットフォームの戦略や技術に関しても FMZ Quantプラットフォームには 専門家がいて 皆さんの質問に答えています


関連性

もっと