Chiến lược này xác định hướng dài / ngắn bằng cách đánh giá hướng của các đường trung bình động theo cấp số nhân (EMA). Nó đi dài khi có một mô hình hấp thụ tăng và khối lượng giao dịch mở rộng. Nó đóng vị trí khi hướng của EMA được đảo ngược hoặc một mô hình hấp thụ giảm xảy ra.
Sử dụng hai EMA với các thông số khác nhau để xác định xu hướng thị trường.
Khi thị trường đang tăng, nếu một mô hình hấp thụ tăng xuất hiện và khối lượng giao dịch lớn hơn 1,2 lần so với thanh trước, một tín hiệu dài được kích hoạt.
Khi xu hướng thị trường đảo ngược, tức là EMA ngắn vượt dưới EMA dài, nó cho thấy đà suy yếu của những con bò và vị trí hiện tại nên được đóng.
Sử dụng EMA kép để xác định cấu trúc thị trường có thể đánh giá chính xác tình trạng bò / gấu.
Mô hình ngập cho thấy động lượng một bên đột ngột tăng lên, có thể nắm bắt các xu hướng lớn.
Nó có một cơ chế dừng lỗ. Bằng cách không đặt giá dừng lỗ nhưng sử dụng đảo ngược cấu trúc thị trường để dừng lỗ, trượt không cần thiết có thể được giảm.
Các EMA đôi cũng có thể đánh giá sai cấu trúc thị trường, do đó bỏ lỡ xu hướng hoặc sai lầm đi dài.
Mô hình ngập có thể bị đánh lừa bởi các thị trường khác nhau.
Không có giá dừng lỗ có thể dẫn đến tổn thất lớn hơn.
Nhiều chỉ số như MACD, A / D có thể được sử dụng để xác định dài / ngắn.
Thêm giá dừng lỗ cố định vừa phải dựa trên nhu cầu.
Tối ưu hóa thời gian EMA dựa trên các đặc điểm giao dịch biểu tượng.
Chiến lược này có logic rõ ràng và dễ hiểu, sử dụng EMA để xác định cấu trúc và mô hình ngập để nắm bắt sự phá vỡ.
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=5 // # ========================================================================= # // # | STRATEGY | // # ========================================================================= # strategy( title = "fpemehd Strategy001", shorttitle = "f_001", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000000, currency = currency.USD, slippage = 0, commission_type = strategy.commission.cash_per_order, commission_value = 0.01, process_orders_on_close = true) // # ========================================================================= # // # | STRATEGY | // # ========================================================================= # // Inputs I_start_date = input (defval = timestamp("20 Jan 1990 00:00 +0900")) I_finish_date = input(defval = timestamp("20 Dec 2030 00:00 +0900")) I_short_ema = input.int(defval = 15 , title = "Short EMA", minval = 1 , maxval = 300 , step = 1) I_long_ema = input.int(defval = 30 , title = "Long EMA", minval = 1 , maxval = 300 , step = 1) I_body = input.float(defval = 1 , title = "Size of Body", minval = 1 , maxval = 5 , step = 0.1) time_cond = true // Calculate Engulfing Candles C_uptrend = false C_downtrend = false C_ema_short = ta.ema(source = close, length = I_short_ema) C_ema_long = ta.ema(source = close, length = I_long_ema) C_uptrend := close > C_ema_short and C_ema_short > C_ema_long C_downtrend := close < C_ema_short and C_ema_short < C_ema_long C_pre_body = math.abs(open[1]-close[1]) C_pre_body_ratio = (math.abs(open[1]-close[1])) / (math.abs(high[1]-low[1])) * 100 C_now_body = math.abs(open-close) C_now_body_ratio = (math.abs(open-close)) / (math.abs(high-low)) * 100 C_bullish_engulfing = (open[1] > close[1] and open <= close) and (low < low[1] and high > high[1]) C_bearish_engulfing = (open[1] < close[1] and open >= close) and (low < low[1] and high > high[1]) C_avoid_doge = (C_pre_body_ratio > I_body and C_now_body_ratio > I_body) ? true : false C_volume_filter = volume > volume[1] * 1.2 // Signals long_signal = C_uptrend and C_bullish_engulfing and C_avoid_doge and C_volume_filter close_signal = C_downtrend or C_bearish_engulfing if long_signal and time_cond strategy.entry(id = "Long", direction = strategy.long) if close_signal and time_cond strategy.close(id = "Long")