Chiến lược giao dịch chéo stochastics

Tác giả:ChaoZhang, Ngày: 2023-09-20 17:05:17
Tags:

Tổng quan

Chiến lược này sử dụng chéo stochastic giữa các đường K và D để tạo ra tín hiệu giao dịch, một chiến lược giao dịch stochastic điển hình.

Chiến lược logic

  1. Tính toán các đường K và D trong một khoảng thời gian nhất định.

  2. Đường K vượt qua đường D tạo ra tín hiệu mua.

  3. Đường K vượt qua dưới đường D tạo ra tín hiệu bán.

  4. Có thể thiết lập phạm vi ngày backtest để kiểm tra hiệu quả chiến lược.

  5. Quy tắc giao dịch đơn giản và rõ ràng.

Ưu điểm

  1. Stochastics nhạy cảm với mức mua quá mức và bán quá mức.

  2. Các đường K và D tạo thành các tín hiệu giao dịch dễ dàng.

  3. Backtest xác minh hiệu suất chiến lược.

  4. Stochastics dễ tính toán và thực hiện.

  5. Mã ngắn gọn dễ dàng để phát triển hơn nữa.

Rủi ro

  1. Sự giao thoa có thể tạo ra tín hiệu sai.

  2. Không dừng lỗ hoặc lấy lợi nhuận.

  3. Không phân biệt xu hướng và phạm vi.

  4. Backtest mang tính thiên vị nhìn về phía trước.

  5. Hiệu suất giao dịch thực có thể khác với backtest.

Tăng cường

  1. Các thông số thử nghiệm để tìm ra các giá trị tối ưu.

  2. Thêm bộ lọc xu hướng để xác nhận thêm.

  3. Xây dựng các cơ chế dừng lỗ và lấy lợi nhuận.

  4. Bao gồm các yếu tố khác để xác nhận tín hiệu.

  5. Xử lý dữ liệu backtest để loại bỏ sự thiên vị.

  6. Giao dịch giấy để tối ưu hóa các thông số cho giao dịch trực tiếp.

Kết luận

Chiến lược này giao dịch qua các giao dịch stochastic đơn giản, dễ thực hiện nhưng đòi hỏi sự tinh chỉnh cho sự ổn định.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 2h
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/
// © utanico

//@version=4
strategy(title="Stochastic", overlay=true, shorttitle="Stoch")
periodK = input(35, title="K", minval=1)
periodD = input(21, title="D", minval=1)
smoothK = input(21, title="Smooth", minval=1)
startYear = input(type=input.integer, title = "開始年", defval = 2020)
startMonth = input(type=input.integer, title = "開始月", defval = 1)
startDay = input(type=input.integer, title = "開始日", defval = 1)
endYear = input(type=input.integer, title = "終了年", defval = 2030)
endMonth = input(type=input.integer, title = "終了月", defval = 12)
endDay = input(type=input.integer, title = "終了日", defval = 31)

//開始日時
test_start = timestamp(startYear, startMonth, startDay, 00, 00)
//終了日時
test_end   = timestamp(endYear, endMonth, endDay, 00, 00)
//テスト期間の指定
is_test = true

k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)

if (is_test)
    if (k > d)
        strategy.entry("Stoch_LE", strategy.long, comment="Stoch_LE")
    //if (strategy.opentrades > 0 and k < d)
        //strategy.close("Stoch_LE",comment="CloseLONG")
    if (k < d)
        strategy.entry("Stoch_SE", strategy.short, comment="Stoch_SE")
    //if (strategy.opentrades < 0 and k > d)
        //strategy.close("Stoch_SE",comment="CloseShort")

Thêm nữa