資源の読み込みに... 荷物...

作者: リン・ハーンチャオチャン開催日: 2024-01-23 12:00:04
タグ:

img

概要

戦略の論理

利点

  1. ATRをチャネル範囲の基準として使用することで,市場の変動をより正確に把握することができる.ATRはより良いチャネルサイズ化のために市場の変動を効果的に測定する.

  2. SMAとATRチャンネルのダブルフィルターは,より信頼性の高い取引信号を保証し,偽信号を減らす.

  3. シンプルで明確な論理で 分かりやすく実行できます インテュイティブな長/短の判断は インディケーターやチャネル・ブレークアウトに基づきます

  4. 上下トレンドから利益を得るための長取引と短取引の両方を含む.

リスク分析

  1. SMAは市場の回転が遅れる システム的なリスクがある.価格はすでに下がっているかもしれないが, SMAはまだ下がっていない.

  2. ATR パラメータと係数の設定が不十分であれば,不合理なチャンネル範囲が生じる.

可能な解決策:

  1. 取引頻度を調整したり フィルターを追加したりして 偽のブレイクによる損失を回避します

  2. MACDとKDJとの交差確認を追加して,SMAのシステム遅れリスクを回避する.

  3. 合理的なチャンネル範囲を確保するために ATR 期間と係数を最適化する.

  4. トレンドバイアスの全体的な市場体制を決定します.牛のトレンドでロングで,熊のトレンドでショートです.

増進 の 機会

この戦略を強化するいくつかの方法:

  1. 偽のブレイクアウトのウィップソウを減らすために追加のインジケーターフィルターを追加し,MACD,KDJなどを使用してシグナルを確認します.

  2. ATR 期間とチャネル係数を最適化し,広範なバックテストを通じて現在の市場変動条件に適合させる.

  3. トレーリングストップは一般的な実装である.

  4. 価格がSMAベースラインから 逸脱すると 損失を素早く削減します

  5. ブレイクアウト方向のブライス/ベアバイアスを決定するために,より高いタイムフレームトレンド分析を組み込む.例えば,毎日のブレイクアウトエントリーの全体的なトレンドを決定するために,週数を使用する.

概要


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 30m
basePeriod: 15m
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/
// © omererkan

//@version=5
strategy(title="ATR Channel Breakout")

smaLength = input.int(150, title="SMA Length")
atrLength = input.int(30, title="ATR Length")

ubOffset = input.float(4, title="Upperband Offset", step=0.50)
lbOffset = input.float(4, title="Lowerband Offset", step=0.50)


smaValue = ta.sma(close, smaLength)
atrValue = ta.atr(atrLength)

upperBand = smaValue + (ubOffset * atrValue)
lowerBand = smaValue - (lbOffset * atrValue)


plot(smaValue, title="SMA", color=color.orange)
plot(upperBand, title="UB", color=color.green, linewidth=2)
plot(lowerBand, title="LB", color=color.red, linewidth=2)


enterLong = ta.crossover(close, upperBand)
exitLong  = ta.crossunder(close, smaValue)


enterShort = ta.crossunder(close, lowerBand)
exitShort  = ta.crossover(close, smaValue)


if enterLong
    strategy.entry("Long", strategy.long)

if enterShort
    strategy.entry("Short", strategy.short)


if exitLong
    strategy.close("Long", "Close Long")

if exitShort
    strategy.close("Short", "Close Short")

もっと