イチモク・クラウド・オシレーター取引戦略

作者: リン・ハーンチャオチャン, 日付: 2024-02-20 11:12:44
タグ:

img

概要

イチモク・クラウド指標とボリンジャー・バンド指標を組み合わせた定量的な取引戦略である.この戦略は,取引信号を生成するために,イチモク・クラウドの変換線,ベースライン,リード・スパンA,リード・スパンBを活用し,ボリンジャー・バンドを使用して市場の波動性を判断し,適切なエントリータイミングを決定する.

戦略の論理

イチモク雲指標

イチモク・クラウド指標は,変換線,ベースライン,リードスパンA,リードスパンBという4つの線で構成されています. 変換線は,短期期間 (9日) の平均閉店価格です. ベースラインは,より長い26日間の平均閉店価格です. リードスパンAは,価格アクションをリードする変換線とベースラインの間の平均値です. リードスパンBは,さらに長い52日間の平均閉店価格です. 価格に遅れています. 短期移動平均が長期平均を超えたり下回ったときに購入・売却信号が生成されます.

ボリンジャー・バンド

ボリンジャー帯には,中間線,上部帯,下部帯という3つの線が含まれます.中間線は,n日間の閉店価格の単純な移動平均線です.上部帯は,中間線プラスk倍 (ここでは2倍に設定されています) 標準偏差.下部帯は,中間線マイナスk倍標準偏差です.価格が通常の変動範囲内にあるかどうかを判断し,市場の変動度を決定します.

この戦略は,トレードシグナルを構築するために,リードスパンBの黄金クロスと死亡クロスを使用する.また,ボリンジャーバンドを組み込み,価格変動を決定し,変動が低いときに市場に参入することを決定する.

利点分析

この戦略は,イチモク・クラウド指標とボリンジャー・バンドを組み合わせて,市場の動向と変動を包括的に決定し,市場の変化情報を効果的に把握し,取引シグナルを特定することができます. イチモク・クラウドは市場の主要なトレンド方向を決定することができ,ボリンジャー・バンドは特定のエントリータイミングを特定することができます.

この戦略のパラメータは,異なる製品や市場環境に最適化するために調整可能で,高度に適応可能である. イチモク・クラウドの異なるパラメータ組み合わせを使用して,サイクルを超えた取引機会を特定することができます.

リスク分析

この戦略は,主にボリンジャー帯をベースに市場変動を決定する.ブラック・スワンイベントによって極端な変動が引き起こされる場合,帯が失敗する可能性があります.その場合,イチモク・クラウドに基づいて構築された取引信号は偽信号を生成する可能性があります.

さらに,イチモク・クラウドライン自体も急激な市場変動に敏感である.価格が激しく変動すると,変換とベースラインは誤った信号を提供することがあります.そのような状況では,ポジションを終了するか,取引を中止することはおそらく最良の選択です.

オプティマイゼーションの方向性

他の指標は,入場タイミングを決定するために組み合わせて検討することができます.例えば,市場が過買い/過売れているかどうかを確認するためのKDJ,および長期/短期移動平均関係を確認するためのMACDなど.これは,極端な変動中に市場に参入することを防ぐことができます.

さらに,機械学習は,イチモククラウドのパラメータを最適化するために活用することができます.異なるパラメータは,サイクルや製品に大きく影響します.最適なパラメータの組み合わせを見つけることは,戦略の収益性を大幅に向上させることができます.

結論

この戦略は,市場動向と変動の両方を考慮するために,イチモク・クラウド指標とボリンジャー・バンドを組み合わせます.これは適応可能な定量的な取引戦略です. 戦略は,パラメータを調整し,エントリールールを最適化することで改善され,ライブ取引で良い利益を得ることができます.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("一目均衡表シグナル + ボリンジャーバンド", overlay=true)

conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(26, minval=1, title="Lagging Span")
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2.0, title="Bollinger Bands Multiplier")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// ボリンジャーバンドの計算
basis = ta.sma(close, bbLength)
bbUpper = basis + bbMultiplier * ta.stdev(close, bbLength)
bbLower = basis - bbMultiplier * ta.stdev(close, bbLength)

// 1σ、2σ、3σのライン
bbUpper1 = basis + ta.stdev(close, bbLength)
bbLower1 = basis - ta.stdev(close, bbLength)

bbUpper2 = basis + 2 * ta.stdev(close, bbLength)
bbLower2 = basis - 2 * ta.stdev(close, bbLength)

bbUpper3 = basis + 3 * ta.stdev(close, bbLength)
bbLower3 = basis - 3 * ta.stdev(close, bbLength)

// 遅行スパンがローソクに交差した際のBuyとSellシグナル
buySignalLeadLine = ta.crossover(close, leadLine2)
sellSignalLeadLine = ta.crossunder(close, leadLine2)

// Strategy Entry and Exit Conditions for Lead Line
strategy.entry("BuyLeadLine", strategy.long, when = buySignalLeadLine)
strategy.close("BuyLeadLine", when = sellSignalLeadLine)

strategy.entry("SellLeadLine", strategy.short, when = sellSignalLeadLine)
strategy.close("SellLeadLine", when = buySignalLeadLine)

// Plotting Ichimoku Cloud
plot(conversionLine, color=color.new(color.blue, 0), title="Conversion Line")
plot(baseLine, color=color.new(color.red, 0), title="Base Line")
plot(close, offset = -displacement + 1, color=color.new(color.green, 0), title="Lagging Span")
p1 = plot(leadLine1, offset = displacement - 1, color=color.new(color.green, 0),
     title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=color.new(#cdf80d, 0),
     title="Leading Span B")

fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))



// 2σ、3σのラインをプロット

plot(bbUpper2, color=color.rgb(100, 96, 100), title="BB Upper 2σ")
plot(bbLower2, color=color.rgb(100, 96, 100), title="BB Lower 2σ")

plot(bbUpper3, color=color.rgb(67, 61, 68), title="BB Upper 3σ")
plot(bbLower3, color=color.rgb(67, 61, 68), title="BB Lower 3σ")

// Plotting Entry and Exit Signals
plotshape(series=buySignalLeadLine, title="Buy Signal (Lead Line)", color=color.green, style=shape.triangleup, location=location.belowbar, size=size.small)
plotshape(series=sellSignalLeadLine, title="Sell Signal (Lead Line)", color=color.rgb(255, 115, 0), style=shape.triangledown, location=location.abovebar, size=size.small)


もっと