Tren KiniTren Mengikuti Strategi

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

Ringkasan

Strategi PresentTrend adalah strategi trend mengikut adat yang unik. Gabungan ini membolehkan strategi untuk mengambil kesempatan daripada kedua-dua trend pasaran jangka pendek dan jangka panjang, menjadikannya sesuai untuk pelbagai keadaan pasaran.

Cara Ia Bekerja

Strategi ini terdiri daripada dua bahagian:

  1. Indikator RSI atau MFI yang disesuaikan: Indikator ini mengira nilai PresentTrend berdasarkan RSI atau MFI, menjana isyarat beli dan jual berdasarkan persilangan dan persilangan, menunjukkan potensi pembalikan trend.

  2. Indikator ATR: Indikator trend yang popular yang menggunakan Julat Benar Purata (ATR).

Strategi memasuki kedudukan panjang apabila semua isyarat beli dari kedua-dua strategi adalah benar, dan kedudukan pendek apabila semua isyarat jual adalah benar. Ini memastikan perdagangan dimasukkan hanya apabila kedua-dua trend jangka pendek dan jangka panjang sejajar, berpotensi meningkatkan kebolehpercayaan strategi.

Kelebihan

  • Menggabungkan trend jangka pendek dan jangka panjang, dapat disesuaikan dengan keadaan pasaran yang berbeza
  • Menggunakan penunjuk tersuai dan ATR untuk meningkatkan kebolehpercayaan isyarat
  • Pilihan untuk perdagangan hanya panjang, hanya pendek atau dua arah sesuai dengan gaya perdagangan yang berbeza
  • Parameter lalai yang dioptimumkan untuk keseimbangan kepekaan dan kestabilan
  • Parameter boleh diselaraskan berdasarkan pilihan peribadi untuk pengoptimuman

Risiko dan Penyelesaian

  • Cacat kepada whipsaws seperti semua strategi trend-mengikuti
  • Dagangan dua arah boleh meningkatkan bilangan dagangan dan yuran
  • Penyesuaian parameter yang tidak baik boleh menghasilkan isyarat palsu yang berlebihan
  • Boleh menggunakan tempoh penahan yang lebih pendek untuk mengurangkan risiko whipsaw
  • Pilihan untuk panjang atau pendek hanya mengurangkan bilangan dagangan
  • Parameter harus diuji dengan teliti dan disesuaikan untuk memastikan daya maju

Arahan pengoptimuman

  • Tambahkan mekanisme hentian kerugian untuk kawalan kerugian yang lebih baik
  • Menapis isyarat dengan penunjuk tambahan untuk mengurangkan perdagangan palsu
  • Uji parameter tempoh tahan yang berbeza untuk mencari optimum
  • meneroka pembelajaran mesin untuk pengoptimuman parameter automatik
  • Masukkan lebih banyak sumber data seperti maklumat aliran pesanan
  • Mengoptimumkan kod strategi untuk meningkatkan kecekapan pelaksanaan

Kesimpulan

Secara keseluruhannya, strategi PresentTrend adalah sistem trend yang sangat berkesan. Ia menggabungkan penunjuk trend jangka pendek dan jangka panjang untuk menjadi sensitif sambil meningkatkan kebolehpercayaan isyarat. Dengan arah, parameter, dan logik tambahan yang boleh disesuaikan, strategi dapat disesuaikan dengan persekitaran pasaran yang berbeza dan keperluan peniaga.


/*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 lanjut