Chiến lược giao dịch theo đà tăng


Ngày tạo: 2023-12-20 16:06:26 sửa đổi lần cuối: 2023-12-20 16:06:26
sao chép: 0 Số nhấp chuột: 651
1
tập trung vào
1621
Người theo dõi

Chiến lược giao dịch theo đà tăng

Tổng quan về chiến lược

Chiến lược giao dịch theo dõi động lực là một chiến lược giao dịch tự động dựa trên xu hướng theo dõi động lực thị trường, kết hợp với nhiều chỉ số kỹ thuật như phán đoán hỗ trợ. Chiến lược này phân tích thông tin K-line, đánh giá hướng và cường độ của vốn chủ lực thị trường hiện tại, sau đó kết hợp với chỉ số giá trị, moving average và các chỉ số kỹ thuật để phát tín hiệu giao dịch, thực hiện theo dõi xu hướng.

Nhìn chung, chiến lược này phù hợp với giao dịch xu hướng đường dài và trung bình, có thể nắm bắt được xu hướng thị trường một cách hiệu quả, giảm tần suất giao dịch, theo đuổi lợi nhuận đơn lẻ cao hơn. Ngoài ra, chiến lược cũng có thể được sử dụng cho giao dịch đường ngắn sau khi các tham số được tối ưu hóa.

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

Phán quyết chủ yếu

Cốt lõi của chiến lược theo dõi động lực là đánh giá xu hướng tài chính chủ lực của thị trường. Chiến lược theo dõi sự biến động của thị trường trong thời gian thực bằng cách tính toán chỉ số ATR. Khi biến động tăng lên, đại diện cho quyền lực chủ lực đang tích lũy hoặc phân bổ, chiến lược sẽ tạm thời rút khỏi thị trường, tránh thời gian hoạt động của quyền lực chủ lực.

Khi biến động giảm nhẹ, đại diện cho sự tích lũy hoặc phân phối của chủ lực, chiến lược sẽ quay trở lại và đánh giá hướng cụ thể của chủ lực. Cách đánh giá là bằng cách tính toán vị trí áp lực hỗ trợ của thị trường để xem liệu có dấu hiệu phá vỡ hay không. Nếu có một sự phá vỡ rõ ràng, hãy xác nhận rằng chủ lực đã chọn hướng đó.

Quyết định phụ trợ

Sau khi xác định hướng lực chính, chiến lược cũng sẽ đưa ra nhiều chỉ số kỹ thuật phụ trợ để xác minh lại để tránh sai lầm. Cụ thể, MACD, KDJ và các chỉ số khác sẽ được tính toán để xem nó có phù hợp với hướng lực chính hay không.

Chiến lược sẽ mở vị trí chỉ khi cả hướng chính và các chỉ số phụ phát ra tín hiệu đồng hướng. Điều này kiểm soát hiệu quả tần suất giao dịch và chỉ tham gia trong trường hợp có xác suất cao.

Hạn kiệt rút lui

Sau khi lập vị trí, chiến lược theo dõi động lực sẽ theo dõi sự thay đổi giá trong thời gian thực và sử dụng giá trị ATR mở rộng như một tín hiệu dừng. Điều này đại diện cho việc thị trường trở lại giai đoạn hoạt động chủ yếu và phải ngay lập tức thoát ra tiền mặt để tránh bị đặt.

Ngoài ra, nếu giá hoạt động vượt quá một phạm vi nhất định, điều chỉnh sẽ dừng lại. Đây là điều chỉnh kỹ thuật bình thường, và kiểm soát rủi ro cần dừng lại ngay lập tức.

Lợi thế chiến lược

Có hệ thống mạnh mẽ

Ưu điểm lớn nhất của chiến lược theo dõi động lực là nó có hệ thống và quy định cao. logic giao dịch của nó rõ ràng, có nguyên tắc và quy tắc rõ ràng cho mỗi lần nhập và thoát, không có giao dịch ngẫu nhiên.

Điều này làm cho chiến lược này có khả năng sao chép rất mạnh, người dùng có thể cấu hình ứng dụng lâu dài sau đó mà không cần sự can thiệp của con người.

Kiểm soát rủi ro

Chiến lược này có cơ chế kiểm soát rủi ro ở nhiều cấp độ, chẳng hạn như phán đoán chủ lực, xác minh trợ giúp, thiết lập đường dừng, để kiểm soát hiệu quả rủi ro phi hệ thống.

Cụ thể, chiến lược chỉ mở vị trí trong trường hợp có xác suất cao và đặt mức dừng lỗ khoa học, tối đa tránh tổn thất mở rộng. Điều này đảm bảo sự tăng trưởng ổn định của quỹ.

Lợi nhuận bền vững hơn

So với chiến lược ngắn hạn, chiến lược theo dõi động lực có chu kỳ nắm giữ lâu hơn và lợi nhuận cao hơn. Điều này làm cho lợi nhuận tổng thể của chiến lược ổn định hơn.

Ngoài ra, các chiến lược theo dõi xu hướng đường dài trung bình có thể nắm bắt được sự biến động của xu hướng, đặc biệt là trong xu hướng lớn.

Cảnh báo rủi ro

Các tham số rất khó để tối ưu hóa

Chiến lược theo dõi động lực liên quan đến nhiều tham số, chẳng hạn như tham số ATR, tham số đột phá, tham số dừng lỗ. Có một mối quan hệ nhất định giữa các tham số này và cần thử nghiệm lặp lại để tìm ra sự kết hợp tham số tối ưu.

Nếu các tham số được cấu hình không đúng cách, rất dễ gây ra các vấn đề về tần suất giao dịch quá cao hoặc kiểm soát rủi ro không đầy đủ. Điều này đòi hỏi người dùng phải có một số kinh nghiệm tối ưu hóa chiến lược.

Thâm nhập dễ bị lừa

Chiến lược đánh giá quyền lực và tín hiệu chỉ số đều phụ thuộc vào sự phá vỡ của giá để xác nhận. Tuy nhiên, trong hoạt động phá vỡ, dễ xảy ra trường hợp phá vỡ giả, điều này có thể dẫn đến khả năng bị đặt cược cao hơn.

Nếu thất bại trong một đột phá quan trọng, nó có thể dẫn đến tổn thất lớn. Đây là điểm yếu của chiến lược.

Tối ưu hóa tư duy

Giới thiệu về học máy

Các thuật toán học máy có thể tự động phát hiện mối quan hệ giữa các tham số, tìm kiếm sự kết hợp tham số tối ưu. Điều này hiệu quả hơn nhiều so với kiểm tra bằng tay.

Cụ thể, bạn có thể sử dụng thuật toán EnvironmentError để tối đa hóa lợi ích của chiến lược dựa trên các tham số lặp đi lặp lại dựa trên học tập tăng cường.

Thêm bộ lọc

Có thể dựa trên các chỉ số hiện có, giới thiệu thêm các bộ lọc phụ trợ, chẳng hạn như chỉ số khối lượng giao dịch, chỉ số dòng tiền, và nhiều hơn nữa, để xác minh tín hiệu đột phá ba lần bốn lần, độ tin cậy cao hơn.

Nhưng quá nhiều bộ lọc cũng có thể gây ra cơ hội bị bỏ lỡ, cần phải cân bằng cường độ lọc. Ngoài ra, bộ lọc cũng phải tránh sự liên quan.

Tích hợp chiến lược

Việc sử dụng chiến lược theo dõi động lực với các chiến lược khác có thể sử dụng lợi thế của các chiến lược khác nhau để thực hiện giao thoa chính và tăng sự ổn định tổng thể.

Ví dụ, kết hợp chiến lược đảo ngược ngắn hạn, mở giao dịch đảo ngược sau khi phá vỡ, có thể khóa nhiều lợi nhuận hơn.

Tóm tắt

Chiến lược giao dịch theo dõi động lực nói chung là một chiến lược theo dõi xu hướng có hệ thống đáng được đề xuất. Nó có logic giao dịch rõ ràng, kiểm soát rủi ro và có thể mang lại lợi nhuận đầu tư ổn định và hiệu quả cho người dùng.

Tuy nhiên, chính các chiến lược này cũng có một số nhược điểm vốn có, đòi hỏi người dùng phải có khả năng tối ưu hóa tham số và kết hợp các chiến lược để có thể tận dụng tối đa các chiến lược. Nhìn chung, chiến lược theo dõi động lực là một sản phẩm định lượng phù hợp cho những người yêu thích chiến lược có một số lượng cơ bản.

Mã nguồn chiến lược
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-15 01:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Created by frasmac2k Strategy credit to Alex Morris

//@version=5
strategy("Mechanical", shorttitle="MECH", overlay=true)

// Get the current date and time
currentYear = year
currentMonth = month
currentDay = dayofmonth

// Create a timestamp for the present date and time
currentTimestamp = timestamp(currentYear, currentMonth, currentDay)

// Define time interval for backtesting
dStart = input(timestamp('2023-07-01'), title='Set Start date', tooltip='Select a start date to run the script from')

// Define direction of strategy
direction = input.string('Forward',title='Direction', tooltip='Forward will go LONG on a Green anchor candle. Inverse will go short on a Green anchor candle and vice versa for Red candle', options=['Forward', 'Inverse'])

// Define the anchor hour as user input with a range of 0 to 23
anchorHour = input.int(11, title="Anchor Hour", tooltip='Set the hour to trade', minval=0, maxval=23)

// Define the take profit and stop loss in pips
takeProfitPips = input.int(10, title='Define TP Pips', tooltip='How many pips do you want to set TP. Choose a sensible value related to the instrument', minval=5)
stopLossPips = input.int(10,'Define SL Pips', tooltip='How many pips do you want to set SL. Choose a sensible value related to the instrument', minval=5)

// Define Tick size
tick10p = input.int(100, title='tick size', tooltip='Choose how many ticks equal 10 pips. This can vary by broker so measure 10 pips on the chart and select how many ticks that equates to. Forex is typically 100. Some instruments such as indices can be 1000', options=[100,1000])

// Declare TP/SL variables
var float takeProfit = na
var float stopLoss = na

// Calculate take profit and stop loss levels in ticks
if tick10p == 100
    takeProfit := takeProfitPips * 10
    stopLoss := stopLossPips * 10
if tick10p == 1000
    takeProfit := takeProfitPips * 100
    stopLoss := stopLossPips * 100

// Declare offset time
var int offset = na

if currentTimestamp > timestamp('2023-10-29')
    offset := 4
else
    offset := 5

//adjust for exchange time
anchorHour := anchorHour - offset

// Define the anchor hour as user input with a range of 0 to 23
tradeHour = anchorHour

// Define logical check for strategy date range
isStratTime = true

// Calculate the time condition for placing the order at the user-defined hour (start of the next hour)
isTradeTime = true

// Logic condition for forwards or inverse
isForward = direction == 'Forward'
isInverse = direction == 'Inverse'

// Declare entry condition variables
var bool longCondition = na
var bool shortCondition = na

// Declare and initialize variables for anchorCandle open and close prices
var float anchorOpen = na
var float anchorClose = na
var float tradeOpen = na
var float tradeClose = na

// Set logic by direction

if isForward
    // Strategy logic
    if isTradeTime and isStratTime
        //Obtain candle open/close
        anchorOpen := open
        anchorClose := close
        // Define entry conditions
        longCondition := anchorClose > anchorOpen
        shortCondition := anchorClose < anchorOpen
        
        // Entry logic
        if longCondition
            strategy.entry("Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
        if shortCondition
            strategy.entry("Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')

if isInverse
    // Strategy logic
    if isTradeTime and isStratTime
        //Obtain candle open/close
        anchorOpen := open
        anchorClose := close
        // Define entry conditions
        shortCondition := anchorClose > anchorOpen
        longCondition := anchorClose < anchorOpen
        
        // Entry logic
        if longCondition
            strategy.entry("Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
        if shortCondition
            strategy.entry("Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')

// Define the time range for the background shade
startHour = anchorHour
startMinute = 0
endHour = anchorHour
endMinute = 0

// Check if the current time is within the specified range
isInTimeRange = (hour == startHour and minute >= startMinute) or (hour == endHour and minute <= endMinute) or (hour > startHour and hour < endHour)

// Define the background color for the shade
backgroundColor = color.new(color.red, 90)

// Apply the background shade
bgcolor(isInTimeRange ? backgroundColor : na)