月間購入日に基づく定量投資戦略

作者: リン・ハーンチャオチャン,日付: 2023-11-24 14:10:23
タグ:

img

概要

この戦略の主な考え方は,最適な投資収益を達成するために,その日付でデジタル資産を購入し,月の終わりに売却することによって,毎月最適な購入日を発見することです.この戦略は,日中の価格変動を利用して過剰な収益を得たい投資家に適しています.

戦略原則

この戦略は,ユーザーによって定義された月間購入日と販売日に基づいて実行されます.資産を購入することによって購入日に長引いて,設定された場合,販売日にポジションを閉じる.そうでなければ,戦略終了日にポジションを閉じる.これは異なる月間購入日付からの利益差をテストすることができます.

購入シグナルの論理は,ユーザが定義した購入日であり,戦略の有効日付範囲内であれば,ロングをします.

閉店シグナルの論理は,もし売り日が設定され,現在販売日であれば,閉店シグナルです.もし売り日がなく,戦略終了日を超えた場合,また閉店シグナルです.

戦略 の 利点

  1. 毎月最大の価格変動の日付を見つけ,高周波の日中取引を通じて過剰な収益を得ることができます.
  2. 異なる購入日付からの利益パターンを比較することによって最適な購入ポイントを特定することができます
  3. 月中の重要な出来事に基づいて最適な購入日付が変化するかどうかを判断できます
  4. 異なる販売日付を設定することで短期と長期間の取引をバランスできます

リスク と 解決策

  1. 購入後の価格暴落リスク

    • 最大損失を制限するためにストップ損失を設定する
    • 高流動性のある資産を選択して,極端な価格変動を避ける
  2. 最適の購入日付の変更

    • データ変更履歴を監視し,最適な購入ポイントを適時に調整する
    • 高リスク期間のポジションサイズを減らす
  3. パラメータの設定が誤ったため発生する損失

    • 異なるパラメータを段階的にテストし,利益差を比較する
    • 試験のための代表的な時間範囲を選択する

オプティマイゼーションの方向性

  1. 入国地点を決定する際の要因を考慮する

    • 価格に対する月の主要なニュースイベントの影響を考慮
    • 関連デジタル資産の価格動向を分析する
    • 最適なタイミングを決定するために機械学習モデルを追加します
  2. ポジション管理メカニズムの最適化

    • ポジションを閉じるダイナミックな利益を取ること
    • 波動性に基づいてポジションサイズを調整する
    • 期間の間での保持ポジションを考慮する
  3. 他の取引市場への拡大

    • より多くのデジタル通貨取引ペアに適用
    • 株式や外為などに適用されます
    • 市場間仲介戦略を策定する

概要

この戦略は,異なる購入日付からの利益差をテストすることによって,毎月最大のイントラデイ価格変動の日付を見つけます.高周波のイントラデイ取引から利益を求める投資家に過剰な利益をもたらすことができます.エントリータイミング,ポジション管理の決定,アプリケーションの範囲の拡大のさらなる改善は,戦略の安定性と収益性を向上させます.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dennis.decoene

//@version=4
strategy(title="Buy and Hold, which day of month is best to buy?", overlay=true)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group="Starting From")
     
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group="Starting From")
     
startYear = input(title="Start Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Starting From")

endDate = input(title="End Date", type=input.integer,
     defval=2, minval=1, maxval=31, group="Until")
endMonth = input(title="End Month", type=input.integer,
     defval=10, minval=1, maxval=12, group="Until")
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Until")

entryday = input(title="Entry Day", type=input.integer,
     defval=26, minval=1, maxval=31, tooltip="When to enter (buy the asset) each month")
exitday = input(title="Exit Day", type=input.integer,
     defval=6, minval=1, maxval=31, tooltip="When to exit (sell the asset) each month")
     
useExitDay= input(title="Close position on exit day?", type=input.bool, defval=false, tooltip="Use the Exit Day to close each months position it true or close at the end of the period (if false)")
     
isEntryDay= (dayofmonth(time)==entryday)
isExitDay= (dayofmonth(time)==exitday-1)


inDateRange = true

if (isEntryDay and inDateRange)
    strategy.entry(id="Buy", long=true)
    
if (isExitDay and useExitDay)
    strategy.close_all()


// Exit open market position when date range ends
if (not inDateRange and not useExitDay)
    strategy.close_all()
     

もっと