Trend Saluran Purata Bergerak Tiga Berikutan Strategi

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

img

Ringkasan

Strategi ini menggunakan gabungan tiga purata bergerak untuk menentukan arah trend berdasarkan urutan purata bergerak, supaya dapat mencapai trend berikut. Pergi panjang apabila purata bergerak pantas, purata bergerak sederhana, dan purata bergerak perlahan disusun mengikut urutan; pergi pendek apabila purata bergerak perlahan, purata bergerak sederhana, dan purata bergerak pantas disusun mengikut urutan.

Prinsip Strategi

Strategi ini menggunakan tiga purata bergerak dengan tempoh yang berbeza, termasuk purata bergerak pantas, purata bergerak sederhana, dan purata bergerak perlahan.

Syarat kemasukan:

  1. Lama: Apabila MA cepat > MA sederhana > MA perlahan, pasaran dianggap berada dalam trend menaik, pergi lama.
  2. Pendek: Apabila MA perlahan < MA sederhana < MA cepat, pasaran dianggap berada dalam trend menurun, pergi pendek.

Syarat keluar:

  1. Keluar MA: Tutup kedudukan apabila urutan tiga purata bergerak berbalik.
  2. Keluar TP/SL: Tetapkan titik keuntungan dan stop loss tetap, seperti 12% untuk TP dan 1% untuk SL, keluar apabila harga mencapai TP atau SL.

Strategi ini mudah dan langsung, menggunakan tiga purata bergerak untuk menentukan arah trend pasaran untuk trend selepas perdagangan, sesuai untuk pasaran dengan trend yang kuat.

Analisis Kelebihan

  • Gunakan tiga purata bergerak untuk menentukan trend dan menapis bunyi pasaran.
  • Purata bergerak dari tempoh yang berbeza dapat menentukan titik pembalikan trend dengan lebih tepat.
  • Menggabungkan penunjuk purata bergerak dan TP / SL tetap untuk menguruskan risiko modal.
  • Logik strategi adalah mudah dan intuitif, mudah difahami dan dilaksanakan.
  • Parameter tempoh MA boleh dioptimumkan dengan mudah untuk menyesuaikan diri dengan keadaan pasaran kitaran yang berbeza.

Risiko dan Penambahbaikan

  • Dalam pasaran kitaran panjang, purata bergerak mungkin mempunyai lebih banyak isyarat palsu, yang membawa kepada kerugian yang tidak perlu.
  • Pertimbangkan untuk menambah penunjuk atau penapis lain untuk meningkatkan keuntungan.
  • Mengoptimumkan gabungan parameter purata bergerak untuk menyesuaikan diri dengan keadaan pasaran yang lebih luas.
  • Gabungkan dengan penunjuk kekuatan trend untuk mengelakkan membeli puncak dan menjual bahagian bawah.
  • Tambah hentian automatik untuk mengelakkan kehilangan yang lebih besar.

Kesimpulan

Strategi trend berikut purata bergerak bertiga mempunyai logika yang jelas dan mudah difahami, menggunakan purata bergerak untuk menentukan arah trend untuk trend sederhana selepas perdagangan. Kelebihannya adalah mudah dilaksanakan, dan menyesuaikan parameter tempoh MA dapat disesuaikan dengan keadaan pasaran kitaran yang berbeza. Walau bagaimanapun, terdapat juga risiko isyarat palsu tertentu, yang boleh diperbaiki dengan menambahkan penunjuk atau keadaan lain untuk mengurangkan kerugian yang tidak perlu dan meningkatkan keuntungan strategi. Secara keseluruhan, strategi ini sesuai untuk pemula yang berminat dalam perdagangan trend 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 lanjut