
この戦略は,前日の閉店価格と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回数で空頭する.その後,ストップとストップを設定し,価格がストップ価格に触れた後にストップをクリアし,ストップ価格に触れた後にストップをクリアする.
この戦略の利点は以下の通りです
ATR指標を使用して動的な開場価格と停止価格を設定し,市場の変動に応じて調整し,取引を市場環境により適応させることができます.
前日の閉店価格を活用して方向を決定し,ATR指数と組み合わせて具体的な取引価格を決定し,騒音が多すぎるリアルタイム価格に惑わされないようにする.
また,ストップ・ロスとストップ・ストップ・メカニズムを設定することで,単一取引のリスクをコントロールできます.
この戦略の主なリスクは
ATR指標で設定された価格が過度に理想化され,市場状況を真に反映できない可能性があり,頻繁なストップダウスを引き起こします.ATRパラメータを適切に調整したり,ストップダウスの幅を大きくしたりできます.
前日の閉盘価格は,将来のトレンドを決定することができないので,急激な反転が発生した場合,取引方向の選択を誤導します. 他の指標と組み合わせたトレンド確認を検討することができます.
止損と停止位置は,操作で誘発され,実際に止損することができない.部品の批量止損を設定して,套入を避けることができる.
この戦略は以下の点で最適化できます.
ATRパラメータを最適化して,取引価格を市場の変動に合わせる.
トレンド判断のメカニズムを増やし,市場を逆転させないようにする.例えば,MAなどの指標を組み合わせる.
値の幅を調整して,利性を維持しながら利が引き出される確率を減らす.
構成要素の量損失停止と停止を設定し,被覆と損失の確率を下げます.
ポジション管理メカニズムの追加により,トレンド期間のポジションを増加させることができる.
この戦略は,前日の閉盘価格と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")