黄金比バックテストロングポジション戦略


作成日: 2023-11-28 13:40:35 最終変更日: 2023-11-28 13:40:35
コピー: 1 クリック数: 678
1
フォロー
1617
フォロワー

黄金比バックテストロングポジション戦略

概要

ゴールド分割回測ロングポジション戦略は,スウィング取引戦略である.これは過去21日の最高価格と最低価格のゴールド分割点に基づいて信号生成を行い,反測機構を持ち,多頭のみを行い,ロングラインポジションの特徴を有する.

戦略原則

この戦略は,先21日の最高値 (high21) と最低値 (low21) を計算し,その間の差を計算する.取引シグナルは,現在の低値がlow21 + diff * 0.382より高く,前Kラインの閉盘価格が前Kラインの開盘価格より高く,多行する.ストップラインはlow21 + diff * 0.236である.つまり,価格が最近21日間の価格範囲の38.2%の金線分割を突破し,上向きの弾力があるとき,多行する.ストップラインは,金線分割の23.6%に設定する.

金分割線が重要な技術指標として用いられているのは,金分割線が市場における一般的なサポート・レジスタンス・ポイントに対応しているからです.0.382と0.236は,反調位または反発位としてよく監視され,自然界で最も不思議な数字の1つと言えるでしょう.

優位分析

この戦略の利点は

  1. 金分割理論を用いた取引は,比較的成熟した技術分析方法である.

  2. システム上のリスクを減らすために,多重な作業をするだけです.

  3. トレンド追跡メカニズムを用いて,上向きの弾力によって入場を決定する.

  4. リスクのコントロールを可能にする 明確な止損線がある

  5. 回測パラメータは調整可能で,異なる市場環境での効果をテストできます.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 市場構造の変化に敏感でない可能性もある.

  2. ストップラインが近いので,夜間GAPで揺れる可能性があります.

  3. 状況が急激に変動すると,誤った回帰周期が偽信号を引き起こす可能性があります.

  4. 取引量化自体には滑りやすいコストが伴うため,利益にも影響する.

これらのリスクは,回測周期パラメータの調整,ストップロスの位置の最適化,滑点コストの考慮などの方法によって軽減することができる.

最適化の方向

この戦略は,以下の点で最適化できます.

  1. 機械学習アルゴリズムに基づく自動最適化パラメータにより,反測周期パラメータを現在の市場環境に適合させる.

  2. 株式指数期貨などの金融デリバティブと組み合わせて,レバレッジを利用して拡大操作を行う.

  3. 跳び口の認識メカニズムなど,突発事件の処理にモデルを追加する.

  4. 市場変動の設定によるダイナミック・スライド・ストップによるストップ・ストラトジーを最適化する.

要約する

全体として,これは金分割線原理を利用し,明確な入場機構と止損思考を持つ長線多頭戦略である.パラメータ調整,モデル最適化,組み合わせ応用などの方法によって,信頼性の高い量化取引戦略に最適化することができる.

ストラテジーソースコード
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © omkarkondhekar

//@version=4
strategy("GRBLong", overlay=true)

highInput = input(title = "High Days", type = input.integer, defval = 21, minval = 11)
lowInput = input(title = "Low Days", type = input.integer, defval = 21, minval = 5)

// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2019, minval=1800, maxval=2100)

// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

high21 = highest(high, highInput)
low21 = lowest(low, lowInput)

diff = high21 - low21

longEntrySignal = low > low21 + (diff * 0.382) and close[1] > open[1] 

strategy.entry("Long", strategy.long, limit = low, when = longEntrySignal and afterStartDate)
strategy.exit("Long Exit", "Long", stop = low21 + (diff * 0.236))

plot(low21 + (diff * 0.382), color= color.green)
plot(low21 + (diff * 0.236), color = color.red)