
Strategi ini menggunakan saluran ATR dan teori celah, memasuki trend ketika menerobos saluran, termasuk dalam strategi pengesanan trend. Strategi ini mudah difahami, menggunakan saluran linear dan indikator ATR untuk menentukan arah trend, dan mengeluarkan isyarat perdagangan di titik-titik penting.
Strategi ini menggunakan harga tinggi, rendah, penutupan dan penunjuk ATR untuk membina tren naik turun, membentuk saluran ATR. Lebar saluran ditentukan oleh ukuran parameter ATR. Apabila harga menembusi saluran, ia dinilai sebagai permulaan trend, ketika itu masuk ke arah melakukan lebih banyak atau lebih sedikit.
Kelebihan utama strategi ini ialah:
Risiko utama strategi ini ialah:
Strategi ini boleh dioptimumkan dengan cara berikut:
Rangka keseluruhan strategi ini jelas, dan boleh digunakan sebagai strategi pengesahan konsep. Tetapi jarak dari lapangan masih ada jurang tertentu, dengan ruang pengoptimuman yang lebih besar.
/*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)