
Ichimoku Cloud Quant Scalping Strategy là một chiến lược định lượng đường ngắn kết hợp bảng cân bằng đầu tiên và chỉ số hướng trung bình. Chiến lược này sử dụng chỉ số đám mây Ichimoku để xác định hướng xu hướng, kết hợp với chỉ số ADX để lọc thị trường không có xu hướng và hoạt động đường ngắn trong tình huống xu hướng.
Chiến lược này bao gồm hai phần chính:
Chỉ số đám mây Ichimoku đánh giá xu hướng
Khi giá trên đám mây là xu hướng đa đầu và dưới là xu hướng không đầu. Chiến lược đánh giá sự đảo ngược của xu hướng bằng cách phá vỡ đường chuyển đổi.
ADX lớn hơn 20 cho thấy xu hướng, khi đó chiến lược sẽ tạo ra tín hiệu giao dịch. Nhỏ hơn 20 cho thấy thu hẹp, khi đó chiến lược không giao dịch.
Quy tắc giao dịch:
Chiến lược này có những ưu điểm sau:
Chỉ số Ichimoku Cloud có thể xác định chính xác xu hướng và điểm biến, kết hợp với chỉ số ADX để lọc thị trường và tránh phá vỡ giả.
Kiểm soát rút lui. Cài đặt dừng lỗ là 150 điểm, có thể kiểm soát hiệu quả tổn thất đơn lẻ.
Tỷ lệ lỗ hổng cao. Stop loss là 200 điểm, stop loss là 150 điểm, tỷ lệ lỗ hổng cao đến 1.33, dễ kiếm lợi nhuận.
Tần suất giao dịch vừa phải. Chỉ giao dịch trong thời gian có xu hướng, không có tần suất cao.
Chiến lược này cũng có những rủi ro sau:
Nguy cơ thất bại trong định hướng. Chỉ số đám mây Ichimoku có thể tạo ra tín hiệu sai khi định hướng chuyển sang thất bại. Bạn có thể kéo dài chu kỳ tham số để tối ưu hóa.
Hạn chế thiệt hại có thể bị phá vỡ. Bạn có thể đặt Hạn chế di chuyển hoặc xem xét tăng phạm vi Hạn chế
Rủi ro giao dịch đêm và trước cửa. Chiến lược mặc định chỉ hoạt động trong giao dịch ban ngày, phán đoán về giao dịch đêm và trước cửa có thể không hiệu quả. Có thể thiết lập giao dịch 24 giờ hoặc lập chiến lược giao dịch riêng sau khi mở cửa trước cửa.
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Tối ưu hóa tham số chỉ số của đám mây Ichimoku. Bạn có thể thử nghiệm các tham số chuyển đổi khác nhau, tham số chuẩn và tham số chọn để tìm ra sự kết hợp tham số tốt nhất.
Tối ưu hóa tham số ADX và giá trị rào. Bạn có thể kiểm tra tham số chu kỳ và giá trị rào của ADX để tìm tham số tối ưu.
Tối ưu hóa dừng lỗ. Các điểm dừng lỗ tối ưu có thể được xác định dựa trên dữ liệu lịch sử.
Chiến lược dừng động. Thiết lập dừng động để theo dõi xu hướng lợi nhuận tốt hơn.
Các chỉ số hỗ trợ phán đoán xu hướng. Thêm MACD, KD và các chỉ số hỗ trợ phán đoán xu hướng, cải thiện độ chính xác của tín hiệu.
Tối ưu hóa khả năng thích ứng. Thiết lập các tham số chiến lược giao dịch riêng cho các giống khác nhau.
Chiến lược ngắn hạn định lượng đám mây Ichimoku tích hợp các ưu điểm của chỉ số đám mây Ichimoku và chỉ số ADX, có thể xác định chính xác điểm biến đổi xu hướng và có thể loại bỏ hiệu quả thị trường để tránh tín hiệu sai. Chiến lược này có tỷ lệ lỗ cao, có thể thu hồi được, phù hợp để hoạt động ngắn hạn theo xu hướng.
/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='[STRATEGY][RS]Spot/Binary Scalper V0', shorttitle='IC', overlay=true, initial_capital=100000, currency=currency.USD)
// || Adapted from:
// || http://www.binaryoptionsedge.com/topic/1414-ta-spot-scalping-it-works-damn-good/?hl=singh
// || Ichimoku cloud:
conversionPeriods = input(title='Conversion Periods:', defval=7, minval=1),
basePeriods = 26//input(title='Base Periods', defval=26, minval=1)
laggingSpan2Periods = 52//input(title='Lagging Span:', defval=52, minval=1),
displacement = 26//input(title='Displacement:', defval=26, minval=1)
f_donchian(_len) => avg(lowest(_len), highest(_len))
f_ichimoku_cloud(_conversion_periods, _base_periods, _lagging_span)=>
_conversion_line = f_donchian(_conversion_periods)
_base_line = f_donchian(_base_periods)
_lead_line1 = avg(_conversion_line, _base_line)
_lead_line2 = f_donchian(_lagging_span)
[_conversion_line, _base_line, _lead_line1, _lead_line2]
[conversionLine, baseLine, leadLine1, leadLine2] = f_ichimoku_cloud(conversionPeriods, basePeriods, laggingSpan2Periods)
//ps0 = plot(title='A', series=leadLine1, color=green, linewidth=2)
//ps1 = plot(title='B', series=leadLine2, color=red, linewidth=2)
//fill(title='AB', plot1=ps0, plot2=ps1, color=blue, transp=80)
//plot(title='Base', series=baseLine, color=blue, linewidth=1, offset=displacement)
plot(title='Conversion', series=conversionLine, color=blue, linewidth=1)
// ||----------------------------------------------------------------------------------------------------------------------------------------------||
// || ADX
len = input(title="Length", defval=14)
th = input(title="threshold", defval=20)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)
// ||----------------------------------------------------------------------------------------------------------------------------------------------||
// || Trade session:
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?gray:na)
// ||----------------------------------------------------------------------------------------------------------------------------------------------||
// || Strategy:
trade_size = input(title='Trade Size:', defval=1)
stop_loss_in_ticks = input(title='Stop Loss in ticks:', defval=150)
take_profit_in_ticks = input(title='Take Profit in ticks:', defval=200)
buy_icloud_signal = open < conversionLine and close > conversionLine
buy_adx_signal = DIPlus > 20
buy_signal = istradingsession and buy_icloud_signal and buy_adx_signal
sel_icloud_signal = open > conversionLine and close < conversionLine
sel_adx_signal = DIMinus > 20
sel_signal = istradingsession and sel_icloud_signal and sel_adx_signal
strategy.order('buy', long=true, qty=trade_size, comment='buy', when=buy_signal)
strategy.order('sel', long=false, qty=trade_size, comment='sel', when=sel_signal)
strategy.exit('exit buy', from_entry='buy', profit=take_profit_in_ticks, loss=stop_loss_in_ticks)
strategy.exit('exit sel', from_entry='sel', profit=take_profit_in_ticks, loss=stop_loss_in_ticks)