前日の終値とATR指標に基づくトレンドフォロー戦略


作成日: 2024-01-31 14:39:09 最終変更日: 2024-01-31 14:39:09
コピー: 3 クリック数: 676
1
フォロー
1617
フォロワー

前日の終値とATR指標に基づくトレンドフォロー戦略

概要

この戦略は,前日の閉店価格とATR指標に基づいて,多空頭ポジション開設価格と止損価格を設定し,トレンドの追跡を実現する.価格が開設価格を破るとき,多空,止損または止まりの後に清算を行う.

戦略原則

この戦略は,前日の閉盘価格,最高価格,最低価格およびATR指標を使用して,入場価格とストップ価格を計算します. 具体的計算式は以下のとおりです.

多頭開設価格 TPup = 前日の閉店価格 + ATR* 0.8 空頭開設価格 TPdown = 前日の閉店価格 - ATR* 0.8

多頭ストップ価格のスラップ = 前日の閉店価格 + ATR* 0.2 空頭ストップ価格 sldown = 前日の閉店価格 - ATR* 0.2

多頭ストップ値のprofitlevelup = 前日の最低値 + ATR* 1.7
空頭ストップ 値上がり 利益レベルダウン = 前日の最高値 - ATR* 1.7

価格が多頭開設価格TPupを突破すると,10回数で多頭する.価格が空頭開設価格TPdownを突破すると,10回数で空頭する.その後,ストップとストップを設定し,価格がストップ価格に触れた後にストップをクリアし,ストップ価格に触れた後にストップをクリアする.

優位分析

この戦略の利点は以下の通りです

  1. ATR指標を使用して動的な開場価格と停止価格を設定し,市場の変動に応じて調整し,取引を市場環境により適応させることができます.

  2. 前日の閉店価格を活用して方向を決定し,ATR指数と組み合わせて具体的な取引価格を決定し,騒音が多すぎるリアルタイム価格に惑わされないようにする.

  3. また,ストップ・ロスとストップ・ストップ・メカニズムを設定することで,単一取引のリスクをコントロールできます.

リスク分析

この戦略の主なリスクは

  1. ATR指標で設定された価格が過度に理想化され,市場状況を真に反映できない可能性があり,頻繁なストップダウスを引き起こします.ATRパラメータを適切に調整したり,ストップダウスの幅を大きくしたりできます.

  2. 前日の閉盘価格は,将来のトレンドを決定することができないので,急激な反転が発生した場合,取引方向の選択を誤導します. 他の指標と組み合わせたトレンド確認を検討することができます.

  3. 止損と停止位置は,操作で誘発され,実際に止損することができない.部品の批量止損を設定して,套入を避けることができる.

最適化の方向

この戦略は以下の点で最適化できます.

  1. ATRパラメータを最適化して,取引価格を市場の変動に合わせる.

  2. トレンド判断のメカニズムを増やし,市場を逆転させないようにする.例えば,MAなどの指標を組み合わせる.

  3. 値の幅を調整して,利性を維持しながら利が引き出される確率を減らす.

  4. 構成要素の量損失停止と停止を設定し,被覆と損失の確率を下げます.

  5. ポジション管理メカニズムの追加により,トレンド期間のポジションを増加させることができる.

要約する

この戦略は,前日の閉盘価格とATR指標の動態を設定した取引価格に基づいて,トレンドの効果的な追跡を実現する.同時に,止損とストップメカニズムを設定し,単一の取引のリスクを制御する.最適化方向は,パラメータの最適化,判断メカニズムの追加,ストップメカニズムの調整,およびポジション管理などである.全体的に,この戦略は,トレンド追跡の効果をうまく実現した.

ストラテジーソースコード
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("PC with ATR Strategy (by Zhipengcfel)", shorttitle="PC_ATR", pyramiding=1, overlay=true)

// Zhipengcfel's Previous day's close with ATR Strategy
//
// Version 1.0
// @copyright Idea by Zhipengcfel on June 29, 2017.

//Previous day's close plus ATR strategy. 
//Buy (if breaking PC+ATR*0.8) or sell (if breaking PC-0.8*ATR). 

//This is just a demo vision and can not be used for real auto trading



///////////// ATR value
ATRlength = input(14, minval=1, title="lookback length of ATR")
//ATR = atr(ATRlength)
ATR = request.security(syminfo.tickerid, 'D', atr(ATRlength))

///////////// Entry levels and target levels
entr = input(0.8, minval=0.1, step = 0.05, title="Entry level for ATR")
tplevel = input(1.7, minval=0.1, step = 0.05, title="Exit level for ATR")
yesterday = request.security(syminfo.tickerid, 'D', close[1])
dl = request.security(syminfo.tickerid, 'D', low[1])
dh = request.security(syminfo.tickerid, 'D', high[1])
TPup = yesterday+entr*ATR
TPdown = yesterday-entr*ATR
profitlevelup = dl+tplevel*ATR
profitleveldown = dh-tplevel*ATR

///////////// Stop loss level
sl = input( 0.2  ,minval=0.01, step = 0.05, title="Stop loss level for ATR") //82 for 2, 83 for 3 and more positions
slup = yesterday+sl*ATR
sldown = yesterday-sl*ATR

///////////// Starting year to backtest
yer = input( 2014  , title="Backtest Starting year")


///////////// strategy: PC + ATR
if (close > TPup) and (close < profitlevelup)
    strategy.entry("LONG", strategy.long, 10, comment="Buy", when = year > yer, oca_name="My oca")
    strategy.exit("Stopped", "LONG",  stop = slup, limit= profitlevelup, oca_name="My oca")
            

if (close < TPdown) and (close > profitleveldown)
    strategy.entry("SHORT", strategy.short, 10, comment="Sell", when = year > yer, oca_name="My oca")
    strategy.exit("Stopped", "SHORT", stop = sldown, limit= profitleveldown, oca_name="My oca")