一目均衡表オシレーター取引戦略


作成日: 2024-02-20 11:12:44 最終変更日: 2024-02-20 11:12:44
コピー: 0 クリック数: 742
1
フォロー
1617
フォロワー

一目均衡表オシレーター取引戦略

概要

この戦略は,一目均衡表の指標とブリン線波帯の指標を組み合わせた量化取引戦略である.この戦略は,一目均衡表の変換線,基準線,前注線と後注線を使用して取引信号を構築し,同時にブリン線波帯を使用して市場の波動性を判断し,適切なタイミングで入場する.

戦略原則

一見均衡表の指標

一目平衡表の指標は,変換線,基準線,前注線,後注線の4つの曲線で構成されている.その変換線は,近期 ((9日) の閉店価格の平均値であり,基準線は,より長い期間の ((26日) の閉店価格の平均値である.前注線は,変換線と基準線の平均値であり,先導性がある.後注線は,より長い期間の ((52日) の閉店価格の平均値であり,後退性がある.平均短期線を横切ったり,長い期間の線を横切ったりすると,買出信号が生じます.

ブリン線波帯

ブリン線波帯は,中線,上線,下線の3つの線で構成されている.中線は,n日 (ここでは20日) の閉盘価格の単純移動平均である.上線は,中線加算k倍 (ここでは2倍) の標準差である.下線は,中線減算k倍の標準差である.価格が波動範囲内にあるかどうかを判断し,市場震動の程度を判断する.

この策略は,注線後の金叉と死叉を用い,買入と売却の信号を形成する.また,ブリン線波帯と組み合わせて価格の変動性を判断し,波動が少ない場合に入場信号を判定する.

優位分析

この戦略は,一目均衡表指標とブリン帯指標を組み合わせて,市場傾向と波動性を総合的に判断し,市場変化情報を効果的に抽出し,買い売り点を判断することができる.一目均衡表は,市場の主要トレンド方向を決定し,ブリン線波帯は,特定の入場タイミングを判断することができる.

この戦略のパラメータは調節可能で,異なる品種と市場環境に応じて最適化され,適応性が高い.一目均衡表は,異なるパラメータの組み合わせを使用して,異なる周期内の取引機会を識別することができる.

リスク分析

この戦略は,市場の波動性を判断する際に,主にブリンライン波帯に依存する.突発的な事件が大きな波動を引き起こしたとき,ブリンライン波帯は失効する.このとき,一目均衡表に基づいて構築された取引信号は,誤った信号を生成する可能性がある.

さらに,一目均衡表線は,突然の出来事に対してそれ自体も比較的敏感であり,価格が激しく波動するときに変換線と基準線も誤った信号を生成する.したがって,この状況で出場または取引を一時停止することが最良の選択である.

最適化の方向

他の指標との組み合わせで入場タイミングを考慮することができる.例えば,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)