Strategi ini menggunakan saluran ATR dan teori pecah untuk mengikuti trend dengan memasuki apabila saluran itu terputus. Ia tergolong dalam strategi trend-mengikuti. Strategi ini mudah dan mudah difahami, menggunakan saluran purata bergerak dan penunjuk ATR untuk menentukan arah trend dan mengeluarkan isyarat perdagangan di titik utama.
Strategi ini membina band atas dan bawah dengan harga tinggi, rendah, dekat dan penunjuk ATR untuk membentuk saluran ATR. Lebar saluran ditentukan oleh saiz parameter ATR. Apabila harga menembusi saluran, ia dinilai sebagai permulaan trend, di mana titik-titik kedudukan panjang atau pendek dimasukkan. Strategi ini mempunyai dua peringkat isyarat perdagangan. Apabila harga menembusi satu lebar ATR, ia dianggap sebagai trend yang muncul, mencetuskan tahap pertama titik beli / jual. Apabila harga menembusi dua lebar ATR, ia dianggap sebagai trend percepatan, mencetuskan tahap kedua titik beli / jual.
Kelebihan utama strategi ini ialah:
Risiko utama strategi ini ialah:
Arah pengoptimuman untuk strategi ini termasuk:
Rangka kerja keseluruhan strategi ini jelas dan boleh digunakan sebagai bukti konsep. Tetapi terdapat jurang dari perdagangan langsung yang membolehkan pengoptimuman yang besar. Jika kawalan risiko dan kekerapan perdagangan dapat ditingkatkan lagi, prospek aplikasi akan baik.
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 1h 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/ // © Myhaj_Lito //@version=5 strategy("Renko Trend Strategy",shorttitle = "RENKO-Trend str.",overlay = true) TF = input.timeframe(title='TimeFrame', defval="60") ATRlength = input.int(title="ATR length", defval=60, minval=2, maxval=1000) HIGH = request.security(syminfo.tickerid, TF, high) LOW = request.security(syminfo.tickerid, TF, low) CLOSE = request.security(syminfo.tickerid, TF, close) ATR = request.security(syminfo.tickerid, TF, ta.atr(ATRlength)) RENKOUP = float(na) RENKODN = float(na) H = float(na) COLOR = color(na) BUY = int(na) SELL = int(na) UP = bool(na) DN = bool(na) CHANGE = bool(na) RENKOUP := na(RENKOUP[1]) ? (HIGH + LOW) / 2 + ATR / 2 : RENKOUP[1] RENKODN := na(RENKOUP[1]) ? (HIGH + LOW) / 2 - ATR / 2 : RENKODN[1] H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP - RENKODN : RENKOUP[1] - RENKODN[1] COLOR := na(COLOR[1]) ? color.white : COLOR[1] BUY := na(BUY[1]) ? 0 : BUY[1] SELL := na(SELL[1]) ? 0 : SELL[1] UP := false DN := false CHANGE := false // calculating if not CHANGE and close >= RENKOUP[1] + H * 2 CHANGE := true UP := true RENKOUP := RENKOUP[1] + ATR * 2 RENKODN := RENKOUP[1] + ATR COLOR := color.rgb(0, 255, 170,60) SELL := 0 BUY += 2 BUY if not CHANGE and close >= RENKOUP[1] + H CHANGE := true UP := true RENKOUP := RENKOUP[1] + ATR RENKODN := RENKOUP[1] COLOR := color.rgb(0, 230, 38,60) SELL := 0 BUY += 1 BUY if not CHANGE and close <= RENKODN[1] - H * 2 CHANGE := true DN := true RENKODN := RENKODN[1] - ATR * 2 RENKOUP := RENKODN[1] - ATR COLOR := color.rgb(255, 92, 43,60) BUY := 0 SELL += 2 SELL if not CHANGE and close <= RENKODN[1] - H CHANGE := true DN := true RENKODN := RENKODN[1] - ATR RENKOUP := RENKODN[1] COLOR := color.rgb(245, 69, 69,60) BUY := 0 SELL += 1 SELL //// STRATEGY if(UP) strategy.entry("Long",strategy.long) if(DN) strategy.entry("Short",strategy.short) // ploting bgcolor(COLOR)