Strategi perdagangan lintas batas order lintas periode

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

img

Ringkasan

Strategi ini adalah strategi perdagangan yang mengikuti tren yang menggunakan rata-rata bergerak sederhana untuk menentukan arah tren pasar dan menempatkan pesanan batas di sepanjang garis rata-rata bergerak untuk mengikuti tren.

Logika Strategi

  1. Menghitung rata-rata bergerak sederhana (SMA) dan arah tren tren.

  2. Jika filter Anti-Saw diaktifkan, uptrend diidentifikasi ketika low berada di atas SMA, downtrend diidentifikasi ketika high berada di bawah SMA.

  3. Menempatkan limit order pada harga SMA sesuai dengan tren arah tren dan arah perdagangan aktif needlong dan needshort:

    • Jika trading panjang diperlukan (needlong adalah benar) dan dalam tren naik, tempatkan pesanan batas panjang pada harga SMA

    • Jika trading short diperlukan (needshort adalah benar) dan dalam downtrend, menempatkan short limit order pada harga SMA

  4. Atur logika stop loss untuk posisi keluar jika arah posisi tidak sesuai dengan arah tren.

  5. Hanya perdagangan dalam kisaran tanggal yang ditentukan berdasarkan parameter kisaran tanggal.

Analisis Keuntungan

  1. Menggunakan SMA untuk menentukan tren dapat secara efektif menyaring kebisingan pasar dan mengunci tren jangka panjang.

  2. Menempatkan limit order pada harga SMA dapat mendapatkan titik masuk yang baik ketika tren dimulai.

  3. Fleksibilitas untuk hanya pergi panjang atau pendek sesuai dengan gaya perdagangan pribadi.

  4. Stop loss di tempat untuk menghindari peningkatan kerugian.

  5. Jangka waktu perdagangan diatur untuk menghindari volatilitas sekitar peristiwa besar.

Analisis Risiko

  1. SMA sebagai indikator tren memiliki efek keterlambatan, dapat melewatkan titik balik tren dan menyebabkan kerugian.

  2. Perintah batas kurang fleksibilitas, mungkin tidak masuk ke posisi karena penyesuaian tren jangka pendek.

  3. Parameter periode SMA membutuhkan konfigurasi yang tepat, pengaturan yang tidak tepat mengarah pada penentuan tren yang salah.

  4. Parameter sesi perdagangan harus wajar untuk menghindari kesempatan yang hilang atau perdagangan pada periode berisiko.

Arahan Optimasi

  1. Pertimbangkan untuk menambahkan indikator lain untuk konfirmasi multi-indikator, menghindari masalah keterlambatan SMA.

  2. Beralih ke urutan pasar saat harga melanggar SMA, meningkatkan fleksibilitas pelacakan.

  3. Secara dinamis mengoptimalkan periode SMA untuk beradaptasi dengan siklus pasar yang berbeda.

  4. Atur stop loss untuk berayun rendah/tinggi daripada ketat pada harga SMA untuk stop yang lebih fleksibel.

  5. Meningkatkan elemen algoritma untuk sesi perdagangan dinamis yang lebih cerdas menghindari peristiwa risiko besar.

Ringkasan

Secara keseluruhan ini adalah strategi trend following yang relatif sederhana, dengan gagasan inti menentukan arah tren dengan SMA dan menempatkan limit order pada harga SMA untuk mengikuti tren. Dengan optimasi tertentu dapat meningkatkan fleksibilitas, kemampuan beradaptasi dan kecerdasan. Strategi ini mudah dipahami dan diimplementasikan, cocok untuk pemula perdagangan algoritmik, tetapi membutuhkan kesadaran risiko, evaluasi backtest yang berhati-hati, pemantauan ketat dan optimasi 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 banyak