Chiến lược này tạo ra hình dạng đèn treo Hammy bằng cách nhận ra đường K và kết hợp với phán đoán đường trung bình SMA để giao dịch ngược. Khi hình dạng đèn treo Hammy xuất hiện, tín hiệu giao dịch sẽ được tạo ra nếu giá mở cửa nằm ngoài đường trung bình.
Chiến lược này dựa trên các nguyên tắc sau:
Xác định hình dạng đèn treo của Hammy bằng cách tính toán phạm vi giá mở cửa và giá giảm tổng thể
Xác định giá đóng cửa của dòng K trước cao hơn hoặc thấp hơn giá cao nhất và giá thấp nhất của dòng K hiện tại, tránh tín hiệu sai
Xác định mối quan hệ giữa giá mở và đóng cửa với đường trung bình SMA, tạo ra tín hiệu đảo ngược
Khi nhận ra hình dạng đèn treo của Hammy và đáp ứng điều kiện, tạo ra tín hiệu làm nhiều hoặc làm trống
Các bước chính của mã là:
Tính đường SMA
Xác định vòng tròn hình thành hình dạng đèn treo Hammy
Xác định mối quan hệ giữa giá đóng cửa K trước và giá cao nhất và thấp nhất K hiện tại
Xác định mối quan hệ giữa giá mở cửa và đường trung bình, xác nhận tín hiệu đảo ngược
Mapping signal marking, output as multiple vacuuming signals (Hình vẽ tín hiệu đánh dấu, đầu ra là tín hiệu làm trống nhiều)
Chiến lược này có những ưu điểm sau:
Đèn treo Hammi có hình dáng rõ ràng và dễ nhận biết.
Kết hợp với bộ lọc đồng nhất, nó có thể làm giảm tín hiệu giả.
Làm nhiều hơn để làm cho tín hiệu trống rõ ràng, hoạt động rõ ràng.
Capture short line trend.
Có thể điều chỉnh các tham số một cách linh hoạt để phù hợp với môi trường thị trường khác nhau.
Dễ hiểu, dễ thực hiện và thân thiện với người mới bắt đầu.
Chiến lược này cũng có một số rủi ro:
Dựa vào một hình thức duy nhất, dễ bị ảnh hưởng bởi sự đột phá giả mạo của thị trường.
Không có cơ chế dừng lỗ, không thể kiểm soát lỗ hiệu quả.
Thiết lập tham số không đúng có thể dẫn đến giao dịch quá thường xuyên.
Cần kết hợp với sự phán đoán xu hướng, không hoạt động tốt trong thị trường xu hướng.
Hiệu quả phụ thuộc vào tối ưu hóa tham số, cần thử nghiệm tối ưu hóa liên tục.
Giải pháp tương ứng:
Kết hợp với các chỉ số khác để lọc tín hiệu.
Tăng cơ chế ngăn chặn thiệt hại, kiểm soát rủi ro chặt chẽ.
Tối ưu hóa các tham số, kiểm soát tần suất giao dịch.
Chỉ sử dụng trong khu vực kiểm tra, tránh sự phản kháng.
Tiếp tục đánh giá và tối ưu hóa, thường xuyên kiểm tra hiệu quả.
Chiến lược này có thể được tiếp tục tối ưu hóa bằng cách:
Tăng lượng lọc giao dịch để tránh đột phá giả.
Tăng cơ chế dừng lỗ. Như dừng đuôi, dừng chết.
Kết hợp với cấu trúc thị trường, các tham số tối ưu hóa như xu hướng, phân biệt các tham số môi trường.
Kết hợp với các chỉ số khác để xác nhận các tín hiệu. Ví dụ như MACD, KDJ, v.v.
Tăng khả năng đánh giá xu hướng, tránh giao dịch ngược.
Tối ưu hóa các tham số chu kỳ vòng lặp, cân bằng FREQ và chất lượng tín hiệu.
Chiến lược này có lợi thế như tín hiệu đơn giản và dễ sử dụng. Tuy nhiên, có một số rủi ro và không gian để tối ưu hóa. Bằng cách kiểm tra tối ưu hóa liên tục, chiến lược này có thể trở thành chiến lược giao dịch ngắn hiệu quả và ổn định.
||
This strategy identifies doji candlestick patterns and combines SMA to determine reversals for trading. It generates trading signals when doji patterns form and the open/close prices are outside the SMA lines. Bullish signals are generated on hanging man lines and bearish signals on shooting star lines.
The main principles of this strategy are:
Identifying doji patterns by calculating the range of open/close prices vs the overall price movement.
Checking if previous close is above/below current high/low to avoid false signals.
Judging open/close prices in relation to SMA lines to generate reversal signals.
Generating long/short signals when qualified doji patterns are identified.
The main steps in the code are:
Calculating SMA lines
Looping through candles to identify doji patterns
Checking previous close vs current high/low relationship
Confirming reversal signals based on open/close and SMA relationship
Plotting signal markers and outputting long/short signals
The advantages of this strategy include:
Doji patterns are clear and easy to identify/implement.
SMA filters help reduce false signals.
Clear long/short signals make trading operations straightforward.
Reversal trading captures short-term trends.
Flexible parameters can adapt to different market conditions.
Easy to understand and implement, beginner friendly.
Some potential risks:
Reliance on single pattern, prone to false breakouts.
No stop loss mechanism to control losses.
Bad parameter tuning can lead to over-trading.
Trend-reliant, underperforms in trending markets.
Performance relies on parameter optimization.
Solutions:
Add other filters to confirm signals.
Implement stop loss to manage risks.
Optimize parameters and limit trade frequency.
Use mainly during range-bound markets.
Continual backtesting and optimization.
Some ways to improve the strategy:
Add volume filter to avoid false breakouts.
Implement stop loss mechanisms like trailing stop loss.
Optimize parameters based on market conditions like trends.
Add other indicators to confirm signals, like MACD, KDJ etc.
Add trend determination to avoid counter-trend trading.
Optimize lookback period to balance frequency and quality.
This strategy uses doji patterns with SMA for efficient reversal trading. It has advantages like simple rules and easy trading. But also has risks and areas for improvement. With continual optimization it can become a solid short-term trading system.
[/trans]
/*backtest
start: 2022-09-20 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Doji Reversal", overlay=true)
smaPeriod = input(title="SMA Period", defval=10, minval=0)
tolerance = input(title="Tolerance", defval=0.1, minval=0)
lookbackEnd = input(title="End", defval=2, minval=0)
avg = sma(close, smaPeriod)
signal_long = bool(false)
signal_short = bool(false)
for i = 1 to lookbackEnd
is_doji = (abs(close[i] - open[i]) / (high[i] - low[i])) < tolerance
signal_long := signal_long or ( is_doji and (close[i-1] <= high[i] or i == 1) and close[i-1] > high[i] and high[i] < avg and close > open )
signal_short := signal_short or ( is_doji and (close[i-1] >= low[i] or i == 1) and close[i-1] < low[i] and low[i] > avg and close < open )
plotshape(signal_long, "LONG", style=shape.triangleup, size=size.normal)
plotshape(signal_short, "SHORT", style=shape.triangledown, size=size.normal)
strategy.entry("LONG", strategy.long, when=signal_long)
strategy.entry("SHORT", strategy.short, when=signal_short)