
Chiến lược này sử dụng các tín hiệu hình dạng giá của sự phá vỡ kháng cự và cơ chế kiểm soát rủi ro của sự phá vỡ vòng tròn. Nó sẽ tạo thêm vị trí sau khi phá vỡ ngưỡng kháng cự và tạo vị trí trống sau khi phá vỡ ngưỡng hỗ trợ. Đồng thời thiết lập lỗ hổng và lỗ hổng vòng tròn, kiểm soát rủi ro hiệu quả.
Chiến lược này được xây dựng dựa trên những điểm sau:
Sử dụng đường trung bình để xác định xu hướng. Đặt đường trung bình nhanh và chậm trong chiến lược, đi qua đường chậm trên đường nhanh đại diện cho đường dài tăng và đi xuống đại diện cho đường dài giảm.
Đánh giá vượt qua mức kháng cự bằng nhiều tín hiệu. Khi giá tăng vượt qua mức cao gần đây, coi đó là tín hiệu phá vỡ mức kháng cự và tham gia nhiều.
Hỗ trợ phá vỡ tín hiệu giảm giá. Khi giá giảm vượt qua mức thấp gần đây, được coi là tín hiệu phá vỡ hỗ trợ và giảm giá.
Thiết lập vòng dừng. Thiết lập đường dừng sau khi vào và điều chỉnh theo biến động giá để hoạt động xung quanh đường dừng.
Ngăn lỗ và ngưng rút. Ngăn lỗ và ngưng rút có thể kiểm soát rủi ro một cách hiệu quả, ngưng rút có thể khóa lợi nhuận.
Cụ thể, chiến lược này sử dụng trung bình của giá cao thấp như là nguồn giá, tính toán EMA chậm để phán đoán xu hướng. Khi đường nhanh vượt qua đường chậm và có tín hiệu phá vỡ kháng cự, làm nhiều, khi đường nhanh vượt qua đường chậm và có tín hiệu phá vỡ hỗ trợ, làm trống.
Chiến lược này có một số lợi thế:
Lợi nhuận ổn định. Hoạt động theo xu hướng, có thể kiếm lợi nhuận trong xu hướng đường dài ở cấp chỉ số.
Kiểm soát rủi ro tốt. Thiết lập vòng tròn dừng lỗ và dừng lỗ, có thể dừng lỗ và rút ra kịp thời.
Tín hiệu chính xác. Đột phá vị trí kháng cự và phá vỡ vị trí hỗ trợ, tín hiệu chính xác và đáng tin cậy.
Dễ dàng sử dụng. Các chỉ số và quy tắc tín hiệu đơn giản và rõ ràng, thiết lập tham số cũng không phức tạp.
Thị trường thích ứng. Có thể hoạt động trong các giống khác nhau và bất kỳ điều kiện thị trường nào.
Chiến lược này cũng có một số rủi ro cần lưu ý:
Rủi ro phá vỡ thất bại. Sau khi phá vỡ ngưỡng hỗ trợ kháng cự, có thể có sự điều chỉnh lại và thử lại, dẫn đến thiệt hại.
Rủi ro tối ưu hóa tham số. Thiết lập tham số không đúng có thể dẫn đến tín hiệu thường xuyên hoặc không đầy đủ.
Rủi ro thất bại của chỉ số. Trong trường hợp đặc biệt, chỉ số EMA có thể bị thất bại hoặc bị trì hoãn.
Rủi ro đảo ngược xu hướng. Nếu bạn làm nhiều giao dịch ngoại hối hơn, bạn có thể mất nhiều tiền hơn khi thị trường bị lệch.
Những rủi ro này có thể được kiểm soát và giảm thiểu phần lớn thông qua các phương pháp như tối ưu hóa tham số, nới lỏng lỗ hổng thích hợp và tuân theo tín hiệu nghiêm ngặt.
Chiến lược này có thể được tối ưu hóa hơn nữa ở những khía cạnh sau:
Tối ưu hóa chu kỳ thời gian. Điều chỉnh các tham số chu kỳ thời gian để tính toán đường trung bình và hình dạng giá, tìm kiếm sự kết hợp tốt nhất.
Tối ưu hóa sự thích ứng của giống. Điều chỉnh các thiết lập tham số theo đặc điểm của các giống khác nhau.
Tối ưu hóa chiến lược dừng lỗ. Sử dụng các phương pháp dừng lỗ ổn định và chính xác hơn, chẳng hạn như dừng lỗ di chuyển, dừng lỗ dao động.
Tối ưu hóa chiến lược dừng chân. Thiết lập dừng chân di động hoặc dừng chân theo chỉ số để tăng lợi nhuận.
Thêm các điều kiện lọc. Thêm các điều kiện lọc như khối lượng giao dịch, tỷ lệ biến động và loại trừ phá vỡ giả.
Tăng cường tín hiệu vào cửa. Thêm thêm các chỉ số hoặc hình dạng để xác nhận tín hiệu vào cửa.
Chiến lược này hoạt động trơn tru, ý tưởng cốt lõi rõ ràng, có tính ổn định và khả năng kiếm lợi nhuận mạnh mẽ. Kiểm soát rủi ro và sử dụng chỉ số cũng phù hợp, là một chiến lược định lượng đột phá đáng sử dụng. Tiếp theo, thông qua các tham số và mô-đun tối ưu hóa, có thể làm cho chiến lược trở nên hoàn thiện hơn, thích ứng với nhiều giống và môi trường thị trường phức tạp.
/*backtest
start: 2023-12-03 00:00:00
end: 2023-12-10 00:00:00
period: 30m
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/
// © EduardoMattje
//@version=4
strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000)
src = input(hl2, "Price source")
order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"])
// EMA calculation and plot
ema_long_period = input(80, "EMA long period")
ema_short_period = input(8, "EMA short period")
ema_long = ema(src, ema_long_period)
ema_short = ema(src, ema_short_period)
ema_bull = ema_short > ema_long
ema_bear = ema_short < ema_long
plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3)
plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3)
// Settings
risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1)
stop_lookback = input(3, "Stoploss candle lookback", minval=1)
ema_cross_stop = input(true, "Close if EMA crosses in oposite direction")
allow_retracing = input(true, "Allow price retracing")
// RCP calculation
rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1]
rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1]
// Order placement
in_market = strategy.position_size != 0
long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short"
short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long"
bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0
sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0
closed = not in_market and in_market[1]
long_position = strategy.position_size > 0
short_position = strategy.position_size < 0
buy_price = high + syminfo.mintick
sell_price = low - syminfo.mintick
if long_condition
strategy.entry("Long", true, stop=buy_price)
if short_condition
strategy.entry("Short", false, stop=sell_price)
if allow_retracing
better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1]
if better_price_long
strategy.cancel("Long")
strategy.entry("Long", true, stop=buy_price)
better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1]
if better_price_short
strategy.cancel("Short")
strategy.entry("Short", false, stop=sell_price)
// Stoploss orders
stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na
stop_comment = "Stoploss triggered"
strategy.close("Long", low <= stop_price, stop_comment)
strategy.close("Short", high >= stop_price, stop_comment)
plot(stop_price, "Stop price", color.red, 2, plot.style_linebr)
// EMA cross close orders
if ema_cross_stop
if long_position and ema_bear
strategy.close("Long", comment=stop_comment)
if short_position and ema_bull
strategy.close("Short", comment=stop_comment)
// Take profit orders
stop_ticks = abs(strategy.position_avg_price - stop_price)
take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price - (stop_ticks * risk_reward_ratio), 0) : na
target_comment = "Take profit"
strategy.close("Long", high >= take_profit_price, target_comment)
strategy.close("Short", low <= take_profit_price, target_comment)
plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)