この戦略は,トレンドを追跡するために,前日の閉店価格とATR指標に基づいて,ロングとショートエントリー価格レベルとストップ・ロスの価格レベルを設定します.価格がエントリー価格レベルを突破するとロングまたはショートになり,ストップ・ロスのポジションをフラット化します.
この戦略は,前日の閉値,高値,低値,ATR指標を使用して,エントリー価格レベルとストップ損失レベルを計算します. 具体的な式は以下のとおりです.
ロングエントリー価格レベル TPup = 前日
短期入場価格レベル TPダウン = 前日の閉店 - ATR * 0.8
ロングストップ・ロスのレベルスランプ = 前日の閉店+ATR * 0.2
ショートストップ・ロスのレベル sldown = 前日
ロング・テイク・プロフィートレベル/プロフィートレベルアップ = 前日の低値 + ATR * 1.7
短取利益レベル 低取利益レベル = 前日の高値 - ATR * 1.7
価格がTPupを突破すると,ロング10ロットをします.価格がTPdownを突破すると,ショート10ロットをします.その後,ストップ・ロスを設定し,利益を得ます.ストップ・ロスのトリガーまたは利益のトリガーでポジションを終了します.
この戦略の主な利点は以下の通りです.
ATR指標を使用して,市場変動に基づいて動的エントリー価格レベルとストップ損失レベルを設定し,取引を市場状況により適応できるようにします.
前日
ストップ・ロスのメカニズムと 利益のメカニズムを設定し,それぞれの取引のリスクを効果的に制御します.
この戦略の主なリスクは,
ATRによって設定される価格レベルは,市場の条件を真に反映するにはあまりにも理想的であり,頻繁にストップロスのトリガーにつながる可能性があります. ATRのパラメータは調整され,ストップロスの範囲は拡大することができます.
前日の閉店は将来の傾向を決定することはできない.急激な逆転は方向選択を誤導する可能性がある.他の指標を組み合わせて傾向を確認することができる.
Stop loss と take profit はトリガーに操作され,実際に stop loss を実行できない.バッチストップ損失は,罠にはまらないように使用することができる.
この戦略は,次の側面で最適化できます.
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")