この戦略は"PlanB RSI トラッキング戦略"と呼ばれています.自動取引のための購入・販売信号を設定するための主要な技術指標として,相対強度指数 (RSI) を利用しています.
この戦略は主に以下の原則に基づいています.
過去6ヶ月の最高RSIインデックスが90%を超え,その後65%を下回ると,売り信号が生成されます.
過去6ヶ月の最低RSIインデックスが50%を下回り,最低点から2%以上反転すると,買い信号が生成されます.
具体的には,販売の論理は:
If (Highest RSI in past 6 months > 90% AND Current RSI < 65%)
Then Sell
購入の論理はこうです
If (Lowest RSI in past 6 months < 50% AND RSI bounces >2% from lowest point)
Then Buy
上記の販売・購入ルールは,有名な量子戦略家であるPlanBの記事から引用されています.この戦略は,より多くのトレーダーがこの取引戦略の有効性を検証するために彼の研究結果を複製することを目指しています.
この取引戦略には以下の主な利点があります
RSIを唯一の技術指標として使うことで 複雑性が減ります
リアルタイム取引の検証のために 簡単に理解できる 明確な買い物・販売ルール
買い/売るシグナルには,長期的なピーク/底線と短期的なブーン/ダウン市場の情報が含まれます.
この戦略は有名なQuant PlanBの研究を参考にしており,その結論を独立して検証することができます.
比較的単純なルールを持つ 初心者戦略として 量子取引のスキルを育むのに役立ちます
また,この取引戦略にはいくつかの主要なリスクがあります.
RSIのみを頼りにすれば,より複雑な市場体制に対応できない.RSI自体も誤った信号を与える.
固定パラメータ設定は,取引を逃したり,遅れた信号を与える可能性があります. 市場のサイクルに適応するために最適化が必要です.
PlanBを盲目的に 独立した最適化なしで 実行する場合は
ストップ・ロースやテイク・プロフィートなしの購入/売却の規則は,ライブ・トレードで大きな損失を引き起こす可能性があります.
リスクを軽減し,ライブパフォーマンスを向上させるのに役立ちます.
RSIの誤った信号を避けるため,二次指標を追加します.
異なるサイクルの特性に対するパラメータの最適化
リスク管理のためのストップ・ロスト/テイク・プロフィートメカニズムを追加します
安定性を確保するために戦略パラメータを独立して訓練する.
ライブパフォーマンスを向上させるために,次の次元で最適化を行うことができます:
副指標を追加する複合判断のためにKD,MACDなどの指標を組み込み,正確性を向上させる.
動的パラメータ最適化: 現在のパラメータ値は固定されており,市場のサイクルに適応することができません. パラメータをリアルタイムで調整するためのダイナミック最適化モジュールを導入し,パフォーマンスを大幅に改善します.
ストップ損失/利益: 現在,リスク管理機能が欠けている. 後ろのストップ・ロスを追加し,利益を取点を移動することで,単一の取引損失を効果的に制御し,利益をロックすることができます.
パラメータに関する独立した訓練: 検証なしでPlanB記事パラメータを直接使用します. 過去データに基づいて最適なパラメータ組み合わせを見つけるために機械学習を適用します.
ポートフォリオの最適化: 複数のシンプルな戦略を組み合わせることで,全体的な安定性とリスク調整の利回りが向上します.
/*backtest start: 2022-11-20 00:00:00 end: 2023-11-26 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/ // © fillippone //@version=4 strategy("PlanB Quant Investing 101", shorttitle="PlanB RSI Strategy", overlay=true,calc_on_every_tick=false,pyramiding=0, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.0) r=rsi(close,14) //SELL CONDITION //RSI was above 90% last six months AND drops below 65% //RSI above 90% last six month selllevel = input(90) maxrsi = highest(rsi(close,14),6)[1] rsisell = maxrsi > selllevel //RSIdrops below 65% drop = input(65) rsidrop= r < drop //sellsignal sellsignal = rsisell and rsidrop //BUY CONDITION //IF (RSI was below 50% last six months AND jumps +2% from the low) THEN buy, ELSE hold. //RSI was below 50% last six months buylevel = input(50) minrsi = lowest(rsi(close,14),6)[1] rsibuy = minrsi < buylevel //IF (RSI jumps +2% from the low) THEN buy, ELSE hold. rsibounce= r > (minrsi + 2) //buysignal=buyrsi AND rsidrop //buysignal buysignal = rsibuy and rsibounce //Strategy strategy.entry("Buy Signal",strategy.long, when = buysignal) strategy.entry("Sell Signal",strategy.short, when = sellsignal)