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


作成日: 2023-11-24 14:10:23 最終変更日: 2023-11-24 14:10:23
コピー: 0 クリック数: 593
1
フォロー
1617
フォロワー

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

概要

この戦略の核心思想は,毎月の最適の購入日を見つけ,この日にデジタル資産を購入し,終わりに売却することによって,投資の最適のリターンを達成することです. この戦略は,日中の価格変動を利用して余分な利益を得ることを希望する投資家に適用されます.

戦略原則

この戦略は,ユーザーが設定した毎月の買取日と売却日に基づいて動作する.買取日と同じ日に多発買取し,売れる日がある場合は,売れる日と同じ日に平仓する.売れない日がない場合は,戦略の終了日と同じ日に平仓する.このようにして,毎月の異なる買取日による収益の違いをテストすることができる.

購入シグナルの判断論理は,ユーザが設定した購入日であり,戦略の有効日の範囲内であれば,多項を開きます.

平仓シグナル判断の論理は: 売る日が設定され,売る日が設定された場合,平仓; 売る日が設定されていないが,戦略終了日を超えた場合,平仓.

戦略的優位性

  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()