Strategi ini menetapkan tahap harga masuk panjang dan pendek dan tahap harga stop loss berdasarkan harga penutupan hari sebelumnya dan penunjuk ATR untuk mengesan trend.
Strategi ini menggunakan harga penutupan hari sebelumnya, harga tinggi, harga rendah dan penunjuk ATR untuk mengira tahap harga kemasukan dan tahap stop loss.
Tahap harga kemasukan panjang TPup = Penutupan hari sebelumnya
Tahap harga kemasukan pendek TPdown = Penutupan hari sebelumnya - ATR * 0.8
Long stop loss level slup = Hari sebelumnya
Tahap Stop Loss Pendek sldown = Hari Terdahulu
Tahap mengambil keuntungan panjang Tahap keuntungan = Hari sebelumnya
Tahap keuntungan mengambil pendek (Short Take Profit Level) Tahap keuntungan turun = Hari sebelumnya
Apabila harga menembusi TPup, pergi panjang 10 lot. Apabila harga menembusi TPdown, pergi pendek 10 lot. Kemudian tetapkan stop loss dan ambil keuntungan. Posisi keluar pada pemicu stop loss atau mengambil keuntungan.
Kelebihan utama strategi ini ialah:
Menggunakan penunjuk ATR untuk menetapkan tahap harga kemasukan dinamik dan tahap stop loss berdasarkan turun naik pasaran, menjadikan perdagangan lebih mudah menyesuaikan diri dengan keadaan pasaran.
Menggunakan penutupan hari sebelumnya untuk menentukan arah dan digabungkan dengan penunjuk ATR untuk mengenal pasti tahap perdagangan tertentu, mengelakkan ditipu oleh terlalu banyak bunyi harga masa nyata.
Menetapkan kedua-dua mekanisme stop loss dan mengambil keuntungan untuk mengawal risiko setiap perdagangan dengan berkesan.
Risiko utama strategi ini ialah:
Tahap harga yang ditetapkan oleh ATR mungkin terlalu ideal untuk benar-benar mencerminkan keadaan pasaran, yang membawa kepada pemicu stop loss yang kerap. Parameter ATR boleh diselaraskan atau julat stop loss boleh diperluaskan.
Penutupan hari sebelumnya tidak dapat menentukan trend masa depan. Pembalikan drastis boleh mengelirukan pilihan arah. Indikator lain boleh digabungkan untuk mengesahkan trend.
Stop loss dan take profit boleh dimanipulasi untuk mencetuskan, gagal untuk benar-benar menghentikan kerugian.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Mengoptimumkan parameter ATR untuk menjadikan tahap perdagangan lebih sesuai dengan turun naik pasaran.
Tambah mekanisme penilaian trend untuk mengelakkan pembalikan perdagangan, contohnya menggabungkan dengan penunjuk MA.
Sesuaikan julat mengambil keuntungan, mengekalkan keuntungan sambil mengurangkan kebarangkalian pemicu mengambil keuntungan.
Tetapkan batch stop loss dan mengambil keuntungan untuk mengurangkan kebarangkalian terperangkap atau kehilangan.
Tambah mekanisme saiz kedudukan untuk meningkatkan kedudukan dalam fasa trend.
Strategi ini menetapkan tahap perdagangan dinamik berdasarkan penutupan hari sebelumnya dan ATR untuk mengesan trend dengan berkesan. Ia juga menggunakan stop loss dan mengambil keuntungan untuk mengawal risiko perdagangan tunggal. Arahan pengoptimuman termasuk penyesuaian parameter, peningkatan mekanisme penghakiman, penyesuaian keuntungan dan saiz kedudukan dan sebagainya. Secara umum, strategi ini mencapai kesan trend berikut yang baik.
/*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")