Chiến lược cắt đầu da dựa trên thanh khoản và xu hướng thị trường

Tác giả:ChaoZhang, Ngày: 2024-01-30 15:36:33
Tags:

img

Tổng quan

Chiến lược này xem xét toàn diện tính thanh khoản của thị trường, xu hướng và các chỉ số kỹ thuật để thực hiện các chiến lược giao dịch ngắn hạn.

Nguyên tắc chiến lược

  1. Nguyên tắc cơ bản: Chiến lược này chủ yếu xem xét thanh khoản thị trường và xu hướng.

  2. Chỉ số thanh khoản thị trường: Chiến lược này chủ yếu sử dụng MFI và thay đổi khối lượng giao dịch làm chỉ số thanh khoản thị trường.

  3. Phán quyết xu hướng: Chiến lược này kết hợp ADX, EMA và các chỉ số khác để xác định xu hướng. Khi ADX trên 30 và EMA của nó, điều đó có nghĩa là xu hướng tương đối mạnh.

  4. Điều kiện mở cửa: Khi thanh khoản thị trường tốt và xu hướng xuất hiện cùng một lúc, nếu các điều kiện phụ khác (như phán đoán vị trí SAR, v.v.) cũng được đáp ứng, các tín hiệu mở cửa được tạo ra.

  5. Đặt lợi nhuận và dừng lỗ: Chiến lược này đặt cố định lợi nhuận (10 điểm) và dừng lỗ (7,5 điểm) cho mỗi giao dịch.

Phân tích lợi thế

Chiến lược này có những lợi thế sau:

  1. Sử dụng thanh khoản thị trường để xác định thời gian: Dựa trên MFI và khối lượng giao dịch để xác định thanh khoản thị trường, tránh mở các vị trí khi thanh khoản thị trường kém.

  2. Theo dõi xu hướng cho lợi nhuận: Kết hợp EMA và các chỉ số khác để xác định hướng xu hướng, giúp nhận được lợi nhuận xu hướng.

  3. Kiểm soát rủi ro tốt: Thiết lập lợi nhuận cố định và dừng lỗ để kiểm soát hiệu quả lỗ tối đa cho mỗi giao dịch.

  4. Tần suất giao dịch tương đối cao: Là một chiến lược ngắn hạn, tần suất giao dịch sẽ tương đối cao, phù hợp để tích lũy lợi nhuận từng bước.

  5. Không gian lớn cho tối ưu hóa tham số: Ví dụ, các tham số MA, cài đặt dừng lỗ và lấy lợi nhuận có thể được tối ưu hóa để cải thiện hiệu suất chiến lược.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Rủi ro kiểm soát trượt giao dịch thực: Tiến trình dừng lỗ và lấy lợi nhuận lý thuyết không thể phản ánh hoàn toàn điều kiện giao dịch thực.

  2. Nguy cơ đánh giá sai xu hướng: Chiến lược này phụ thuộc rất nhiều vào nhiều chỉ số để xác định xu hướng, nhưng vẫn có khả năng thất bại.

  3. Rủi ro giao dịch quá mức: Là một chiến lược ngắn hạn, cài đặt tham số không phù hợp có thể dẫn đến giao dịch quá mức.

  4. Rủi ro bất thường thị trường: Trong những trường hợp cực kỳ yếu về thanh khoản thị trường hoặc thay đổi chính sách, chiến lược này có thể không hoạt động đúng cách.

Theo đó, chúng ta có thể giảm rủi ro từ các khía cạnh sau:

  1. Nới lỏng phạm vi dừng lỗ một cách thích hợp để xem xét các yếu tố trượt thực sự.

  2. Tối ưu hóa logic đánh giá xu hướng và giới thiệu nhiều chỉ số hơn để giảm xác suất thất bại.

  3. Thêm giới hạn tần suất vị trí mở để tránh giao dịch quá mức.

  4. Điều chỉnh các thông số linh hoạt dựa trên điều kiện thị trường để đối phó với các tình huống bất thường.

Hướng tối ưu hóa

Các hướng tối ưu hóa của chiến lược này bao gồm:

  1. giới thiệu nhiều chỉ số hơn để tối ưu hóa đánh giá xu hướng và làm cho các đánh giá chính xác hơn. ví dụ: giới thiệu các chỉ số MACD, vv

  2. Tối ưu hóa các tham số chu kỳ của MA để tìm ra sự kết hợp tham số tốt nhất.

  3. Cải thiện các chiến lược dừng lỗ và kiếm lợi nhuận, chẳng hạn như sử dụng dừng lỗ di chuyển, dừng lỗ giữa và vân vân.

  4. Thêm hạn chế về số lượng giao dịch để tránh giao dịch tần suất quá cao. ví dụ, mở các vị trí tối đa 3 lần mỗi ngày.

  5. Tìm các chỉ số thanh khoản thị trường tốt hơn để xác định thêm thời gian mở các vị trí. ví dụ: giới thiệu các chỉ số lưu lượng ròng.

  6. Thêm các chức năng tối ưu hóa tham số để tự động tối ưu hóa các tham số để tìm kết hợp tham số tối ưu.

Tóm lại

Chiến lược này xem xét toàn diện các yếu tố như thanh khoản thị trường và xu hướng. Nó thu được lợi nhuận trong ngắn hạn. So với các chiến lược xu hướng truyền thống, sự đổi mới lớn nhất của chiến lược này là giới thiệu các chỉ số thanh khoản thị trường để tránh mở các vị trí khi thanh khoản thị trường kém. Tương ứng, chiến lược này cũng có một số rủi ro kiểm soát thế giới thực và rủi ro đánh giá sai xu hướng. Chúng ta có thể liên tục cải thiện chiến lược này bằng cách giới thiệu nhiều chỉ số hơn, tối ưu hóa các tham số và quản lý rủi ro.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
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/
// © trent777brown

//@version=5
strategy("scalping with market facilitation", overlay=true, margin_long=100, margin_short=100)


MFI0 = (high - low) / volume
MFI1 = (high[1] - low[1]) / volume[1]

MFIplus = MFI0 > MFI1
MFIminus = MFI0 < MFI1

//Current Trend-(Changed mean to trend)-revised
trendplus = hl2 > high[1]
trendzero = hl2 < high[1] and hl2 > low[1]  //addition of script
trendminus = hl2 < low[1]  //changed high to low

//Volume +/-
volplus = volume > volume[1]
volminus = volume < volume[1]

//Period Control by Buyers or Sellers is determined with reference to Price action of the period 
//divided into 3 sectors, sector 1 is the Top third, Sector 2 is the middle third, 
//and sector 3 is the Bottom third of the period. Control classifications are: Extremes(11, 33), Neutral(22), 
//Climbers(31,21,32) Open lower than Close, and Drifters(13,23,12)Close lower than Open

//value0 = low
//value1 = ((high - low)/3)
//value2 = ((high - low)/3)*2
//value3 = high

//o1 = (open >= (((high - low)/3) * 2) + low)
//c1 = (close >= (((high - low)/3) * 2) + low)
//o2 = (open <= o1) 
//c2 = (close <= c1)
//o3 = (open <= ((high - low)/3) + low)
//c3 = (close <= ((high - low)/3) + low)

//sector2 = if((high - low)/3) + low and sector2 <= (((high - low)/3)*2) + low

//sector3 = if((high - low)/3) + low and >= low


//Extremes-Full Control of Period by Buyers or Sellers 
//pg79 notes an 85% chance that the current trend will change in the next 1 to 5 bars
b11 = open >= (high - low) / 3 * 2 + low and close >= (high - low) / 3 * 2 + low  //Extreme Buyer Control:Chartruse
b33 = open <= (high - low) / 3 + low and close <= (high - low) / 3 + low  //Extreme Seller Control:Crimson
//Neutral pg80
b22 = open >= (high - low) / 3 + low and open <= (high - low) / 3 * 2 and close >= (high - low) / 3 + low and open <= (high - low) / 3 * 2  //Bracketed Price Control
//Climber-Open lower than Close pg81
b31 = open <= (high - low) / 3 + low and close >= (high - low) / 3 * 2 + low  //Strong Buyer Control:Dark Green
b21 = open >= (high - low) / 3 + low and open <= (high - low) / 3 * 2 and close >= (high - low) / 3 * 2 + low  //Moderate Buyer Control:Green
b32 = open <= (high - low) / 3 + low and close >= (high - low) / 3 + low and open <= (high - low) / 3 * 2  //Weak Buyer Control:Light Green
//Drifter-Close lower than Open pg81
b13 = open >= (high - low) / 3 * 2 + low and close <= (high - low) / 3 + low  //Strong Seller Control:Dark Red
b23 = open >= (high - low) / 3 + low and open <= (high - low) / 3 * 2 and close <= (high - low) / 3 + low  //Moderate Seller Control:Red
b12 = open >= (high - low) / 3 * 2 + low and close >= (high - low) / 3 + low and open <= (high - low) / 3 * 2  //Weak Seller Control:Light Red/Pink

 

//


psar= ta.sar(.09, .2, .2)

ema8= ta.ema(hlc3, 8)

ema13h= ta.ema(high, 13)
ema13l= ta.ema(low, 13)
ema13= ta.ema(close, 13)

ema55= ta.ema(close, 100)

[dip, dim, adx]= ta.dmi(5, 5)
adxema=ta.ema(adx, 3)
[macdl, sigl, histl]= ta.macd(close, 8, 13, 5)
obv= ta.obv
obvema= ta.ema(obv, 8)
obvema55= ta.ema(obv, 55)
mfigreen= MFIplus and volplus
adx_x_over= ta.crossover(adx, adxema) and adx >= 25
barssincemfi= ta.barssince(mfigreen)










longtrig2= adx > 30 and adx > adxema and barssincemfi <= 4 


shorttrig2= adx > 30 and adx > adxema and barssincemfi <= 4 


long= macdl > sigl and obv > obvema55 and ema8 > ema55   and psar < low and trendplus//and ema13l > ema55//and open > hull200 and close > hull200

short= macdl < sigl and obv < obvema55 and ema8 < ema55 and psar > high and trendminus//and ema13h < ema55//open < hull200 and close < hull200


//plot(hull200, color=color.red, linewidth=3)
plot(ema13h, color=color.gray, linewidth=3)
plot(ema13l, color=color.gray, linewidth=3)

plot(ema13, color=color.blue, linewidth=3)
//
plot(ema55, color=color.white, linewidth=3)
plot(psar, color=color.white, style=plot.style_circles)
plotshape(mfigreen, color=color.yellow, style=shape.flag, location=location.belowbar, size= size.tiny)
longCondition = long
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long, 1,  when= longtrig2)
    strategy.exit("exit long", "My Long Entry Id", profit= 100, loss= 75)
shortCondition = short
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short, 1,  when= shorttrig2)
    strategy.exit("exit short", "My Short Entry Id", profit= 100, loss= 75)


Thêm nữa