
Chiến lược này chủ yếu sử dụng các đường trung bình di chuyển và đường trung bình phá vỡ đường K để đưa ra quyết định nhiều khoảng trống. Khi đường trung bình di chuyển ngắn hạn vượt qua đường trung bình di chuyển dài hạn, hãy làm nhiều hơn khi đường trung bình di chuyển ngắn hạn vượt qua đường trung bình di chuyển dài hạn.
Tính trung bình di chuyển của hai chu kỳ khác nhau là EMA1 và EMA2. EMA1 có chu kỳ ngắn, EMA2 có chu kỳ dài.
Xác định xem EMA1 có mặc EMA2 hay không, và nếu có, hãy làm thêm.
Xác định xem EMA1 có mặc EMA2 không, và nếu có, hãy làm trống.
Đánh giá giá trị đóng cửa có phá vỡ EMA1 hay không, như một tín hiệu nhập cảnh.
Cơ chế thoát lỗ dừng: thiết lập điểm dừng cố định hoặc thiết lập lỗ dừng thông qua kênh Donchian.
Các hàm sau được sử dụng:
Chiến lược này rất đơn giản và dễ hiểu.
Sử dụng tính năng theo dõi xu hướng của hệ thống đường trung bình, có thể theo dõi xu hướng hiệu quả.
Một đợt phá vỡ kết hợp với giá đóng cửa K là thời gian để vào, có thể tránh được một đợt phá vỡ giả.
Có thể sử dụng linh hoạt sự kết hợp đồng tuyến của các tham số khác nhau, phù hợp với các chu kỳ khác nhau.
Có thể thiết lập cơ chế kiểm soát rủi ro của Stop Loss.
Khi thị trường đang trong tình trạng biến động, đường trung bình sẽ tạo ra các tín hiệu giao dịch vàng thường xuyên, dễ bị phá sản.
Điểm dừng cố định có thể quá cứng và không thể điều chỉnh theo sự thay đổi của thị trường.
Hệ thống đường trung bình bị tụt hậu, dễ bị bỏ lỡ tín hiệu đảo ngược khi chuyển hướng.
Cần phải xác định chính xác độ dốc của đường đồng nhất để lọc các lỗ hổng giả.
Cần cẩn thận khi chọn tham số, quá thường xuyên hoặc quá muộn trong việc kết hợp các tham số sẽ ảnh hưởng đến hiệu quả của chiến lược.
Các chỉ số MACD có thể được sử dụng để xác định xu hướng và lọc các biến động.
Có thể tham gia vào kênh Donchian để thiết lập đường dừng động, cải thiện vấn đề dừng cố định.
Có thể tham gia chỉ số Binance để đánh giá xu hướng mạnh hoặc yếu, tránh giao dịch không hiệu quả trong thị trường biến động.
Tối ưu hóa sự kết hợp các tham số trung bình, thử nghiệm hiệu quả thực tế của các chiến lược khác nhau.
Bạn có thể xem xét thêm đường trung bình di chuyển cố định để tránh bị tụt hậu.
Chiến lược này là một chiến lược giao dịch đơn giản và rõ ràng, sử dụng các chiến lược giao dịch đồng tuyến, đồng thời kết hợp với đường K để đột phá, có thể lọc hiệu quả các tín hiệu giả. Không gian tối ưu hóa là sử dụng các chỉ số khác để xác định xu hướng mạnh hoặc yếu, thiết lập dừng động, v.v.
/*backtest
start: 2023-09-01 00:00:00
end: 2023-10-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title='Mega crypto bot strategy', shorttitle='megacryptobot_Strategy', overlay=true, pyramiding=0, initial_capital=10000, currency=currency.USD)
//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=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")
//-----------------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)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=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
plot_color = direction > 0 ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)
//-------------------- 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
plot_color2 = direction2 > 0 ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)
//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")
//============ signal Generator ==================================//
period = input('720')
ch1 = request.security(syminfo.tickerid, period, open)
ch2 = request.security(syminfo.tickerid, period, close)
longCondition = crossover(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (longCondition)
strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, period, close),request.security(syminfo.tickerid, period, open))
if (shortCondition)
strategy.entry("SELL", strategy.short)
///////////////////////////////////////////////////////////////////////////////////////////