Chiến lược phá vỡ giá đóng đảo ngược với dừng lỗ dao động

Tác giả:ChaoZhang, Ngày: 2023-12-11 11:44:49
Tags:

img

Tổng quan

Chiến lược này sử dụng các tín hiệu đột phá giá và cơ chế dừng lỗ dao động để quản lý rủi ro. Nó đi dài khi giá phá vỡ ngưỡng kháng cự và đi ngắn khi giá phá vỡ ngưỡng hỗ trợ. Đồng thời, dừng lỗ dao động và dừng lấy lợi nhuận được áp dụng để kiểm soát rủi ro tốt hơn.

Chiến lược logic

Chiến lược dựa trên các điểm chính sau:

  1. Sử dụng MA để xác định hướng xu hướng. MA nhanh và chậm được vẽ, MA nhanh vượt trên MA chậm báo hiệu xu hướng tăng, trong khi vượt dưới các tín hiệu xu hướng giảm.

  2. Khi giá tăng và phá vỡ mức cao gần đây, nó được coi là phá vỡ mức kháng cự, đi dài.

  3. Khi giá giảm và phá vỡ mức thấp gần đây, nó được coi là phá vỡ mức hỗ trợ, đi ngắn.

  4. Dừng lỗ dao động. Sau khi vào, đường dừng lỗ được đặt và tiếp tục điều chỉnh dựa trên biến động giá, tạo thành một cơ chế dừng lỗ dao động.

  5. Dừng lỗ và lấy lợi nhuận thoát. dừng lỗ kiểm soát rủi ro, lấy lợi nhuận khóa trong lợi nhuận.

Đặc biệt, nó sử dụng mức trung bình của giá cao và thấp như là nguồn, vẽ EMA nhanh và chậm để xác định xu hướng. Khi EMA nhanh vượt quá EMA chậm và tín hiệu phá vỡ kháng cự xuất hiện, nó sẽ dài. Khi EMA nhanh giảm xuống dưới EMA chậm và hỗ trợ phá vỡ xuất hiện, nó sẽ ngắn. Sau khi vào, giá thấp nhất trong một số giai đoạn nhất định được đặt là đường dừng lỗ, tiếp tục điều chỉnh khi giá tăng. Đường lợi nhuận được vẽ để khóa lợi nhuận. Chiến lược kiểm soát hiệu quả rủi ro trong khi lợi nhuận từ xu hướng.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Lợi nhuận ổn định. Theo xu hướng có thể tạo ra lợi nhuận ổn định từ xu hướng dài hạn.

  2. Kiểm soát rủi ro tuyệt vời, dừng dao động và dừng bảo vệ nhanh chóng cắt giảm lỗ.

  3. Các tín hiệu chính xác, sự kháng cự dài và hỗ trợ ngắn cung cấp các tín hiệu đáng tin cậy.

  4. Quy tắc đơn giản, chỉ báo và tín hiệu rất đơn giản, dễ làm theo.

  5. Chuyển đổi thị trường, hoạt động tốt trên các sản phẩm và điều kiện thị trường khác nhau.

Phân tích rủi ro

Một số rủi ro cần lưu ý cho chiến lược này:

  1. Nguy cơ thất bại đột phá. Giá có thể có sự đảo ngược hoặc rút lui sau khi đột phá ban đầu, kích hoạt dừng lỗ.

  2. Rủi ro tối ưu hóa tham số. Điều chỉnh tham số xấu dẫn đến quá nhiều hoặc quá ít tín hiệu.

  3. Rủi ro thất bại chỉ số: Trong điều kiện cực đoan, EMA có thể ngừng hoạt động hoặc tụt lại sau giá.

  4. Rủi ro đảo ngược xu hướng: giữ vị trí chống lại xu hướng mang lại tổn thất tích lũy khi xu hướng đảo ngược.

Điều chỉnh tham số đúng cách, mất mát dừng rộng, tuân thủ nghiêm ngặt các quy tắc có thể giảm thiểu phần lớn các rủi ro trên.

Hướng dẫn tối ưu hóa

Chiến lược có thể được cải thiện hơn nữa từ các khía cạnh sau:

  1. Tối ưu hóa khung thời gian, điều chỉnh thời gian tính toán của MAs và mô hình giá, tìm kết hợp tốt nhất.

  2. Tối ưu hóa khả năng thích nghi, điều chỉnh các thông số cho các sản phẩm khác nhau.

  3. Chứng minh các phương pháp dừng lỗ tiên tiến hơn như dừng lại, dừng Chandelier.

  4. Lấy tối ưu hóa lợi nhuận, áp dụng lợi nhuận thích nghi hoặc theo cấp số nhân để có được phần thưởng tốt hơn.

  5. Thêm bộ lọc, thêm bộ lọc âm lượng và biến động để tránh sự đột phá sai.

  6. Tăng cường tín hiệu nhập cảnh kết hợp nhiều chỉ số hoặc mô hình để xác nhận các mục nhập.

Kết luận

Đây là một chiến lược đột phá hiệu quả với kiểm soát rủi ro tốt, mô hình lợi nhuận ổn định và luồng logic đơn giản.


/*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)


Thêm nữa