Chiến lược này được thiết kế dựa trên các chỉ số MACD và RSI trong 1 phút. Nó kết hợp các chỉ số MACD để xác định xu hướng và tìm ra điểm phá vỡ, và khả năng của RSI để xác định quá mua quá bán, tìm kiếm cơ hội phá vỡ đường ngắn để biến động ngắn.
Chiến lược này đầu tiên tính toán đường phân tán của MACD trong khung thời gian 1 phút và vẽ các sự phá vỡ của đường phân tán trong vòng Brin. Đồng thời tính toán các chỉ số RSI để xác định đường đa lực. Chỉ khi các chỉ số Brin, MACD và RSI đồng thời phù hợp, tín hiệu giao dịch sẽ được phát ra.
Cụ thể, khi 1 phút MACD phân tán đường dưới đường đi xuống và RSI cao hơn 51 làm nhiều, khi MACD phân tán đường trên đường đi lên và RSI thấp hơn 49. Và yêu cầu dòng trung bình 9, 50 và 200 ngày được sắp xếp theo thứ tự để giao dịch, để ngăn chặn hoạt động đảo ngược xu hướng bất lợi.
Lấy lệnh dừng cố định Exit khi thu nhập đạt 0,5% hoặc lỗ đạt 0,3% khi bán.
Chiến lược này kết hợp sự phán đoán xu hướng và phán đoán mua quá mức để có thể lọc hiệu quả các đợt phá vỡ giả. Đặt lệnh dừng cố định cho phép mỗi lần thu lợi nhuận có một số quản lý dự kiến.
Những ưu điểm:
MACD đánh giá xu hướng, RSI đánh giá đường đi của lực lượng không khí, có thể tránh hiệu quả hoạt động ngược.
Kết hợp với đường băng Bryn để xác định tín hiệu đột phá, có thể lọc các đột phá giả.
Sử dụng lệnh dừng lỗ cố định, mỗi lần thu lợi nhuận có một kỳ vọng nhất định, bạn có thể kiểm soát lỗ đơn.
Tần suất giao dịch cao, thích hợp cho hoạt động ngắn.
Chiến lược này cũng có một số rủi ro:
Hạn dừng cố định không thể điều chỉnh theo sự thay đổi của thị trường, có thể dẫn đến việc dừng lỗ quá nhỏ và dừng quá lớn.
Tùy thuộc vào các chỉ số, các tín hiệu lọc đa dạng có thể gây ra nhiều lần kích hoạt dừng lỗ trong khu vực cân bằng.
Các giao dịch có tần số cao có chi phí cao hơn.
Các tham số MACD và RSI cần được tối ưu hóa, và các tham số hiện tại có thể không phải là tối ưu nhất.
Một số điểm có thể được tối ưu hóa hơn nữa:
Sử dụng Stop Loss động, điều chỉnh tỷ lệ Stop Loss theo các chỉ số như ATR.
Tăng thông số Brin để thu hẹp các kênh và giảm tần suất kích hoạt.
Tối ưu hóa các tham số MACD và RSI để tìm ra sự kết hợp tốt nhất.
Trình lọc theo xu hướng chu kỳ lớn để tránh giao dịch ngược.
Chiến lược này nói chung là một hệ thống phá vỡ đường ngắn điển hình, kết hợp xu hướng, đánh giá mua quá mức và bán quá mức, có thể phát hiện cơ hội ngắn hiệu quả. Tuy nhiên, có một số rủi ro cần được thử nghiệm và tối ưu hóa các tham số để giảm rủi ro và tăng tỷ lệ lợi nhuận. Nếu các tham số được điều chỉnh đúng cách, chiến lược này có thể trở thành một trong những chiến lược đường ngắn hiệu quả.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 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/
// © pluckyCraft54926
//@version=5
strategy("5 Minute Scalp", overlay=true, margin_long=100, margin_short=100)
fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
src = input(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])
// Plot colors
col_macd = input(#2962FF, "MACD Line ", group="Color Settings", inline="MACD")
col_signal = input(#FF6D00, "Signal Line ", group="Color Settings", inline="Signal")
col_grow_above = input(#26A69A, "Above Grow", group="Histogram", inline="Above")
col_fall_above = input(#B2DFDB, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#FFCDD2, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#FF5252, "Fall", group="Histogram", inline="Below")
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
hist_1m = request.security(syminfo.tickerid,"1",hist [barstate.isrealtime ? 1 : 0])
hline(0, "Zero Line", color=color.new(#787B86, 50))
////////////////////////////////////////////////////
//plotting emas on the chart
len1 = input.int(9, minval=1, title="Length")
src1 = input(close, title="Source")
offset1 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out1 = ta.ema(src1, len1)
plot(out1, title="EMA9", color=color.blue, offset=offset1)
len2 = input.int(50, minval=1, title="Length")
src2 = input(close, title="Source")
offset2 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out2 = ta.ema(src2, len2)
plot(out2, title="EMA50", color=color.yellow, offset=offset2)
len3 = input.int(200, minval=1, title="Length")
src3 = input(close, title="Source")
offset3 = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out3 = ta.ema(src3, len3)
plot(out3, title="EMA200", color=color.white, offset=offset3)
//////////////////////////////////////////////////////////////////
//Setting up the BB
/////////////////////////////////////////////////////////////
srcBB = hist_1m
lengthBBLong = input.int(94,title = "LengthBB Long", minval=1)
lengthBBShort = input.int(83,title = "LengthBB Short", minval=1)
multBB = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basisBBLong = ta.sma(srcBB, lengthBBLong)
basisBBShort = ta.sma(srcBB, lengthBBShort)
devBBLong = multBB * ta.stdev(srcBB, lengthBBLong)
devBBShort = multBB * ta.stdev(srcBB, lengthBBShort)
upperBB = basisBBShort + devBBShort
lowerBB = basisBBLong - devBBLong
offsetBB = input.int(0, "Offset", minval = -500, maxval = 500)
/////////////////////////////////////////
//aetting up rsi
///////////////////////////////////////////
rsilengthlong = input.int(defval = 11, title = "Rsi Length Long", minval = 1)
rlong=ta.rsi(close,rsilengthlong)
rsilengthshort = input.int(defval = 29, title = "Rsi Length Short", minval = 1)
rshort=ta.rsi(close,rsilengthshort)
///////////////////////////
//Only taking long and shorts, if RSI is above 51 or bellow 49
rsilong = rlong >= 51
rsishort = rshort <= 49
//////////////////////////////////////
//only taking trades if all 3 emas are in the correct order
long = out1 > out2 and out2 > out3
short = out1 < out2 and out2 < out3
/////////////////////////////////////
///////////////////////////////////////////
//setting up TP and SL
TP = input.float(defval = 0.5, title = "Take Profit %",step = 0.1) / 100
SL = input.float(defval = 0.3, title = "Stop Loss %", step = 0.1) / 100
longCondition = hist_1m <= lowerBB
longhight = input(defval=-10,title = "MacdTick Low")
if (longCondition and long and rsilong and hist_1m <= longhight)
strategy.entry("Long", strategy.long)
if (strategy.position_size>0)
longstop = strategy.position_avg_price * (1-SL)
longprofit = strategy.position_avg_price * (1+TP)
strategy.exit(id ="close long",from_entry="Long",stop=longstop,limit=longprofit)
shortCondition = hist_1m >= upperBB
shorthight = input(defval=35,title = "MacdTick High")
if (shortCondition and short and rsishort and hist_1m >= shorthight)
strategy.entry("short ", strategy.short)
shortstop = strategy.position_avg_price * (1+SL)
shortprofit = strategy.position_avg_price * (1-TP)
if (strategy.position_size<0)
strategy.exit(id ="close short",stop=shortstop,limit=shortprofit)