Tren Saluran Triple Moving Average Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-06 16:58:57
Tag:

img

Gambaran umum

Strategi ini menggunakan kombinasi tiga rata-rata bergerak untuk menentukan arah tren berdasarkan urutan rata-rata bergerak, sehingga mencapai tren berikut.

Prinsip Strategi

Strategi ini menggunakan tiga rata-rata bergerak dengan periode yang berbeda, termasuk rata-rata bergerak cepat, rata-rata bergerak menengah, dan rata-rata bergerak lambat.

Ketentuan masuk:

  1. Long: Ketika MA cepat > MA menengah > MA lambat, pasar dianggap berada dalam tren naik, pergi panjang.
  2. Pendek: Ketika MA lambat < MA menengah < MA cepat, pasar dianggap berada dalam tren penurunan, pergi pendek.

Kondisi keluar:

  1. MA exit: Posisi tutup ketika urutan dari tiga moving average berbalik.
  2. Keluar TP/SL: Tetapkan titik profit dan stop loss tetap, seperti 12% untuk TP dan 1% untuk SL, keluar saat harga mencapai TP atau SL.

Strategi ini sederhana dan langsung, menggunakan tiga rata-rata bergerak untuk menentukan arah tren pasar untuk tren setelah perdagangan, cocok untuk pasar dengan tren yang kuat.

Analisis Keuntungan

  • Gunakan tiga rata-rata bergerak untuk menentukan tren dan menyaring kebisingan pasar.
  • Rata-rata bergerak dari periode yang berbeda dapat lebih akurat menentukan titik pembalikan tren.
  • Menggabungkan indikator rata-rata bergerak dan TP/SL tetap untuk mengelola risiko modal.
  • Logika strategi sederhana dan intuitif, mudah dipahami dan diimplementasikan.
  • Parameter periode MA dapat dengan mudah dioptimalkan untuk beradaptasi dengan kondisi pasar dari siklus yang berbeda.

Risiko dan Peningkatan

  • Di pasar siklus panjang, rata-rata bergerak mungkin memiliki lebih banyak sinyal palsu, yang menyebabkan kerugian yang tidak perlu.
  • Pertimbangkan untuk menambahkan indikator atau filter lain untuk meningkatkan profitabilitas.
  • Mengoptimalkan kombinasi parameter periode rata-rata bergerak untuk beradaptasi dengan kondisi pasar yang lebih luas.
  • Gabungkan dengan indikator kekuatan tren untuk menghindari membeli puncak dan menjual dasar.
  • Tambahkan otomatis berhenti untuk menghindari pembesaran kerugian.

Kesimpulan

Triple moving average trend following strategy memiliki logika yang jelas dan mudah dipahami, menggunakan moving average untuk menentukan arah tren untuk tren sederhana setelah perdagangan. Keuntungannya adalah mudah diterapkan, dan menyesuaikan parameter periode MA dapat beradaptasi dengan kondisi pasar dari siklus yang berbeda. Namun, ada juga risiko sinyal palsu tertentu, yang dapat ditingkatkan dengan menambahkan indikator atau kondisi lain untuk mengurangi kerugian yang tidak perlu dan meningkatkan profitabilitas strategi. Secara keseluruhan, strategi ini cocok untuk pemula yang tertarik pada perdagangan tren untuk belajar dan berlatih.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
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/
// © Jompatan

//@version=5
strategy('Strategy Triple Moving Average', overlay=true, initial_capital = 1000, commission_value=0.04, max_labels_count=200)

//INPUTS
mov_ave = input.string(defval="EMA", title='Moving Average type:', options= ["EMA", "SMA"])

period_1 = input.int(9,  title='Period 1', inline="1", group= "============== Moving Average Inputs ==============")
period_2 = input.int(21, title='Period 2', inline="2", group= "============== Moving Average Inputs ==============")
period_3 = input.int(50, title='Period 3', inline="3", group= "============== Moving Average Inputs ==============")

source_1 = input.source(close, title='Source 1', inline="1", group= "============== Moving Average Inputs ==============")
source_2 = input.source(close, title='Source 2', inline="2", group= "============== Moving Average Inputs ==============")
source_3 = input.source(close, title='Source 3', inline="3", group= "============== Moving Average Inputs ==============")


//EXIT CONDITIONS
exit_ma   = input.bool(true, title= "Exit by Moving average condition", group="================ EXIT CONDITIONS ================")
exit_TPSL = input.bool(false, title= "Exit by Take Profit and StopLoss", group="================ EXIT CONDITIONS ================")
TP        = input.int(12, title='Take Profit', step=1, group="================ EXIT CONDITIONS ================")
SL        = input.int(1, title='Stop Loss', step=1, group="================ EXIT CONDITIONS ================")
plot_TPSL = input.bool(false, title='Show TP/SL lines', group="================ EXIT CONDITIONS ================")


//Date filters
desde = input(defval= timestamp("01 Jan 2023 00:00 -3000"), title="From", inline="12", group= "============= DATE FILTERS =============")
hasta = input(defval= timestamp("01 Oct 2099 00:00 -3000"), title="To  ", inline="13", group= "============= DATE FILTERS =============")
enRango = true

//COMMENTS
//entry_long_comment  = input.string(defval=" ", title="Entry Long comment: ", inline="14", group="============= COMMENTS =============")
//exit_long_comment   = input.string(defval=" ", title="Exit Long comment:  ", inline="15", group="============= COMMENTS =============")
//entry_short_comment = input.string(defval=" ", title="Entry Short comment:", inline="16", group="============= COMMENTS =============")
//exit_short_comment  = input.string(defval=" ", title="Exit Short comment: ", inline="17", group="============= COMMENTS =============")

//============================================================

//Selecting Moving average type
ma1 = mov_ave == "EMA" ? ta.ema(source_1, period_1) : ta.sma(source_1, period_1)
ma2 = mov_ave == "EMA" ? ta.ema(source_2, period_2) : ta.sma(source_2, period_2)
ma3 = mov_ave == "EMA" ? ta.ema(source_3, period_3) : ta.sma(source_3, period_3)

//============================================================
//Entry Long condition: Grouped Moving average from: (ma fast > ma middle > ma slow)
long_condition = (ma1 > ma2) and (ma2 > ma3)

//Entry Short condition: Grouped Moving average from: (ma fast < ma middle < ma slow)
short_condition = (ma1 < ma2) and (ma2 < ma3)

//============================================================

cantidad       = strategy.equity / close
comprado_long  = strategy.position_size > 0
comprado_short = strategy.position_size < 0

var long_profit_price  = 0.0
var long_stop_price    = 0.0
var short_profit_price = 0.0
var short_stop_price   = 0.0

//============================================================

//ENTRY LONG
if not comprado_long and not comprado_short and long_condition and not long_condition[1] and enRango
    strategy.entry('Long', strategy.long, qty=cantidad, comment= "Entry Long")
    if exit_TPSL
        long_profit_price := close * (1 + TP/100)
        long_stop_price   := close * (1 - SL/100)
    else
        long_profit_price := na
        long_stop_price   := na
//============================================================


//ENTRY SHORT
if not comprado_long and not comprado_short and short_condition and not short_condition[1] and enRango
    strategy.entry('Short', strategy.short, qty=cantidad, comment= "Entry Short")
    if exit_TPSL
        short_profit_price := close * (1 - TP/100)
        short_stop_price   := close * (1 + SL/100)
    else
        short_profit_price := na
        short_stop_price   := na
//============================================================


//EXIT LONG 
if comprado_long and exit_ma and long_condition[1] and not long_condition
    strategy.close('Long', comment='Exit-Long(MA)')
if comprado_long and exit_TPSL
    strategy.exit('Long', limit=long_profit_price, stop=long_stop_price, comment='Exit-Long(TP/SL)')
//============================================================


//EXIT SHORT 
if comprado_short and exit_ma and short_condition[1] and not short_condition
    strategy.close('Short', comment='Exit-Short(MA)')
if comprado_short and exit_TPSL
    strategy.exit('Short', limit=short_profit_price, stop=short_stop_price, comment='Exit-Short(TP/SL)')
//============================================================



//PLOTS
plot(ma1, linewidth=2, color=color.rgb(255, 255, 255))
plot(ma2, linewidth=2, color=color.rgb(144, 255, 252))
plot(ma3, linewidth=2, color=color.rgb(49, 167, 255))
//Plot Take Profit line
plot(plot_TPSL ? comprado_long  ? long_profit_price : comprado_short ? short_profit_price : na : na, color=color.new(color.lime, 30), style= plot.style_linebr)
//Plot StopLoss line
plot(plot_TPSL ? comprado_long ? long_stop_price : comprado_short ? short_stop_price : na : na, color=color.new(color.red, 30), style= plot.style_linebr)









Lebih banyak