Nhiều chỉ số hỗ trợ chiến lược


Ngày tạo: 2023-09-24 13:17:50 sửa đổi lần cuối: 2023-09-24 13:17:50
sao chép: 2 Số nhấp chuột: 394
1
tập trung vào
1141
Người theo dõi

Tổng quan

Chiến lược này sử dụng nhiều chỉ số kỹ thuật như EMA, RSI, MACD, Energy Tide, và Bollinger Bands để đánh giá các biến động giá từ nhiều góc độ và tìm ra điểm nhập cảnh tốt nhất. Đồng thời cung cấp một loạt các tùy chọn tham số để người dùng điều chỉnh và thực hiện chiến lược cá nhân.

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

  1. Sử dụng 3 EMA ((5 chu kỳ, 9 chu kỳ, 21 chu kỳ) để xác định xu hướng giá; EMA đường trung bình cho thấy xu hướng thay đổi.

  2. Chỉ số RSI đánh giá quá mua quá bán, RSI thấp hơn điểm thấp là tín hiệu quá bán, cao hơn điểm cao là tín hiệu quá mua.

  3. Chỉ số MACD nhìn vào chênh lệch đường trung bình, DIFF phá vỡ DEA lên là tín hiệu lạc quan, phá vỡ xuống là tín hiệu giảm giá.

  4. Chỉ số SAR cho thấy xu hướng hiện tại, có thể hỗ trợ phán đoán.

  5. Brin trên và dưới đường ray cho thấy vị trí hỗ trợ và áp lực, và đường đi trong đó giá phá vỡ cho thấy sự thay đổi xu hướng.

  6. Tùy thuộc vào sự lựa chọn của người dùng, khi chỉ số phát ra tín hiệu đồng chiều, hãy thực hiện giao dịch mua và bán tương ứng.

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

  1. Nhiều chỉ số có thể được kết hợp để tránh sai lệch của chỉ số đơn lẻ.

  2. Cung cấp điều chỉnh tham số kết hợp, người dùng có thể chọn kết hợp chỉ số tốt nhất theo nhu cầu.

  3. Các chỉ số EMA, MACD và các chỉ số khác có thể xác định chính xác các thay đổi xu hướng.

  4. Chỉ số RSI có thể xác định hiệu quả các cơ hội quá mua quá bán.

  5. SAR và Brin có thể đưa ra các điểm thay đổi xu hướng kịp thời.

Rủi ro chiến lược

  1. Các nhà phân tích cho rằng, việc đánh giá các chỉ số này có thể làm giảm thời gian và làm mất cơ hội tốt hơn.

  2. Không có cách nào để lọc khi chỉ số duy nhất phát ra tín hiệu sai.

  3. Người dùng có thể chọn các tham số không phù hợp, dẫn đến giao dịch thường xuyên hoặc ít hơn.

  4. Không có các biện pháp quản lý rủi ro như STOP LOSS.

  5. Không có đủ dữ liệu phản hồi để chứng minh hiệu quả của chiến lược.

Giải pháp tương ứng:

  1. Điều chỉnh tham số, mở rộng chỉ số THRESHHOLD, cung cấp nhiều thời gian giao dịch hơn.

  2. Thêm các chỉ số khác để kiểm tra kết hợp, tránh tín hiệu sai.

  3. Cung cấp nhiều lựa chọn chỉ số hơn, giúp người dùng thử nghiệm sự kết hợp tốt nhất.

  4. Tham gia các biện pháp hạn chế rủi ro như chiến lược dừng lỗ.

  5. Các nhà nghiên cứu cho rằng, các yếu tố này có thể giúp cho việc phân tích lịch sử ở nhiều thị trường khác nhau.

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

  1. Kiểm tra thêm các kết hợp của các chỉ số để tìm ra các chỉ số phù hợp nhất.

  2. Thêm mô-đun học máy, sử dụng nhiều dữ liệu hơn để nâng cao chiến lược.

  3. Thêm bộ lọc xu hướng để quyết định xem bạn có nên giao dịch theo xu hướng hay không.

  4. Tối ưu hóa chiến lược quản lý vốn để thích ứng với môi trường thị trường rộng lớn hơn.

  5. Phát triển chương trình tối ưu hóa tham số tự động, thực hiện chiến lược thông minh.

Tóm tắt

Chiến lược này có thể được tối ưu hóa hơn nữa bằng cách điều chỉnh các tham số chỉ số, thêm mô-đun xác minh, giới thiệu AI, v.v. Để có được nhiều cơ hội giao dịch phù hợp với tư tưởng chiến lược, với điều kiện duy trì sự ổn định của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2022-09-17 00:00:00
end: 2023-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("f.society", title="f.society", overlay=true)
//@Author: rick#1414
// -----------------------------------------------------
// f.society : Pone 3EMA: 5, 9, 21, 50, 100, 200, SAR, 
// velas azules en sobreventa y velas moradas sobre compra 
// SAR 0.02, 0.02, 0.2 , Bandas de Bollinger
// estrategia de compra y venta con rsi, macd o psr
// color de fondo: ema, rsi (color azul sobreventa 35, 25 (mas intenso))
// -----------------------------------------------------
// Como agregar a Trading view:
// 1 Cerrar todos los otros indicadores antes de añadirlo
// 2. Ir a la página de inicio TradingView.com
// 3. En la parte inferior, haga clic en Editor Pine // ver imagen: // https://cdn.discordapp.com/attachments/407267549047422976/407393815112974336/unknown.png
// 4. borrar todo el texo y reemplazar con todo el contenido de este archivo
// 5. Pulse el botón "Añadir a trazar" (Add to graph)
// -----------------------------------------------------
// revisar opciones de on y off segun indicadores deseados
// https://cdn.discordapp.com/attachments/405885820114042883/412115277883506700/unknown.png
// se puede cambiar la estrategia desde este menu desplegable para señales buy/sell

// Options
estrategia = input(defval="rsi", title = "Strategy", options=["ema","rsi","macd","psr","off","BB","ema5"])
in_bkcolor = input(defval="rsi", title = "background color", options=["ema","rsi","macd","psr","off","exchange","BB","ema5"])
e5 = input(title="Show ema5?", type=bool, defval=false)
e9 = input(title="Show ema9?", type=bool, defval=true)
e21 = input(title="Show ema21?", type=bool, defval=true)
e50 = input(title="Show ema50?", type=bool, defval=false)
e100 = input(title="Show ema100?", type=bool, defval=false)
e200 = input(title="Show ema200", type=bool, defval=true)
in_rsi = input(title="Color oversold and overbought bars?", type=bool, defval=true)
in_sar = input(title="Show Parabolic Sar", type=bool, defval=true)
in_bb = input(title="Show Bollinger Bands?", type=bool, defval=true)
sd = input(false, title="Show Daily Pivots?")
linew = input(1, title="linewidth", minval=0)
sarw = input(1, title="sar points width", minval=0)
ovs = input(40, title="oversold rsi", minval=0)
ovb = input(65, title="overbought rsi", minval=0)



//pf = input(false,title="Show Filtered Pivots")
pf=false

// 3 ema
src = close // input(close, title="Source")
//len9 = input(9, minval=1, title="ema9 Length")
//len21 = input(21, minval=1, title="ema21 Length")
//len200 = input(200, minval=1, title="ema200 Length")
len5=5
len9=9
len21=21
len50=50
len100=100
len200=200
ema5 = ema(src, len5)
ema9 = ema(src, len9)
ema21 = ema(src, len21)
ema50= ema(src, len50)
ema100 = ema(src, len100)
ema200 = ema(src, len200)
plot(e5? ema5 : na, title="EMA5", linewidth=linew, color=purple)
plot(e9? ema9 : na, title="EMA9", linewidth=linew, color=blue)
plot(e21? ema21 : na, title="EMA21", linewidth=linew, color=red)
plot(e50? ema50 : na, title="EMA50", linewidth=linew, color=green)
plot(e100? ema100 : na, title="EMA100", linewidth=linew, color=lime)
plot(e200? ema200 : na, title="EMA200", linewidth=linew, color=yellow)

// RSI Color
//lenR = input(14, minval=1, title="RSI Length")
lenR=14
//up = rma(max(change(src), 0), lenR)
//down = rma(-min(change(src), 0), lenR)
//vrsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
vrsi=rsi(close,lenR)
//plot(vrsi,title="vrsi")
oversold = vrsi < ovs
overbought = vrsi > ovb
barcolor(in_rsi? oversold? #0000FF : overbought? #ff00ff:na : na)

// SAR
plot(in_sar? sar(0.02, 0.02, 0.2): na, style=cross, linewidth=sarw, color=blue, title="sar")

// BB
//length = input(20, title="Bollinger length", minval=1)
length=20
//mult = input(2.0, title="Bollinger stdDev", minval=0.001, maxval=50)
mult=2.0
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
plot(in_bb? basis :na, color=red, linewidth=linew, title="BB basis")
p1 = plot(in_bb? upper :na, color=blue, linewidth=linew, title="BB upper")
p2 = plot(in_bb? lower :na, color=blue, linewidth=linew, title="BB lower")
fill(p1, p2)

//background
bgcolor(in_bkcolor=="exchange"? #0000FF40 : in_bkcolor=="rsi"? vrsi < (ovs-15) ? #0000FF50  : vrsi < ovs ? #0000FF30 :( vrsi < ovb ? #ff00ff10 : #ff00ff20): in_bkcolor=="ema"?(ema9>ema21?#ff00ff10  : #0000FF20):in_bkcolor=="BB"?(lower>close?#ff00ff10 : close>upper?#0000FF20:#ff00ff10): in_bkcolor=="ema5"?(ema5>ema21?#ff00ff10  : #0000FF20):na)


// Strategy
if estrategia == "ema"
    strategy.entry("buy", true, 1, when= crossover(ema9,ema21) ),
    strategy.entry("sell", false, 1, when = crossover(ema21,ema9)) 
else
    if estrategia =="rsi"
        strategy.entry("buy", true, 1, when= vrsi <ovs),
        strategy.entry("sell", false, 1, when = vrsi > ovb or crossover(close,upper)) 
    else 
        if estrategia =="macd"    
            [macdLine, signalLine, histLine] = macd(close, 12, 26, 9),
            //bgcolor(macdLine > signalLine ? #98c8ff : #ff8b94),
            strategy.entry("buy", true, 1, when= macdLine>=signalLine ),
            strategy.entry("sell", false, 1, when = macdLine<signalLine) 
        else 
            if estrategia=="psr"
                leftBars = 4 //input(4)
                rightBars = 2 //input(2)
                swh = pivothigh(leftBars, rightBars)
                swl = pivotlow(leftBars, rightBars)
                swh_cond = not na(swh)
                hprice = 0.0
                hprice := swh_cond ? swh : hprice[1]
                le = false
                le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])
                if (le)
                    strategy.entry("buy", strategy.long, comment="buy", stop=hprice + syminfo.mintick)
                swl_cond = not na(swl)
                lprice = 0.0
                lprice := swl_cond ? swl : lprice[1]
                se = false
                se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])
                if (se)
                    strategy.entry("sell", strategy.short, comment="sell", stop=lprice - syminfo.mintick)
            else
                if estrategia=="BB"
                    strategy.entry("buy", true, 1, when= crossover(lower,close) ),
                    strategy.entry("sell", false, 1, when = crossover(close,upper)) 
                else
                    if estrategia=="ema5"
                        strategy.entry("buy", true, 1, when= crossover(ema5,ema21) ),
                        strategy.entry("sell", false, 1, when = crossover(ema21,ema5)) 



// pivots

// Classic Pivot
pivot = (high + low + close ) / 3.0
// Filter Cr
bull= pivot > (pivot + pivot[1]) / 2 + .0025
bear= pivot < (pivot + pivot[1]) / 2 - .0025
// Classic Pivots
r1 = pf and bear ? pivot + (pivot - low) : pf and bull ? pivot + (high - low) : pivot + (pivot - low)
s1 = pf and bull ? pivot - (high - pivot) : pf and bear ? pivot - (high - low) : pivot - (high - pivot)
r2 = pf ? na : pivot + (high - low)
s2 = pf ? na : pivot - (high - low)
//Pivot Average Calculation
smaP = sma(pivot, 3)
//Daily Pivots 
dtime_pivot = security(syminfo.tickerid, 'D', pivot[1])
dtime_pivotAvg = security(syminfo.tickerid, 'D', smaP[1])
dtime_r1 = security(syminfo.tickerid, 'D', r1[1]) 
dtime_s1 = security(syminfo.tickerid, 'D', s1[1]) 
dtime_r2 = security(syminfo.tickerid, 'D', r2[1]) 
dtime_s2 = security(syminfo.tickerid, 'D', s2[1])
offs_daily = 0
plot(sd and dtime_pivot ? dtime_pivot : na, title="Daily Pivot",style=line, color=fuchsia,linewidth=linew) 
plot(sd and dtime_r1 ? dtime_r1 : na, title="Daily R1",style=line, color=#DC143C,linewidth=linew) 
plot(sd and dtime_s1 ? dtime_s1 : na, title="Daily S1",style=line, color=lime,linewidth=linew) 
plot(sd and dtime_r2 ? dtime_r2 : na, title="Daily R2",style=line, color=maroon,linewidth=linew) 
plot(sd and dtime_s2 ? dtime_s2 : na, title="Daily S2",style=line, color=#228B22,linewidth=linew) 


// References:
// get number of bars since last green bar
//plot(barssince(close >= open), linewidth=3, color=blue)
//bgcolor(close < open ? #ff8b94   : #98c8ff , transp=10)
//http://www.color-hex.com/
//   #98c8ff    light blue
//    #ff8b94   red   #b21c0e
//       #7d1d90    purple
//    #0029ff blue
//    #fffa86   yellow