日平均取引戦略からの価格偏差

作者: リン・ハーンチャオチャン開催日:2023年12月15日 15:44:18
タグ:

img

概要

この取引戦略は,イチモク・キンコ・ヒョウと呼ばれる指標に基づいて取引信号を生成する. イチモク・キンコ・ヒョウは文字通り"一見平衡チャート"に翻訳される.動平均値とバンド指標の利点を組み合わせ,トレンド方向とサポート/レジスタンスレベルの両方を特定し,包括的な指標とみなされる.

この戦略は,イチモクのコンポーネントラインを使用してトレンドの方向性と強さを決定する.価格がクラウドの上または下を突破すると取引信号が生成される.また,この戦略はイチモクシステムに特有の"エッジからエッジ"へのエントリー機会を利用する.

戦略の論理

この戦略は,イチモク・キンコ・ヒョーシステムから5つのラインを使用しています.

  1. テンカン線: 9 期間の最高高値と最低低値の平均
  2. キジュン線: 26 期間の最高高値と最低低値平均
  3. センクー・スパンA:テンカン線とキジョン線の平均
  4. Senkou Span B: 52 期間の最高高値と最低低値の平均
  5. チコウ線: 閉じる26期間の遅れている移動平均

"雲"は Senkou Span A と Senkou Span B の間の領域で,現在のトレンド範囲を一般的に表しています.

取引シグナルは,次のシナリオに基づいて生成されます.

  1. 雲の頂上を突破する価格: ロング信号
  2. 価格が雲の底を下回る:ショート信号
  3. 低価格からクラウドに入力:長時間エッジツーエッジチャンス
  4. 価格が上からクラウドに入ってくる: 端から端へのショートチャンス

さらに,この戦略は,Tenkan/Kijunのクロスを使って,利益とストップロスのレベルを決定します.

利点

この戦略の最大の強みは,イチモクがトレンド方向とサポート/レジスタンスレベルを決定する能力にあります.

  1. 雲は主要なトレンド方向性を特定し,トレンドに反する取引を避ける.
  2. コンポーネントラインは 突破の機会を特定するために サポート/レジスタンスレベルを特定します
  3. エッジ・トゥ・エッジ・エントリーにより 利益がもたらされます

また,この戦略には,部分的な利益とリスク管理のためのテンカン/キジュン・クロスが組み込まれています.

リスクと管理

主なリスクは イチモク線に 潜在的ギャップがあり 偽の突破を引き起こすからです

解決策には,ダウンライン間隔を狭めるためにパラメータを最適化するか,範囲のゾーンでの取引を避けるためにフィルターを追加することが含まれます.

最適化

戦略のいくつかの側面は改善可能である.

  1. イチモクパラメータを最適化し 移動平均周期を より多くのシンボルとタイムフレームに合わせて調整します

  2. 誤った信号を引き起こすギャップを避けるために音量確認を組み込む.

  3. MACD,RSIなどの他の指標を追加し,トレンドとオシレーターフィルターを追加します.

  4. ストップ・ロスのルールと,利益のルール,例えば,ストップ・トレイル,ポジション・サイジングを強化する.

概要

概要すると,このイチモクシステムは,クラウドとコンポーネントラインでトレンド方向と取引機会を特定します.利点は明確なトレンド決定と正確なエントリー信号にあります.パラメータとフィルターのさらなる改善により,より良い戦略パフォーマンスのために偽信号を低下させることができます.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud", shorttitle="Ichimoku", overlay=true)

previous_close = close[1]

conversionPeriods = input.int(20, minval=1, title="Conversion Line Periods"),
basePeriods = input.int(60, minval=1, title="Base Line Periods")
laggingSpan2Periods = input.int(120, minval=1, title="Lagging Span 2 Periods"),
displacement = input.int(30, minval=1, title="Displacement")

long_entry = input.bool(true, title="Long Entry")
short_entry = input.bool(true, title="Short Entry")
e2e_entry = input.bool(true, title="E2E Entry")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))

tenkan = donchian(conversionPeriods)
kijun = donchian(basePeriods)
spanA = math.avg(tenkan, kijun)
spanB = donchian(laggingSpan2Periods)

plot(tenkan, color=#0496ff, title="Conversion Line")
plot(kijun, color=#991515, title="Base Line")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")

p1 = plot(spanA, offset = displacement, color=#459915, title="Lead 1")
p2 = plot(spanB, offset = displacement, color=#991515, title="Lead 2")
fill(p1, p2, color = spanA > spanB ? #459915 : #991515)

ss_high = math.max(spanA[displacement - 1], spanB[displacement - 1])
ss_low = math.min(spanA[displacement - 1], spanB[displacement - 1])

// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
kumo_twist_bull = ta.mom(close, displacement) > 0
kumo_twist_bear = ta.mom(close, displacement) < 0

price_above_kumo = close > ss_high
price_below_kumo = close < ss_low

price_enters_kumo_top = previous_close > ss_high[1] and close < ss_high
price_enters_kumo_bottom = previous_close < ss_low[1] and close > ss_low

bullish = tk_cross_bull and kumo_twist_bull and price_above_kumo
bearish = tk_cross_bear and kumo_twist_bear and price_below_kumo

bullishe2e = price_enters_kumo_bottom // and tk_cross_bull
bearishe2e = price_enters_kumo_top // and tk_cross_bear

price_touches_kumo_top = ta.cross(close, ss_high)
price_touches_kumo_bottom = ta.cross(close, ss_low)

strategy.entry("Long", strategy.long, when=bullish and long_entry)
strategy.close("Long", when=tk_cross_bear)
strategy.close("Long", when=price_enters_kumo_top)

strategy.entry("Long e2e", strategy.long, when=bullishe2e and e2e_entry)
strategy.close("Long e2e", when=price_touches_kumo_top)
strategy.close("Long e2e", when=price_below_kumo, qty_percent = 100)
// strategy.close("Long e2e", when=ta.cross(close, kijun), qty_percent = 50)

strategy.entry("Short", strategy.short, when=bearish and short_entry)
strategy.close("Short", when=tk_cross_bull)
strategy.close("Short", when=price_enters_kumo_bottom)

strategy.entry("Short e2e", strategy.short, when=bearishe2e and e2e_entry)
strategy.close("Short e2e", when=price_touches_kumo_bottom)
strategy.close("Short e2e", when=price_above_kumo, qty_percent = 100)
// strategy.close("Long e2e", when=ta.cross(close, kijun), qty_percent = 50)


もっと