Chiến lược giao dịch lượng tử hiệu quả kết hợp

Tác giả:ChaoZhang, Ngày: 2024-02-01 15:09:06
Tags:

img

Tổng quan

Chiến lược này chủ yếu kết hợp chỉ số RSI 5 ngày và đường trung bình động 200 ngày để tạo ra các tín hiệu quyết định giao dịch, thuộc về chiến lược kết hợp chỉ số kỹ thuật. Nguyên tắc giao dịch chính của nó là: khi giá chạy đến khu vực mua quá mức / bán quá mức, nó báo hiệu bán; khi giá giảm xuống khu vực bán quá mức, nó báo hiệu mua. Ưu điểm lớn nhất của chiến lược này là tín hiệu chiến lược tương đối rõ ràng và rủi ro khôi phục tương đối nhỏ. Nhưng cũng có những hạn chế trong việc hình thành các quyết định giao dịch chỉ dựa trên một sự kết hợp chỉ số kỹ thuật duy nhất, có thể được tối ưu hóa thông qua các mô hình đa yếu tố và thuật toán học máy.

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

Chiến lược này chủ yếu kết hợp chỉ số RSI 5 ngày và đường trung bình động 200 ngày để đánh giá khu vực mua quá mức / bán quá mức nơi giá đang chạy và hình thành các quyết định giao dịch:

  1. Chỉ số RSI 5 ngày đánh giá khu vực mua quá mức / bán quá mức mà giá đang chạy. Đường mua quá mức được đặt ở 72 và khu vực bán quá mức là 30. Khi chỉ số RSI vượt qua 30 từ dưới lên trên, một tín hiệu mua được tạo ra; khi chỉ số RSI giảm từ trên xuống dưới 72, một tín hiệu bán được tạo ra.

  2. Giá trung bình di chuyển 200 ngày xác định hướng của xu hướng trung hạn đến dài hạn. Khi giá dưới mức trung bình di chuyển 200 ngày, đó là giai đoạn giảm giá; khi giá trên mức trung bình di chuyển 200 ngày, đó là giai đoạn tăng giá.

  3. Kết hợp phán đoán 1 và 2, chiến lược này bán khi chỉ số RSI 5 ngày bị mua quá mức và giảm xuống dưới 72, và mua khi chỉ số RSI 5 ngày giảm xuống dưới 30 và giá dưới đường trung bình động 200 ngày.

Ưu điểm của Chiến lược

  1. Tín hiệu chiến lược tương đối rõ ràng, sử dụng chỉ số RSI để xác định tín hiệu mua quá mức / bán quá mức theo khu vực phán đoán.

  2. Trung bình di chuyển 200 ngày xác định hướng của xu hướng chính để tránh các hoạt động ngược lại.

  3. Số lượng tối đa các vị trí có thể được thiết lập để giúp kiểm soát rủi ro.

  4. Chiến lược có không gian rộng cho tối ưu hóa tham số, tham số RSI có thể điều chỉnh và các tham số trung bình động.

  5. Rủi ro khôi phục tương đối nhỏ có thể kiểm soát hiệu quả khôi phục tối đa của chiến lược.

Rủi ro của chiến lược

  1. Chỉ sử dụng chỉ số RSI và chỉ số trung bình động, tín hiệu chiến lược có thể không ổn định, với nguy cơ mất mát kéo dài và ngắn trong các thị trường biến động.

  2. Cần tối ưu hóa và kiểm tra các thông số RSI và các thông số trung bình động để có kết quả chiến lược tốt hơn.

  3. Các chỉ số hoặc mô hình khác có thể được giới thiệu để tối ưu hóa tín hiệu chiến lược. chẳng hạn như giới thiệu các chỉ số biến động, đánh giá học máy, v.v.

Hướng dẫn tối ưu hóa chiến lược

  1. Sử dụng nhiều kết hợp chỉ số để đánh giá. chẳng hạn như MACD, KD, chỉ số biến động, vv

  2. Tăng các đánh giá mô hình học máy như LSTM để đánh giá sự ổn định của tín hiệu giao dịch.

  3. Tăng các yếu tố định lượng như thay đổi khối lượng giao dịch, hướng dòng vốn và các đánh giá khác về các yếu tố vốn.

  4. Tối ưu hóa các thông số chiến lược như các thông số RSI, các thông số trung bình động, v.v.

  5. Tối ưu hóa các cơ chế dừng lỗ. chẳng hạn như dừng lỗ di chuyển, dừng lỗ thời gian, vv

Tóm lại

Chiến lược này chủ yếu sử dụng sự kết hợp của chỉ số RSI 5 ngày và chỉ số trung bình động 200 ngày để đánh giá khu vực mua quá mức / bán quá mức của giá và hình thành tín hiệu giao dịch. Nó thuộc về chiến lược kết hợp chỉ số kỹ thuật.


/*backtest
start: 2024-01-24 00:00:00
end: 2024-01-31 00:00:00
period: 3m
basePeriod: 1m
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/
// ©chewyScripts.

//@version=5
strategy("96er RSI+200EMA Strategy + Alerts", overlay=true)
// This works best on a small account $100, with 50% of equity and up to 10 max open trades. 
// 96% Profitable, turns $100 into $350 in 1 month. very few losses. super happy with it.
// So far it triples the account on a 1m chart in 1 month back testing on the SEI-USD pair.
// I did not test on FX pairs or other instruments.
// had some issues with the inputs not working so had to hard code some, also the lastClose var sometimes breaks and starts following every candle, not sure why.

in_r1 = input.int(5,"5 day input or RSI1")
in_openOrders = input.int(3,"max open orders")

in_lowerRSI = input.int(30,"RSI Lower")
in_upperRSI = input.int(72,"RSI Upper ")

in_emaperiod = input.int(200,"EMA Period")

in_buybreakout = input.int(50,"Buy breakout range")

in_buyTP = input.float(1.05,"Buy TP: 1+TP %, .05 seems to work well.")
in_sellTP = input.float(0.9850, "Sell TP: 1-TP%. .025 seems to work well. ")

simple int rsi5 = in_r1

// 3 rsi strategy , when all of them are overbought we sell, and vice versa
rsi7 = ta.rsi(close,rsi5)
lastClose = request.security(syminfo.tickerid, "D", close, lookahead = barmerge.lookahead_on)
rsi3 = ta.rsi(close[5],rsi5)

ma = ta.ema(close,in_emaperiod)

plot(rsi7,"5 Day RSI",color.red)
plot(lastClose,"Yesterdays Close",color.green)
plot(rsi3,"Previous 5th candles RSI",color.purple)


// sell condition
//sell = ta.crossunder(rsi7,70) and ta.crossunder(rsi14,70) and ta.crossunder(rsi21,70)

//buy condition
//buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and rsi3 <= in_upperRSI and strategy.opentrades < in_openOrders
//sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and rsi3 >= in_lowerRSI3 and strategy.opentrades < in_openOrders

buy = ta.crossover(rsi7,in_lowerRSI) and close < ma and close < lastClose and strategy.opentrades < in_openOrders
sell = ta.crossunder(rsi7,in_upperRSI) and close > ma and close > lastClose and strategy.opentrades < in_openOrders


var lastBuy = close 
var lastSell = close 

if (buy)
    strategy.entry("BUY", strategy.long)
    lastBuy := close 
    alert("Buy")

if ((close >= lastBuy*in_buyTP ) or rsi7 > in_buybreakout and close >= lastClose and (close >= lastClose*in_buyTP or close >= lastBuy*in_buyTP ) )
    strategy.close("BUY", "BUY Exit")
    alert("Buy Exit")
    
if (sell)
    strategy.entry("SELL", strategy.short)
    lastSell := close 
    alert("Sell")

if ( close < ma and (close <= lastSell*in_sellTP ) or (close < lastClose*in_sellTP) )
    strategy.close("SELL", "Sell Exit")
    alert("Sell Exit")


Thêm nữa