コード取引日平均価格偏差戦略


作成日: 2023-12-15 15:44:18 最終変更日: 2023-12-15 15:44:18
コピー: 0 クリック数: 611
1
フォロー
1621
フォロワー

コード取引日平均価格偏差戦略

概要

この戦略は,Ichimoku Kinko Hyoのグラフ指標表に基づいて取引シグナルを生成する.Ichimoku Kinko Hyoは,移動平均と波段指標の優位性を融合させ,トレンドの方向とサポートレジスタンス点を同時に識別し,総合指標と見なされる.

この策略は,Ichimoku Kinko Hyoの成分線を使ってトレンドの方向と強さを判断する.価格が雲図を突破して上下軌道に乗ったときに取引信号を生成する.同時に,この策略は,Ichimokuに独特の取引機会である辺対辺入場機会を利用する.

戦略原則

この戦略は,Ichimoku Kinko Hyoの5つの要素をベースにしています.

  1. テンカン線 ((ターニング線):最高値と最低値の9日平均
  2. キジュン線 (基准線):最高値と最低値の26日平均
  3. Senkou Span A ((先行一):テンカン線とキジュン線の平均
  4. Senkou Span B ((先行二):最高価格と最低価格の52日平均
  5. チコウ線 ((遅行線): 26日遅れの平均値

また,Senkou Span AとSenkou Span Bで構成されるイチモク雲の図を描き,大体現在の傾向区間を表している.

この戦略の取引シグナルは以下の状況から発生します.

  1. 価格が下から上昇し,多額のシグナルを発信
  2. 価格が上から下を突破する:空白信号
  3. 価格がクラウドマップの下からクラウドマップに入ります.
  4. 価格が雲図の上から雲図に入ります:空の横横の対横の入場チャンスを作ります

また,戦略は,テンカン線とキジュン線の金叉死叉を停止・止損のタイミングとして判断した.

戦略的優位性

この戦略の最大の強みは,Ichimoku Kinko Hyoの指標を使ってトレンドの方向を判断し,レジスタンスをサポートする能力である.

  1. 雲の図で主要なトレンドの方向を判断し,逆操作を避ける.
  2. コンポーネントラインでサポートレジスタンス位置を識別し,突破する取引機会を特定します.
  3. 辺対辺の入場機会を増やし,利益の余地を増やす.

また,金叉のストップとデッドフォークのストップモジュールを追加し,利益の一部をロックし,リスクを制御します.

リスクと解決

この戦略の主なリスクは,イチモク成分線アルゴリズムによる潜在的空飛びである.これは,偽突破のリスクを招く.

解決策は,アルゴリズムのパラメータを適切に調整し,成分線間の距離を縮小するか,または,振動区間に入ることを避けるためにフィルタ条件を追加することです.

戦略の最適化

この戦略にはいくつかの改善策があります.

  1. イチモク成分ラインのパラメータを最適化し,平均線周期を調整し,より多くの品種と周期に対応する.

  2. 偽信号を避けるため,取引量を増やす.

  3. MACD,RSIなどの他の指標のフィルターと組み合わせて,トレンドと超買超売り領域を識別します.

  4. 移動止損,縮小などの方法による止損停止ロジックの最適化.

要約する

総じて,この戦略は,Ichimoku Kinko Hyoの雲図と成分線を利用してトレンドの方向と取引の機会を判断する.戦略の優位性は,トレンドの判断が明確で,入場タイミングが正確である.パラメータを最適化し,フィルタリング条件を増やすことで,偽信号比率をさらに低下させることができ,その結果,より良い戦略のパフォーマンスを得ることができる.

ストラテジーソースコード
/*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)