Strategi Pengesanan Uptrend Golden Cross

Penulis:ChaoZhang, Tarikh: 2024-01-03 11:46:44
Tag:

img

Ringkasan

Strategi ini direka berdasarkan prinsip salib emas purata bergerak. Khususnya, ia menggunakan dua purata bergerak mudah dari tempoh yang berbeza, iaitu garis 50 tempoh dan garis 200 tempoh. Apabila garis 50 tempoh memecahkan garis 200 tempoh dari bawah, isyarat beli dihasilkan. Apabila garis 50 tempoh memecahkan garis 200 tempoh dari atas, isyarat jual dihasilkan.

Logika Strategi

Strategi ini ditulis dalam bahasa Pine Script, dengan logik utama seperti berikut:

  1. Mengira dua SMA: SMA 50 tempoh dan SMA 200 tempoh
  2. Tentukan golden cross: apabila SMA 50 tempoh melintasi SMA 200 tempoh, pergi panjang
  3. Tentukan persilangan kematian: apabila SMA 50 tempoh melintasi di bawah SMA 200 tempoh, kedudukan dekat

Pentingnya menggunakan penunjuk SMA di sini adalah bahawa ia dapat menapis bunyi bising pasaran dengan berkesan dan menangkap trend jangka panjang. Apabila garis SMA yang lebih cepat melintasi di atas garis SMA yang lebih perlahan, ia menunjukkan momentum aliran naik jangka pendek mengalahkan trend penurunan jangka panjang, menghasilkan isyarat beli.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Prinsip yang mudah dan mudah difahami, mudah dilaksanakan.
  2. Tetapan PARAMETER yang munasabah, boleh disesuaikan dua tempoh SMA, disesuaikan dengan pasaran yang berbeza.
  3. Ditulis dalam versi bahasa Pine yang stabil, berjalan dengan cekap.
  4. Pengaturan visual yang kaya, mudah digunakan.

Risiko dan Penyelesaian

Strategi ini juga mempunyai beberapa risiko:

  1. Boleh menyesuaikan dua parameter SMA untuk mengurangkan kebarangkalian pecah palsu.

  2. Tidak dapat bertindak balas terhadap pasaran jangka pendek, hanya sesuai untuk pelabur jangka panjang.

  3. Pengeluaran boleh besar, boleh menetapkan stop loss, atau menyesuaikan pengurusan kedudukan dengan betul.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Tambahkan penunjuk lain untuk penapisan, menggabungkan pelbagai keadaan beli / jual untuk mengurangkan isyarat palsu.

  2. Tambahkan mekanisme stop loss. Stop loss wajib apabila harga memecahkan tahap tertentu.

  3. Mengoptimumkan pengurusan kedudukan. Seperti piramida di sepanjang trend, menghentikan kerugian dan lain-lain untuk mengawal pengeluaran dan mengejar pulangan yang lebih tinggi.

  4. Pengoptimuman parameter: Menilai kesan parameter yang berbeza pada nisbah pulangan / risiko.

Kesimpulan

Secara amnya, ini adalah strategi pengesanan trend biasa. Ia menggunakan kelebihan SMA untuk menangkap trend jangka panjang dengan mudah dan cekap. Boleh menyesuaikan berdasarkan gaya dan ruang penyesuaian seseorang. Juga perlu melihat kekurangan yang ada untuk pengoptimuman dan penambahbaikan lanjut.


/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
//
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// www.tradingview.com/u/TradeFab/
// www.tradefab.com
// ___  __        __   __  __       __
//  |  |__)  /\  |  \ |__ |__  /\  |__)
//  |  |  \ /~~\ |__/ |__ |   /~~\ |__)
//
// DISCLAIMER: Futures, stocks and options trading involves substantial risk of loss 
// and is not suitable for every investor. You are responsible for all the risks and 
// financial resources you use and for the chosen trading system.
// Past performance is not indicative for future results. In making an investment decision,
// traders must rely on their own examination of the entity making the trading decisions!
//
// TradeFab's Golden Cross Strategy.
// The strategy goes long when the faster SMA 50 (the simple moving average of the last 50 bars) crosses
// above the SMA 200. Orders are closed when the SMA 50 crosses below SMA 200. The strategy does not short.
//
VERSION = "1.2"
// 1.2 FB 2020-02-09 converted to Pine version 4
// 1.1 FB 2017-01-15 added short trading
// 1.0 FB 2017-01-13 basic version using SMAs
//
strategy(
   title        = "TFs Golden Cross " + VERSION, 
   shorttitle   = "TFs Golden Cross " + VERSION, 
   overlay      = true
   )


///////////////////////////////////////////////////////////
// === INPUTS ===
///////////////////////////////////////////////////////////
inFastSmaPeriod     = input(title="Fast SMA Period", type=input.integer, defval=50, minval=1)
inSlowSmaPeriod     = input(title="Slow SMA Period", type=input.integer, defval=200, minval=1)

// backtest period
testStartYear       = input(title="Backtest Start Year",    type=input.integer, defval=2019, minval=2000)
testStartMonth      = input(title="Backtest Start Month",   type=input.integer, defval=1, minval=1, maxval=12)
testStartDay        = input(title="Backtest Start Day",     type=input.integer, defval=1, minval=1, maxval=31)
testStopYear        = input(title="Backtest Stop Year",     type=input.integer, defval=2099, minval=2000)
testStopMonth       = input(title="Backtest Stop Month",    type=input.integer, defval=12, minval=1, maxval=12)
testStopDay         = input(title="Backtest Stop Day",      type=input.integer, defval=31, minval=1, maxval=31)


///////////////////////////////////////////////////////////
// === LOGIC ===
///////////////////////////////////////////////////////////
smaFast = sma(close, inFastSmaPeriod)
smaSlow = sma(close, inSlowSmaPeriod)

bullishCross = crossover (smaFast, smaSlow)
bearishCross = crossunder(smaFast, smaSlow)

// detect valid backtest period
isTestPeriod() => true


///////////////////////////////////////////////////////////
// === POSITION EXECUTION ===
///////////////////////////////////////////////////////////
strategy.entry("long",  strategy.long,  when=bullishCross)
strategy.entry("short", strategy.short, when=bearishCross)


///////////////////////////////////////////////////////////
// === PLOTTING ===
///////////////////////////////////////////////////////////
// background color
nopColor = color.new(color.gray, 50)
bgcolor(not isTestPeriod() ? nopColor : na)

bartrendcolor = 
   close > smaFast and 
   close > smaSlow and 
   change(smaSlow) > 0 
       ? color.green 
       : close < smaFast and 
         close < smaSlow and 
         change(smaSlow) < 0 
             ? color.red 
             : color.blue
barcolor(bartrendcolor)
plot(smaFast, color=change(smaFast) > 0 ? color.green : color.red, linewidth=2)
plot(smaSlow, color=change(smaSlow) > 0 ? color.green : color.red, linewidth=2)

// label
posColor = color.new(color.green, 75)
negColor = color.new(color.red, 75)
dftColor = color.new(color.blue, 75)
posProfit= (strategy.position_size != 0) ? (close * 100 / strategy.position_avg_price - 100) : 0.0
posDir   = (strategy.position_size  > 0) ? "long" : strategy.position_size < 0 ? "short" : "flat"
posCol   = (posProfit > 0) ? posColor : (posProfit < 0) ? negColor : dftColor

var label lb = na
label.delete(lb)
lb := label.new(bar_index, max(high, highest(5)[1]),
   color=posCol,
   text="Pos: "+ posDir +
      "\nPnL: "+tostring(posProfit, "#.##")+"%" +
      "\nClose: "+tostring(close, "#.##"))
  

Lebih lanjut