ローカルショックトレンド識別戦略を1つの記事で


作成日: 2024-03-19 15:10:59 最終変更日: 2024-03-19 15:10:59
コピー: 0 クリック数: 664
1
フォロー
1617
フォロワー

ローカルショックトレンド識別戦略を1つの記事で

概要

この戦略は,一文雲指標 ((Ichimoku Cloud) と黄金分割率 ((Fibonacci Ratio) と結合して設計されたトレンド認識と取引戦略である.この戦略は,一文雲指標の変換線 ((Conversion Line),ベースライン ((Base Line),雲 ((Kumo Cloud) と遅延線 ((Lagging Span) を使って,現在の市場トレンドを判断し,1.618と0.618の2つの黄金分割率を組み合わせて,ストップ・ロスの位置を設定し,市場の揺れを識別する.さらに,戦略は,偽の信号を検知するために2つの追加の中線を導入する.

戦略原則

一文の雲指標は,変換線,ベース線,雲,および遅延線の4つの部分で構成されている. 変換線とベース線は,それぞれ,異なる周期の最高価格と最低価格の平均値から計算される. 雲は,ベース線が前へ推移する26周期で形成され,遅延線は,閉盘価格が後へ推移する26周期である.

この戦略の多頭開設条件は以下の通りです.

  1. 遅延線が雲の上にある
  2. ベースラインより高い
  3. 閉店価格は1.618のストップポイントより高い
  4. 0.618ラインは1.618のストップポイントより高い
  5. 価格の上昇が予想されています.

“空頭”の条件は”多頭”の条件の反対である.

ストップポジションの設定は1.618と0.618の2つの黄金分割率を使用している.多頭ストップは,雲の上沿線を上下沿線距離の1.618倍に減算し,空頭ストップは,逆である.0.618線は,揺れ動いている市場を識別するために使用され,雲が緑で,0.618線は1.618ストップよりも低いとき,市場は揺れ動いていると考えられている.

1文の雲指標に加えて,この戦略は偽信号をフィルターするために2つの中線を導入した.中線は,異なる周期の最高最低価格の平均値から計算された.

優位分析

  1. また,価格とトレンド指標を使用することで,現在の市場動向をよりよく識別できます.
  2. 金分割率のダイナミックセットストップを導入し,リスクはコントロールできる.
  3. 0.618線は,震動市場を効果的に識別し,震動の状況で頻繁にポジションを開くのを防ぐことができます.
  4. 2つの追加の中線は,偽信号をさらにフィルターし,信号の質を向上させる.
  5. パラメータは調整可能で,異なる市場と周期に適用されます.

リスク分析

  1. トレンド指数は,暴風雨や暴落などの極端な状況では,信号が誤って機能しなくなる可能性があります.
  2. ストップ・ロスは,雲による距離計算であり,雲が薄い場合,ストップ・ロスは開場価格に近すぎることにつながります.
  3. ゴールド分割率のストップと0.618ラインによる揺動市場の判断方法は理論的な支持が欠け,すべての市場には適用されない可能性がある.
  4. パラメータ最適化は,現実の市場での不良パフォーマンスを引き起こす可能性がある.

最適化の方向

  1. 平均線システム,MACDなど,より多くのトレンド確認指標を導入することを検討し,信号の質をさらに向上させることができます.
  2. ストップレード設定は,ATR,波動率など,より多くの要因を考慮して,よりダイナミックで個別化することができます.
  3. トレンド強度指数ADXなどの他の方法も試すことができます.
  4. パラメータの最適化には,遺伝的アルゴリズムなどの機械学習方法を使用し,過適合を避けるためにサンプル外テストを行うことができます.
  5. ポジション管理とリスク管理モジュール,例えばケリー指針,固定リスクなど,戦略の安定性と信頼性を高めるために追加することができる.

要約する

この戦略は,一文の雲指標と黄金の分割率を革新的に組み合わせて,一整のトレンド識別と取引システムを形成している.同時に,追加の中線フィルタを導入することで,信号の質を一定程度向上させることができる.戦略の優点は,トレンドと振動の両方の市場状態によりよく適応でき,ダイナミックなストップダウンのリスク制御である.しかし,戦略には,理論的参数がないこと,数値最適化が過度に適合しているなど,いくつかの欠点がある.将来,より多くの指標を導入し,ストップダウンの最適化,ポジション管理,機械学習パラメータの最適化などから戦略を完善することができる.全体的に,この戦略は新しい考えであり,一定の参照価値があります.しかし,実際のアプリケーションでは,さらなるテストと最適化が必要である.

ストラテジーソースコード
/*backtest
start: 2023-03-13 00:00:00
end: 2024-03-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © manoharbauskar

//@version=5
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © manoharbauskar

//@version=5
strategy("Advanced_Ichimoku_Cloud_Strategy", overlay=true, margin_long=100, margin_short=100)
conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpanPeriods = input.int(52, minval=1, title="Leading Span B Length")
pivotPeriods1 = input.int(17,minval = 1,title = "PPL1")
pivotPeriods2 = input.int(39,minval = 1,title = "PPL2")
displacement = input.int(26, minval=1, title="Lagging Span")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
midLine1 = donchian(pivotPeriods1)
midLine2 = donchian(pivotPeriods2)
midLine3 = donchian(laggingSpanPeriods)
leadLine1 = math.avg(conversionLine, baseLine, midLine1)
leadLine2 = math.avg(midLine2 , midLine3)


plot(conversionLine, color=#2962FF, title="Conversion Line")
plot(baseLine, color=#B71C1C, title="Base Line")

plot(close, offset = -displacement + 1, color=color.yellow, title="Lagging Span")
p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
	 title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
	 title="Leading Span B")
   
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Upper Line", display = display.none) 
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, offset = displacement - 1, title = "Kumo Cloud Lower Line", display = display.none) 
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))

//stoploss calculating
mult1 = input.float(1.618, "Mult1")
mult2 = input.float(0.618, "Mult2")
stoploss1 = leadLine1 - (leadLine1 - leadLine2)*mult1
stoploss2 = leadLine1 - (leadLine1 - leadLine2)*mult2
plot(stoploss1,"Sl", color = color.fuchsia, linewidth = 2, style = plot.style_line, offset = displacement - 1)
plot(stoploss2,"S2", color = color.lime, linewidth = 2, style = plot.style_line, offset = displacement - 1)

longCondition = leadLine1 > leadLine2 
if (longCondition)
    strategy.entry("Buy", strategy.long)

shortCondition = leadLine1 < leadLine2
if (shortCondition)
    strategy.entry("Sell", strategy.short)