Chiến lược này tích hợp nhiều chỉ số EMA khung thời gian và đánh giá mô hình đường K để đạt được tín hiệu thu thập tương đối nhạy cảm dài hạn và thoát dừng lỗ.
Chiến lược chủ yếu dựa trên các chỉ số sau đây để đánh giá:
EMA: Sử dụng 2 bộ 13 và 21 chu kỳ EMA để xác định tín hiệu giao dịch khi giá đột phá.
Mô hình đường K: đánh giá hướng của thực thể đường K và sử dụng nó với chỉ số EMA để lọc các đột phá sai.
Phản kháng hỗ trợ: Được xây dựng bởi các điểm cao nhất trong 10 chu kỳ cuối cùng để xác định xem sự đột phá có vượt qua khu vực này để tăng độ tin cậy tín hiệu hay không.
Tăng trong phân chia thời gian: 120 chu kỳ đóng cửa ở trên mở để đánh giá như tăng trong phân chia thời gian, như một phán quyết phụ trợ.
Các quy tắc để tạo tín hiệu giao dịch là:
Tín hiệu tăng: EMA nhanh vượt qua EMA chậm lên với đường Yang K-line, đóng vị trí ngắn và mở dài.
Tín hiệu giảm: EMA nhanh phá vỡ qua EMA chậm với đường Yin đường K, vị trí dài phẳng.
Khả năng thoát khỏi lỗ dừng: Khả năng thoát khỏi lỗ dừng ở vị trí hiện tại khi tín hiệu ngược xuất hiện.
Các rủi ro trên có thể được giảm thiểu thông qua các phương pháp như tránh tối ưu hóa quá mức, lựa chọn tham số cẩn thận, kiểm soát chặt chẽ kích thước vị trí.
Chiến lược này tích hợp nhiều đánh giá thực thể khung thời gian EMA và K-line để đánh giá xu hướng tương đối đáng tin cậy. Các đánh giá phụ bằng cách sử dụng kháng cự hỗ trợ và phân chia thời gian đảm bảo chất lượng tín hiệu. Sử dụng các tín hiệu ngược để dừng lỗ có thể kiểm soát hiệu quả lỗ dừng duy nhất.
/*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) ///////////////////////////////////////////////////////////////////////////////////////////