Strategi perdagangan rentas tempoh pesanan silang had dua hala


Tarikh penciptaan: 2023-11-03 17:11:34 Akhirnya diubah suai: 2023-11-03 17:11:34
Salin: 1 Bilangan klik: 564
1
fokus pada
1617
Pengikut

Strategi perdagangan rentas tempoh pesanan silang had dua hala

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan mengikuti trend, menggunakan purata bergerak sederhana untuk menentukan arah trend pasaran, dan meletakkan harga terhad mengikut arah trend pada rata-rata bergerak, untuk mencapai perdagangan mengikuti trend.

Prinsip Strategi

  1. Mengira purata bergerak sederhana (SMA), dan mengira arah trend.

  2. Jika penapis maklum balas diaktifkan, penggunaan titik rendah yang lebih tinggi daripada SMA dinilai sebagai trend naik, penggunaan titik tinggi yang lebih rendah daripada SMA dinilai sebagai trend turun. Jika penapis maklum balas tidak diaktifkan, penggunaan harga penutup yang lebih tinggi daripada SMA dinilai sebagai trend naik, harga penutup yang lebih rendah daripada SMA dinilai sebagai trend turun.

  3. Berdasarkan arah trend trend dan parameter arah perdagangan yang diaktifkan needlong, needshort, pesanan had diletakkan pada harga SMA, logiknya adalah:

    • Jika perlu untuk melakukan lebih banyak (needlong adalah benar) dan dalam trend menaik, letakkan dalam harga SMA untuk membuat pesanan terhad

    • Jika diperlukan untuk melakukan shorting (needshort adalah benar) dan berada dalam trend menurun, letakkan pesanan untuk melakukan shorting pada harga SMA

  4. Tetapkan logik stop loss, jika arah memegang kedudukan tidak sesuai dengan arah trend, stop loss akan keluar.

  5. Berdasarkan parameter Julat Tarikh, hanya berdagang dalam Julat Tarikh yang ditetapkan.

Analisis kelebihan

  1. Menggunakan SMA untuk menilai trend, anda boleh menyaring bunyi pasaran dengan berkesan dan mengunci trend yang lebih panjang.

  2. Dengan meletakkan harga terhad pada harga SMA, anda boleh mendapatkan tempat masuk yang lebih baik pada peringkat permulaan trend.

  3. Anda boleh memilih untuk berdagang hanya dengan mata wang lebih atau hanya dengan mata wang kosong, dan anda boleh menyesuaikan diri dengan gaya dagangan anda.

  4. Anda boleh menetapkan mekanisme penarikan diri dari kerugian untuk mengelakkan peningkatan kerugian.

  5. Sokongan untuk menetapkan jangka masa dagangan untuk mengelakkan turun naik yang teruk akibat peristiwa besar.

Analisis risiko

  1. SMA sebagai penunjuk trend, terdapat masalah ketinggalan, mungkin terlepas titik perubahan trend, yang menyebabkan kerugian.

  2. Terdapat masalah bahawa harga tiket terhad tidak cukup fleksibel, dan mungkin tidak dapat masuk ke dalam arena kerana perubahan jangka pendek dalam trend.

  3. Perlu menetapkan parameter kitaran SMA dengan munasabah, jika tidak ditetapkan dengan betul, akan mendapat keputusan trend yang salah.

  4. Pertimbangan perlu diambil untuk kelayakan parameter masa perdagangan untuk mengelakkan kehilangan peluang perdagangan atau masa risiko.

Arah pengoptimuman

  1. Anda boleh mempertimbangkan untuk memasukkan penilaian indikator lain, melakukan pengesahan pelbagai indikator, dan mengelakkan ketinggalan SMA.

  2. Anda boleh menetapkan mod pengesanan harga terhad, dan beralih ke pengesanan harga pasaran apabila harga menembusi SMA, meningkatkan fleksibiliti pengesanan.

  3. Dinamika mengoptimumkan parameter kitaran SMA untuk menyesuaikan diri dengan keadaan pasaran kitaran yang berbeza.

  4. Tetapkan kedudukan hentian sebagai harga terendah / tertinggi dalam trend, dan bukan kedudukan SMA yang ketat, untuk membolehkan hentian lebih fleksibel.

  5. Menambah elemen perdagangan algoritma untuk menjadikan masa perdagangan lebih pintar dan fleksibel, mengelakkan risiko besar.

ringkaskan

Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang lebih sederhana, idea utamanya adalah menggunakan SMA untuk menentukan arah trend, dan meletakkan harga terhad pada harga SMA untuk mengikuti perdagangan, yang dapat meningkatkan fleksibiliti, kesesuaian dan kecerdasan strategi dengan beberapa pengoptimuman. Strategi ini mudah difahami, sesuai untuk pembelajaran permulaan perdagangan algoritma, tetapi perlu memperhatikan risiko, menilai hasil pengesanan semula dengan teliti, dan melakukan pemantauan dan pengoptimuman yang ketat.

Kod sumber strategi
/*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")