この戦略は,イチモク・クラウドとストップ・オーダーを使用して開発されたトレンドフォロー戦略である. イチモク・クラウドの変換線,ベースライン,遅れのスパンを使用してトレンド方向を決定し,ストップ・損失のためにクラウド帯の上下端にストップ・オーダーを設定する.
戦略は以下の原則に基づいています.
換算線は,過去9日間の最高値と最低値の平均値で,最近の平均値変動を反映しています.
ベースラインは,過去26日間の最高値と最低値の平均値で,中期平均価格変動を反映しています.
遅延は過去52日間の最高価格と最低価格の平均であり,長期間の平均価格変動を反映しています.
変換とベースラインの平均はリードスパン1を形成し,遅れのスパンがリードスパン2を形成する. 2つのリードスパン間の領域は雲帯を形成する. 雲帯の上と下の辺はトレンド方向を示す.
価格が雲帯を超えると,ロングで,価格が雲帯を下回るとショートで
ストップ・ロスのオーダーを 雲帯の上下両端に設定して 傾向を追います
戦略は3つのイチモク線を定義し,その平均を計算してリードスパン1と2を得ます.その後,価格が上または下雲帯の境界を突破した上でトレンド方向を決定します.ロングまたはショートポジションを取った後,クラウド帯価格に基づいてストップロスを設定し,ストップロスを設定してトレンドをフォローします.
この戦略の利点は次のとおりです.
イチモク・クラウドは 複数の時間枠から価格情報を組み込み 市場のノイズをフィルタリングすることで 信頼性の高いトレンド方向性を決定します
ストップ・ロスの配置は合理的です.クラウド・バンドのエッジを使用することで,適切なストップ・ロスの範囲と良いトレンドフォローが可能になります.
イチモク・クラウドはノイズをフィルタリングし ストップ・ロスはリスクを制御します
柔軟なパラメータ調整. 市場適応のために変換,ベース,および遅延スパン期間を調整できます.
論理が明確で 分かりやすく トレンドフォローのアプローチで 分かりやすくなります
戦略のリスクは以下のとおりです.
ストップ・ロスのブレイクリスク 変動する価格動向はストップ・ロスを引き起こすし,収益性のあるポジションを退出させる可能性があります
市場が急激に動いているため ストップロスは頻繁に行われると 取引が過剰になる
パラメータリスク: 変換,ベース,遅延範囲の誤った設定により,ストップ損失範囲が幅広くすぎたり狭くなったりします.
フューチャーでのスライプコスト.頻繁な注文は,利益に影響を与える過剰なスライプコストにつながる可能性があります.
アルゴリズムによる取引リスク ダウンタイム ネットワーク上の問題 バグが取引実行に影響を与える可能性があります
これらのリスクに対処するために,パラメータの最適化,ストップ損失アルゴリズム,サーバーの安定性向上,適切なリスク管理,徹底的な戦略テストが行われるべきです.
戦略は以下の側面で最適化できます.
パラメータ設定を最適化して,異なる期間の組み合わせをテストして最適な値を見つけます.
ストップ・ロスのトリガーを減らすため,ストップ・ロスのアルゴリズムを トレイリング・ストップ,ボラティリティ・ストップなどで改善する.
意思決定を改善するために MACD,KDJなどの追加指標を組み込む.
損失を制限するために自動損失閉じる機能を追加します.
ストップ・ロスの出口後に再入力のメカニズムを実行する.
ダイナミックなポジションサイズ化によって 資金管理を最適化します
この戦略は,トレンド方向性のためにイチモク・クラウドとストップ・ロスの追跡のためにクラウドバンドを使用し,リスクを効果的に制御し,実用的な有用性を持っている.しかし,リスクは存在しているため,パラメータ,ストップ・ロスのアルゴリズムを最適化し,安定したライブ・トレード利益のために適切なリスク制御を実施する必要があります.これはトレンドフォロー原則に基づいてストップ・ロスの戦略を設計する良い例を提供します.
/*backtest start: 2022-10-27 00:00:00 end: 2023-11-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "Noro's Ichimoku Stop Strategy", shorttitle = "Ichimoku Stop Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") conversionPeriods = input(9, minval = 1, title = "Conversion Periods") basePeriods = input(26, minval = 1, title = "Base Periods") laggingSpan2Periods = input(52, minval = 1, title = "Lagging Span") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Ichimoku donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) //Cloud p1 = plot(leadLine1, offset = basePeriods, color=color.green, title="Lead 1", transp = 100) p2 = plot(leadLine2, offset = basePeriods, color=color.red, title="Lead 2", transp = 100) fill(p1, p2) //Signals max = max(leadLine1[basePeriods], leadLine2[basePeriods]) min = min(leadLine1[basePeriods], leadLine2[basePeriods]) up = low > max dn = high < min if max > 0 strategy.entry("Long", strategy.long, needlong ? na : 0, stop = max) strategy.entry("Short", strategy.short, needshort ? na : 0, stop = min)