Strategi Mengikuti Trend Saluran Purata Pergerakan Bertiga


Tarikh penciptaan: 2023-11-06 16:58:57 Akhirnya diubah suai: 2023-11-06 16:58:57
Salin: 0 Bilangan klik: 746
1
fokus pada
1617
Pengikut

Strategi Mengikuti Trend Saluran Purata Pergerakan Bertiga

Ringkasan (Overview)

Strategi ini menggunakan kombinasi tiga kali rata-rata bergerak untuk menentukan arah trend berdasarkan hubungan urutan rata-rata bergerak, dan untuk menjejaki trend. Apabila rata-rata bergerak cepat, rata-rata bergerak sederhana, dan rata-rata bergerak perlahan disusun, lakukan lebih banyak; apabila rata-rata bergerak perlahan, rata-rata bergerak sederhana, dan rata-rata bergerak cepat disusun, kosong.

Prinsip Strategi

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

Syarat penyertaan:

  1. Lakukan lebih banyak: Apabila purata bergerak cepat > purata bergerak sederhana > purata bergerak perlahan, menganggap bahawa keadaan berada dalam trend menaik, lakukan lebih banyak.
  2. Berkurangan: Apabila purata bergerak perlahan < purata bergerak sederhana < purata bergerak cepat, menganggap bahawa pasaran berada dalam trend menurun, berkurangan.

Syarat kejohanan:

  1. Peratusan bergerak: Tiga purata bergerak berturut-turut berlaku apabila berbalik dan melonggarkan kedudukan.
  2. Stop Stop Stop Loss: Tetapkan titik stop loss yang tetap, seperti stop loss margin 12%, stop loss margin 1%, dan kedudukan rata selepas harga stop atau stop loss dicapai.

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

Analisis kelebihan

  • Menggunakan tiga purata bergerak untuk menilai trend, menapis bunyi pasaran, dan mengenal pasti arah trend.
  • Menggunakan purata bergerak berkala yang berbeza dapat menentukan titik perubahan trend dengan lebih tepat.
  • Menggabungkan indikator purata bergerak dan pegangan pegangan tetap untuk menguruskan risiko dana.
  • Strategi ini mudah difahami dan mudah diimplementasikan.
  • Anda boleh mengoptimumkan parameter kitaran purata bergerak untuk menyesuaikan diri dengan keadaan kitaran yang berbeza.

Risiko dan Peningkatan

  • Dalam keadaan kitaran besar, purata bergerak mungkin menghasilkan lebih banyak kesalahan penghakiman, yang menyebabkan kerugian yang tidak perlu.
  • Anda boleh mempertimbangkan untuk menambah petunjuk lain atau syarat penapisan untuk meningkatkan kadar keuntungan.
  • Kaedah ini boleh dioptimumkan untuk menyesuaikan diri dengan keadaan pasaran yang lebih luas.
  • Ia boleh digabungkan dengan indikator trend yang kuat dan lemah untuk mengelakkan kejatuhan.
  • Anda boleh menambah Hentian Kerosakan Otomatik untuk mengelakkan kerugian yang lebih besar.

Kesimpulan

Trend tiga rata-rata bergerak mengikuti strategi keseluruhan dengan jelas dan mudah difahami, menggunakan rata-rata bergerak untuk menentukan arah trend, untuk mencapai perdagangan yang mudah mengikuti trend. Kelebihan strategi adalah mudah untuk dilaksanakan, dengan menyesuaikan parameter kitaran rata-rata bergerak untuk menyesuaikan diri dengan keadaan kitaran yang berbeza.

Kod sumber strategi
/*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)