Chiến lược này được thiết kế dựa trên chỉ số STOCH, một hệ thống giao dịch tự động đơn giản. Chiến lược này phù hợp với các thị trường như ngoại hối, chỉ số chứng khoán, hàng hóa và có thể mở rộng sang thị trường chứng khoán và tiền điện tử.
Chiến lược này sử dụng chỉ số STOCH để xác định tình trạng quá mua quá bán, kết hợp với điểm PIVOT để thiết lập vị trí dừng lỗ, để thực hiện theo dõi xu hướng. Khi chỉ số STOCH hiển thị quá mua quá bán, thực hiện nhiều hoạt động giảm giá; điểm dừng lỗ được đặt gần điểm PIVOT trong ngày, có thể kiểm soát rủi ro hiệu quả; một phần điểm dừng được thiết lập để đóng một phần vị trí sau khi có lợi nhuận nhất định.
Chiến lược này sử dụng đường nhanh %K và đường chậm %D của chỉ số STOCH để thực hiện giao dịch giao dịch vàng và giao dịch chết. Hình thức logic cụ thể là thực hiện giao dịch nhiều khi đường%K từ dưới lên phá vỡ đường%D; thực hiện giao dịch bán trống khi đường%K từ trên xuống phá vỡ đường%D.
Để kiểm soát rủi ro, vị trí dừng lỗ dài được đặt gần điểm PIVOT thấp nhất trong ngày và vị trí dừng lỗ trống được đặt gần điểm PIVOT cao nhất trong ngày, có thể khóa rủi ro một cách hiệu quả.
Một phần của logic dừng là đóng 50% vị trí khi mức lợi nhuận nhất định sau khi mở vị trí. Điều này tối ưu hóa hiệu quả sử dụng vốn.
Tóm lại, chiến lược tổng thể Capture là thời điểm thích hợp để mua quá mức; Kiểm soát về kiểm soát rủi ro; Tối ưu hóa hiệu quả sử dụng vốn. Có thể gọi là sự kết hợp hữu cơ của Capture, Control và Optimize.
Sử dụng chỉ số STOCH có thể nắm bắt hiệu quả hiện tượng quá mua quá bán, hỗ trợ điểm PIVOT có thể kiểm soát rủi ro, do đó kiểm soát toàn bộ rủi ro giao dịch.
Cơ chế ngăn chặn một phần có thể tối ưu hóa hiệu quả sử dụng vốn. Sử dụng phương pháp thanh lý một phần, đảm bảo một phần lợi nhuận và giữ lại không gian lợi nhuận sau đó.
Các tham số chiến lược có thể được tùy chỉnh, các nhà giao dịch có thể điều chỉnh các tham số tùy theo thị trường và sở thích rủi ro, cho phép sử dụng chiến lược linh hoạt.
Lập luận của chiến lược rất đơn giản, rõ ràng, dễ hiểu và phù hợp với các nhà giao dịch khác nhau. Mã có tính trực quan, dễ đọc, dễ sửa đổi và bảo trì.
Một chiến lược để theo dõi xu hướng, dễ bị mắc kẹt trong các biến động, không thể kiếm được lợi nhuận.
Chỉ số STOCH có thể tạo ra tín hiệu sai và gây ra hành vi giao dịch không cần thiết.
Điểm dừng gần với điểm trung tâm của ngày, có thể quá gần sau khi phá vỡ, nên kéo dài khoảng cách dừng một cách thích hợp.
Một số tham số chiến lược như độ dài giai đoạn cần được điều chỉnh theo thị trường khác nhau, nếu không sẽ ảnh hưởng đến hiệu suất của chiến lược.
Chỉ dựa trên dữ liệu lịch sử, không thể đảm bảo hiệu suất trong tương lai.
Hệ thống giao dịch tự động cần đảm bảo sự ổn định của máy chủ, tránh các giao dịch không hoạt động do các vấn đề về kết nối.
Có thể giới thiệu bộ lọc xu hướng, tránh giao dịch mù khi xu hướng không rõ. Ví dụ: thêm chỉ số MA để đánh giá xu hướng.
Có thể thêm vào giám sát khối lượng giao dịch, chẳng hạn như phát hành, phát hành đầu trống, v.v., lọc phá vỡ giả.
Các tham số có thể được điều chỉnh theo các giống và chu kỳ khác nhau để tối ưu hóa hiệu suất chiến lược. Ví dụ: điều chỉnh tham số của STOCH.
Có thể xem xét thêm thuật toán học máy, sử dụng mô hình đào tạo dữ liệu lớn, tự động tối ưu hóa tham số.
Bạn có thể thiết lập tỷ lệ thua lỗ để kiểm soát rủi ro và tránh các đơn vị thua lỗ lớn.
Có thể thêm các điều kiện để lọc thời gian tham gia và tăng tỷ lệ chiến lược. Ví dụ như giới thiệu mô hình cơ bản của cổ phiếu.
Chiến lược này sử dụng phương pháp theo dõi xu hướng đơn giản và trực quan hơn, sử dụng chỉ số STOCH để xác định tình trạng quá mua quá bán, và thêm PIVOT để kiểm soát rủi ro, đồng thời đưa ra một số điểm dừng để tối ưu hóa hiệu quả tài chính. Được thiết kế từ ba cấp độ Capture, Control và Optimize, tạo thành một hệ thống giao dịch tự động hoàn chỉnh hơn.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
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/
// © Peter_O
//@version=4
// strategy(title="TradingView Alerts to MT4 MT5 - Forex, indices, commodities, stocks, crypto", commission_type=strategy.commission.cash_per_contract, commission_value=0.00003, overlay=false, default_qty_value=20000, initial_capital=1000)
//
// This script was created for educational purposes only.
// It is showing how to use Alerts-Straight-From-Strategies and
// dynamic variables in TradingView alerts.
// And how to auto-execute them in Forex, indices, commodities markets
//
// (This method will also work with stocks and crypto - anything your
// broker is offering via their MT4/MT5 platform).
TakeProfitLevel=input(400)
TakePartialProfitLevel=input(150)
// **** Entries logic **** {
periodK = input(13, title="K", minval=1)
periodD = input(3, title="D", minval=1)
smoothK = input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
plot(k, title="%K", color=color.blue)
plot(d, title="%D", color=color.orange)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=color.purple, transp=75)
GoLong=crossover(k,d) and k<80 and year>2009
GoShort=crossunder(k,d) and k>20 and year>2009
AlertTest=open>close or open<close or open==close
// } End of entries logic
// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high
pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)
if GoLong
stoploss_long := low<pl ? low : pl
if GoShort
stoploss_short := high>ph ? high : ph
// } End of Pivot-points and stop-loss logic
// **** Trade counter and partial closing mechanism **** {
var int trade_id=0
if GoLong or GoShort
trade_id:=trade_id+1
TakePartialProfitLong = barssince(GoLong)<barssince(GoShort) and crossover(high,(valuewhen(GoLong,close,0)+TakePartialProfitLevel*syminfo.mintick))
TakePartialProfitShort = barssince(GoLong)>barssince(GoShort) and crossunder(low,(valuewhen(GoShort,close,0)-TakePartialProfitLevel*syminfo.mintick))
// } End of Trade counter and partial closing mechanism
strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XPartLong", from_entry="Long", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XPartShort", from_entry="Short", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)
if GoLong
alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if TakePartialProfitLong
alertsyntax_closepartlong='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
alert(message=alertsyntax_closepartlong, freq=alert.freq_once_per_bar_close)
if TakePartialProfitShort
alertsyntax_closepartshort='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
alert(message=alertsyntax_closepartshort, freq=alert.freq_once_per_bar_close)