Hiện tại Xu hướng Xu hướng theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-09-21 15:00:08
Tags:

Tổng quan

Chiến lược PresentTrend là một chiến lược theo xu hướng tùy chỉnh độc đáo. Sự kết hợp này cho phép chiến lược tận dụng cả xu hướng thị trường ngắn hạn và dài hạn, làm cho nó phù hợp với các điều kiện thị trường khác nhau.

Làm thế nào nó hoạt động

Chiến lược bao gồm hai phần:

  1. Chỉ số RSI hoặc MFI tùy chỉnh: Chỉ số này tính toán giá trị PresentTrend dựa trên RSI hoặc MFI, tạo ra tín hiệu mua và bán dựa trên chéo và chéo của nó, cho thấy sự đảo ngược xu hướng tiềm năng.

  2. Chỉ số ATR: Một chỉ số theo xu hướng phổ biến sử dụng Average True Range (ATR).

Chiến lược này đi vào một vị trí dài khi tất cả các tín hiệu mua từ cả hai chiến lược là đúng, và một vị trí ngắn khi tất cả các tín hiệu bán là đúng. Điều này đảm bảo giao dịch chỉ được đưa vào khi cả hai xu hướng ngắn hạn và dài hạn phù hợp, có khả năng làm tăng độ tin cậy của chiến lược.

Ưu điểm

  • Kết hợp xu hướng ngắn hạn và dài hạn, thích nghi với các điều kiện thị trường khác nhau
  • Sử dụng chỉ số tùy chỉnh và ATR để tăng độ tin cậy tín hiệu
  • Tùy chọn giao dịch chỉ dài, chỉ ngắn hoặc hai hướng phù hợp với các phong cách giao dịch khác nhau
  • Các thông số mặc định được tối ưu hóa cho sự cân bằng của độ nhạy và sự ổn định
  • Các thông số có thể được điều chỉnh dựa trên sở thích cá nhân cho tối ưu hóa

Rủi ro và giải pháp

  • Thể hiện khả năng bị ảnh hưởng như tất cả các chiến lược theo xu hướng.
  • Giao dịch hai hướng có thể làm tăng số lượng giao dịch và phí
  • Chế độ điều chỉnh tham số kém có thể tạo ra tín hiệu sai quá mức
  • Có thể sử dụng thời gian giữ ngắn hơn để giảm rủi ro chích
  • Tùy chọn cho dài hoặc ngắn chỉ làm giảm số lượng giao dịch
  • Các thông số nên được kiểm tra kỹ lưỡng và điều chỉnh để đảm bảo khả năng tồn tại

Hướng dẫn tối ưu hóa

  • Thêm cơ chế dừng lỗ để kiểm soát lỗ tốt hơn
  • Các tín hiệu lọc với các chỉ số bổ sung để giảm giao dịch sai
  • Kiểm tra các thông số thời gian giữ khác nhau để tìm ra tối ưu
  • Khám phá máy học để tối ưu hóa tham số tự động
  • Kết hợp nhiều nguồn dữ liệu hơn như thông tin luồng đơn đặt hàng
  • Tối ưu hóa mã chiến lược để cải thiện hiệu quả thực hiện

Kết luận

Tổng thể, chiến lược PresentTrend là một hệ thống theo dõi xu hướng hiệu quả cao. Nó kết hợp các chỉ số xu hướng ngắn hạn và dài hạn để nhạy cảm trong khi cải thiện độ tin cậy tín hiệu. Với hướng điều chỉnh, tham số và logic bổ sung, chiến lược có thể thích nghi với môi trường thị trường và nhu cầu của nhà giao dịch khác nhau.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 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/
// © PresentTrading

//@version=5

// Define the strategy settings
strategy('PresentTrend - Strategy [presentTrading]' , overlay=true, precision=3, default_qty_type=strategy.cash, 
 commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, 
  currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital= 10000)

// Define the input parameters
priceSource  = input.source(title='Source', defval=hlc3, group='PresentTrend') // The price source to use
lengthParam  = input.int(title='Length', defval=14, group='PresentTrend') // The length of the moving average
multiplier = input.float(title='Multiplier', defval=1.618, step=0.1, group='PresentTrend') // The multiplier for the ATR
indicatorChoice  = input.bool(title='Whether to use RSI or MFI', defval=false, group='PresentTrend') // Whether to use RSI or MFI

// Add a parameter for choosing Long or Short
tradeDirection = input.string(title="Trade Direction", defval="Both", options=["Long", "Short", "Both"])

// Calculate the ATR and the upT and downT values
ATR = ta.sma(ta.tr, lengthParam)
upperThreshold = low - ATR * multiplier 
lowerThreshold  = high + ATR * multiplier 

// Initialize the PresentTrend indicator
PresentTrend = 0.0

// Calculate the PresentTrend indicator
PresentTrend := (indicatorChoice ? ta.rsi(priceSource, lengthParam) >= 50 : ta.mfi(hlc3, lengthParam) >= 50) ? upperThreshold < nz(PresentTrend[1]) ? nz(PresentTrend[1]) : upperThreshold : lowerThreshold > nz(PresentTrend[1]) ? nz(PresentTrend[1]) : lowerThreshold

// Calculate the buy and sell signals
longSignal  = ta.crossover(PresentTrend, PresentTrend[2])
shortSignal  = ta.crossunder(PresentTrend, PresentTrend[2])

// Calculate the number of bars since the last buy and sell signals
barsSinceBuy = ta.barssince(longSignal)
barsSinceSell = ta.barssince(shortSignal)
previousBuy = ta.barssince(longSignal[1])
previousSell = ta.barssince(shortSignal[1])

// Initialize the direction variable
trendDirection = 0

// Calculate the direction of the trend
trendDirection := longSignal and previousBuy > barsSinceSell ? 1 : shortSignal and previousSell > barsSinceBuy ? -1 : trendDirection[1]

// Check the trade direction parameter before entering a trade
if (trendDirection == 1 and (tradeDirection == "Long" or tradeDirection == "Both"))
    strategy.entry("Buy", strategy.long) 
if (trendDirection == -1 and (tradeDirection == "Short" or tradeDirection == "Both"))
    strategy.entry("Sell", strategy.short) 

// Add a stop mechanism when the tradeDirection is one-sided
if (tradeDirection == "Long" and trendDirection == -1)
    strategy.close("Buy")
if (tradeDirection == "Short" and trendDirection == 1)
    strategy.close("Sell")

// Visualization
plot(PresentTrend, color=color.blue, title="PresentTrend")
plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")


Thêm nữa