Tren Saat IniTren Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-09-21 15:00:08
Tag:

Gambaran umum

Strategi PresentTrend adalah strategi trend-following khusus yang unik. Kombinasi ini memungkinkan strategi untuk mengambil keuntungan dari tren pasar jangka pendek dan jangka panjang, membuatnya cocok untuk berbagai kondisi pasar.

Cara Kerjanya

Strategi ini terdiri dari dua bagian:

  1. Indikator RSI atau MFI khusus: Indikator ini menghitung nilai PresentTrend berdasarkan RSI atau MFI, menghasilkan sinyal beli dan jual berdasarkan crossover dan crossundernya, menunjukkan potensi pembalikan tren.

  2. Indikator ATR: Indikator trend-following yang populer menggunakan Average True Range (ATR).

Strategi memasuki posisi panjang ketika semua sinyal beli dari kedua strategi benar, dan posisi pendek ketika semua sinyal jual benar. Ini memastikan perdagangan hanya dimasukkan ketika tren jangka pendek dan jangka panjang sejajar, berpotensi meningkatkan keandalan strategi.

Keuntungan

  • Menggabungkan tren jangka pendek dan jangka panjang, dapat disesuaikan dengan kondisi pasar yang berbeda
  • Menggunakan indikator khusus dan ATR untuk meningkatkan keandalan sinyal
  • Opsi untuk perdagangan hanya panjang, hanya pendek atau dua arah sesuai dengan gaya perdagangan yang berbeda
  • Parameter default dioptimalkan untuk keseimbangan sensitivitas dan stabilitas
  • Parameter dapat disesuaikan berdasarkan preferensi pribadi untuk optimasi

Risiko dan Solusi

  • Cacat untuk whipsaws seperti semua strategi tren-mengikuti
  • Perdagangan dua arah dapat meningkatkan jumlah perdagangan dan biaya
  • Penyesuaian parameter yang buruk dapat menghasilkan sinyal palsu yang berlebihan
  • Dapat menggunakan jangka waktu penyimpanan yang lebih pendek untuk mengurangi risiko whipsaw
  • Opsi untuk panjang atau pendek hanya mengurangi jumlah perdagangan
  • Parameter harus diuji secara menyeluruh dan disesuaikan untuk memastikan kelangsungan hidup

Arahan Optimasi

  • Tambahkan mekanisme stop loss untuk kontrol kerugian yang lebih baik
  • Sinyal filter dengan indikator tambahan untuk mengurangi perdagangan palsu
  • Uji parameter periode penyimpanan yang berbeda untuk menemukan yang optimal
  • Jelajahi pembelajaran mesin untuk optimasi parameter otomatis
  • Masukkan lebih banyak sumber data seperti informasi aliran pesanan
  • Mengoptimalkan kode strategi untuk meningkatkan efisiensi pelaksanaan

Kesimpulan

Secara keseluruhan, strategi PresentTrend adalah sistem trend-following yang sangat efektif. Ini menggabungkan indikator tren jangka pendek dan jangka panjang untuk menjadi sensitif sambil meningkatkan keandalan sinyal. Dengan arah yang dapat disesuaikan, parameter, dan logika tambahan, strategi dapat beradaptasi dengan lingkungan pasar yang berbeda dan kebutuhan pedagang. Sementara risiko yang melekat dengan tren tetap ada, PresentTrend adalah pilihan yang menarik yang layak dipertimbangkan.


/*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")


Lebih banyak