Theo dõi các chiến lược thị trường giá xuống


Ngày tạo: 2024-02-26 14:12:09 sửa đổi lần cuối: 2024-02-26 14:12:09
sao chép: 1 Số nhấp chuột: 955
1
tập trung vào
1617
Người theo dõi

Theo dõi các chiến lược thị trường giá xuống

Tổng quan

Chiến lược theo dõi thị trường gấu là một chiến lược giao dịch ngoại hối được thiết kế để nắm bắt mô hình hành vi điển hình của EUR / USD khi thị trường châu Âu mở cửa. Chiến lược này sử dụng các đặc điểm của đồng euro bị mắc kẹt trong thị trường châu Âu, do đó bị buộc phải phá vỡ, để thiết lập vị trí làm trắng. Cụ thể, chiến lược này sẽ xem xét các tín hiệu lọc chỉ số như RSI sau khi phát hiện đường K 1 giờ của EUR / USD có hình dạng quay lưng quay lưng (ngôi sao hoặc con thỏ bắn), và một khi xác nhận được điều kiện, nó sẽ làm trắng một cách dứt khoát, đặt vị trí dừng lỗ ở trên điểm cao của quay lưng, và mục tiêu lợi nhuận được thiết lập dựa trên tỷ lệ lợi nhuận rủi ro chấp nhận được.

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

Logic giao dịch cốt lõi của việc theo dõi chiến lược thị trường gấu dựa trên giả định sau: Trong thời gian mở cửa thị trường châu Âu / Luân Đôn, các nhà giao dịch và thuật toán làm nhiều đồng euro sẽ đẩy giá EUR / USD lên. Nhưng nếu sau đó giá không thể tiếp tục tăng hoặc có dấu hiệu giảm, những người làm nhiều sẽ bị mắc kẹt.

Chiến lược này chính là sử dụng lý thuyết thị trường gấu này để nắm bắt sự sụt giảm ngắn hạn. Cụ thể, nó sẽ tìm kiếm tín hiệu nén hình dạng đảo ngược trên đường K 1 giờ trong múi giờ châu Âu (ví dụ: 2am-7am).

Để xác minh thêm tín hiệu, chiến lược này sẽ kiểm tra các điều kiện lọc sau:

  1. Chỉ số RSI cao hơn đường mua tháo (bằng mặc định là 70);
  2. Giá đóng cửa của đường K trước cao hơn giá mở cửa ((tín hiệu kết thúc đa đầu);
  3. Khi điểm cao của đường K đạt mức cao mới trong thời gian gần đây;

Sau khi đáp ứng tất cả các điều kiện lọc, chiến lược sẽ làm trống khi quay vòng và đóng cửa, đặt lệnh dừng trên điểm cao nhất và định vị lợi nhuận mục tiêu dựa trên tỷ lệ lợi nhuận rủi ro chấp nhận được (tỷ lệ lợi nhuận rủi ro mặc định là 1 x 1).

Cần lưu ý rằng chiến lược này chỉ hoạt động trong múi giờ châu Âu, và nếu giá rời khỏi múi giờ châu Âu, nó sẽ đặt lại trạng thái và chờ thời gian giao dịch múi giờ tiếp theo.

Phân tích lợi thế

Đây là một chiến lược ngắn hạn đơn giản nhưng thực tế. Những lợi thế chính là:

  1. Các nhà khoa học đã nghiên cứu về các nguyên nhân gây ra các trường hợp này.
  2. Các chiến lược được xây dựng dựa trên các yếu tố như: logic đơn giản, dễ hiểu và khả năng phản hồi;
  3. Các nhà đầu tư đã có những kế hoạch khác cho thị trường.
  4. Các chiến lược giảm thiệt hại được xác định rõ ràng và các rủi ro được kiểm soát tốt.
  5. Có thể kết nối trực tiếp với giao dịch tự động MT4 / 5;

Nhìn chung, theo dõi thị trường gấu là một chiến lược short-line arbitrage ban đêm, một lựa chọn tốt cho cả tính ổn định và tính thực tế của nó.

Phân tích rủi ro

Mặc dù chiến lược này có một số ưu điểm, nhưng giao dịch bất kỳ sản phẩm tài chính nào cũng có rủi ro, bao gồm các rủi ro chính như:

  1. Thị trường giao dịch ban đêm có tính thanh khoản kém, không thể dừng lỗ kịp thời;
  2. Các chiến lược này quá đơn giản và dễ bị thuật toán phá vỡ.
  3. Các quy tắc hành vi của đồng euro bị mắc kẹt nhiều đầu có thể không hiệu quả trong một số môi trường thị trường;
  4. Các nhà nghiên cứu cho rằng các chiến lược này có tác động rất lớn đối với các quốc gia và khu vực.
  5. Dữ liệu từ các cuộc khảo sát có thể khác biệt rất nhiều so với dữ liệu từ đĩa cứng.

Các biện pháp để đối phó với những rủi ro trên là:

  1. Điều chỉnh mức dừng lỗ để ngăn chặn dừng lỗ không hiệu lực;
  2. Kết hợp nhiều chỉ số hơn và các điều kiện lọc để làm cho chiến lược trở nên mạnh mẽ hơn;
  3. Tối ưu hóa các tham số chiến lược để phù hợp với môi trường thị trường rộng lớn hơn;
  4. Sử dụng chu kỳ phản hồi dài hơn;
  5. Nhiều lần kiểm tra thực tế để đảm bảo kết quả đo đạc là đáng tin cậy.

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

Với sự đơn giản của chiến lược này và những rủi ro tiềm ẩn, đây là những hướng tối ưu hóa có thể được xem xét trong tương lai:

  1. Xác thực nhiều khung thời gian- Có thể xác minh lại tín hiệu đảo ngược trong khung thời gian 5 phút hoặc 15 phút, tăng tính ổn định;
  2. Bộ lọc học máy- Sử dụng các thuật toán học máy để xác định nhiều mô hình hơn và lọc các tín hiệu giả;
  3. Động lực dừng- Chuyển đổi điểm dừng theo thời gian thực, theo mức độ biến động của thị trường, để ngăn chặn lỗ hổng không hiệu quả;
  4. Tối ưu hóa quản lý tài chính ổn định- Tối ưu hóa chiến lược quản lý tài chính, làm cho lợi nhuận ổn định hơn bằng cách điều chỉnh vị trí.

Tóm tắt

Chiến lược theo dõi thị trường gấu là một chiến lược giảm giá ngắn hạn đơn giản, có thể kiểm soát rủi ro giao dịch. Nó đạt được lợi nhuận ổn định bằng cách nắm bắt các điều chỉnh ngắn hạn do hiện tượng mạo hiểm đa đầu của đồng euro. Chiến lược này dễ hiểu và tối ưu hóa, là lựa chọn lý tưởng cho giao dịch mạo hiểm ban đêm. Tất nhiên, giao dịch bất kỳ sản phẩm tài chính nào cũng có rủi ro, cần điều chỉnh tham số và tối ưu hóa thích hợp để thích ứng với môi trường thị trường thay đổi.

Mã nguồn chiến lược
/*backtest
start: 2024-02-18 00:00:00
end: 2024-02-25 00:00:00
period: 3h
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/
// © ZenAndTheArtOfTrading / PineScriptMastery
// FTB Strategy (PineConnector Version)
// Last Updated: 21st July, 2021
// @version=4
strategy("[2021] FTB Strategy", shorttitle="FTB", overlay=true)

// Risk Settings
var g_risk      = "Risk Settings"
pips            = input(title="Stop Pips", type=input.float, defval=2.0, group=g_risk, tooltip="How many pips above high to put stop loss")
rr              = input(title="Risk:Reward", type=input.float, defval=1.0, group=g_risk, tooltip="This determines the risk:reward profile of the setup")
// Filters
var g_filter    = "Filter Settings"
timezone        = input(title="Timezone", type=input.session, defval="0200-0700", group=g_filter, tooltip="Which timezone to search for FTB signals in")
days            = input(title="Days To Trade", defval="13457", group=g_filter, tooltip="Which days to trade this strategy on (Monday & Friday disabled by default)")
useRsiFilter    = input(title="RSI OB/OS?", type=input.bool, defval=true, group=g_filter, tooltip="If true then the RSI must be considered overbought before a signal is valid")
useCloseFilter  = input(title="Previous Bar Must Be Bullish?", type=input.bool, defval=false, group=g_filter, tooltip="If true then the previous bar must have closed bullish")
useHighFilter   = input(title="High Filter", type=input.bool, defval=false, group=g_filter, tooltip="If true then the signal bar must be the highest bar over X bars")
highLookback    = input(title="High Lookback", type=input.integer, defval=10, group=g_filter, tooltip="This is for setting the High Filter lookback distance")
fib             = input(title="Candle Close %", defval=0.5, group=g_filter, tooltip="For identifying shooting star candles (0.5 = must close <= 50% mark of candle size)")
rsiLen          = input(title="RSI Length", type=input.integer, defval=3, group=g_filter, tooltip="RSI length")
rsiOB           = input(title="RSI OB", type=input.float, defval=70.0, group=g_filter, tooltip="RSI overbought threshold")
// PineConnector Settings
var g_pc        = "PineConnector Settings"
pc_id           = input(title="License ID", defval="YOUR_ID", type=input.string, group=g_pc, tooltip="This is your PineConnector license ID")
pc_risk         = input(title="Risk Per Trade", defval=1, step=0.5, type=input.float, group=g_pc, tooltip="This is how much to risk per trade (% of balance or lots)")
pc_prefix       = input(title="MetaTrader Prefix", defval="", type=input.string, group=g_pc, tooltip="This is your broker's MetaTrader symbol prefix")
pc_suffix       = input(title="MetaTrader Suffix", defval="", type=input.string, group=g_pc, tooltip="This is your broker's MetaTrader symbol suffix")
pc_spread       = input(title="Spread", defval=0.5, type=input.float, group=g_pc, tooltip="Enter your average spread for this pair (used for offsetting limit order)")
pc_limit        = input(title="Use Limit Order?", defval=true, type=input.bool, group=g_pc, tooltip="If true a limit order will be used, if false a market order will be used")

// Generate PineConnector alert string
var symbol = pc_prefix + syminfo.ticker + pc_suffix
var limit = pc_limit ? "limit" : ""
pc_entry_alert(direction, sl, tp) =>
    price = pc_limit ? "price=" + tostring(pc_spread) + "," : ""
    pc_id + "," + direction + limit + "," + symbol + "," + price + "sl=" + tostring(sl) + ",tp=" + tostring(tp) + ",risk=" + tostring(pc_risk)

// Get RSI filter
rsiValue = rsi(close, rsiLen)
rsiFilter = not useRsiFilter or rsiValue >= rsiOB

// Check high & close filter
highFilter = not useHighFilter or high == highest(high, highLookback)
closeFilter = not useCloseFilter or close[1] > open[1]

// InSession() determines if a price bar falls inside the specified session
inSession(sess) => na(time(timeframe.period, sess + ":" + days)) == false

// Calculate 50% mark of candle size
bearFib = (high - low) * fib + low

// Check filters
filters = inSession(timezone) and closeFilter and high > high[1] and rsiFilter and highFilter and open != close

// Detect valid shooting star pinbar pattern
var takenTradeAlready = false
star = true

// Calculate stops & targets
shortStopPrice = high + (syminfo.mintick * pips * 10)
shortStopDistance = shortStopPrice - close
shortTargetPrice = close - (shortStopDistance * rr)

// Save stops & targets for the current trade
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0

// If we detect a valid shooting star, save our stops & targets, enter short and generate alert
if star and barstate.isconfirmed
    tradeStopPrice := shortStopPrice
    tradeTargetPrice := shortTargetPrice
    takenTradeAlready := true
    alertString = pc_entry_alert("sell", tradeStopPrice, tradeTargetPrice)
    alert(alertString, alert.freq_once_per_bar_close)
    strategy.entry(id="Short", long=strategy.short, when=strategy.position_size == 0, comment=alertString)

// If we have exited the FTB session then reset our takenTradeAlready flag for the next session
if not inSession(timezone) and inSession(timezone)[1]
    takenTradeAlready := false
    
// If price has exceeded target then cancel limit order if it's still active
if pc_limit and low <= tradeTargetPrice and strategy.position_size == 0
    alert(pc_id + ",cancelshort," + symbol)
    tradeTargetPrice := na

// Draw stops & targets
plot(star ? tradeStopPrice : na, color=color.red, style=plot.style_linebr, title="SL")
plot(star ? shortTargetPrice : na, color=color.green, style=plot.style_linebr, title="TP")
// Draw short signals
plotshape(star ? 1 : na, style=shape.triangledown, color=color.red)
// Change background color to highlight detection zone
bgcolor(color=inSession(timezone) ? color.new(color.red,80) : na, title="Session")

// Exit trade whenever our stop or target is hit
strategy.exit(id="Short Exit", from_entry="Short", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size != 0)