
Strategi ini menggabungkan indikator volume transaksi relatif dan indikator tren untuk menilai pergerakan harga, untuk mewujudkan sistem perdagangan otomatis yang menggabungkan pelacakan tren dan terobosan. Ketika volume transaksi meningkat dan fluktuasi lebih kecil, beli dan berhenti atau rugi berdasarkan titik-titik stop loss dan pergerakan harga.
Bollinger Bands digunakan untuk menentukan apakah harga berfluktuasi kecil. Implementasi spesifiknya adalah bandwidth perbandingan ATR dan BOLL.
Hitung volume transaksi rata-rata dari N hari lalu dan bandingkan dengan Volume saat ini untuk melihat apakah volume transaksi meningkat.
Ketika harga berjalan rendah, volume transaksi meningkat, dan ketika volatilitas lebih rendah, mereka membeli.
Setting Stop Loss, Memantau Pembaruan Harga Minimum
Stop loss terjadi ketika harga turun melewati titik stop loss.
Stop saat harga membentuk pola multi-headed swallowing.
Kombinasi volume transaksi dan indikator volatilitas, dapat secara efektif memfilter terobosan palsu.
Menggunakan metode trend tracking stop loss, Anda dapat memaksimalkan keuntungan.
Menggunakan penilaian morfologi seperti multi head swallowing sebagai sinyal stop, Anda dapat berhenti tepat waktu menjelang pembalikan tren.
Strategi ini intuitif dan sederhana, mudah dipahami dan diikuti.
Aturan Stop Loss dan Stop Stop lebih jelas, mengurangi ketidakpastian yang ditimbulkan oleh antisipate.
Indikator kelulusan terlambat, mungkin kehilangan titik masuk terbaik.
Pertimbangan morfologi seperti multihead swallowing mungkin tidak cukup dipercaya sebagai sinyal berhenti, dan ada risiko berhenti terlalu dini.
Stop loss adalah strategi yang dilakukan setelah stop loss, dimana ada risiko besar dari kemungkinan kerugian tunggal.
Parameter yang perlu disesuaikan dengan wajar, seperti ATR dan siklus volume transaksi, atau mungkin terjadi transaksi yang sering terjadi.
Perhatian perlu diberikan pada aturan stop loss dan optimalisasi untuk mengurangi kemungkinan posisi kosong yang tidak perlu.
Cobalah untuk memfilter sinyal masuk dengan indikator lain, seperti MACD dan sebagainya.
Mengoptimalkan ATR dan parameter siklus volume transaksi untuk mengurangi risiko transaksi yang sering terjadi.
Cobalah sinyal stop lainnya, seperti mekanisme Exit seperti harga terjatuh.
Studi tentang kemungkinan untuk mengunci lebih banyak keuntungan dengan menyesuaikan stop loss secara dinamis.
Uji pengaruh periode kepemilikan yang berbeda terhadap kinerja, mencari periode kepemilikan yang optimal.
Mengamati efek kontraksi dari berbagai varietas untuk menemukan varietas yang paling cocok.
Strategi ini secara keseluruhan lebih sederhana dan intuitif, dengan menggabungkan indikator volume transaksi dan penilaian pergerakan harga, untuk mencapai strategi jenis trend tracking. Keuntungan adalah bahwa sinyal yang dihasilkan lebih jelas, mudah untuk melacak, mengurangi risiko operasi reverse. Namun, masih perlu mengoptimalkan kualitas sinyal filter dan stop loss aturan, sehingga strategi lebih stabil dan dapat diandalkan.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DojiEmoji (kevinhhl)
//@version=4
strategy("[KL] Relative Volume Strategy",overlay=true,pyramiding=1)
ENUM_LONG = "Long"
VERBOSE_MODE = false
opened_position = false
// Timeframe {
backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time)
USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)")
backtest_timeframe_end = input(defval = timestamp("01 May 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time)
within_timeframe = true
// }
// Volatility Indicators {
// BOLL:
BOLL_length = 20, BOLL_src = close, SMA20 = sma(BOLL_src, BOLL_length), BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length)
BOLL_upper = SMA20 + BOLL_sDEV_x2, BOLL_lower = SMA20 - BOLL_sDEV_x2
plot(SMA20, "Basis", color=#872323, offset = 0)
BOLL_p1 = plot(BOLL_upper, "BOLL Upper", color=color.navy, offset = 0, transp=50)
BOLL_p2 = plot(BOLL_lower, "BOLL Lower", color=color.navy, offset = 0, transp=50)
//fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85)
// ATR v. sDev of prices
ATR_x2 = atr(input(10,title="Length of ATR [Trailing Stop Loss] (x2)"))*2
//plot(SMA20+ATR_x2, "SMA20 + ATR_x2", color=color.gray, offset = 0, transp=50)
//plot(SMA20-ATR_x2, "SMA20 - ATR_x2", color=color.gray, offset = 0, transp=50)
//plotchar(ATR_x2, "ATR_x2", "", location = location.bottom)
is_low_volat = ATR_x2 > BOLL_sDEV_x2
// }
// Trailing stop loss {
TSL_source = low
var entry_price = float(0), var stop_loss_price = float(0)
TSL_line_color = color.green
if strategy.position_size == 0 or not within_timeframe
TSL_line_color := color.black
stop_loss_price := TSL_source - ATR_x2
else if strategy.position_size > 0
stop_loss_price := max(stop_loss_price, TSL_source - ATR_x2)
plot(stop_loss_price, color=TSL_line_color)
// }
// Relative volume indicator {
LEN_RELATIVE_VOL = input(5, title="SMA(volume) length (for relative comparison)")
relative_vol = sma(volume,LEN_RELATIVE_VOL)
// }
// price actions {
bar_range_ratio = abs(close-open)/(high-low)
engulfing = low < low[1] and high > high[1] and abs(close-open) > abs(close-open)[1]
// }
// MAIN:
if within_timeframe
entry_msg = "", exit_msg = close <= entry_price ? "stop loss" : "take profit"
// ENTRY :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if close > open and volume > relative_vol and is_low_volat
if strategy.position_size > 0
entry_msg := "adding"
else if strategy.position_size == 0
entry_msg := "initial"
if strategy.position_size == 0
entry_price := close
stop_loss_price := TSL_source - ATR_x2
ATR_x2 := ATR_x2
strategy.entry(ENUM_LONG, strategy.long, comment=entry_msg)
// EXIT ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if strategy.position_size > 0
bExit = false
// EXIT: Case (A) touches trailing stop loss
if TSL_source <= stop_loss_price
exit_msg := exit_msg + "[TSL]"
bExit := true
// EXIT: Case (B)
else if close < open and not is_low_volat and engulfing and (high-low) > ATR_x2
exit_msg := VERBOSE_MODE ? exit_msg + "[engulfing bearish]" : exit_msg
bExit := true
strategy.close(ENUM_LONG, when=bExit, comment=exit_msg)
// CLEAN UP:
if strategy.position_size == 0
entry_price := 0
stop_loss_price := float(0)