
Chiến lược phá vỡ giá cao nhất hôm qua là một chiến lược theo dõi xu hướng, nó mở nhiều vị trí đầu vào khi phá vỡ giá cao nhất hôm qua, thậm chí có thể mở vị trí ngay cả khi phá vỡ nhiều lần trong ngày. Nó sử dụng xu hướng theo dõi là đặc điểm chính, áp dụng cho các trường hợp thị trường có xu hướng rõ ràng và có tỷ lệ biến động cao.
Chiến lược này đưa ra một loạt các chỉ số để xác định thời gian nhập cảnh và xuất cảnh.
Bộ lọc đường cong ROC - Khởi động chiến lược khi giá đóng cửa trong ngày so với giá đóng cửa trong ngày giao dịch trước đó tăng/tăng vượt ngưỡng thiết lập. Chỉ số này được sử dụng để lọc các thị trường biến động không phù hợp với chiến lược.
Điểm phá vỡ - Ghi lại giá cao nhất, giá thấp nhất, giá mở cửa trong ngày. Khi giá phá vỡ giá cao nhất trong ngày là tín hiệu nhập cảnh.
Điều kiện nhập cảnh và thoát ra - thiết lập tỷ lệ dừng lỗ và dừng lại sau khi nhập cảnh, đồng thời có thể kích hoạt theo dõi dừng lỗ để khóa lợi nhuận. Cũng có thể dừng lại có điều kiện đối với EMA cụ thể.
Thiết lập tối ưu hóa - Có thể thiết lập tỷ lệ khoảng cách trước khi vào sân để tùy chỉnh thời gian vào sân, tránh phá vỡ giả. Có thể thiết lập dừng lỗ, dừng dừng, theo dõi các tham số động của dừng lỗ.
Cụ thể, chiến lược đánh giá thời gian vào thị trường bằng cách ghi lại giá cao nhất trong ngày. Khi giá vượt quá giá cao nhất trong ngày, nhiều đầu vào. Sau đó, thiết lập dừng lỗ và dừng thoát, đồng thời có thể bật dừng theo dõi.
Chiến lược này có những ưu điểm sau:
Theo dõi xu hướng, nắm bắt lợi nhuận từ xu hướng.
Chiến lược đột phá, tín hiệu vào được rõ ràng.
Hãy cân nhắc mức giá cao nhất trong ngày để tránh tiếp tục nhập cảnh.
Cài đặt ngăn chặn thiệt hại, giúp kiểm soát rủi ro.
Theo dõi các thiết lập dừng lỗ và khóa lợi nhuận.
Có thể điều chỉnh thời gian nhập cảnh bằng cách tối ưu hóa tham số, kiểm soát rủi ro.
Nó rất đơn giản, trực quan và dễ hiểu.
Có thể sử dụng cả hai chiều.
Chiến lược này cũng có những rủi ro sau:
Chiến lược đột phá dễ bị mắc kẹt. Giá có thể giảm ngay lập tức sau khi vào.
Chỉ có hiệu quả trong các tình huống xu hướng, không hoạt động tốt trong các tình huống chấn động.
Cần thiết lập tỷ lệ dừng lỗ hợp lý, quá thoải mái có thể làm tăng tổn thất.
Cần thiết lập tỷ lệ khoảng cách vào sân hợp lý, quá quyết liệt có thể làm tăng tổn thất.
Các đột phá giả có thể dẫn đến tổn thất không cần thiết, cần điều chỉnh và tối ưu hóa.
Các nhà đầu tư cần quan tâm đến việc liệu khối lượng giao dịch vượt trội có hỗ trợ cho các hoạt động tiếp theo hay không.
Cần chú ý đến sự phối hợp giữa các thiết lập tham số của các chu kỳ thời gian khác nhau.
Chiến lược này có thể được tối ưu hóa bằng cách:
Thêm các chỉ số kỹ thuật khác, chẳng hạn như khối lượng giao dịch, chỉ số chấn động, v.v., để tránh bị mắc kẹt trong tình huống chấn động.
Tăng các chỉ số phù hợp với đường cong để đánh giá chất lượng của xu hướng và tránh theo các xu hướng giả.
Động thái tối ưu hóa thiết lập khoảng cách vào, điều chỉnh khoảng cách theo yêu cầu của thị trường biến động.
Động thái tối ưu hóa các thiết lập dừng lỗ, theo các tham số điều chỉnh của thị trường.
Cài đặt các tham số khác nhau cho các loại khác nhau với các chu kỳ khác nhau.
Sử dụng phương pháp học máy TRAINING để kiểm tra tác động của các tham số khác nhau đối với chiến lược.
Thêm Options để tối ưu hóa cấu hình.
Nghiên cứu cách áp dụng chiến lược này trong các trường hợp động đất.
Chiến lược kết hợp mở rộng cho các giai đoạn thời gian và giống.
Chiến lược này dựa trên tư tưởng theo dõi xu hướng vượt qua mức giá cao nhất hôm qua, hoạt động tốt trong các hoạt động xu hướng. Tuy nhiên, cũng có những rủi ro bị đặt và các vấn đề về tối ưu hóa tham số. Có thể được tối ưu hóa hơn nữa bằng cách giới thiệu nhiều chỉ số phán đoán, thiết lập tham số tối ưu hóa động, mở rộng thành chiến lược kết hợp.
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 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/
// Author: © tumiza 999
// © TheSocialCryptoClub
//@version=5
strategy("Yesterday's High v.17.07", overlay=true, pyramiding = 1,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity, default_qty_value=10,
slippage=1, backtest_fill_limits_assumption=1, use_bar_magnifier=true,
commission_type=strategy.commission.percent, commission_value=0.075
)
// -----------------------------------------------------------------------------
// ROC Filter
// -----------------------------------------------------------------------------
// f_security function by LucF for PineCoders available here: https://www.tradingview.com/script/cyPWY96u-How-to-avoid-repainting-when-using-security-PineCoders-FAQ/
f_security(_sym, _res, _src, _rep) => request.security(_sym, _res, _src[not _rep and barstate.isrealtime ? 1 : 0])[_rep or barstate.isrealtime ? 0 : 1]
high_daily = f_security(syminfo.tickerid, "D", high, false)
roc_enable = input.bool(false, "", group="ROC Filter from CloseD", inline="roc")
roc_threshold = input.float(1, "Treshold", step=0.5, group="ROC Filter from CloseD", inline="roc")
closed = f_security(syminfo.tickerid,"1D",close, false)
roc_filter= roc_enable ? (close-closed)/closed*100 > roc_threshold : true
// -----------------------------------------------------------------------------
// Trigger Point
// -----------------------------------------------------------------------------
open_session = ta.change(time('D'))
price_session = ta.valuewhen(open_session, open, 0)
tf_session = timeframe.multiplier <= 60
bgcolor(open_session and tf_session ?color.new(color.blue,80):na, title = "Session")
first_bar = 0
if open_session
first_bar := bar_index
var max_today = 0.0
var min_today = 0.0
var high_daily1 = 0.0
var low_daily1 = 0.0
var today_open = 0.0
if first_bar
high_daily1 := max_today
low_daily1 := min_today
today_open := open
max_today := high
min_today := low
if high >= max_today
max_today := high
if low < min_today
min_today := low
same_day = today_open == today_open[1]
plot( timeframe.multiplier <= 240 and same_day ? high_daily1 : na, color= color.yellow , style=plot.style_linebr, linewidth=1, title='High line')
plot( timeframe.multiplier <= 240 and same_day ? low_daily1 : na, color= #E8000D , style=plot.style_linebr, linewidth=1, title='Low line')
// -----------------------------------------------------------------------------
// Strategy settings
// -----------------------------------------------------------------------------
Gap = input.float(1,"Gap%", step=0.5, tooltip="Gap di entrata su entry_price -n anticipa entrata, con +n posticipa entrata", group = "Entry")
Gap2 = (high_daily1 * Gap)/100
sl = input.float(3, "Stop-loss", step= 0.5, group = "Entry")
tp = input.float(9, "Take-profit", step= 0.5, group = "Entry")
stop_loss_price = strategy.position_avg_price * (1-sl/100)
take_price = strategy.position_avg_price * (1+tp/100)
sl_trl = input.float(2, "Trailing-stop", step = 0.5, tooltip = "Attiva trailing stop dopo che ha raggiunto...",group = "Trailing Stop Settings")//group = "Trailing Stop Settings")
Atrl= input.float(1, "Offset Trailing", step=0.5,tooltip = "Distanza dal prezzo", group = "Trailing Stop Settings")
stop_trl_price_cond = sl_trl * high/syminfo.mintick/100
stop_trl_price_offset_cond = Atrl * high/syminfo.mintick/100
stop_tick = sl * high/syminfo.mintick/100
profit_tick = tp * high/syminfo.mintick/100
mess_buy = "buy"
mess_sell = "sell"
// -----------------------------------------------------------------------------
// Entry - Exit - Close
// -----------------------------------------------------------------------------
if close < high_daily1 and roc_filter
strategy.entry("Entry", strategy.long, stop = high_daily1 + (Gap2), alert_message = mess_buy)
ts_n = input.bool(true, "Trailing-stop", tooltip = "Attiva o disattiva trailing-stop", group = "Trailing Stop Settings")
close_ema = input.bool(false, "Close EMA", tooltip = "Attiva o disattiva chiusura su EMA", group = "Trailing Stop Settings")
len1 = input.int(10, "EMA length", step=1, group = "Trailing Stop Settings")
ma1 = ta.ema(close, len1)
plot(ma1, title='EMA', color=color.new(color.yellow, 0))
if ts_n == true
strategy.exit("Trailing-Stop","Entry",loss= stop_tick, stop= stop_loss_price, limit= take_price, trail_points = stop_trl_price_cond, trail_offset = stop_trl_price_offset_cond, comment_loss="Stop-Loss!!",comment_profit ="CASH!!", comment_trailing = "TRL-Stop!!", alert_message = mess_sell)
else
strategy.exit("TP-SL", "Entry",loss= stop_tick, stop=stop_loss_price, limit= take_price, comment_loss= "Stop-loss!!!", comment_profit = "CASH!!", alert_message = mess_sell)
if close_ema == true and ta.crossunder(close,ma1)
strategy.close("Entry",comment = "Close" , alert_message = mess_sell)