Xu hướng kênh trung bình di chuyển ba lần theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-11-06 16:58:57
Tags:

img

Tổng quan

Chiến lược này sử dụng một sự kết hợp ba các đường trung bình động để xác định hướng xu hướng dựa trên thứ tự của đường trung bình động, để đạt được xu hướng theo. Đi dài khi đường trung bình động nhanh, đường trung bình động trung bình và đường trung bình động chậm được sắp xếp theo thứ tự; đi ngắn khi đường trung bình động chậm, đường trung bình động trung bình và đường trung bình động nhanh được sắp xếp theo thứ tự.

Nguyên tắc chiến lược

Chiến lược sử dụng ba đường trung bình động với các giai đoạn khác nhau, bao gồm đường trung bình động nhanh, đường trung bình động trung bình và đường trung bình động chậm.

Điều kiện nhập cảnh:

  1. Long: Khi MA nhanh > MA trung bình > MA chậm, thị trường được coi là có xu hướng tăng, đi dài.
  2. Tóm tắt: Khi MA chậm < MA trung bình < MA nhanh, thị trường được coi là có xu hướng giảm, đi ngắn.

Điều kiện xuất cảnh:

  1. MA exit: Close position when the order of the three moving averages reverses. MA exit: Bắt chặt vị trí khi thứ tự của ba đường trung bình động đảo ngược.
  2. TP/SL exit: Đặt các điểm lấy lợi nhuận và dừng lỗ cố định, chẳng hạn như 12% cho TP và 1% cho SL, thoát khi giá đạt TP hoặc SL.

Chiến lược đơn giản và trực tiếp, sử dụng ba đường trung bình động để xác định hướng xu hướng thị trường cho xu hướng sau giao dịch, phù hợp với các thị trường có xu hướng mạnh.

Phân tích lợi thế

  • Sử dụng ba đường trung bình động để xác định xu hướng và lọc tiếng ồn thị trường.
  • Trung bình động của các giai đoạn khác nhau có thể xác định chính xác hơn các điểm đảo ngược xu hướng.
  • Kết hợp các chỉ số trung bình động và TP / SL cố định để quản lý rủi ro vốn.
  • Logic chiến lược đơn giản và trực quan, dễ hiểu và thực hiện.
  • Các tham số thời gian MA có thể dễ dàng được tối ưu hóa để thích nghi với điều kiện thị trường của các chu kỳ khác nhau.

Rủi ro và cải tiến

  • Trong các thị trường chu kỳ dài, đường trung bình động có thể có nhiều tín hiệu sai hơn, dẫn đến tổn thất không cần thiết.
  • Xem xét thêm các chỉ số hoặc bộ lọc khác để cải thiện lợi nhuận.
  • Tối ưu hóa sự kết hợp của các thông số trung bình động theo thời gian để thích nghi với các điều kiện thị trường rộng lớn hơn.
  • Kết hợp với các chỉ số sức mạnh xu hướng để tránh mua đỉnh và bán đáy.
  • Thêm dừng tự động để tránh gia tăng tổn thất.

Kết luận

Chiến lược theo xu hướng trung bình động ba có logic rõ ràng và dễ hiểu, sử dụng trung bình động để xác định hướng xu hướng cho xu hướng đơn giản sau giao dịch. Ưu điểm là nó dễ thực hiện, và điều chỉnh các tham số thời gian MA có thể thích nghi với điều kiện thị trường của các chu kỳ khác nhau. Tuy nhiên, cũng có một số rủi ro của tín hiệu sai, có thể được cải thiện bằng cách thêm các chỉ số hoặc điều kiện khác để giảm lỗ không cần thiết và cải thiện lợi nhuận chiến lược. Nhìn chung, chiến lược này phù hợp với những người mới bắt đầu quan tâm đến giao dịch xu hướng để học và thực hành.


/*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)









Thêm nữa