Đây là một chiến lược theo xu hướng. Nó đi dài khi giá phá vỡ hình thành tam giác tăng lên và đóng vị trí khi EMA nhanh vượt qua dưới EMA trung bình. Dừng lỗ và lấy lợi nhuận cũng được thiết lập để kiểm soát rủi ro.
Sử dụng EMA nhanh và EMA trung bình để xác định hướng xu hướng.
Sử dụng giá cao nhất và thấp nhất của các thanh N cuối cùng để xác định xem một tam giác tăng có hình thành hay không.
Sau khi vào, khi EMA nhanh vượt qua dưới EMA trung bình, nó chỉ ra sự đảo ngược xu hướng và đưa ra tín hiệu thoát.
Đặt stop loss ở một tỷ lệ phần trăm nhất định dưới giá nhập cảnh để thoát khỏi stop loss.
Đặt mục tiêu lợi nhuận ở một tỷ lệ phần trăm nhất định so với giá nhập cảnh cho lợi nhuận một phần.
Sử dụng EMA 200 ngày để xác định hướng xu hướng tổng thể, chỉ giao dịch khi xu hướng tăng.
Sự hình thành tam giác lọc sự phá vỡ giả và cải thiện độ chính xác nhập cảnh.
EMA nhanh so với EMA trung bình phân chia hợp lý xu hướng và củng cố để tránh các whipsaws.
Các thiết lập dừng lỗ và lấy lợi nhuận hợp lý kiểm soát lỗ giao dịch duy nhất.
Chỉ giao dịch theo xu hướng tăng sẽ tránh những giai đoạn hỗn loạn.
Phạm vi tam giác quá hẹp có thể bỏ lỡ xu hướng, trong khi phạm vi quá rộng có thể làm tăng các giao dịch không cần thiết.
Dừng lỗ quá gần có xu hướng bị dừng sớm, trong khi quá rộng không kiểm soát lỗ. Đánh giá và tối ưu hóa tham số.
Thiết lập lợi nhuận lấy một phần không chính xác có thể dẫn đến lợi nhuận vượt quá.
Các thông số chỉ số xu hướng sai có thể dẫn đến hướng vị trí sai.
Tối ưu hóa tham số N để xác định tam giác để tìm ra giá trị tối ưu.
Kiểm tra các kết hợp thời gian EMA khác nhau để cải thiện độ chính xác xu hướng.
Tối ưu hóa các thông số dừng lỗ và lấy lợi nhuận dựa trên các đặc điểm của sản phẩm.
Thêm các chỉ số khác như mô hình MACD, Bollinger breakout vv để cải thiện chất lượng tín hiệu.
Thêm cơ chế mở lại để mở rộng lợi nhuận khi xu hướng tiếp tục.
Chiến lược này nói chung là mạnh mẽ với hình thành tam giác cải thiện độ chính xác tín hiệu. Không gian tối ưu hóa tham số lớn tồn tại để nâng cao hơn nữa. Ngoài ra hãy thử thêm nhiều chỉ số phụ hoặc cải thiện stop loss / take profit để có hiệu quả cao hơn. Nhìn chung chiến lược này có tiềm năng trở thành một xu hướng chất lượng sau chiến lược.
/*backtest start: 2023-08-20 00:00:00 end: 2023-09-19 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/ // © mohanee //@version=4 strategy(title="TrianglePoint strategy", overlay=true,pyramiding=2, default_qty_value=3, default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD) // variables BEGIN numPeriods=input(9,title="Number of Bars") fastEMA = input(13, title="fast EMA", minval=1) slowEMA = input(65, title="slow EMA", minval=1) stopLoss = input(title="Stop Loss%", defval=5, minval=1) HH = highest(close[1],numPeriods) LL = lowest(close[1],numPeriods) tringlePoint = low > LL and high < HH fastEMAval= ema(close, fastEMA) slowEMAval= ema(close, slowEMA) two100EMAval= ema(close, 200) //plot emas plot(fastEMAval, color = color.green, linewidth = 1, transp=0) plot(slowEMAval, color = color.orange, linewidth = 1, transp=0) plot(two100EMAval, color = color.purple, linewidth = 2, transp=0) longCondition=fastEMAval>two100EMAval and tringlePoint //plotshape(triP,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar) //plotshape(longCondition,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar) //Entry strategy.entry(id="TBT LE", comment="TBT LE" , long=true, when= longCondition and strategy.position_size<1) //Add strategy.entry(id="TBT LE", comment="Add" , long=true, when= longCondition and strategy.position_size>=1 and close<strategy.position_avg_price) //barcolor(strategy.position_size>=1 ? color.blue : na) //Take profit takeProfitVal= strategy.position_size>=1 ? (strategy.position_avg_price * (1+(stopLoss*0.01) )) : 0.00 //strategy.close(id="TBT LE", comment="Profit Exit", qty=strategy.position_size/2, when=close>=takeProfitVal and close<open and close<fastEMAval) //crossunder(close,fastEMAval) barcolor(strategy.position_size>=1 ? (close>takeProfitVal? color.purple : color.blue): na) //Exit strategy.close(id="TBT LE", comment="TBT Exit", when=crossunder(fastEMAval,slowEMAval)) //stoploss stopLossVal= strategy.position_size>=1 ? (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00 //stopLossVal= close> (strategy.position_avg_price * (1+(stopLoss*0.01) )) ? lowest(close,numPeriods) : (strategy.position_avg_price * (1-(stopLoss*0.01) )) strategy.close(id="TBT LE", comment="SL Exit", when= close < stopLossVal)