Strategi Perdagangan Perintah Sempadan

Penulis:ChaoZhang, Tarikh: 2023-11-03 17:11:34
Tag:

img

Ringkasan

Strategi ini adalah strategi perdagangan trend yang menggunakan purata bergerak mudah untuk menentukan arah trend pasaran dan meletakkan pesanan had di sepanjang garis purata bergerak untuk mengikuti trend.

Logika Strategi

  1. Mengira purata bergerak mudah (SMA) dan trend arah trend.

  2. Jika penapis Anti-Saw diaktifkan, trend menaik dikenal pasti apabila paras terendah di atas SMA, trend menurun dikenal pasti apabila paras tertinggi di bawah SMA. Jika penapis Anti-Saw dilumpuhkan, trend menaik dikenal pasti apabila penutupan di atas SMA, trend menurun dikenal pasti apabila penutupan di bawah SMA.

  3. Letakkan pesanan had pada harga SMA mengikut trend arah trend dan arah dagangan yang diaktifkan perlu dan perlu:

    • Jika perdagangan panjang diperlukan (needlong adalah benar) dan dalam trend menaik, letakkan pesanan had panjang pada harga SMA

    • Jika perdagangan pendek diperlukan (keperluan pendek adalah benar) dan dalam trend menurun, letakkan pesanan had pendek pada harga SMA

  4. Tetapkan logik stop loss untuk keluarkan kedudukan jika arah kedudukan tidak sepadan dengan arah trend.

  5. Hanya berdagang dalam julat tarikh yang ditentukan berdasarkan parameter julat tarikh.

Analisis Kelebihan

  1. Menggunakan SMA untuk menentukan trend dapat menapis bunyi pasaran dengan berkesan dan mengunci trend jangka panjang.

  2. Menempatkan pesanan had pada harga SMA boleh mendapatkan titik masuk yang baik apabila trend bermula.

  3. Fleksibiliti untuk hanya pergi panjang atau pendek mengikut gaya perdagangan peribadi.

  4. Hentikan kerugian di tempat untuk mengelakkan kerugian yang lebih besar.

  5. Julat masa perdagangan ditetapkan untuk mengelakkan turun naik di sekitar peristiwa utama.

Analisis Risiko

  1. SMA sebagai penunjuk trend mempunyai kesan kelewatan, mungkin terlepas titik perubahan trend dan menyebabkan kerugian.

  2. Perintah had kekurangan fleksibiliti, mungkin tidak masuk ke kedudukan kerana penyesuaian trend jangka pendek.

  3. Parameter tempoh SMA memerlukan konfigurasi yang betul, tetapan yang tidak betul membawa kepada penentuan trend yang salah.

  4. Parameter sesi dagangan perlu munasabah untuk mengelakkan peluang yang hilang atau dagangan dalam tempoh berisiko.

Arahan pengoptimuman

  1. Pertimbangkan untuk menambah penunjuk lain untuk pengesahan pelbagai penunjuk, mengelakkan isu-isu kelewatan SMA.

  2. Bertukar ke urutan pasaran apabila harga memecahkan SMA, meningkatkan fleksibiliti penjejakan.

  3. Mengoptimumkan tempoh SMA secara dinamik untuk menyesuaikan diri dengan kitaran pasaran yang berbeza.

  4. Tetapkan stop loss untuk berayun rendah/tinggi dan bukannya ketat pada harga SMA untuk berhenti yang lebih fleksibel.

  5. Meningkatkan unsur algoritma untuk sesi perdagangan dinamik yang lebih pintar mengelakkan peristiwa risiko utama.

Ringkasan

Secara keseluruhan, ini adalah strategi trend yang agak mudah, dengan idea utama menentukan arah trend dengan SMA dan meletakkan pesanan had pada harga SMA untuk mengikuti trend. Dengan pengoptimuman tertentu, ia dapat meningkatkan fleksibiliti, kesesuaian dan kecerdasan. Strategi ini mudah difahami dan dilaksanakan, sesuai untuk pemula perdagangan algoritma, tetapi memerlukan kesedaran risiko, penilaian backtest yang berhati-hati, pemantauan ketat dan pengoptimuman untuk perdagangan langsung.


/*backtest
start: 2022-10-27 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy(title = "Noro's CrossLimit", shorttitle = "CrossLimit", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.0)

needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, defval = close, title = "MA Source")
len = input(5, defval = 5, minval = 1, title = "SMA length")
off = input(0, defval = 0, minval = 0, title = "SMA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
rev = input(false, defval = false, title = "Reverse")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MA
ma = sma(src, len)[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)

//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = (trend == 1 and rev == false) or (trend == -1 and rev == true)
dn = (trend == -1 and rev == false) or (trend == 1 and rev == true)

//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend != 0
    strategy.entry("Long", strategy.long, lot, limit = ma, when = needlong and truetime and up)
    strategy.entry("Short", strategy.short, lot, limit = ma, when = needshort and truetime and dn)
if size > 0 and needshort == false and trend == -1
    strategy.exit("Stop Long", "Long", limit = ma)
if size < 0 and needlong == false and trend == 1
    strategy.exit("Stop Short", "Short", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Lebih lanjut