多次元金金曜異常戦略分析システム

MA RSI ROC SL TP MACD EMA RISK PNL ATR
作成日: 2024-12-12 16:32:12 最終変更日: 2024-12-12 16:32:12
コピー: 0 クリック数: 402
1
フォロー
1617
フォロワー

多次元金金曜異常戦略分析システム

概要

この戦略は,市場の異常現象に基づく取引システムであり,主に木曜日の夜閉店から金曜日の閉店までの市場行動特性を利用して取引する.この戦略は,固定された入場と出場時間を採用し,反測によってこの市場モデルの有効性を検証する.この戦略は,10%の資金を使用し,単一の取引を行い,滑り点と手数料の要因を考慮して,反測結果の真偽性を確保する.

戦略原則

戦略の中核となるロジックは、次の主要な要素に基づいています。

  1. 入場条件:木曜の閉店時に入場する.このタイミングは,過去のデータ分析に基づいて選択された.
  2. 出場条件:金曜の終盤に平仓,保有時間は固定.
  3. 資金管理:取引ごとに10%の口座資金が使用され,この保守的なポジション管理はリスクを制御するのに役立ちます.
  4. 取引実行: 取引終了時に注文を実行することで,日中の激しい変動による影響を回避できます.

戦略的優位性

  1. シンプルで明確:取引規則は明確で,複雑な指標の組み合わせはなく,理解し実行しやすい.
  2. リスクの管理: 固定されたポジションの時間と資金管理プログラムにより,リスクの評価と管理が容易になります.
  3. 自動化度が高い: 戦略の論理はシンプルで,取引を自動化するためにプログラミングに適している.
  4. 柔軟性:異なる市場環境に応じてパラメータを調整することができ,適応性が優れています.

戦略リスク

  1. 時間依存:戦略は特定の時間窓に大きく依存し,非取引時間における重要なニュースに影響を受けることがあります.
  2. 市場環境の変化: 統計の法則は,将来的に失われる可能性があり,戦略のパフォーマンスを継続的に監視する必要があります.
  3. 執行リスク: 閉盤時に流動性が不足し,滑り点が増加する可能性があります. リスク管理には以下の方法が推奨されています.
  • ストップダストを設定する
  • ポジション保持時間を動的に調整する
  • フィルタリング条件を追加

戦略最適化の方向性

  1. 波動率指標の導入:戦略をより適応的にするために,ポジションサイズを動的に調整するためにATR指標を追加できます.
  2. 入場時間を最適化: 価格形態と技術指標を組み合わせて入場の正確性を向上させることができる.
  3. リスク管理の改善: ダイナミック・ストップ・ローズ・メカニズムを増やし, 保護は利潤を伴います.
  4. フィルタリング条件を追加する:トレンドフィルターを追加し,不利な市場環境での取引を避ける.

要約する

この戦略は,市場異常現象に基づく古典的な取引システムであり,厳格な時間管理と保守的な資金管理によって潜在的利益を得ます.戦略の論理はシンプルですが,市場環境の変化によるリスクに注意する必要があります. リアルタイム取引では,より保守的なポジション制御とより優れたリスク管理機構を採用することを推奨しています.

ストラテジーソースコード
/*backtest
start: 2024-11-11 00:00:00
end: 2024-12-10 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © piirsalu

//@version=5
strategy("Gold Friday Anomaly Strategy", 
     default_qty_type=strategy.percent_of_equity,
     slippage = 1, commission_value=0.0005,
     process_orders_on_close = true,
     initial_capital = 50000,
     default_qty_value=500,
     overlay = true)
     

/////////////////////////////////////////////////////////////////////////////////////
//                                 . USER INPUTS .                                 //
/////////////////////////////////////////////////////////////////////////////////////

// Define backtest start and end dates
st_yr_inp = input(defval=2000, title='Backtest Start Year')
st_mn_inp = input(defval=01, title='Backtest Start Month')
st_dy_inp = input(defval=01, title='Backtest Start Day')
en_yr_inp = input(defval=2025, title='Backtest End Year')
en_mn_inp = input(defval=01, title='Backtest End Month')
en_dy_inp = input(defval=01, title='Backtest End Day')

// Set start and end timestamps for backtesting
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp, 00, 00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp, 00, 00)

/////////////////////////////////////////////////////////////////////////////////////
//                              . STRATEGY LOGIC .                                 //
/////////////////////////////////////////////////////////////////////////////////////

// Check if the current day is Friday
isFriday = (dayofweek == dayofweek.friday)

// Initialize a candle counter
var int barCounter = 0

// Increment the candle counter on each new bar
barCounter := barCounter + 1

// Define trading session time ranges
pre_mkt = time(timeframe.period, '0400-0800:23456')
mkt_hrs = time(timeframe.period, '0800-1600:23456')
eod = time(timeframe.period, '1200-1600:23456')

/////////////////////////////////////////////////////////////////////////////////////
//                          . STRATEGY ENTRY & EXIT .                              //
/////////////////////////////////////////////////////////////////////////////////////

// Enter a long position on the first candle of Friday within the backtest period
if dayofweek == 4 and time >= start and time <= end
    strategy.entry("BuyOnFriday", strategy.long)

// Close the position after holding it for 4 candles
if (barCounter % 1 == 0)
    strategy.close("BuyOnFriday")