Chiến lược này dựa trên các quyết định giao dịch trên các đặc điểm năng động của chỉ số MACD (Moving Average Convergence Divergence). Cách tiếp cận cốt lõi tập trung vào việc quan sát những thay đổi trong biểu đồ MACD để dự đoán các đường chéo vàng và chết tiềm năng, cho phép thiết lập vị trí sớm. Chiến lược vượt ra ngoài các tín hiệu chéo MACD truyền thống bằng cách nhấn mạnh các đặc điểm năng động của biểu đồ để có được thời gian vào tốt hơn.
Chiến lược sử dụng một hệ thống chỉ số MACD được sửa đổi, kết hợp sự khác biệt giữa các đường trung bình động nhanh (EMA12) và chậm (EMA26), cùng với đường tín hiệu 2 giai đoạn.
Chiến lược này sử dụng tính năng năng động của biểu đồ MACD để cải thiện so với các hệ thống giao dịch MACD truyền thống. Cơ chế dự đoán cung cấp tín hiệu nhập cảnh sớm hơn, trong khi các điều kiện giao dịch nghiêm ngặt và các biện pháp kiểm soát rủi ro đảm bảo tính ổn định của chiến lược. Với tối ưu hóa và tinh chỉnh hơn nữa, chiến lược này cho thấy hứa hẹn cho hiệu suất cải thiện trong điều kiện giao dịch thực tế.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Demo GPT - Moving Average Convergence Divergence", shorttitle="MACD", commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Getting inputs fast_length = input(title="Fast Length", defval=12) slow_length = input(title="Slow Length", defval=26) src = input(title="Source", defval=close) signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=2) // Set smoothing line to 2 sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"]) // Date inputs start_date = input(title="Start Date", defval=timestamp("2018-01-01T00:00:00")) end_date = input(title="End Date", defval=timestamp("2069-12-31T23:59:59")) // Calculating fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal // Strategy logic isInDateRange = true // Calculate the rate of change of the histogram hist_change = hist - hist[1] // Anticipate a bullish crossover: histogram is negative, increasing, and approaching zero anticipate_long = isInDateRange and hist < 0 and hist_change > 0 and hist > hist[1] and hist > hist[2] // Anticipate an exit (bearish crossover): histogram is positive, decreasing, and approaching zero anticipate_exit = isInDateRange and hist > 0 and hist_change < 0 and hist < hist[1] and hist < hist[2] if anticipate_long strategy.entry("Long", strategy.long) if anticipate_exit strategy.close("Long") // Plotting hline(0, "Zero Line", color=color.new(#787B86, 50)) plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist > hist[1] ? #26A69A : #B2DFDB) : (hist < hist[1] ? #FF5252 : #FFCDD2))) plot(macd, title="MACD", color=#2962FF) plot(signal, title="Signal", color=#FF6D00) // Plotting arrows when anticipating the crossover plotshape(anticipate_long, title="Long +1", location=location.belowbar, color=color.green, style=shape.arrowup, size=size.tiny, text="Long +1") plotshape(anticipate_exit, title="Short -1", location=location.abovebar, color=color.red, style=shape.arrowdown, size=size.tiny, text="Short -1")