
3 10 Chiến lược đánh dấu đường viền vibrator bằng cách tính toán chênh lệch giữa trung bình di chuyển đơn giản ngày 3 và ngày 10 làm chỉ số MACD, kết hợp với phân tích khối lượng giao dịch để đánh giá sức mạnh của thị trường mua và bán, do đó tạo ra tín hiệu giao dịch. Chiến lược này kết hợp các khu vực giá quan trọng, đặc điểm khối lượng giao dịch và sự đảo ngược của chỉ số MACD để xác nhận cơ hội vào và ra.
Chỉ số trung tâm của chiến lược này là MACD, nó bao gồm một đường trung bình di chuyển nhanh và một đường trung bình di chuyển chậm. Đường nhanh là đường trung bình di chuyển đơn giản 3 ngày và đường chậm là đường trung bình di chuyển đơn giản 10 ngày. Sự chênh lệch giữa chúng tạo thành đường trụ MACD.
Ngoài ra, chiến lược này kết hợp số lượng giao dịch mua và số lượng giao dịch bán của mỗi dòng K với mối quan hệ lớn của số lượng giao dịch mua và bán, để đánh giá mức độ tương đối mạnh của thị trường. Cách cụ thể là: số lượng mua = số lượng giao dịch x (giá đóng cửa - giá thấp nhất) ÷ (giá cao nhất - giá thấp nhất); số lượng bán = số lượng giao dịch x (giá cao nhất - giá đóng cửa) ÷ (giá cao nhất - giá thấp nhất).
Bằng cách kết hợp các chỉ số MACD và phân tích khối lượng giao dịch, chiến lược này có thể đánh giá hiệu quả về mối quan hệ cung cầu và xu hướng của thị trường. Đồng thời, chiến lược cũng xác minh xem giá có ở khu vực quan trọng hay không, MACD có hiệu quả hay không, và liệu chênh lệch khối lượng giao dịch của mua và bán có đủ điều kiện để lọc ra một số tiếng ồn của các hoạt động xung đột để đảm bảo khả năng cao và hiệu quả cao.
Lợi thế lớn nhất của chiến lược này là kết hợp đầy đủ các mối quan hệ cung cầu của thị trường. Đường MACD có thể xác định hiệu quả sự tương phản giữa các lực lượng mua và bán và xu hướng của thị trường; Phân tích chênh lệch khối lượng giao dịch có thể xác định rõ ràng các lực lượng thống trị trong các thị trường. Đồng thời, chiến lược thiết lập nhiều điều kiện để kiểm tra, tránh theo đuổi đà giảm, đảm bảo khả năng kiếm lợi nhuận cao hơn. Ngoài ra, cơ chế dừng lỗ trong chiến lược cũng có thể hạn chế tổn thất đơn lẻ.
Những rủi ro trên có thể được tránh bằng cách: đánh giá chính xác xu hướng thị trường chính, tránh sử dụng chiến lược này trong các trạm rung động; chú ý đến thông tin thị trường, xác định khi khối lượng giao dịch được nâng lên; điều chỉnh các tham số một cách thận trọng, có thể lấy lời khuyên từ các cơ quan chuyên môn.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tóm lại, có thể thấy rằng chiến lược này có nhiều khả năng tối ưu hóa, các nhà đầu tư có thể điều chỉnh và cải thiện phù hợp với hoàn cảnh của riêng họ và môi trường thị trường, làm cho chiến lược hiệu quả hơn.
3 10 chiến lược đánh dấu đường viền vibrator đã kết hợp thành công các tư tưởng phân tích MACD, so sánh khối lượng giao dịch và xác minh lọc đa điều kiện. Nó có khả năng đánh giá mối quan hệ cung cầu và hướng của thị trường mạnh mẽ, đồng thời kiểm soát rủi ro với cơ chế ngăn chặn dừng lỗ tích hợp. Chiến lược này có không gian tối ưu hóa rộng lớn, triển vọng ứng dụng rộng lớn, đáng để các nhà đầu tư xem xét và nghiên cứu sâu hơn.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("3 10 Oscillator Profile Flagging", shorttitle="3 10 Oscillator Profile Flagging", overlay=true)
signalBiasValue = input(title="Signal Bias", defval=0.26)
macdBiasValue = input(title="MACD Bias", defval=0.8)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=10)
takeProfit = input( title="Take Profit", defval=0.75)
stopLoss = input( title="Stop Loss", defval=0.5)
fast_ma = ta.sma(close, 3)
slow_ma = ta.sma(close, 10)
macd = fast_ma - slow_ma
signal = ta.sma(macd, 16)
hline(0, "Zero Line", color = color.black)
buyVolume = volume*((close-low)/(high-low))
sellVolume = volume*((high-close)/(high-low))
buyVolSlope = buyVolume - buyVolume[1]
sellVolSlope = sellVolume - sellVolume[1]
signalSlope = ( signal - signal[1] )
macdSlope = ( macd - macd[1] )
//plot(macdSlope, color=color.red, title="Total Volume")
//plot(signalSlope, color=color.green, title="Total Volume")
intrabarRange = high - low
getLookBackSlope(lookBack) => signal - signal[lookBack]
getBuyerVolBias(lookBack) =>
j = 0
for i = 1 to lookBack
if buyVolume[i] > sellVolume[i]
j += 1
j
getSellerVolBias(lookBack) =>
j = 0
for i = 1 to lookBack
if sellVolume[i] > buyVolume[i]
j += 1
j
getVolBias(lookBack) =>
float b = 0
float s = 0
for i = 1 to lookBack
b += buyVolume[i]
s += sellVolume[i]
b > s
getSignalBuyerBias(lookBack) =>
j = 0
for i = 1 to lookBack
if signal[i] > signalBiasValue
j += 1
j
getSignalSellerBias(lookBack) =>
j = 0
for i = 1 to lookBack
if signal[i] < ( 0 - signalBiasValue )
j += 1
j
getSignalNoBias(lookBack) =>
j = 0
for i = 1 to lookBack
if signal[i] < signalBiasValue and signal[i] > ( 0 - signalBiasValue )
j += 1
j
getPriceRising(lookBack) =>
j = 0
for i = 1 to lookBack
if close[i] > close[i + 1]
j += 1
j
getPriceFalling(lookBack) =>
j = 0
for i = 1 to lookBack
if close[i] < close[i + 1]
j += 1
j
getRangeNarrowing(lookBack) =>
j = 0
for i = 1 to lookBack
if intrabarRange[i] < intrabarRange[i + 1]
j+= 1
j
getRangeBroadening(lookBack) =>
j = 0
for i = 1 to lookBack
if intrabarRange[i] > intrabarRange[i + 1]
j+= 1
j
bool isNegativeSignalReversal = signalSlope < 0 and signalSlope[1] > 0
bool isNegativeMacdReversal = macdSlope < 0 and macdSlope[1] > 0
bool isPositiveSignalReversal = signalSlope > 0 and signalSlope[1] < 0
bool isPositiveMacdReversal = macdSlope > 0 and macdSlope[1] < 0
bool hasBearInversion = signalSlope > 0 and macdSlope < 0
bool hasBullInversion = signalSlope < 0 and macdSlope > 0
bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0 - signalBiasValue )
bool hasSignalBuyerBias = hasSignalBias and signal > 0
bool hasSignalSellerBias = hasSignalBias and signal < 0
bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0 - macdBiasValue )
bool hasBullAntiPattern = ta.crossunder(macd, signal)
bool hasBearAntiPattern = ta.crossover(macd, signal)
bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 )
bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 )
// 7.48 Profit 52.5%
if ( hasSignificantBuyerVolBias and getPriceRising(shortLookBack) == shortLookBack and getBuyerVolBias(shortLookBack) == shortLookBack and hasPositiveMACDBias and hasBullInversion)
strategy.entry("Short1", strategy.short, qty=10)
strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)
// 32.53 Profit 47.91%
if ( getPriceFalling(shortLookBack) and (getVolBias(shortLookBack) == false) and signalSlope < 0 and hasSignalSellerBias)
strategy.entry("Long1", strategy.long, qty=10)
strategy.exit("TPS", "Long1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)