Chiến lược cơ bản của Super Trend


Ngày tạo: 2023-10-11 15:14:54 sửa đổi lần cuối: 2023-10-11 15:14:54
sao chép: 0 Số nhấp chuột: 907
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược cơ bản siêu xu hướng là một chiến lược giao dịch thuật toán đáng tin cậy và có lợi nhuận dựa trên ba chỉ số mạnh mẽ: chỉ số siêu xu hướng (ATR), chỉ số tương đối mạnh (RSI) và chỉ số di chuyển trung bình (EMA). Chiến lược này nhằm xác định hướng và cường độ của xu hướng thị trường, vào thị trường tại điểm nhập cảnh tối ưu và thoát khỏi thị trường khi đạt đến điểm dừng lỗ hoặc điểm dừng.

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

Chiến lược này sử dụng chỉ số siêu xu hướng để xác định liệu giá có đang trong xu hướng tăng hay giảm. Chỉ số siêu xu hướng dựa trên chiều dài sóng thực trung bình và một yếu tố, xu hướng tăng khi giá cao hơn siêu xu hướng và xu hướng giảm khi giá thấp hơn siêu xu hướng.

Chỉ số tương đối mạnh được sử dụng để phát hiện tình trạng quá nóng và quá mua hoặc quá bán. Khi RSI cao hơn 50, thị trường là mạnh, ngược lại là yếu. RSI có thể lọc các đột phá giả.

Đường trung bình di chuyển chỉ số được sử dụng để xác định hướng của xu hướng dài hạn. Khi giá cao hơn EMA là xu hướng tăng và khi thấp hơn là xu hướng giảm. Nó có thể được sử dụng để xác định hướng giao dịch.

Các tín hiệu giao dịch cho chiến lược này là:

Nhiều đầu vào: giá cao hơn siêu xu hướng và RSI cao hơn 50 và giá cao hơn EMA Xuất hiện nhiều đầu: Giá đóng cửa dưới xu hướng siêu hoặc dừng hoặc dừng

Bước vào đầu trống: Hạn giá khi giá dưới siêu xu hướng và RSI dưới 50 và giá dưới EMA
Xuất hiện đầu không: giá đóng cửa trên siêu xu hướng hoặc dừng hoặc dừng

Stop loss và stop stop có thể được thiết lập như là phần trăm của giá nhập cảnh.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng ba chỉ số kết hợp để xác định hướng đi

  2. Chỉ số siêu xu hướng có thể xác định rõ xu hướng tăng và giảm

  3. Chỉ số RSI có thể lọc các đợt phá vỡ giả để tránh quá mua quá bán

  4. EMA có thể được sử dụng để xác định xu hướng lớn

  5. Các tín hiệu chiến lược đơn giản, rõ ràng và dễ sử dụng

  6. Có thể tùy chỉnh chu kỳ ATR, tham số RSI và chu kỳ EMA để tối ưu hóa

  7. Có thể thiết lập Stop Loss Stop để kiểm soát rủi ro

  8. Có thể chỉ làm thêm hoặc chỉ làm trống để thích ứng với các điều kiện thị trường khác nhau

  9. Có thể sử dụng trong bất kỳ chu kỳ thời gian

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Các chỉ số siêu xu hướng có thể bị tụt hậu và có thể gây thiệt hại khi xu hướng lớn đảo ngược

  2. Cài đặt Stop Loss quá nhỏ có thể không nắm bắt được sự kiện lớn

  3. EMA không thể xác định điểm đảo ngược xu hướng

  4. Không thể đánh giá được sự khác biệt.

  5. Có một mức độ rủi ro biến động và rủi ro giao dịch thời gian

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

  1. Kết hợp với các chỉ số khác để đánh giá xu hướng đảo ngược

  2. Tối ưu hóa các tham số dừng lỗ

  3. Kết hợp với các chỉ số khác để đánh giá xu hướng đảo ngược

  4. Kết hợp các chỉ số deviation

  5. Điều chỉnh quản lý vị trí

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

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Tối ưu hóa tham số chu kỳ ATR để cân bằng độ nhạy và độ ổn định

  2. Tối ưu hóa các tham số RSI để tăng độ chính xác

  3. Tối ưu hóa chu kỳ EMA để phù hợp với các thị trường khác nhau

  4. Thêm các chỉ số khác để đánh giá sự đảo ngược, như MACD, KD, v.v.

  5. Tăng sự thay đổi trong phán đoán từ chỉ số

  6. Phân tích theo lý thuyết sóng

  7. Các tham số tối ưu hóa động bằng các thuật toán như học máy

  8. Thêm các thuật toán dừng lỗ cao cấp, chẳng hạn như theo dõi dừng lỗ, di chuyển dừng lỗ

  9. Tối ưu hóa quản lý vị trí, thích ứng với thị trường có tỷ lệ biến động khác nhau

  10. Kiểm tra một sự kết hợp phức tạp hơn của các điều kiện ra sân

Tóm tắt

Chiến lược cơ bản của siêu xu hướng kết hợp các chỉ số siêu xu hướng, RSI và EMA thành một chiến lược theo dõi xu hướng thực tế đơn giản. Nó có thể xác định rõ hướng xu hướng, lọc các tín hiệu giả và xác nhận xu hướng lớn.

Mã nguồn chiến lược
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 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/
// © JS_TechTrading

//@version=5
// strategy("Supertrend", overlay=true,default_qty_type =strategy.percent_of_equity,default_qty_value = 1,process_orders_on_close = false)

// group string////
var string group_text000="Choose Strategy"
var string group_text0="Supertrend Settings"
var string group_text0000="Ema Settings"
var string group_text00="Rsi Settings"
var string group_text1="Backtest Period"
var string group_text2="Trade Direction"
// var string group_text3="Quantity Settings"
var string group_text4="Sl/Tp Settings"
////////////////////
option_ch=input.string('Pullback',title = "Type Of Strategy",options =['Pullback','Simple'])

//atr period input supertrend 
atrPeriod = input(10, "ATR Length",group = group_text0)
factor = input.float(3.0, "Factor", step = 0.01,group=group_text0)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)

long=direction < 0 ? supertrend : na
short=direction < 0? na : supertrend

longpos=false
shortpos=false

longpos :=long?true :short?false:longpos[1]
shortpos:=short?true:long?false:shortpos[1]

fin_pullbuy= (ta.crossunder(low[1],long) and long and high>high[1])
fin_pullsell=(ta.crossover(high[1],short) and short and low<low[1]) 

//Ema 1
on_ma=input.bool(true,"Ema Condition On/Off",group=group_text0000)
ma_len= input.int(200, minval=1, title="Ema Length",group = group_text0000)
ma_src = input.source(close, title="Ema Source",group = group_text0000)
ma_out = ta.ema(ma_src, ma_len)

ma_buy=on_ma?close>ma_out?true:false:true
ma_sell=on_ma?close<ma_out?true:false:true

// rsi indicator and condition
// Get user input
en_rsi    = input.bool(true,"Rsi Condition On/Off",group = group_text00)
rsiSource = input(title='RSI Source', defval=close,group = group_text00)
rsiLength = input(title='RSI Length', defval=14,group = group_text00)
rsiOverbought = input(title='RSI BUY Level', defval=50,group = group_text00)
rsiOversold   = input(title='RSI SELL Level', defval=50,group = group_text00)

// Get RSI value
rsiValue = ta.rsi(rsiSource, rsiLength)

rsi_buy=en_rsi?rsiValue>=rsiOverbought ?true:false:true
rsi_sell=en_rsi?rsiValue<=rsiOversold?true:false:true

// final condition
buy_cond=option_ch=='Simple'?long and not(longpos[1]) and rsi_buy and ma_buy:option_ch=='Pullback'?fin_pullbuy and rsi_buy and ma_buy:na
sell_cond=option_ch=='Simple'?short and not(shortpos[1]) and rsi_sell and ma_sell:option_ch=='Pullback'?fin_pullsell and rsi_sell and ma_sell:na

//backtest engine
start = input(timestamp('2005-01-01'), title='Start calculations from',group=group_text1)
end=input(timestamp('2045-03-01'), title='End calculations',group=group_text1)
time_cond =true

// Make input option to configure trade direction

tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both',group = group_text2)

// Translate input into trading conditions
longOK  = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")



// strategy start
if buy_cond and longOK and time_cond and strategy.position_size==0
    strategy.entry('long',direction = strategy.long)
if sell_cond and shortOK and time_cond and strategy.position_size==0
    strategy.entry('short',direction =strategy.short)

// fixed percentage based stop loss and take profit 

// User Options to Change Inputs (%)
stopPer = input.float(1.0,step=0.10, title='Stop Loss %',group =group_text4) / 100
takePer = input.float(1.0,step =0.10, title='Take Profit %',group =group_text4) / 100

// Determine where you've entered and in what direction
longStop  = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake  = strategy.position_avg_price * (1 + takePer)


if strategy.position_size > 0
    strategy.exit(id='Close Long',stop=longStop, limit=longTake)
if strategy.position_size < 0
    strategy.exit(id='Close Short',stop=shortStop, limit=shortTake)

//PLOT FIXED SLTP LINE
plot(strategy.position_size > 0 ? longStop : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Fixed SL')
plot(strategy.position_size < 0 ? shortStop :na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Short Fixed SL')
plot(strategy.position_size > 0 ? longTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Long Take Profit')
plot(strategy.position_size < 0 ? shortTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Short Take Profit')

//