Strategi Pembalikan Momentum

Penulis:ChaoZhang, Tarikh: 2023-11-13 10:02:25
Tag:

img

Ringkasan

Strategi ini bertujuan untuk mengesan perubahan peratusan harga saham dalam tempoh masa tertentu dan menghasilkan isyarat perdagangan apabila ambang melebihi.

Logika Strategi

  1. Parameter input x mewakili bilangan tempoh candlestick untuk diperiksa, dengan lalai 5 untuk lilin 5 minit.

  2. Mengira perubahan peratusan harga penutupan semasa berbanding harga penutupan x tempoh yang lalu, disimpan sebagai trueChange1 dan trueChange2.

  3. Parameter input percentChangePos dan percentChangeNeg mewakili perubahan peratusan ambang, dengan nilai lalai 0.4% dan -0.4%.

  4. Apabila trueChange1 adalah lebih besar daripada peratusanChangePos, isyarat beli beli dihasilkan. Apabila trueChange2 adalah kurang daripada peratusanChangeNeg, isyarat jual jual dihasilkan.

  5. Tambah teks dan warna latar belakang untuk status beli dan jual.

  6. Tetapkan peraturan masuk dan keluar berdasarkan isyarat.

  7. Mengatur amaran dan lukisan.

Kelebihan

  1. Gunakan perubahan peratusan dan bukannya perubahan harga mutlak, boleh disesuaikan dengan stok yang berbeza.

  2. Tetapkan ambang peratusan positif dan negatif yang fleksibel untuk mengenal pasti pecah Bollinger Bands.

  3. Tempoh pengesanan yang boleh diselaraskan untuk mengenal pasti perubahan trend dalam jangka masa yang berbeza.

  4. Amaran yang boleh dikonfigurasikan untuk menangkap isyarat penting.

  5. Logik isyarat yang mudah dan mudah difahami dan digunakan.

  6. Menangkap pembalikan jangka pendek di pasaran terbuka.

Risiko

  1. Perubahan peratusan tidak menentukan arah trend, boleh menghasilkan isyarat yang mengelirukan.

  2. Parameter lalai mungkin tidak sesuai dengan semua stok, penyusunan khusus diperlukan.

  3. Tiada stop loss di tempat, tidak dapat mengehadkan kerugian.

  4. Isyarat yang kerap, kos perdagangan yang berpotensi tinggi.

  5. Tidak dapat menentukan struktur pasaran, terdedah kepada whipsaws di pasaran yang berbeza.

Penyelesaian:

  1. Gabungkan dengan penunjuk trend seperti regresi linear untuk menentukan trend keseluruhan.

  2. Mengoptimumkan parameter berdasarkan ciri stok.

  3. Melaksanakan stop loss yang betul.

  4. Menapis isyarat untuk mengelakkan perdagangan berlebihan.

  5. Mengukur struktur pasaran dari bingkai masa yang lebih tinggi untuk mengelakkan whipsaws perdagangan.

Peningkatan

  1. Tambah mekanisme stop loss seperti trailing stop loss untuk mengehadkan kerugian.

  2. Tambah keadaan penapis seperti jumlah, purata bergerak untuk mengelakkan whipsaws.

  3. Mengoptimumkan peraturan masuk dan keluar dengan penunjuk seperti MACD.

  4. Gunakan pembelajaran mesin untuk mengoptimumkan parameter.

  5. Sertakan analisis struktur pasaran untuk mengelakkan masalah.

  6. Parameter yang ditetapkan secara dinamik berdasarkan turun naik dan kecairan.

  7. Gabungkan dengan analisis jangka masa yang lebih tinggi untuk menentukan trend keseluruhan.

Ringkasan

Strategi ini menghasilkan perdagangan dengan membandingkan perubahan harga peratusan dengan ambang yang telah ditetapkan, menjadikannya strategi pembalikan purata jangka pendek. Kelebihannya terletak pada kesederhanaan, fleksibiliti dan keupayaan untuk menangkap pergerakan pasaran yang tiba-tiba. Kelemahannya adalah risiko yang dapat ditangani melalui pengoptimuman dan penggunaan yang betul dengan analisis trend dan pengurusan risiko. Secara keseluruhan, ia mempunyai logika yang baik dan boleh menjadi strategi perdagangan jangka pendek yang berkesan apabila ditingkatkan dengan betul.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// created by Oliver
strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2)

x = input(5, title = 'x candles difference', minval = 1)
trueChange1 = (close - close[x]) / close[x] * 100
percentChangePos = input(0.4, title="Percent Change")

//if (percentChange > trueChange) then Signal  

plotChar1 = if percentChangePos > trueChange1
    false
else
    true

plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny )

trueChange2 = (close - close[x]) / close[x] * 100
percentChangeNeg = input(-0.4, title="Percent Change")

plotChar2 = if percentChangeNeg < trueChange2
    false
else
    true
plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny)

//------------------------------------------------------------------------
UpColor() => percentChangePos < trueChange1
DownColor() => percentChangeNeg > trueChange2

//Up = percentChangePos < trueChange1
//Down = percentChangeNeg > trueChange2


col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white
//--------
condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na
//c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na
//barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70)

//Background Highlights
//bgcolor(condColor, transp=70)


//---------

barcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na)

//------------------------------------------------------------------------

buy = percentChangePos < trueChange1
sell = percentChangeNeg > trueChange2


//------------------------------------------------------------------------
/////////////// Alerts /////////////// 
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')

//-------------------------------------------------

if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)


/////////////////// Plotting //////////////////////// 
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)


Lebih lanjut