
Chiến lược này kết hợp các chỉ số EMA của khung thời gian đa dạng với phán đoán hình dạng đường K, để thực hiện các tín hiệu dây dài nhạy cảm hơn để thu thập và thoát lỗ.
Chính sách này được đánh giá dựa trên một số chỉ số:
EMA trung bình: sử dụng 13 chu kỳ, 21 chu kỳ 2 nhóm EMA, đánh giá giá phá vỡ hình thành tín hiệu giao dịch.
Hình dạng đường K: Xác định hướng của thực thể đường K, được sử dụng cùng với chỉ số EMA, lọc giả phá vỡ.
Hỗ trợ kháng cự: Xây dựng từ 10 chu kỳ gần đây nhất, đánh giá đột phá thông qua khu vực tăng cường tín hiệu đáng tin cậy.
Thời gian tăng điểm: 120 chu kỳ giá đóng cửa được đánh giá là tăng điểm trên giá mở cửa, như một phán quyết phụ trợ.
Quy tắc tạo tín hiệu giao dịch là:
Tín hiệu đa đầu: EMA nhanh vượt EMA chậm lên, và là đường K đường dương, đóng kho trống mở nhiều.
Tín hiệu đầu trống: EMA nhanh giảm xuống EMA chậm, và là đường K âm đạo, xóa nhiều vị trí.
Lệnh dừng lỗ: Lệnh dừng lỗ rút khỏi vị trí hiện tại khi có tín hiệu phản hồi.
Những rủi ro trên có thể được giảm thiểu bằng cách tránh quá tối ưu hóa, lựa chọn tham số thận trọng, kiểm soát chặt chẽ quy mô vị trí.
Chiến lược này tích hợp các chỉ số EMA của khung thời gian đa dạng với phán đoán thực thể K-line, để có được phán đoán xu hướng đáng tin cậy hơn. Đồng thời kết hợp với hỗ trợ kháng cự và thời gian, hỗ trợ để đảm bảo chất lượng tín hiệu. Bằng cơ chế tín hiệu chống tay dừng, có thể kiểm soát hiệu quả một lần dừng. Trong tương lai có thể được tối ưu hóa bằng cách giới thiệu mô hình học máy, điều chỉnh dừng, phân tích cảm xúc và mô-đun quản lý vị trí, để làm cho chiến lược trở nên mạnh mẽ hơn.
/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='ck - CryptoSniper Longs Only (Strategy)', shorttitle='ck - CryptoSniper Longs (S) v1', overlay=true, precision=2, commission_value=0.25, default_qty_type=strategy.percent_of_equity, pyramiding=0, default_qty_value=100, initial_capital=100)
open_long = 0
close_position = 0
last_long=close
last_short=close
//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=false
//-----------------Support and Resistance
RST = input(title='Support / Resistance length:', defval=10)
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
//--------------------Trend colour ema------------------------------------------------//
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
//=============Hull MA//
show_hma = false
hma_src = input(close, title="HullMA Source:")
hma_base_length = input(8, minval=1, title="HullMA Base Length:")
hma_length_scalar = input(5, minval=0, title="HullMA Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
//============ signal Generator ==================================//
Period=input(title='Period', defval='120')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
// Signals//
long = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
short = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) ? 1 : -1
short_signal = crossover(last_short, last_long) ? -1 : 1
if (long_signal == 1)
strategy.entry("Long Open", strategy.long)
if (short_signal == -1)
strategy.close("Long Open")
if (long_signal[1] == 1 and short_signal[1] == 1)
open_long := 1
close_position := 0
if (short_signal[1] == -1 and long_signal[1] == -1)
open_long := 0
close_position := 1
plotshape(open_long == 1, title="Open Long", location=location.belowbar, style=shape.triangleup, size=size.small, color=green, transp=10)
plotshape(close_position == 1, title="Close Long", location=location.abovebar, style=shape.triangledown, size=size.small, color=red, transp=10)
//plot(0, title="Trigger", color=white)
///////////////////////////////////////////////////////////////////////////////////////////