Strategi Perdagangan Pembalikan Momentum TD


Tarikh penciptaan: 2023-12-18 17:40:10 Akhirnya diubah suai: 2023-12-18 17:40:10
Salin: 0 Bilangan klik: 847
1
fokus pada
1621
Pengikut

Strategi Perdagangan Pembalikan Momentum TD

Gambaran keseluruhan

Strategi perdagangan berbalik TD adalah strategi perdagangan kuantitatif yang menggunakan indikator TD Sequential untuk mengenal pasti isyarat perubahan harga. Strategi ini berdasarkan analisis pergerakan harga, untuk membuat kedudukan jual beli atau jual beli setelah mengesahkan isyarat perubahan harga.

Prinsip Strategi

Strategi ini menggunakan penunjuk TD Sequential untuk menganalisis pergerakan harga dan mengenal pasti bentuk pembalikan harga 9 garis K berturut-turut. Khususnya, apabila mengenal pasti 9 garis K berturut-turut yang meningkat dan diikuti dengan garis K yang menurun, strategi ini dianggap sebagai peluang short; sebaliknya, apabila mengenal pasti 9 garis K berturut-turut yang meningkat dan diikuti dengan garis K yang menurun, strategi ini dianggap sebagai peluang tinggi.

Menggunakan kelebihan penunjuk TD Sequential, isyarat pembalikan harga dapat ditangkap lebih awal. Digabungkan dengan beberapa mekanisme penangkapan dan penurunan dalam strategi ini, kedudukan over atau short boleh ditubuhkan tepat pada masanya setelah isyarat pembalikan disahkan, untuk mendapatkan peluang masuk yang lebih baik pada peringkat permulaan pembalikan harga.

Analisis kelebihan

  • Menggunakan TD Sequential Indicator untuk menilai peluang harga berbalik
  • Menubuhkan mekanisme untuk mengesan kejatuhan harga yang lebih awal
  • Membangunkan kedudukan yang lebih baik untuk masuk ke dalam permainan dengan bertukar tahap pembentukan

Analisis risiko

  • Indeks TD Sequential mungkin mengalami penembusan palsu yang perlu disahkan bersama dengan faktor-faktor lain
  • Perlu mengawal saiz dan masa kedudukan dengan betul untuk mengurangkan risiko

Arah pengoptimuman

  • Menentukan isyarat pembalikan bersama dengan petunjuk lain untuk mengelakkan risiko penembusan palsu
  • Menubuhkan mekanisme halangan untuk mengawal kerugian tunggal
  • Mengoptimumkan saiz dan jangka masa kedudukan, mengimbangi saiz keuntungan dan kawalan risiko

ringkaskan

Strategi perdagangan berbalik TD momentum adalah strategi yang sangat sesuai untuk digunakan oleh peniaga yang bergerak. Strategi ini mempunyai kelebihan untuk mengenal pasti peluang berbalik, tetapi perlu berhati-hati untuk mengawal risiko dan mengelakkan kerugian yang lebih besar akibat penembusan palsu. Dengan pengoptimuman lanjut, ini adalah strategi perdagangan yang lebih seimbang antara risiko dan keuntungan.

Kod sumber strategi
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//This strategy is based on TD sequential study from glaz. 
//I made some improvement and modification to comply with pine script version 4.
//Basically, it is a strategy based on proce action, supports and resistance.

strategy("Sequential Up/Down", overlay=true )
source = input(close)
BarsCount = input(9, "Count of consecutive bars")
useLinearRegression = input(false)
LR_length = input(13,"Linear Regression length")
SR = input(true,"Shows Supports and Resistance lines")
Barcolor = input(true,"Color bars when there is a signal")
transp = input(0, "Transparency of triangle Up or Downs")
Numbers = input(true,"Plot triangle Up or Downs at signal")

//Calculation
src=useLinearRegression?linreg(source,LR_length,0):source
UP = 0
DW = 0
UP := src > src[4] ? nz(UP[1]) + 1 : 0
DW := src < src[4] ? nz(DW[1]) + 1 : 0

UPUp = UP - valuewhen(UP < UP[1], UP, 1)
DWDn = DW - valuewhen(DW < DW[1], DW, 1)

plotshape(Numbers ? UPUp == BarsCount ? true : na : na, style=shape.triangledown, text="", color=color.green, location=location.abovebar, transp=transp)
plotshape(Numbers ? DWDn == BarsCount ? true : na : na, style=shape.triangleup, text="", color=color.red, location=location.belowbar, transp=transp)


// S/R Code By johan.gradin
//------------//
// Sell Setup //
//------------//
priceflip = barssince(src < src[4])
sellsetup = src > src[4] and priceflip
sell = sellsetup and barssince(priceflip != BarsCount)
sellovershoot = sellsetup and barssince(priceflip != BarsCount+4)
sellovershoot1 = sellsetup and barssince(priceflip != BarsCount+5)
sellovershoot2 = sellsetup and barssince(priceflip != BarsCount+6)
sellovershoot3 = sellsetup and barssince(priceflip != BarsCount+7)

//----------//
// Buy setup//
//----------//
priceflip1 = barssince(src > src[4])
buysetup = src < src[4] and priceflip1
buy = buysetup and barssince(priceflip1 != BarsCount)
buyovershoot = barssince(priceflip1 != BarsCount+4) and buysetup
buyovershoot1 = barssince(priceflip1 != BarsCount+5) and buysetup
buyovershoot2 = barssince(priceflip1 != BarsCount+6) and buysetup
buyovershoot3 = barssince(priceflip1 != BarsCount+7) and buysetup

//----------//
// TD lines //
//----------//
TDbuyh = valuewhen(buy, high, 0)
TDbuyl = valuewhen(buy, low, 0)
TDsellh = valuewhen(sell, high, 0)
TDselll = valuewhen(sell, low, 0)

//----------//
//   Plots  //
//----------//

plot(SR ? TDbuyh ? TDbuyl : na : na, style=plot.style_circles, linewidth=1, color=color.red)
plot(SR ? TDselll ? TDsellh : na : na, style=plot.style_circles, linewidth=1, color=color.lime)
barcolor(Barcolor ? sell ? #FF0000 : buy ? #00FF00 : sellovershoot ? #FF66A3 : sellovershoot1 ? #FF3385 : sellovershoot2 ? #FF0066 : sellovershoot3 ? #CC0052 : buyovershoot ? #D6FF5C : buyovershoot1 ? #D1FF47 : buyovershoot2 ? #B8E62E : buyovershoot3 ? #8FB224 : na : na)

//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 100, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => buy or buyovershoot or buyovershoot1 or buyovershoot2 or buyovershoot3// functions can be used to wrap up and work out complex conditions
//exitLong() => oscillator <= 0
strategy.entry(id = "Buy", long = true, when = enterLong() )// use function or simple condition to decide when to get in
//strategy.close(id = "Buy", when = exitLong() )// ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => sell or sellovershoot or sellovershoot2 or sellovershoot3
//exitShort() => oscillator >= 0
strategy.entry(id = "Sell", long = false, when = enterShort())
//strategy.close(id = "Sell", when = exitShort() )

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)