Chiến lược chuyển động trung bình của Larry Williams

Tác giả:ChaoZhang, Ngày: 2023-12-26 15:03:16
Tags:

img

Tổng quan

Đây là một chiến lược chéo trung bình di chuyển đơn giản và cổ điển được tạo ra bởi nhà giao dịch nổi tiếng Larry Williams. Chiến lược này sử dụng trung bình di chuyển đơn giản 9 ngày như đường nhanh và trung bình di chuyển theo hàm số 21 ngày như đường chậm. Nó đi dài khi giá vượt qua đường 9 ngày, và đi ngắn khi giá vượt qua đường 9 ngày. Để lọc các đột phá sai, đường 21 ngày cũng được sử dụng để xác nhận xu hướng.

Chiến lược logic

Chiến lược này dựa trên đường chéo vàng và đường chéo chết của các đường trung bình động để xác định cơ hội dài và ngắn. Khi đường nhanh vượt qua đường chậm từ dưới, đó là đường chéo vàng, cho thấy sự thay đổi sang xu hướng tăng. Sự đột phá như vậy được sử dụng để đi dài. Khi đường nhanh vượt qua đường chậm từ trên, đó là đường chéo chết, cho thấy sự thay đổi sang xu hướng giảm. Sự đột phá như vậy được sử dụng để đi ngắn.

Để tránh các đợt phá vỡ sai dẫn đến tổn thất ảo, đường 21 ngày cũng được sử dụng để xác định xu hướng chính. Chỉ khi đường nhanh phá vỡ và giá cũng phá vỡ đường 21 ngày, các hành động giao dịch sẽ được thực hiện. Điều này có thể lọc hiệu quả nhiều đợt phá vỡ sai.

Cụ thể, tín hiệu dài được kích hoạt khi: đường nhanh vượt qua mức cao hôm qua và vượt qua đường 21 ngày.

Phân tích lợi thế

Những lợi thế chính của chiến lược này là:

  1. Ý tưởng chiến lược đơn giản và dễ hiểu và thực hiện.
  2. Kỹ thuật trung bình động đã trưởng thành và được sử dụng rộng rãi.
  3. Việc giới thiệu đường 21 ngày có hiệu quả lọc các sự đột phá sai.
  4. Sử dụng các điểm cực của ngày hôm qua để vào vị trí có thể ngăn chặn bị mắc kẹt.
  5. Các thông số chiến lược tương đối mạnh mẽ mà không dễ dàng quá phù hợp.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Trong các thị trường biến động, các đường trung bình động chậm lại và có thể bỏ lỡ các điểm đầu vào tốt nhất.
  2. Trong các thị trường giới hạn trong phạm vi với hành động giá bên, có thể xảy ra các lỗ nhỏ thường xuyên.
  3. Nó không thể phản ứng hiệu quả với các sự kiện đột ngột và những thay đổi xu hướng đáng kể.

Để đối phó với những rủi ro này, tối ưu hóa có thể được thực hiện trong các khía cạnh sau:

  1. giới thiệu chỉ số MACD cho nhiều tín hiệu thời gian thực hơn.
  2. Tăng các tham số thời gian MA để giảm tần suất giao dịch.
  3. Thêm các chiến lược dừng lỗ để kiểm soát số tiền lỗ giao dịch duy nhất.

Hướng dẫn tối ưu hóa

Các hướng tối ưu hóa chính cho chiến lược này bao gồm:

  1. Tối ưu hóa tham số. Các phương pháp có hệ thống hơn có thể được sử dụng để kiểm tra các kết hợp thời gian MA khác nhau để tìm các tham số tốt hơn.

  2. Thêm stop loss. Đặt đúng stop loss di chuyển, stop loss phần trăm vv để kiểm soát hiệu quả lỗ giao dịch duy nhất.

  3. Kết hợp các chỉ số khác. giới thiệu các tín hiệu từ MACD, ATR, KD vv để có được nhiều chiều kích xác nhận hơn và cải thiện tính ổn định của chiến lược.

  4. Tối ưu hóa cơ chế thoát. Nghiên cứu các loại phương pháp thoát khác nhau như thoát tín hiệu đảo ngược, di chuyển thoát lợi nhuận vv

Kết luận

Tóm lại, chiến lược chéo trung bình động này là một chiến lược theo xu hướng rất điển hình và thực tế. Nó có lợi thế dễ hiểu và thực hiện, và cũng có chỗ để cải thiện. Thông qua các phương pháp như tối ưu hóa tham số, tối ưu hóa dừng lỗ, kết hợp đa chỉ số vv, có thể cải thiện liên tục để biến nó thành một hệ thống giao dịch ổn định và thực tế hơn.


// @_benac
//@version=5
strategy('Larry', overlay=true , initial_capital=1000 )


////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

// Usage for Stocks , or Criptos with value bigger then 1, cuz of 0.01 ´pip.
// Daily timeframe
//Observation Point
start     = timestamp(2020, 00, 00, 00, 00)         // backtest start window
finish    = timestamp(2022, 01, 07, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"  

if time < start 
    strategy.close_all("Closing All")

// Take infos from inputs. 
inp_mmshort = input.int(defval = 9, title = "Media Curta"  )
inp_mminter = input.int(defval = 21, title = "Media Curta"  )

// Risk Manager, here define max and min 
inp_max = input.int(defval = 15, title = "Percentual Ganho"  )
inp_min = input.int(defval = 5, title = "Percental  Perda"  )

// Converting the input to % 
pmax = (inp_max / 100 )
pmin =  (inp_min / 100)

// Infos From Moving Average
mm_short = ta.sma(close , inp_mmshort)
mm_inter = ta.ema(close , inp_mminter)


// Trend Logic
//Long Condition 

//Setup do Larry Willians Bem Simples , media virou para cima e rompeu a maxima de referencia, compra. 
tendencia_alta = mm_short[2] > mm_short[1] and mm_short > mm_short[1] and close > high[1] and close > mm_short and mm_short > mm_inter
tendencia_baixa = mm_short[2] < mm_short[1] and mm_short < mm_short[1] and close > low[1] and close < mm_short and mm_short < mm_inter

// Creating the entry
if tendencia_alta 
    strategy.entry("Compra" , strategy.long , stop = low - 0.01  )
    stop_inst = low - 0.01 
if tendencia_baixa 
    strategy.entry("Venda" , strategy.short , stop= high + 0.01  )
    stop_inst = high + 0.01


// TrailingStop Creation

// Sell Position
if strategy.position_size < 0 
    gain_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close < gain_p 
        strategy.close_all(comment = " 1 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close > stop_p 
        strategy.close_all(comment = " 2 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    
    if  high > mm_short[1]
        strategy.close_all(comment = " 3 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
      

// Buy Position    
if strategy.position_size > 0
    gain_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close > gain_p 
        strategy.close_all(comment = " 1- Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close < stop_p 
        strategy.close_all(comment = " 2 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if low < mm_short[1]
        strategy.close_all(comment = " 3 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
        



Thêm nữa